detached
王宇航 2024-01-28 16:06:23 +08:00
parent 3a69a89d34
commit 3145b28624
1 changed files with 95 additions and 95 deletions

View File

@ -148,15 +148,15 @@ public class RadarStatusController implements InitializingBean {
buildAllRadar(radarList);
TimerTask task = new TimerTask() {
@Override
public void run() {
allRadar.forEach(socketModel -> {
asyncReadRadar(socketModel);
});
}
};
timer.scheduleAtFixedRate(task, 1, 100);
// TimerTask task = new TimerTask() {
// @Override
// public void run() {
// allRadar.forEach(socketModel -> {
// asyncReadRadar(socketModel);
// });
// }
// };
// timer.scheduleAtFixedRate(task, 1, 100);
});
}
@ -271,7 +271,7 @@ public class RadarStatusController implements InitializingBean {
public static void addRadar(List<SysRadar> radarList) {
List<Long> idList = allRadar.stream().map(SocketModel::getId).collect(Collectors.toList());
List<SysRadar> filterList = radarList.stream().filter(item -> !idList.contains(item.getId())).collect(Collectors.toList());
buildAllRadar(filterList);
// buildAllRadar(filterList);
}
public static void delRadar(Long id) {
@ -279,91 +279,91 @@ public class RadarStatusController implements InitializingBean {
}
private void asyncReadRadar(SocketModel socketModel) {
CompletableFuture.runAsync(() -> {
try {
List<SysDiscern> discernList = new ArrayList<>();
// socket连接成功返回数据
DataResponse data = SocketUtil.getData(socketModel);
// 天线号字符串转集合
List<String> numberList = convertStringToList(socketModel.getNumber());
for (String number : numberList) {
if (!pulse4Number.containsKey(number)) {
pulse4Number.put(number, new ArrayList<>());
}
List<Integer> pulse4Values = pulse4Number.get(number);
if (data.getData().get(7) == 0){
consecutiveZeros ++;
if (consecutiveZeros >= 10) {
// 10个0连续说明该天线没有数据 从pulse4Number中删除该天线
pulse4Number.remove(number);
// 从radarList中删除该天线
allRadar.remove(socketModel);
// 数据记录结束计算最大pulse4值
double maxPulse4 = pulse4Values.stream().mapToDouble(Integer::doubleValue).max().orElse(0);
System.out.println("天线 " + number + " 的最大pulse4值为: " + maxPulse4);
// 为下一次数据记录重置
pulse4Values.clear();
consecutiveZeros = 0;
}
}else {
count ++;
pulse4Values.add(data.getData().get(7));
}
}
SysDiscern sysDiscern = copyDataToDiscern(data);
System.out.println(socketModel.getRadarIp() + ": " + data);
// 雷达数据返回封装类赋值
ModbusResponse modbusResponse = getModbusResponse(data);
String tag = modbusResponse.getTagId();
// 雷达原始数据对象
PrimaryRadarData primaryRadarData = new PrimaryRadarData();
// 标识器对象
SysIdentifier sysIdentifier = new SysIdentifier();
// 拷贝封装类属性到雷达原始数据对象
BeanUtils.copyProperties(modbusResponse, primaryRadarData);
//判断读取数据中是否携带标签
if (!"0".equals(modbusResponse.getTagId())) {
// 根据标签去数据库查询标签列表
sysIdentifier = identifierService.selectIdentifierByTag(tag);
//判断数据库查询结果是否有数据
if (sysIdentifier != null) {
// 有数据将查询到的标识器配置属性放进原始数据对象
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
primaryRadarData.setRadarLocation(socketModel.getRadarLocation());
primaryRadarData.setRadarIp(socketModel.getRadarIp());
if (modbusResponse.getValue4() != 0){
// 给雷达识别报表赋值
sysDiscern.setType(sysIdentifier.getType());
sysDiscern.setRadarLocation(socketModel.getRadarLocation());
sysDiscern.setLadleNumber(sysIdentifier.getLadleNumber());
sysDiscern.setCreateTime(new Date());
}
}
} else {
// 没有配置过将铁包号置空
primaryRadarData.setLadleNumber(null);
primaryRadarData.setRadarLocation(null);
primaryRadarData.setRadarIp(socketModel.getRadarIp());
}
if (modbusResponse.getValue4() != null && modbusResponse.getValue4() != 0) {
primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
} else {
}
} catch (Exception e) {
}
});
}
// private void asyncReadRadar(SocketModel socketModel) {
// CompletableFuture.runAsync(() -> {
// try {
// List<SysDiscern> discernList = new ArrayList<>();
// // socket连接成功返回数据
// DataResponse data = SocketUtil.getData(socketModel);
// // 天线号字符串转集合
// List<String> numberList = convertStringToList(socketModel.getNumber());
// for (String number : numberList) {
// if (!pulse4Number.containsKey(number)) {
// pulse4Number.put(number, new ArrayList<>());
// }
// List<Integer> pulse4Values = pulse4Number.get(number);
// if (data.getData().get(7) == 0){
// consecutiveZeros ++;
// if (consecutiveZeros >= 10) {
// // 10个0连续说明该天线没有数据 从pulse4Number中删除该天线
// pulse4Number.remove(number);
// // 从radarList中删除该天线
// allRadar.remove(socketModel);
//
// // 数据记录结束计算最大pulse4值
// double maxPulse4 = pulse4Values.stream().mapToDouble(Integer::doubleValue).max().orElse(0);
// System.out.println("天线 " + number + " 的最大pulse4值为: " + maxPulse4);
// // 为下一次数据记录重置
// pulse4Values.clear();
// consecutiveZeros = 0;
// }
// }else {
// count ++;
// pulse4Values.add(data.getData().get(7));
// }
// }
//
// SysDiscern sysDiscern = copyDataToDiscern(data);
//
// System.out.println(socketModel.getRadarIp() + ": " + data);
// // 雷达数据返回封装类赋值
// ModbusResponse modbusResponse = getModbusResponse(data);
//
//
//
// String tag = modbusResponse.getTagId();
// // 雷达原始数据对象
// PrimaryRadarData primaryRadarData = new PrimaryRadarData();
// // 标识器对象
// SysIdentifier sysIdentifier = new SysIdentifier();
// // 拷贝封装类属性到雷达原始数据对象
// BeanUtils.copyProperties(modbusResponse, primaryRadarData);
//
// //判断读取数据中是否携带标签
// if (!"0".equals(modbusResponse.getTagId())) {
// // 根据标签去数据库查询标签列表
// sysIdentifier = identifierService.selectIdentifierByTag(tag);
// //判断数据库查询结果是否有数据
// if (sysIdentifier != null) {
// // 有数据将查询到的标识器配置属性放进原始数据对象
// primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
// primaryRadarData.setRadarLocation(socketModel.getRadarLocation());
// primaryRadarData.setRadarIp(socketModel.getRadarIp());
//
// if (modbusResponse.getValue4() != 0){
// // 给雷达识别报表赋值
// sysDiscern.setType(sysIdentifier.getType());
// sysDiscern.setRadarLocation(socketModel.getRadarLocation());
// sysDiscern.setLadleNumber(sysIdentifier.getLadleNumber());
// sysDiscern.setCreateTime(new Date());
// }
// }
// } else {
// // 没有配置过将铁包号置空
// primaryRadarData.setLadleNumber(null);
// primaryRadarData.setRadarLocation(null);
// primaryRadarData.setRadarIp(socketModel.getRadarIp());
// }
// if (modbusResponse.getValue4() != null && modbusResponse.getValue4() != 0) {
// primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
// } else {
//
// }
//
// } catch (Exception e) {
// }
// });
// }