模拟设备状态变更接口调整

This commit is contained in:
tiger_zhou 2023-07-17 17:32:14 +08:00
parent b706a19245
commit bea73f80fb
5 changed files with 158 additions and 6 deletions

View File

@ -84,7 +84,7 @@ public class TrainIndicationInitResponse extends MessageResponse {
}
builder.setRollingStock(trainCell.getRollingStock());
builder.setDriverId(StringUtils.defaultString(trainCell.getDriverId(), ""));
if (trainCell.getOtpTime() != null) {
builder.setOtpTime(trainCell.getOtpTime());
}
@ -151,7 +151,7 @@ public class TrainIndicationInitResponse extends MessageResponse {
/**
* 目的地号(4)
*/
private Integer destinationId;
private String destinationId;
/**
* 编组数量(1)
*/
@ -209,7 +209,8 @@ public class TrainIndicationInitResponse extends MessageResponse {
buf.readBytes(groupId);
buf.readBytes(trainId);
buf.readBytes(globalId);
this.destinationId = buf.readInt();
this.destinationId = EntityParseUtil.convertStr(buf, 4);
this.rollingStock = buf.readByte();
buf.readBytes(driverId);
this.otpTime = buf.readInt();

View File

@ -87,7 +87,7 @@ public class GenertateProtoBufUtil {
}
public static void main(String[] args) throws IOException {
GenertateProtoBufUtil gu = new GenertateProtoBufUtil(System.getProperty("user.dir"), false);
GenertateProtoBufUtil gu = new GenertateProtoBufUtil(System.getProperty("user.dir"), true);
gu.execCommand();
}
}

View File

@ -90,7 +90,7 @@ public class TrainDataTest {
/**
* 目的地号(4)
*/
updateResponse.setDestinationId(1);
// updateResponse.setDestinationId(1);
/**
* 编组数量(1)
*/

View File

@ -0,0 +1,151 @@
package club.joylink.xiannccda.util;
import club.joylink.xiannccda.ats.message.MessageResponse;
import club.joylink.xiannccda.ats.message.line3.device.DeviceType;
import club.joylink.xiannccda.ats.message.line3.rep.DeviceStatusBitmapResponse;
import club.joylink.xiannccda.ats.message.line3.rep.DeviceStatusBitmapResponse.DeviceEntity;
import club.joylink.xiannccda.ats.message.line3.rep.DeviceStatusBitmapResponse.DeviceTypeEntity;
import club.joylink.xiannccda.ats.message.line3.rep.TrainIndicationUpdateResponse;
import club.joylink.xiannccda.mock.message.NccMockData;
import club.joylink.xiannccda.mock.message.NccMockDataService;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Lists;
import com.google.common.collect.Table;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class CollectorData {
@Autowired
NccMockDataService nccMockDataService;
/* @Test
public void dd() throws UnsupportedEncodingException {
LambdaQueryWrapper<NccMockData> queryWrapper = Wrappers.<NccMockData>lambdaQuery();
queryWrapper.eq(NccMockData::getMsgId, "TRAIN_INDICATION_UPDATE");
List<MessageResponse> datas = this.nccMockDataService.loadALLData(queryWrapper);
List<TrainIndicationUpdateResponse> bitmapResponses = datas.stream().map(d -> (TrainIndicationUpdateResponse) d).collect(Collectors.toList());
Set<String> sets = new HashSet<>();
for (TrainIndicationUpdateResponse bitmapRespons : bitmapResponses) {
ByteBuf buf = Unpooled.buffer();
// buf.writeInt(842413824);
buf.writeInt(bitmapRespons.getDestinationId());
byte[] dd = new byte[4];
buf.readBytes(dd);
String s = new String(dd, "utf-8");
if (StringUtils.isEmpty(s.trim())) {
System.out.println(bitmapRespons);
}
sets.add(s);
}
System.out.println(sets);
}*/
@Test
public void collector() {
Table<DeviceType, String, List<String>> dataTable = this.loadData();
JSONObject jo = this.readData();
for (DeviceType deviceType : dataTable.rowKeySet()) {
Map<String, List<String>> maps = dataTable.row(deviceType);
File file = new File("d:\\usr\\" + deviceType.name());
if (file.exists()) {
file.delete();
}
maps.forEach((k, v) -> {
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)))) {
Map<Boolean, List<String>> findMaper = Device.match(v, deviceType, jo);
writer.write(String.format("集中站:%s \n", k));
for (Boolean aBoolean : findMaper.keySet()) {
writer.write("\t\t" + aBoolean + "\n");
writer.write("\t\t" + JSON.toJSONString(findMaper.get(aBoolean)) + "\n");
}
writer.write("-----------------------------------\n");
} catch (Exception e) {
e.printStackTrace();
}
});
}
}
private Table<DeviceType, String, List<String>> loadData() {
LambdaQueryWrapper<NccMockData> queryWrapper = Wrappers.<NccMockData>lambdaQuery();
queryWrapper.eq(NccMockData::getMsgId, "DEVICE_STATUS_BITMAP");
List<MessageResponse> datas = this.nccMockDataService.loadALLData(queryWrapper);
List<DeviceStatusBitmapResponse> bitmapResponses = datas.stream().map(d -> (DeviceStatusBitmapResponse) d).collect(Collectors.toList());
Table<DeviceType, String, List<String>> dataTable = HashBasedTable.create();
List<String> dd = Lists.newArrayList();
for (DeviceStatusBitmapResponse bitmapRespons : bitmapResponses) {
String rtuId = bitmapRespons.getRtuId().toString();
for (DeviceTypeEntity deviceTypeEntity : bitmapRespons.getEntityList()) {
DeviceType dt = deviceTypeEntity.getType();
if (!dd.contains(dt.name())) {
dd.add(dt.name());
}
if (CollectionUtils.isNotEmpty(deviceTypeEntity.getDeviceList())) {
for (DeviceEntity deviceEntity : deviceTypeEntity.getDeviceList()) {
String deviceName = deviceEntity.getDevName();
List<String> deviceList = dataTable.get(dt, rtuId);
if (Objects.isNull(deviceList)) {
deviceList = Lists.newArrayList();
}
if (!deviceList.contains(deviceName)) {
deviceList.add(deviceName);
}
dataTable.put(dt, rtuId, deviceList);
}
}
}
}
return dataTable;
}
private JSONObject readData() {
try (BufferedReader reader = new BufferedReader(new FileReader("G:\\map.txt"))) {
String content = null;
StringBuilder sb = new StringBuilder();
while ((content = reader.readLine()) != null) {
sb.append(content);
}
return JSON.parseObject(sb.toString());
} catch (Exception e) {
}
return null;
}
}

@ -1 +1 @@
Subproject commit 2b1cf46a4bece01bce4b3269e4fcf094f8117492
Subproject commit f86b35768560ddd4e2a3bef70c9b8dfe42510d8f