Compare commits

..

No commits in common. "63b435a23e412404ac115ba79a54554387b41e66" and "074326ce6a7119ff5a94847253aca7498cd2fd82" have entirely different histories.

4 changed files with 199 additions and 205 deletions

View File

@ -6,9 +6,9 @@ spring:
druid: druid:
# 主库数据源 # 主库数据源
master: master:
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://39.104.15.118:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: root
password: 12345678 password: Orderfood@2022
# 从库数据源 # 从库数据源
slave: slave:
# 从数据源开关/默认关闭 # 从数据源开关/默认关闭

View File

@ -0,0 +1,24 @@
Application Version: ${ruoyi.version}
Spring Boot Version: ${spring-boot.version}
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
////////////////////////////////////////////////////////////////////

View File

@ -30,6 +30,7 @@ public class SocketUtil {
byte[] buffer = new byte[available]; byte[] buffer = new byte[available];
inputStream.read(buffer, 0, available); inputStream.read(buffer, 0, available);
// System.out.println("雷达:" + radarIp + "===" + radarLocation + ": 连接异常:{}" );
String hex = new BigInteger(1, buffer).toString(16); String hex = new BigInteger(1, buffer).toString(16);
@ -47,11 +48,14 @@ public class SocketUtil {
} }
dataResponse.setStatus(1); dataResponse.setStatus(1);
System.out.println("雷达ip " + radarIp+ radarId + radarLocation + "成功");
RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse)); RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse));
return dataResponse; return dataResponse;
} }
} catch (Exception e) { } catch (Exception e) {
// System.out.println("读取数据异常:" + radarIp);
} }
dataResponse.setRadarIp(radarIp); dataResponse.setRadarIp(radarIp);

View File

@ -8,22 +8,16 @@ import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.bean.ModbusResponse; import com.ruoyi.common.utils.bean.ModbusResponse;
import com.ruoyi.system.service.*; import com.ruoyi.system.service.*;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException;
import java.net.Socket; import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.*; import java.sql.*;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.Date; import java.util.Date;
import java.util.concurrent.*; import java.util.concurrent.*;
@ -45,81 +39,61 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
@Autowired @Autowired
private ISysDiscernService discernService; private ISysDiscernService discernService;
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
private static Map<String, SysIdentifier> identifierHashMap = new HashMap<>();
public static CopyOnWriteArrayList<String> allRadar = new CopyOnWriteArrayList<>(); public static CopyOnWriteArrayList<String> allRadar = new CopyOnWriteArrayList<>();
private static Map<Long, String> radarDelMap = new HashMap<>(); private Map<Long, String> radarDelMap = new HashMap<>();
@Override @Override
public void afterPropertiesSet() { public void afterPropertiesSet() {
List<SysRadar> radarList = service.selectRadarList(new SysRadar()); List<SysRadar> radarList = service.selectRadarList(new SysRadar());
List<SysIdentifier> sysIdentifiers = identifierService.selectAllIdentifierList(); // List<SysIdentifier> sysIdentifiers = identifierService.selectAllIdentifierList();
// Map<String, SysIdentifier> identifierHashMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(sysIdentifiers)) { // if (CollectionUtils.isNotEmpty(sysIdentifiers)){
// identifierHashMap = sysIdentifiers.stream().collect(Collectors.toMap(SysIdentifier::getIdentifierId, Function.identity()));
for (SysIdentifier sysIdentifier : sysIdentifiers) { // }
if (StringUtils.isNotBlank(sysIdentifier.getIdentifierId())) {
identifierHashMap.put(sysIdentifier.getIdentifierId(), sysIdentifier);
}
if (StringUtils.isNotBlank(sysIdentifier.getIdentifierTwo())) {
identifierHashMap.put(sysIdentifier.getIdentifierTwo(), sysIdentifier);
}
if (StringUtils.isNotBlank(sysIdentifier.getIdentifierThree())) {
identifierHashMap.put(sysIdentifier.getIdentifierThree(), sysIdentifier);
}
if (StringUtils.isNotBlank(sysIdentifier.getIdentifierFour())) {
identifierHashMap.put(sysIdentifier.getIdentifierFour(), sysIdentifier);
}
}
}
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
radarWebSocket(radarList, identifierHashMap); radarWebSocket(radarList);
}, threadPoolTaskExecutor); });
} }
private void radarWebSocket(List<SysRadar> radarList, Map<String, SysIdentifier> identifierHashMap) { private void radarWebSocket(List<SysRadar> radarList) {
ArrayList<Socket> list = Lists.newArrayList(); // System.out.println(" 雷达集合:::" + radarList);
for (SysRadar radar : radarList) { for (SysRadar radar : radarList) {
try { try {
Socket socket = new Socket(radar.getRadarIp(), 23); Socket socket = new Socket(radar.getRadarIp(), 23);
list.add(socket);
allRadar.add(radar.getRadarIp()); allRadar.add(radar.getRadarIp());
radarDelMap.put(radar.getId(), "0"); radarDelMap.put(radar.getId(), "0");
CompletableFuture<Void> voidCompletableFuture = CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
task(radar, socket, identifierHashMap); task(radar, socket);
}, threadPoolTaskExecutor); });
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
private void task(SysRadar radar, Socket socket, Map<String, SysIdentifier> identifierHashMap) { private void task(SysRadar radar, Socket socket) {
long noDataStart = System.currentTimeMillis(); long noDataStart = System.currentTimeMillis();
long noDataEnd = noDataStart;
long start = noDataStart;
int consecutiveZeros = 0; int consecutiveZeros = 0;
int readCount = 1; int readCount = 1;
Map<String, List<PrimaryRadarData>> map = new HashMap<>(); Map<String, List<PrimaryRadarData>> map = new HashMap<>();
Map<String, Long> timeMap = new HashMap<>(); Map<String ,Long> timeMap = new HashMap();
while (StringUtils.equals("0", radarDelMap.get(radar.getId()))) { while (StringUtils.equals("0", radarDelMap.get(radar.getId()))) {
try { try {
// 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) { if (Objects.nonNull(data.getData())){
timeMap.put("noDataStart", System.currentTimeMillis()); timeMap.put("noDataStart",System.currentTimeMillis());
}
if (consecutiveZeros == 0) {
timeMap.put("zero", System.currentTimeMillis());
} }
// 没数据返回data.data == null // 没数据返回data.data == null
long current = System.currentTimeMillis(); long current = System.currentTimeMillis();
@ -128,50 +102,52 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
// 连续2秒没读到数据结束 // 连续2秒没读到数据结束
if (current - noDataStart >= 2000) { if (current - noDataStart >= 2000) {
// todo:存数据 // todo:存数据
if (CollectionUtils.isNotEmpty(map.get(getMapKey(radar,data.getData().get(11))))) { if (CollectionUtils.isNotEmpty(map.get(getMapKey(radar)))) {
System.out.println("连续两秒没收到数据:开始存储........" + "开始时间为:" + timeMap.get("noDataStart") + "结束时间为:" + current);
if (readCount > 1) { if (readCount > 1) {
saveData(radar, map, readCount, timeMap.get("noDataStart"), current , data.getData().get(11)); saveData(radar, map, readCount, timeMap.get("noDataStart"), current);
timeMap.put("noDataStart", System.currentTimeMillis()); timeMap.put("noDataStart",System.currentTimeMillis());
readCount = 1; readCount = 1;
} }
} }
map.remove(getMapKey(radar,data.getData().get(11))); map.remove(getMapKey(radar));
noDataStart = current; noDataStart = current;
} }
continue; 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); ModbusResponse modbusResponse = getModbusResponse(data);
String tag = modbusResponse.getTagId(); String tag = modbusResponse.getTagId();
timeMap.put("start", data.getTime()); // 雷达原始数据对象
// 雷达原始数据对象 PrimaryRadarData primaryRadarData = new PrimaryRadarData();
PrimaryRadarData primaryRadarData = new PrimaryRadarData(); // 拷贝封装类属性到雷达原始数据对象
// 拷贝封装类属性到雷达原始数据对象 BeanUtils.copyProperties(modbusResponse, primaryRadarData);
BeanUtils.copyProperties(modbusResponse, primaryRadarData); primaryRadarData.setRadarIp(radar.getRadarIp());
primaryRadarData.setRadarIp(radar.getRadarIp()); // if (primaryRadarData.getNumber()==(Integer.parseInt(radar.getRadarNum()))) {
primaryRadarData.setStationCode(radar.getStationCode()); primaryRadarData.setStationCode(radar.getStationCode());
// }else if (Objects.equals(radar.getRadarId(), data.getData().get(0))){
primaryRadarData.setRadarId(data.getData().get(0)); // primaryRadarData.setStationCode(radar.getStationCode());
primaryRadarData.setRadarLocation(radar.getRadarLocation()); // }
List<PrimaryRadarData> dataList = map.get(getMapKey(radar, modbusResponse.getNumber())); primaryRadarData.setRadarId(data.getData().get(0));
//判断读取数据中是否携带标签 primaryRadarData.setRadarLocation(radar.getRadarLocation());
if (!"0".equals(modbusResponse.getTagId())) { List<PrimaryRadarData> dataList = map.get(getMapKey(radar));
consecutiveZeros = 0; //判断读取数据中是否携带标签
// 根据标签去数据库查询标签列表 if (!"0".equals(modbusResponse.getTagId())) {
SysIdentifier sysIdentifier = identifierHashMap.get(tag); // 根据标签去数据库查询标签列表
//判断数据库查询结果是否有数据 SysIdentifier sysIdentifier = identifierService.selectIdentifierByTag(tag);
//判断数据库查询结果是否有数据
if (sysIdentifier != null) { if (sysIdentifier != null) {
// 有数据将查询到的标识器配置属性放进原始数据对象 // 有数据将查询到的标识器配置属性放进原始数据对象
primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber()); primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber());
primaryRadarData.setRadarIp(radar.getRadarIp()); primaryRadarData.setRadarIp(radar.getRadarIp());
primaryRadarData.setType(sysIdentifier.getType().toString()); primaryRadarData.setType(sysIdentifier.getType().toString());
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); map.put(getMapKey(radar), 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 (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 (current - start >= 20000) { // if (current - start >= 20000) {
// // todo存数据 // // todo存数据
@ -182,96 +158,82 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
// readCount = 1; // readCount = 1;
// } // }
// start = System.currentTimeMillis(); // start = System.currentTimeMillis();
//
// } // }
// dataList.clear(); // dataList.clear();
// dataList.add(primaryRadarData); // dataList.add(primaryRadarData);
// } // }
if (modbusResponse.getNumber() == 1) {
if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId())
&& !StringUtils.equals("0", 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.getRadarId(), dataList.get(dataList.size() - 1).getRadarId())
&& Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) {
// todo存数据 // todo存数据
long currentTimeMillis = System.currentTimeMillis(); long currentTimeMillis = System.currentTimeMillis();
Long dataStart = timeMap.get("noDataStart");
System.out.println("突然读到另一个标签:开始存储........" System.out.println("突然读到另一个标签:开始存储........"
+ "此次雷达id====" + primaryRadarData.getRadarId() + "上次雷达id====" + primaryRadarData.getRadarId() + "此次雷达id===="+primaryRadarData.getRadarId() + "上次雷达id===="+primaryRadarData.getRadarId()
+ "此次雷达ip为====" + primaryRadarData.getRadarIp() + "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp() + "此次雷达ip为====" + primaryRadarData.getRadarIp()+ "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp() + dataStart + "结束时间为:" + currentTimeMillis);
+ "此次雷达标签号为:====" + modbusResponse.getTagId() + "此次雷达标签号为:====" + dataList.get(dataList.size() - 1).getTagId() saveData(radar, map, readCount, data.getTime()-1, currentTimeMillis);
+ data.getTime() + "结束时间为:" + currentTimeMillis);
saveData(radar, map, readCount, timeMap.get("noDataStart"), currentTimeMillis, modbusResponse.getNumber());
dataList.clear(); dataList.clear();
timeMap.put("noDataStart", System.currentTimeMillis()); timeMap.put("noDataStart",System.currentTimeMillis());
map.remove(getMapKey(radar,modbusResponse.getNumber())); map.remove(getMapKey(radar));
dataList.add(primaryRadarData); dataList.add(primaryRadarData);
readCount = 1; readCount = 1;
} }
} readCount++;
if (modbusResponse.getNumber() == 2){ List<Date> readTime = map.get(getMapKey(radar))
if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) .stream().map(PrimaryRadarData::getCreateTime).collect(Collectors.toList());
&& !StringUtils.equals("0", dataList.get(dataList.size() - 1).getTagId()) if (readTime.get(0) != null) {
&& Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId()) readTime.set(0, new Date(System.currentTimeMillis()));
&& Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { }
// todo存数据
long currentTimeMillis = System.currentTimeMillis(); if (!Objects.equals(data.getData().get(0), dataList.get(dataList.size() - 1).getRadarId())) {
System.out.println("突然读到另一个标签:开始存储........" long end = System.currentTimeMillis();
+ "此次雷达id====" + primaryRadarData.getRadarId() + "上次雷达id====" + primaryRadarData.getRadarId() Long dataStart = timeMap.get("noDataStart");
+ "此次雷达ip为====" + primaryRadarData.getRadarIp() + "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp()
+ "此次雷达标签号为:====" + modbusResponse.getTagId() + "此次雷达标签号为:====" + dataList.get(dataList.size() - 1).getTagId() System.out.println("突然读到另一个雷达id " + "开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + end);
+ data.getTime() + "结束时间为:" + currentTimeMillis); saveData(radar, map, readCount, data.getTime(), end);
saveData(radar, map, readCount, timeMap.get("noDataStart"), currentTimeMillis , modbusResponse.getNumber());
dataList.clear(); dataList.clear();
timeMap.put("noDataStart", System.currentTimeMillis()); timeMap.put("noDataStart",System.currentTimeMillis());
map.remove(getMapKey(radar,modbusResponse.getNumber())); map.remove(getMapKey(radar));
dataList.add(primaryRadarData); dataList.add(primaryRadarData);
readCount = 1; readCount = 1;
} }
} }
readCount++;
if (!Objects.equals(data.getData().get(0), dataList.get(dataList.size() - 1).getRadarId())) {
long end = System.currentTimeMillis();
Long dataStart = timeMap.get("noDataStart");
System.out.println("突然读到另一个雷达id " + "开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + end);
saveData(radar, map, readCount, data.getTime(), end , modbusResponse.getNumber());
dataList.clear();
timeMap.put("noDataStart", System.currentTimeMillis());
map.remove(getMapKey(radar,modbusResponse.getNumber()));
dataList.add(primaryRadarData);
readCount = 1;
}
}
} else {
//连续10次读取标签号为0
consecutiveZeros++;
if (100 == consecutiveZeros) {
// todo存数据
// System.out.println("连续10次读取标签号为0开始存储........" + radar + map + readCount + "开始时间为:" + timeMap.get("zero") + "结束时间为:" + noDataStart);
saveData(radar, map, readCount, timeMap.get("zero"), noDataStart , modbusResponse.getNumber());
readCount = 1;
map.remove(getMapKey(radar,modbusResponse.getNumber()));
timeMap.put("noDataStart", System.currentTimeMillis());
dataList.clear();
consecutiveZeros = 0; consecutiveZeros = 0;
} else {
Long dataStart = timeMap.get("noDataStart");
//连续10次读取标签号为0
consecutiveZeros++;
if (10 == consecutiveZeros) {
// todo存数据
long nullTime = System.currentTimeMillis();
System.out.println("连续10次读取标签号为0开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + noDataStart);
saveData(radar, map, readCount, data.getTime(), noDataStart);
readCount = 1;
map.remove(getMapKey(radar));
timeMap.remove("noDataStart");
dataList.clear();
consecutiveZeros = 0;
}
// 没有配置过将铁包号置空
primaryRadarData.setLadleNumber(null);
primaryRadarData.setRadarIp(radar.getRadarIp());
} }
// 没有配置过将铁包号置空 CompletableFuture.runAsync(() -> {
primaryRadarData.setLadleNumber(null); primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
primaryRadarData.setRadarIp(radar.getRadarIp()); });
noDataStart = current;
} }
CompletableFuture.runAsync(() -> { } catch (Exception e) {
primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
}, threadPoolTaskExecutor);
noDataStart = current;
} catch (Throwable e) {
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) {
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 +241,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));
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();
@ -304,7 +266,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
tsanaRadar.setTimeBegin(sqlStart); tsanaRadar.setTimeBegin(sqlStart);
tsanaRadar.setTimeEnd(sqlEnd); tsanaRadar.setTimeEnd(sqlEnd);
tsanaRadar.setTimeCount(count); tsanaRadar.setTimeCount(count);
oracleInsert(tsanaRadar, radar); oracleInsert(tsanaRadar);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -312,14 +274,14 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
} }
private String getMapKey(SysRadar radar,Integer number) { private static String getMapKey(SysRadar radar) {
return radar.getRadarIp() + "-" + number + "-" + radar.getId(); return radar.getRadarIp() + "-" + radar.getRadarNum() + "-" + radar.getId();
} }
@Override @Override
public void addRadar(List<SysRadar> radarList) { public void addRadar(List<SysRadar> radarList) {
List<SysRadar> filterDataList = radarList.stream().filter(item -> !allRadar.contains(item.getRadarIp())).collect(Collectors.toList()); List<SysRadar> filterDataList = radarList.stream().filter(item -> !allRadar.contains(item.getRadarIp())).collect(Collectors.toList());
radarWebSocket(filterDataList, identifierHashMap); radarWebSocket(filterDataList);
} }
@Override @Override
@ -333,7 +295,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
* @param data * @param data
* @return ModbusResponse * @return ModbusResponse
*/ */
private SysDiscern copyDataToDiscern(PrimaryRadarData data) { private static SysDiscern copyDataToDiscern(PrimaryRadarData data) {
SysDiscern discern = new SysDiscern(); SysDiscern discern = new SysDiscern();
discern.setTagId(data.getTagId()); discern.setTagId(data.getTagId());
discern.setValue4(data.getValue4()); discern.setValue4(data.getValue4());
@ -347,7 +309,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
* @param data * @param data
* @return ModbusResponse * @return ModbusResponse
*/ */
public ModbusResponse getModbusResponse(DataResponse data) { public static ModbusResponse getModbusResponse(DataResponse data) {
ModbusResponse modbusResponse = new ModbusResponse(); ModbusResponse modbusResponse = new ModbusResponse();
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());
@ -363,60 +325,64 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
} }
private void oracleInsert(TsanaRadar tsanaRadar, SysRadar radar) { private static void oracleInsert(TsanaRadar tsanaRadar) {
CompletableFuture.runAsync(() -> { Connection connection = null;
PreparedStatement preparedStatement = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = null; String url = "jdbc:oracle:thin:@172.16.18.195:1523:xccb";
PreparedStatement preparedStatement = null; String user = "radartest";
try { String password = "radartest";
Class.forName("oracle.jdbc.driver.OracleDriver"); connection = DriverManager.getConnection(url, user, password);
System.out.println(" ============= 连接数据库成功 ==========");
String url = "jdbc:oracle:thin:@172.16.18.195:1523:xccb"; // ====================================================雷达编号, 标签编号, 工位代号, 标签号, 开始时间, 结束时间, 读取次数
String user = "radartest"; String insertStatement = "INSERT INTO xccb.TS_ANARADAR (RADARCODE, LABELCODE, LOCATIONIP , LABELNUM , TIMEBEGIN , TIMEEND , TIMECOUNT) VALUES (?, ?, ?, ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?)";
String password = "radartest";
connection = DriverManager.getConnection(url, user, password);
// ====================================================雷达编号, 标签编号, 工位代号, 标签号, 开始时间, 结束时间, 读取次数
String insertStatement = "INSERT INTO xccb.TS_ANARADAR (RADARCODE, LABELCODE, LOCATIONIP , LABELNUM , TIMEBEGIN , TIMEEND , TIMECOUNT) VALUES (?, ?, ?, ?, to_date(?,'yyyy-mm-dd hh24:mi:ss'), to_date(?,'yyyy-mm-dd hh24:mi:ss'), ?)";
preparedStatement = connection.prepareStatement(insertStatement); System.out.println("insertStatement = " + insertStatement);
preparedStatement.setString(1, tsanaRadar.getRadarCode()); preparedStatement = connection.prepareStatement(insertStatement);
preparedStatement.setString(2, tsanaRadar.getLabelCode()); System.out.println("SQL语句初始化完成");
preparedStatement.setString(3, tsanaRadar.getLocationIp()); preparedStatement.setString(1, tsanaRadar.getRadarCode());
preparedStatement.setString(4, tsanaRadar.getLabelNum()); System.out.println("=======RadarCode初始化完成=======" + tsanaRadar.getRadarCode());
preparedStatement.setString(5, tsanaRadar.getTimeBegin()); preparedStatement.setString(2, tsanaRadar.getLabelCode());
preparedStatement.setString(6, tsanaRadar.getTimeEnd()); System.out.println("=======LabelCode初始化完成=======" + tsanaRadar.getLabelCode());
preparedStatement.setInt(7, tsanaRadar.getTimeCount()); preparedStatement.setString(3, tsanaRadar.getLocationIp());
int i = preparedStatement.executeUpdate(); System.out.println("=======LocationIp初始化完成=======" + tsanaRadar.getLocationIp());
preparedStatement.setString(4, tsanaRadar.getLabelNum());
} catch (Throwable e) { System.out.println("=======LabelNum语句初始化完成=======" + tsanaRadar.getLabelNum());
e.printStackTrace(); preparedStatement.setString(5, tsanaRadar.getTimeBegin());
} finally { System.out.println("=======TimeBegin语句初始化完成=======" + tsanaRadar.getTimeBegin());
// 关闭连接和statement preparedStatement.setString(6, tsanaRadar.getTimeEnd());
if (preparedStatement != null) { System.out.println("=======TimeEnd语句初始化完成=======" + tsanaRadar.getTimeEnd());
try { preparedStatement.setInt(7, tsanaRadar.getTimeCount());
preparedStatement.close(); System.out.println("=======TimeCount初始化完成=======" + tsanaRadar.getTimeCount());
} catch (SQLException e) { System.out.println("准备执行新增操作.........");
e.printStackTrace(); int i = preparedStatement.executeUpdate();
} if (i == 0) {
} System.out.println("新增数据成功,新增数量: = " + i);
if (connection != null) { } else {
try { System.out.println("新增数据,新增数量: " + i);
connection.close(); }
} catch (SQLException e) { } catch (Exception e) {
e.printStackTrace(); System.out.println("新增失败。。。。。。");
} e.printStackTrace();
} finally {
// 关闭连接和statement
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
} }
} }
}, threadPoolTaskExecutor); if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} }
public static void main(String[] args) {
LocalDate currentDate = LocalDate.now();
LocalDate twoDaysAgo = currentDate.minusDays(2);
System.out.println(twoDaysAgo);
}
} }