判断逻辑更改
parent
074326ce6a
commit
ad8f487866
|
|
@ -6,9 +6,9 @@ spring:
|
||||||
druid:
|
druid:
|
||||||
# 主库数据源
|
# 主库数据源
|
||||||
master:
|
master:
|
||||||
url: jdbc:mysql://39.104.15.118:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||||
username: root
|
username: root
|
||||||
password: Orderfood@2022
|
password: 12345678
|
||||||
# 从库数据源
|
# 从库数据源
|
||||||
slave:
|
slave:
|
||||||
# 从数据源开关/默认关闭
|
# 从数据源开关/默认关闭
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
Application Version: ${ruoyi.version}
|
|
||||||
Spring Boot Version: ${spring-boot.version}
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
// _ooOoo_ //
|
|
||||||
// o8888888o //
|
|
||||||
// 88" . "88 //
|
|
||||||
// (| ^_^ |) //
|
|
||||||
// O\ = /O //
|
|
||||||
// ____/`---'\____ //
|
|
||||||
// .' \\| |// `. //
|
|
||||||
// / \\||| : |||// \ //
|
|
||||||
// / _||||| -:- |||||- \ //
|
|
||||||
// | | \\\ - /// | | //
|
|
||||||
// | \_| ''\---/'' | | //
|
|
||||||
// \ .-\__ `-` ___/-. / //
|
|
||||||
// ___`. .' /--.--\ `. . ___ //
|
|
||||||
// ."" '< `.___\_<|>_/___.' >'"". //
|
|
||||||
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
|
|
||||||
// \ \ `-. \_ __\ /__ _/ .-` / / //
|
|
||||||
// ========`-.____`-.___\_____/___.-`____.-'======== //
|
|
||||||
// `=---=' //
|
|
||||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
|
|
||||||
// 佛祖保佑 永不宕机 永无BUG //
|
|
||||||
////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
@ -30,7 +30,6 @@ 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);
|
||||||
|
|
@ -48,14 +47,11 @@ 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);
|
||||||
|
|
|
||||||
|
|
@ -8,16 +8,22 @@ 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.*;
|
||||||
|
|
@ -39,61 +45,81 @@ 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 Map<Long, String> radarDelMap = new HashMap<>();
|
private static 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);
|
radarWebSocket(radarList, identifierHashMap);
|
||||||
});
|
}, threadPoolTaskExecutor);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void radarWebSocket(List<SysRadar> radarList) {
|
private void radarWebSocket(List<SysRadar> radarList, Map<String, SysIdentifier> identifierHashMap) {
|
||||||
// System.out.println(" 雷达集合:::" + radarList);
|
ArrayList<Socket> list = Lists.newArrayList();
|
||||||
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.runAsync(() -> {
|
CompletableFuture<Void> voidCompletableFuture = CompletableFuture.runAsync(() -> {
|
||||||
task(radar, socket);
|
task(radar, socket, identifierHashMap);
|
||||||
});
|
}, threadPoolTaskExecutor);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void task(SysRadar radar, Socket socket) {
|
private void task(SysRadar radar, Socket socket, Map<String, SysIdentifier> identifierHashMap) {
|
||||||
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 (Objects.nonNull(data.getData())){
|
if (readCount == 2) {
|
||||||
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();
|
||||||
|
|
@ -103,51 +129,49 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
|
||||||
if (current - noDataStart >= 2000) {
|
if (current - noDataStart >= 2000) {
|
||||||
// todo:存数据
|
// todo:存数据
|
||||||
if (CollectionUtils.isNotEmpty(map.get(getMapKey(radar)))) {
|
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);
|
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));
|
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);
|
// 拷贝封装类属性到雷达原始数据对象
|
||||||
primaryRadarData.setRadarIp(radar.getRadarIp());
|
BeanUtils.copyProperties(modbusResponse, primaryRadarData);
|
||||||
// if (primaryRadarData.getNumber()==(Integer.parseInt(radar.getRadarNum()))) {
|
primaryRadarData.setRadarIp(radar.getRadarIp());
|
||||||
primaryRadarData.setStationCode(radar.getStationCode());
|
primaryRadarData.setStationCode(radar.getStationCode());
|
||||||
// }else if (Objects.equals(radar.getRadarId(), data.getData().get(0))){
|
|
||||||
// primaryRadarData.setStationCode(radar.getStationCode());
|
primaryRadarData.setRadarId(data.getData().get(0));
|
||||||
// }
|
primaryRadarData.setRadarLocation(radar.getRadarLocation());
|
||||||
primaryRadarData.setRadarId(data.getData().get(0));
|
List<PrimaryRadarData> dataList = map.get(getMapKey(radar));
|
||||||
primaryRadarData.setRadarLocation(radar.getRadarLocation());
|
//判断读取数据中是否携带标签
|
||||||
List<PrimaryRadarData> dataList = map.get(getMapKey(radar));
|
if (!"0".equals(modbusResponse.getTagId())) {
|
||||||
//判断读取数据中是否携带标签
|
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), 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:存数据
|
||||||
|
|
@ -158,77 +182,91 @@ 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() + dataStart + "结束时间为:" + currentTimeMillis);
|
+ "此次雷达ip为:====" + primaryRadarData.getRadarIp() + "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp()
|
||||||
saveData(radar, map, readCount, data.getTime()-1, currentTimeMillis);
|
+ "此次雷达标签号为:====" + modbusResponse.getTagId() + "此次雷达标签号为:====" + dataList.get(dataList.size() - 1).getTagId()
|
||||||
|
+ data.getTime() + "结束时间为:" + currentTimeMillis);
|
||||||
|
saveData(radar, map, readCount, timeMap.get("noDataStart"), currentTimeMillis);
|
||||||
dataList.clear();
|
dataList.clear();
|
||||||
timeMap.put("noDataStart",System.currentTimeMillis());
|
timeMap.put("noDataStart", System.currentTimeMillis());
|
||||||
map.remove(getMapKey(radar));
|
map.remove(getMapKey(radar));
|
||||||
dataList.add(primaryRadarData);
|
dataList.add(primaryRadarData);
|
||||||
readCount = 1;
|
readCount = 1;
|
||||||
}
|
}
|
||||||
readCount++;
|
|
||||||
List<Date> readTime = map.get(getMapKey(radar))
|
|
||||||
.stream().map(PrimaryRadarData::getCreateTime).collect(Collectors.toList());
|
|
||||||
if (readTime.get(0) != null) {
|
|
||||||
readTime.set(0, new Date(System.currentTimeMillis()));
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
dataList.clear();
|
|
||||||
timeMap.put("noDataStart",System.currentTimeMillis());
|
|
||||||
map.remove(getMapKey(radar));
|
|
||||||
dataList.add(primaryRadarData);
|
|
||||||
readCount = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
consecutiveZeros = 0;
|
if (modbusResponse.getNumber() == 2){
|
||||||
} else {
|
if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId())
|
||||||
Long dataStart = timeMap.get("noDataStart");
|
&& !StringUtils.equals("0", dataList.get(dataList.size() - 1).getTagId())
|
||||||
//连续10次读取标签号为0
|
&& Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId())
|
||||||
consecutiveZeros++;
|
&& Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) {
|
||||||
if (10 == consecutiveZeros) {
|
// todo:存数据
|
||||||
// todo:存数据
|
long currentTimeMillis = System.currentTimeMillis();
|
||||||
long nullTime = 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);
|
||||||
|
dataList.clear();
|
||||||
|
timeMap.put("noDataStart", System.currentTimeMillis());
|
||||||
|
map.remove(getMapKey(radar));
|
||||||
|
dataList.add(primaryRadarData);
|
||||||
|
readCount = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
readCount++;
|
||||||
|
|
||||||
System.out.println("连续10次读取标签号为0:开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + noDataStart);
|
if (!Objects.equals(data.getData().get(0), dataList.get(dataList.size() - 1).getRadarId())) {
|
||||||
saveData(radar, map, readCount, data.getTime(), noDataStart);
|
long end = System.currentTimeMillis();
|
||||||
readCount = 1;
|
Long dataStart = timeMap.get("noDataStart");
|
||||||
map.remove(getMapKey(radar));
|
|
||||||
timeMap.remove("noDataStart");
|
System.out.println("突然读到另一个雷达id: " + "开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + end);
|
||||||
|
saveData(radar, map, readCount, data.getTime(), end);
|
||||||
dataList.clear();
|
dataList.clear();
|
||||||
consecutiveZeros = 0;
|
timeMap.put("noDataStart", System.currentTimeMillis());
|
||||||
|
map.remove(getMapKey(radar));
|
||||||
|
dataList.add(primaryRadarData);
|
||||||
|
readCount = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 没有配置过将铁包号置空
|
|
||||||
primaryRadarData.setLadleNumber(null);
|
|
||||||
primaryRadarData.setRadarIp(radar.getRadarIp());
|
|
||||||
}
|
}
|
||||||
CompletableFuture.runAsync(() -> {
|
|
||||||
primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
|
} else {
|
||||||
});
|
//连续10次读取标签号为0
|
||||||
noDataStart = current;
|
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);
|
||||||
|
readCount = 1;
|
||||||
|
map.remove(getMapKey(radar));
|
||||||
|
timeMap.put("noDataStart", System.currentTimeMillis());
|
||||||
|
dataList.clear();
|
||||||
|
consecutiveZeros = 0;
|
||||||
|
}
|
||||||
|
// 没有配置过将铁包号置空
|
||||||
|
primaryRadarData.setLadleNumber(null);
|
||||||
|
primaryRadarData.setRadarIp(radar.getRadarIp());
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
CompletableFuture.runAsync(() -> {
|
||||||
|
primaryRadarDataService.insertPrimaryRadarData(primaryRadarData);
|
||||||
|
}, threadPoolTaskExecutor);
|
||||||
|
noDataStart = current;
|
||||||
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -266,7 +304,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);
|
oracleInsert(tsanaRadar, radar);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
@ -274,14 +312,14 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static String getMapKey(SysRadar radar) {
|
private String getMapKey(SysRadar radar) {
|
||||||
return radar.getRadarIp() + "-" + radar.getRadarNum() + "-" + 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);
|
radarWebSocket(filterDataList, identifierHashMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -295,7 +333,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
|
||||||
* @param data
|
* @param data
|
||||||
* @return ModbusResponse
|
* @return ModbusResponse
|
||||||
*/
|
*/
|
||||||
private static SysDiscern copyDataToDiscern(PrimaryRadarData data) {
|
private 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());
|
||||||
|
|
@ -309,7 +347,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
|
||||||
* @param data
|
* @param data
|
||||||
* @return ModbusResponse
|
* @return ModbusResponse
|
||||||
*/
|
*/
|
||||||
public static ModbusResponse getModbusResponse(DataResponse data) {
|
public 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());
|
||||||
|
|
@ -325,64 +363,60 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void oracleInsert(TsanaRadar tsanaRadar) {
|
private void oracleInsert(TsanaRadar tsanaRadar, SysRadar radar) {
|
||||||
Connection connection = null;
|
CompletableFuture.runAsync(() -> {
|
||||||
PreparedStatement preparedStatement = null;
|
|
||||||
try {
|
|
||||||
Class.forName("oracle.jdbc.driver.OracleDriver");
|
|
||||||
|
|
||||||
String url = "jdbc:oracle:thin:@172.16.18.195:1523:xccb";
|
Connection connection = null;
|
||||||
String user = "radartest";
|
PreparedStatement preparedStatement = null;
|
||||||
String password = "radartest";
|
try {
|
||||||
connection = DriverManager.getConnection(url, user, password);
|
Class.forName("oracle.jdbc.driver.OracleDriver");
|
||||||
System.out.println(" ============= 连接数据库成功 ==========");
|
|
||||||
// ====================================================雷达编号, 标签编号, 工位代号, 标签号, 开始时间, 结束时间, 读取次数
|
String url = "jdbc:oracle:thin:@172.16.18.195:1523:xccb";
|
||||||
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 user = "radartest";
|
||||||
|
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'), ?)";
|
||||||
|
|
||||||
|
|
||||||
System.out.println("insertStatement = " + insertStatement);
|
preparedStatement = connection.prepareStatement(insertStatement);
|
||||||
preparedStatement = connection.prepareStatement(insertStatement);
|
preparedStatement.setString(1, tsanaRadar.getRadarCode());
|
||||||
System.out.println("SQL语句初始化完成");
|
preparedStatement.setString(2, tsanaRadar.getLabelCode());
|
||||||
preparedStatement.setString(1, tsanaRadar.getRadarCode());
|
preparedStatement.setString(3, tsanaRadar.getLocationIp());
|
||||||
System.out.println("=======RadarCode初始化完成=======" + tsanaRadar.getRadarCode());
|
preparedStatement.setString(4, tsanaRadar.getLabelNum());
|
||||||
preparedStatement.setString(2, tsanaRadar.getLabelCode());
|
preparedStatement.setString(5, tsanaRadar.getTimeBegin());
|
||||||
System.out.println("=======LabelCode初始化完成=======" + tsanaRadar.getLabelCode());
|
preparedStatement.setString(6, tsanaRadar.getTimeEnd());
|
||||||
preparedStatement.setString(3, tsanaRadar.getLocationIp());
|
preparedStatement.setInt(7, tsanaRadar.getTimeCount());
|
||||||
System.out.println("=======LocationIp初始化完成=======" + tsanaRadar.getLocationIp());
|
int i = preparedStatement.executeUpdate();
|
||||||
preparedStatement.setString(4, tsanaRadar.getLabelNum());
|
|
||||||
System.out.println("=======LabelNum语句初始化完成=======" + tsanaRadar.getLabelNum());
|
} catch (Throwable e) {
|
||||||
preparedStatement.setString(5, tsanaRadar.getTimeBegin());
|
e.printStackTrace();
|
||||||
System.out.println("=======TimeBegin语句初始化完成=======" + tsanaRadar.getTimeBegin());
|
} finally {
|
||||||
preparedStatement.setString(6, tsanaRadar.getTimeEnd());
|
// 关闭连接和statement
|
||||||
System.out.println("=======TimeEnd语句初始化完成=======" + tsanaRadar.getTimeEnd());
|
if (preparedStatement != null) {
|
||||||
preparedStatement.setInt(7, tsanaRadar.getTimeCount());
|
try {
|
||||||
System.out.println("=======TimeCount初始化完成=======" + tsanaRadar.getTimeCount());
|
preparedStatement.close();
|
||||||
System.out.println("准备执行新增操作.........");
|
} catch (SQLException e) {
|
||||||
int i = preparedStatement.executeUpdate();
|
e.printStackTrace();
|
||||||
if (i == 0) {
|
}
|
||||||
System.out.println("新增数据成功,新增数量: = " + i);
|
}
|
||||||
} else {
|
if (connection != null) {
|
||||||
System.out.println("新增数据,新增数量: " + i);
|
try {
|
||||||
}
|
connection.close();
|
||||||
} catch (Exception e) {
|
} catch (SQLException e) {
|
||||||
System.out.println("新增失败。。。。。。");
|
e.printStackTrace();
|
||||||
e.printStackTrace();
|
}
|
||||||
} finally {
|
|
||||||
// 关闭连接和statement
|
|
||||||
if (preparedStatement != null) {
|
|
||||||
try {
|
|
||||||
preparedStatement.close();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (connection != null) {
|
}, threadPoolTaskExecutor);
|
||||||
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue