win代码上传

main
zouyiqing 2024-02-22 18:11:34 +08:00
parent 63b435a23e
commit 8fbf91f59c
2 changed files with 208 additions and 123 deletions

View File

@ -0,0 +1,20 @@
package com.ruoyi.web.core.config;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.annotation.Schedules;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
@EnableScheduling
public class MyScheduledTask {
@Scheduled(cron = "0/10 * * * * ?")
public void runTask() {
// Your task logic here
// System.out.println("我被执行了!!!!!" + new Date().toString());
}
}

View File

@ -102,9 +102,12 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
} }
private void task(SysRadar radar, Socket socket, Map<String, SysIdentifier> identifierHashMap) { private void task(SysRadar radar, Socket socket, Map<String, SysIdentifier> identifierHashMap) {
long noDataStart = System.currentTimeMillis(); long noDataStart1 = System.currentTimeMillis();
int consecutiveZeros = 0; long noDataStart2 = System.currentTimeMillis();
int readCount = 1; int consecutiveZeros1 = 0;
int consecutiveZeros2 = 0;
int readCount1 = 1;
int readCount2 = 1;
Map<String, List<PrimaryRadarData>> map = new HashMap<>(); Map<String, List<PrimaryRadarData>> map = new HashMap<>();
@ -115,34 +118,53 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
// socket连接成功返回数据 // socket连接成功返回数据
DataResponse data = SocketUtil.getData(socket, radar.getRadarLocation(), radar.getRadarIp(), radar.getRadarId()); DataResponse data = SocketUtil.getData(socket, radar.getRadarLocation(), radar.getRadarIp(), radar.getRadarId());
if (readCount == 2) {
timeMap.put("noDataStart", System.currentTimeMillis()); if (readCount1 == 2 && CollectionUtils.isNotEmpty(data.getData()) && data.getData().get(11) == 1) {
timeMap.put("noDataStart1", System.currentTimeMillis());
} }
if (consecutiveZeros == 0) { if (readCount2 == 2 && CollectionUtils.isNotEmpty(data.getData()) && data.getData().get(11) == 2) {
timeMap.put("zero", System.currentTimeMillis()); timeMap.put("noDataStart2", System.currentTimeMillis());
}
if (consecutiveZeros1 == 0) {
timeMap.put("zero1", System.currentTimeMillis());
timeMap.put("zero2", System.currentTimeMillis());
} }
// 没数据返回data.data == null // 没数据返回data.data == null
long current = System.currentTimeMillis(); long current = System.currentTimeMillis();
if (Objects.isNull(data.getData())) { if (Objects.isNull(data.getData())) {
current = System.currentTimeMillis(); current = System.currentTimeMillis();
// 连续2秒没读到数据结束 // 连续2秒没读到数据结束
if (current - noDataStart >= 2000) { if (current - noDataStart1 >= 2000) {
// todo:存数据 // todo:存数据
if (CollectionUtils.isNotEmpty(map.get(getMapKey(radar,data.getData().get(11))))) { if (CollectionUtils.isNotEmpty(map.get(getMapKey(radar, 1)))) {
if (readCount > 1) { if (readCount1 > 1) {
saveData(radar, map, readCount, timeMap.get("noDataStart"), current , data.getData().get(11)); saveData(radar, map, readCount1, timeMap.get("noDataStart1"), current, 1);
timeMap.put("noDataStart", System.currentTimeMillis()); timeMap.put("noDataStart1", System.currentTimeMillis());
readCount = 1; readCount1 = 1;
}
map.remove(getMapKey(radar, 1));
}
noDataStart1 = current;
}
if (current - noDataStart2 >= 2000) {
if (CollectionUtils.isNotEmpty(map.get(getMapKey(radar, 2)))) {
if (readCount2 > 1) {
saveData(radar, map, readCount2, timeMap.get("noDataStart2"), current, 2);
timeMap.put("noDataStart2", System.currentTimeMillis());
readCount2 = 1;
}
map.remove(getMapKey(radar, 2));
}
noDataStart2 = current;
} }
} }
map.remove(getMapKey(radar,data.getData().get(11)));
noDataStart = current; ModbusResponse modbusResponse = getModbusResponse(data);
}
continue;
}
// SysRadar sysRadar = service.selectRadarByRadarId(radar.getRadarId(), radar.getRadarIp()); // SysRadar sysRadar = service.selectRadarByRadarId(radar.getRadarId(), radar.getRadarIp());
// if (sysRadar != null) { // 雷达数据返回封装类赋值 // if (sysRadar != null) { // 雷达数据返回封装类赋值
ModbusResponse modbusResponse = getModbusResponse(data); if (modbusResponse != null) {
String tag = modbusResponse.getTagId(); String tag = modbusResponse.getTagId();
timeMap.put("start", data.getTime()); timeMap.put("start", data.getTime());
// 雷达原始数据对象 // 雷达原始数据对象
@ -155,13 +177,11 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
primaryRadarData.setRadarId(data.getData().get(0)); primaryRadarData.setRadarId(data.getData().get(0));
primaryRadarData.setRadarLocation(radar.getRadarLocation()); primaryRadarData.setRadarLocation(radar.getRadarLocation());
List<PrimaryRadarData> dataList = map.get(getMapKey(radar, modbusResponse.getNumber())); List<PrimaryRadarData> dataList = map.get(getMapKey(radar, modbusResponse.getNumber()));
//判断读取数据中是否携带标签
if (!"0".equals(modbusResponse.getTagId())) {
consecutiveZeros = 0;
// 根据标签去数据库查询标签列表 // 根据标签去数据库查询标签列表
SysIdentifier sysIdentifier = identifierHashMap.get(tag); SysIdentifier sysIdentifier = identifierHashMap.get(tag);
//判断数据库查询结果是否有数据 if (modbusResponse != null && modbusResponse.getNumber() == 1) {
//判断数据库查询结果是否有数据
if (sysIdentifier != null) { if (sysIdentifier != null) {
// 有数据将查询到的标识器配置属性放进原始数据对象 // 有数据将查询到的标识器配置属性放进原始数据对象
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber()); primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
@ -170,108 +190,151 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
if (CollectionUtils.isEmpty(dataList)) { if (CollectionUtils.isEmpty(dataList)) {
dataList = new ArrayList<>(); dataList = new ArrayList<>();
dataList.add(primaryRadarData); dataList.add(primaryRadarData);
map.put(getMapKey(radar,modbusResponse.getNumber()), dataList); if (data.getData().get(11) == 1) {
map.put(getMapKey(radar, modbusResponse.getNumber()), dataList);
} }
// if (StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) && Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId()) && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { if (data.getData().get(11) == 2) {
// if (current - start >= 20000) { map.put(getMapKey(radar, modbusResponse.getNumber()), dataList);
// // todo存数据
//
// System.out.println("连续二十秒秒没收到数据:开始存储........" + "开始时间为:" + start + "结束时间为:" + current);
// if (readCount > 100) {
// saveData(radar, map, readCount, start, current);
// readCount = 1;
// }
// start = System.currentTimeMillis();
// }
// dataList.clear();
// dataList.add(primaryRadarData);
// }
if (modbusResponse.getNumber() == 1) {
if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId())
&& !StringUtils.equals("0", dataList.get(dataList.size() - 1).getTagId())
&& Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId())
&& Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) {
// todo存数据
long currentTimeMillis = System.currentTimeMillis();
System.out.println("突然读到另一个标签:开始存储........"
+ "此次雷达id====" + primaryRadarData.getRadarId() + "上次雷达id====" + primaryRadarData.getRadarId()
+ "此次雷达ip为====" + primaryRadarData.getRadarIp() + "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp()
+ "此次雷达标签号为:====" + modbusResponse.getTagId() + "此次雷达标签号为:====" + dataList.get(dataList.size() - 1).getTagId()
+ data.getTime() + "结束时间为:" + currentTimeMillis);
saveData(radar, map, readCount, timeMap.get("noDataStart"), currentTimeMillis, modbusResponse.getNumber());
dataList.clear();
timeMap.put("noDataStart", System.currentTimeMillis());
map.remove(getMapKey(radar,modbusResponse.getNumber()));
dataList.add(primaryRadarData);
readCount = 1;
} }
} }
if (modbusResponse.getNumber() == 2){
if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId())
&& !StringUtils.equals("0", dataList.get(dataList.size() - 1).getTagId())
&& Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId())
&& Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) {
// todo存数据
long currentTimeMillis = System.currentTimeMillis();
System.out.println("突然读到另一个标签:开始存储........"
+ "此次雷达id====" + primaryRadarData.getRadarId() + "上次雷达id====" + primaryRadarData.getRadarId()
+ "此次雷达ip为====" + primaryRadarData.getRadarIp() + "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp()
+ "此次雷达标签号为:====" + modbusResponse.getTagId() + "此次雷达标签号为:====" + dataList.get(dataList.size() - 1).getTagId()
+ data.getTime() + "结束时间为:" + currentTimeMillis);
saveData(radar, map, readCount, timeMap.get("noDataStart"), currentTimeMillis , modbusResponse.getNumber());
dataList.clear();
timeMap.put("noDataStart", System.currentTimeMillis());
map.remove(getMapKey(radar,modbusResponse.getNumber()));
dataList.add(primaryRadarData);
readCount = 1;
}
}
readCount++;
if (!Objects.equals(data.getData().get(0), dataList.get(dataList.size() - 1).getRadarId())) { if (!Objects.equals(data.getData().get(0), dataList.get(dataList.size() - 1).getRadarId())) {
long end = System.currentTimeMillis(); long end = System.currentTimeMillis();
Long dataStart = timeMap.get("noDataStart"); Long dataStart = timeMap.get("noDataStart1");
System.out.println("突然读到另一个雷达id " + "开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + end); System.out.println("突然读到另一个雷达id " + "开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + end);
saveData(radar, map, readCount, data.getTime(), end , modbusResponse.getNumber()); saveData(radar, map, readCount1, data.getTime(), end, modbusResponse.getNumber());
dataList.clear(); dataList.clear();
timeMap.put("noDataStart", System.currentTimeMillis()); timeMap.put("noDataStart1", System.currentTimeMillis());
map.remove(getMapKey(radar,modbusResponse.getNumber())); map.remove(getMapKey(radar, modbusResponse.getNumber()));
dataList.add(primaryRadarData); dataList.add(primaryRadarData);
readCount = 1; readCount1 = 1;
} }
if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId())
} && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())
&& modbusResponse.getNumber() == 1) {
} else {
//连续10次读取标签号为0
consecutiveZeros++;
if (100 == consecutiveZeros) {
// todo存数据 // todo存数据
long currentTimeMillis = System.currentTimeMillis();
// System.out.println("连续10次读取标签号为0开始存储........" + radar + map + readCount + "开始时间为:" + timeMap.get("zero") + "结束时间为:" + noDataStart); System.out.println("突然读到另一个标签:开始存储........"
saveData(radar, map, readCount, timeMap.get("zero"), noDataStart , modbusResponse.getNumber()); + "此次雷达id====" + primaryRadarData.getRadarId() + "上次雷达id====" + primaryRadarData.getRadarId()
readCount = 1; + "此次雷达ip为====" + primaryRadarData.getRadarIp() + "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp()
map.remove(getMapKey(radar,modbusResponse.getNumber())); + "此次雷达标签号为:====" + modbusResponse.getTagId() + "此次雷达标签号为:====" + dataList.get(dataList.size() - 1).getTagId()
timeMap.put("noDataStart", System.currentTimeMillis()); + data.getTime() + "结束时间为:" + currentTimeMillis);
saveData(radar, map, readCount1, timeMap.get("noDataStart1"), currentTimeMillis, modbusResponse.getNumber());
dataList.clear(); dataList.clear();
consecutiveZeros = 0; timeMap.put("noDataStart1", System.currentTimeMillis());
map.remove(getMapKey(radar, 1));
dataList.add(primaryRadarData);
readCount1 = 1;
} }
readCount1++;
} else {
//TODO
//连续100次读取标签号为0
consecutiveZeros1++;
if (20 <= consecutiveZeros1) {
// todo存数据
// 没有配置过将铁包号置空 // 没有配置过将铁包号置空
primaryRadarData.setLadleNumber(null); primaryRadarData.setLadleNumber(null);
primaryRadarData.setRadarIp(radar.getRadarIp()); primaryRadarData.setRadarIp(radar.getRadarIp());
// System.out.println("连续10次读取标签号为0开始存储........" + radar + map + readCount + "开始时间为:" + timeMap.get("zero") + "结束时间为:" + noDataStart);
saveData(radar, map, readCount1, timeMap.get("zero1"), noDataStart1, modbusResponse.getNumber());
readCount1 = 1;
map.remove(getMapKey(radar, modbusResponse.getNumber()));
timeMap.put("noDataStart1", System.currentTimeMillis());
consecutiveZeros1 = 0;
if (CollectionUtils.isNotEmpty(dataList)) {
dataList.clear();
} }
}
}
noDataStart1 = current;
}
if (modbusResponse != null && modbusResponse.getNumber() == 2) {
if (sysIdentifier != null) {
// 有数据将查询到的标识器配置属性放进原始数据对象
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
primaryRadarData.setRadarIp(radar.getRadarIp());
primaryRadarData.setType(sysIdentifier.getType().toString());
if (CollectionUtils.isEmpty(dataList)) {
dataList = new ArrayList<>();
dataList.add(primaryRadarData);
map.put(getMapKey(radar, modbusResponse.getNumber()), dataList);
}
if (!Objects.equals(data.getData().get(0), dataList.get(dataList.size() - 1).getRadarId())) {
long end = System.currentTimeMillis();
Long dataStart = timeMap.get("noDataStart2");
System.out.println("突然读到另一个雷达id " + "开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + end);
saveData(radar, map, readCount2, data.getTime(), end, modbusResponse.getNumber());
dataList.clear();
timeMap.put("noDataStart2", System.currentTimeMillis());
map.remove(getMapKey(radar, modbusResponse.getNumber()));
dataList.add(primaryRadarData);
readCount2 = 1;
}
if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId())
&& Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())
&& modbusResponse.getNumber() == 2) {
// todo存数据
long currentTimeMillis = System.currentTimeMillis();
System.out.println("突然读到另一个标签:开始存储........"
+ "此次雷达id====" + primaryRadarData.getRadarId() + "上次雷达id====" + primaryRadarData.getRadarId()
+ "此次雷达ip为====" + primaryRadarData.getRadarIp() + "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp()
+ "此次雷达标签号为:====" + modbusResponse.getTagId() + "此次雷达标签号为:====" + dataList.get(dataList.size() - 1).getTagId()
+ data.getTime() + "结束时间为:" + currentTimeMillis);
saveData(radar, map, readCount2, timeMap.get("noDataStart2"), currentTimeMillis, modbusResponse.getNumber());
dataList.clear();
timeMap.put("noDataStart2", System.currentTimeMillis());
map.remove(getMapKey(radar, 2));
dataList.add(primaryRadarData);
readCount2 = 1;
}
readCount2++;
} else {
//TODO
//连续100次读取标签号为0
consecutiveZeros2++;
if (20 <= consecutiveZeros2) {
// todo存数据
// 没有配置过将铁包号置空
primaryRadarData.setLadleNumber(null);
primaryRadarData.setRadarIp(radar.getRadarIp());
// System.out.println("连续10次读取标签号为0开始存储........" + radar + map + readCount + "开始时间为:" + timeMap.get("zero") + "结束时间为:" + noDataStart);
saveData(radar, map, readCount2, timeMap.get("zero2"), noDataStart2, modbusResponse.getNumber());
readCount2 = 1;
map.remove(getMapKey(radar, modbusResponse.getNumber()));
timeMap.put("noDataStart2", System.currentTimeMillis());
consecutiveZeros2 = 0;
if (CollectionUtils.isNotEmpty(dataList)) {
dataList.clear();
}
}
}
noDataStart2 = current;
}
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
}, threadPoolTaskExecutor); }, threadPoolTaskExecutor);
noDataStart = current;
} catch (Throwable e) { }
}catch (Throwable e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
private void saveData(SysRadar radar, Map<String, List<PrimaryRadarData>> map, int count, long noStartTime, long endTime , Integer number) { private void saveData(SysRadar radar, Map<String, List<PrimaryRadarData>> map, int count, long noStartTime, long endTime, Integer number) {
Date start = new Date(noStartTime); Date start = new Date(noStartTime);
Date end = new Date(endTime); Date end = new Date(endTime);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -279,7 +342,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
String sqlEnd = sdf.format(end); String sqlEnd = sdf.format(end);
try { try {
List<PrimaryRadarData> primaryRadarDataList = map.get(getMapKey(radar,number)); List<PrimaryRadarData> primaryRadarDataList = map.get(getMapKey(radar, number));
if (CollectionUtils.isNotEmpty(primaryRadarDataList)) { if (CollectionUtils.isNotEmpty(primaryRadarDataList)) {
PrimaryRadarData maxData = primaryRadarDataList.stream().max(Comparator.comparingInt(PrimaryRadarData::getValue4)).get(); PrimaryRadarData maxData = primaryRadarDataList.stream().max(Comparator.comparingInt(PrimaryRadarData::getValue4)).get();
@ -312,7 +375,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
} }
private String getMapKey(SysRadar radar,Integer number) { private String getMapKey(SysRadar radar, Integer number) {
return radar.getRadarIp() + "-" + number + "-" + radar.getId(); return radar.getRadarIp() + "-" + number + "-" + radar.getId();
} }
@ -349,6 +412,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
*/ */
public ModbusResponse getModbusResponse(DataResponse data) { public ModbusResponse getModbusResponse(DataResponse data) {
ModbusResponse modbusResponse = new ModbusResponse(); ModbusResponse modbusResponse = new ModbusResponse();
if (CollectionUtils.isNotEmpty(data.getData())) {
modbusResponse.setRadarNum(data.getData().get(0).toString()); modbusResponse.setRadarNum(data.getData().get(0).toString());
modbusResponse.setTagId(data.getData().get(3).toString()); modbusResponse.setTagId(data.getData().get(3).toString());
modbusResponse.setValue1(data.getData().get(4)); modbusResponse.setValue1(data.getData().get(4));
@ -361,6 +425,8 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
modbusResponse.setNumber(data.getData().get(11)); modbusResponse.setNumber(data.getData().get(11));
return modbusResponse; return modbusResponse;
} }
return null;
}
private void oracleInsert(TsanaRadar tsanaRadar, SysRadar radar) { private void oracleInsert(TsanaRadar tsanaRadar, SysRadar radar) {
@ -412,7 +478,6 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
} }
public static void main(String[] args) { public static void main(String[] args) {
LocalDate currentDate = LocalDate.now(); LocalDate currentDate = LocalDate.now();
LocalDate twoDaysAgo = currentDate.minusDays(2); LocalDate twoDaysAgo = currentDate.minusDays(2);