装置通讯检测

This commit is contained in:
2024-12-18 16:19:11 +08:00
parent 786586e40c
commit 97e009c84c
2 changed files with 131 additions and 51 deletions

View File

@@ -54,26 +54,52 @@ public class SocketDevResponseService {
/** /**
* 装置名称 * 装置名称
*/ */
Map<String,String> devNameMap = new HashMap<>(); Map<String, String> devNameMap = new HashMap<>();
public void deal(PreDetectionParam param,String msg){
/**
* 所有装置通道信息
*/
List<String> moniterIdListComm = new ArrayList<>();
/**
* 成功结束的装置
*/
List<String> successComm = new ArrayList<>();
/**
* 装置名称
*/
Map<String, String> devNameMapComm = new HashMap<>();
/**
* 所有装置通道信息
*/
List<String> moniterIdListXieyi = new ArrayList<>();
/**
* 成功结束的装置
*/
List<String> successXieyi = new ArrayList<>();
/**
* 装置名称
*/
Map<String, String> devNameMapXieyi = new HashMap<>();
public void deal(PreDetectionParam param, String msg) {
SocketDataMsg socketDataMsg = MsgUtil.socketDataMsg(msg); SocketDataMsg socketDataMsg = MsgUtil.socketDataMsg(msg);
SourceOperateCodeEnum sourceOperateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getRequestId()); SourceOperateCodeEnum sourceOperateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getRequestId());
switch (sourceOperateCodeEnum) { switch (sourceOperateCodeEnum) {
case YJC_SBTXJY: case YJC_SBTXJY:
devComm(socketDataMsg,param,msg); devComm(socketDataMsg, param, msg);
break; break;
case QUITE: case QUITE:
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
String userKey = param.getUserPageId()+handlerStr; String userKey = param.getUserPageId() + handlerStr;
switch (dictDataEnumByCode){ switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
//通讯校验成功 //通讯校验成功
webSocketHandler.sendMsgToUser(userKey, msg); webSocketHandler.sendMsgToUser(userKey, msg);
Channel channel = SocketManager.getChannelByUserId(userKey);
channel.close();
SocketManager.removeUser(userKey);
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
break; break;
@@ -84,39 +110,45 @@ public class SocketDevResponseService {
} }
break; break;
case YJC_XYJY: case YJC_XYJY:
devXieyi(socketDataMsg,param,msg); devXieyi(socketDataMsg, param, msg);
break; break;
case YJC_XUJY: case YJC_XUJY:
break; break;
} }
} }
private Map<String, Map<String, Integer>> reloverMap = new HashMap<>();
private void devComm(SocketDataMsg socketDataMsg, PreDetectionParam param, String msg) {
private void devComm(SocketDataMsg socketDataMsg,PreDetectionParam param,String msg){
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
String s = param.getUserPageId() + handlerStr; String s = param.getUserPageId() + handlerStr;
SocketMsg socketMsg=new SocketMsg(); SocketMsg socketMsg = new SocketMsg();
switch (dictDataEnumByCode){ switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
//通讯校验成功 //通讯校验成功
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg); webSocketHandler.sendMsgToUser(param.getUserPageId(), msg);
//开始进行协议校验 String mId = JSON.parseObject(msg).get("data").toString();
/* List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds()); successComm.add(mId);
Map<String, List<PreDetection>> map = new HashMap(1);
map.put("deviceList", devList); System.out.println(successComm.size()+"====="+moniterIdListComm.size());
String jsonString = JSON.toJSONString(map); if (successComm.size() == moniterIdListComm.size()) {
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); //开始进行协议校验
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue()); List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds());
socketMsg.setData(jsonString); Map<String, List<PreDetection>> map = new HashMap(1);
String json = JSON.toJSONString(socketMsg);*/ map.put("deviceList", devList);
// String jsonString = JSON.toJSONString(map);
System.out.println("开始协议校验++++++++++"); socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
//SocketManager.sendMsg(s,json); socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue());
socketMsg.setData(jsonString);
String json = JSON.toJSONString(socketMsg);
System.out.println("开始协议校验++++++++++");
SocketManager.sendMsg(s, json);
}
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
@@ -134,8 +166,11 @@ public class SocketDevResponseService {
//发起关闭操作 //发起关闭操作
socketMsg.setRequestId("quit"); socketMsg.setRequestId("quit");
socketMsg.setOperateCode("QUIT_FUNEND$01"); socketMsg.setOperateCode("QUIT_FUNEND$01");
SocketManager.sendMsg(s,JSON.toJSONString(socketMsg)); SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
socketMsg.setOperateCode("QUIT_FUNEND$02");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
socketMsg.setOperateCode("QUIT_FUNEND$03");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
break; break;
default: default:
WebSocketVO webSocketVO = new WebSocketVO(); WebSocketVO webSocketVO = new WebSocketVO();
@@ -146,18 +181,34 @@ public class SocketDevResponseService {
} }
private void devXieyi(SocketDataMsg socketDataMsg,PreDetectionParam param,String msg){ private void devXieyi(SocketDataMsg socketDataMsg, PreDetectionParam param, String msg) {
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
switch (dictDataEnumByCode){ SocketMsg socketMsg = new SocketMsg();
String s = param.getUserPageId() + handlerStr;
switch (dictDataEnumByCode) {
case SUCCESS: case SUCCESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg); webSocketHandler.sendMsgToUser(param.getUserPageId(), msg);
String s = param.getUserPageId() + handlerStr; System.out.println(successXieyi.size()+"====="+moniterIdListXieyi.size());
String mId = JSON.parseObject(msg).get("data").toString();
successXieyi.add(mId);
if (successXieyi.size() == moniterIdListXieyi.size()) {
//开始相序校验
}
break; break;
case UNPROCESSED_BUSINESS: case UNPROCESSED_BUSINESS:
break; break;
case RE_OPERATE: case RE_OPERATE:
//发起关闭操作 //发起关闭操作
//发起关闭操作
socketMsg.setRequestId("quit");
socketMsg.setOperateCode("QUIT_FUNEND$01");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
socketMsg.setOperateCode("QUIT_FUNEND$02");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
socketMsg.setOperateCode("QUIT_FUNEND$03");
SocketManager.sendMsg(s, JSON.toJSONString(socketMsg));
break; break;
default: default:
WebSocketVO webSocketVO = new WebSocketVO(); WebSocketVO webSocketVO = new WebSocketVO();
@@ -174,7 +225,7 @@ public class SocketDevResponseService {
moniterIdList = pqDevList.stream().flatMap(x -> x.getMonitorList().stream()) moniterIdList = pqDevList.stream().flatMap(x -> x.getMonitorList().stream())
.map(PreDetection.MonitorListDTO::getLineId) .map(PreDetection.MonitorListDTO::getLineId)
.collect(Collectors.toList()); .collect(Collectors.toList());
devNameMap = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName)); devNameMap = pqDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevName));
// moniterIdList.add("192.168.1.186_1"); // moniterIdList.add("192.168.1.186_1");
} }
@@ -188,9 +239,9 @@ public class SocketDevResponseService {
case SUCCESS: case SUCCESS:
success.add(devData.getId()); success.add(devData.getId());
if (success.size() == moniterIdList.size()) { if (success.size() == moniterIdList.size()) {
PqScriptIssueParam sourceParam=new PqScriptIssueParam(); PqScriptIssueParam sourceParam = new PqScriptIssueParam();
List<SourceIssue> sourceIssues = scriptDtlsService.listSourceIssue(sourceParam); List<SourceIssue> sourceIssues = scriptDtlsService.listSourceIssue(sourceParam);
if(CollUtil.isNotEmpty(sourceIssues)){ if (CollUtil.isNotEmpty(sourceIssues)) {
List<SourceCompareDev> info = new ArrayList<>(); List<SourceCompareDev> info = new ArrayList<>();
for (DevData dev : devInfo) { for (DevData dev : devInfo) {
info.addAll(devIsSource(dev, sourceIssues.get(0))); info.addAll(devIsSource(dev, sourceIssues.get(0)));
@@ -235,7 +286,7 @@ public class SocketDevResponseService {
// list.add(socketDataMsg); // list.add(socketDataMsg);
list.add(socketDataMsgb); list.add(socketDataMsgb);
String is="\n" + String is = "\n" +
" {\n" + " {\n" +
" \"sourceId\": \"1111\",\n" + " \"sourceId\": \"1111\",\n" +
" \"type\": \"Freq\",\n" + " \"type\": \"Freq\",\n" +
@@ -428,8 +479,8 @@ public class SocketDevResponseService {
} }
private List<SourceCompareDev> devIsSource(DevData dev, SourceIssue issue) { private List<SourceCompareDev> devIsSource(DevData dev, SourceIssue issue) {
List<SourceCompareDev> info=new ArrayList<>(); List<SourceCompareDev> info = new ArrayList<>();
String[] split = dev.getId().split("_"); String[] split = dev.getId().split("_");
List<SourceIssue.ChannelListDTO> channelList = issue.getChannelList(); List<SourceIssue.ChannelListDTO> channelList = issue.getChannelList();
@@ -437,11 +488,11 @@ public class SocketDevResponseService {
List<DevData.SqlDataDTO> dataV = sqlData.stream().filter(x -> "电压有效值".equals(x.getDesc())).collect(Collectors.toList()); List<DevData.SqlDataDTO> dataV = sqlData.stream().filter(x -> "电压有效值".equals(x.getDesc())).collect(Collectors.toList());
List<DevData.SqlDataDTO> dataI = sqlData.stream().filter(x -> "电流有效值".equals(x.getDesc())).collect(Collectors.toList()); List<DevData.SqlDataDTO> dataI = sqlData.stream().filter(x -> "电流有效值".equals(x.getDesc())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataV)) { if (CollUtil.isNotEmpty(dataV)) {
SourceCompareDev compareDev = getSourceCompareDev(split, dataV,"电压有效值","U", channelList); SourceCompareDev compareDev = getSourceCompareDev(split, dataV, "电压有效值", "U", channelList);
info.add(compareDev); info.add(compareDev);
} }
if (CollUtil.isNotEmpty(dataI)) { if (CollUtil.isNotEmpty(dataI)) {
SourceCompareDev compareDev = getSourceCompareDev(split, dataI,"电流有效值","I", channelList); SourceCompareDev compareDev = getSourceCompareDev(split, dataI, "电流有效值", "I", channelList);
info.add(compareDev); info.add(compareDev);
} }
@@ -450,10 +501,11 @@ public class SocketDevResponseService {
/** /**
* 计算是否合格 * 计算是否合格
*
* @param split * @param split
* @param data * @param data
* @param name 指标名称 * @param name 指标名称
* @param type U,I * @param type U,I
* @param channelList * @param channelList
* @return * @return
*/ */
@@ -469,33 +521,33 @@ public class SocketDevResponseService {
compareDev.setDesc(name); compareDev.setDesc(name);
//装置数据 //装置数据
DevData.SqlDataDTO.ListDTO devData = data.get(0).getList(); DevData.SqlDataDTO.ListDTO devData = data.get(0).getList();
List<SourceIssue.ChannelListDTO> sourceList = channelList.stream().filter(x -> (type+"a").equals(x.getChannelType()) || List<SourceIssue.ChannelListDTO> sourceList = channelList.stream().filter(x -> (type + "a").equals(x.getChannelType()) ||
(type+"b").equals(x.getChannelType()) || (type + "b").equals(x.getChannelType()) ||
(type+"c").equals(x.getChannelType()) (type + "c").equals(x.getChannelType())
).collect(Collectors.toList()); ).collect(Collectors.toList());
Map<String, Float> sourceMap = sourceList.stream() Map<String, Float> sourceMap = sourceList.stream()
.collect(Collectors.toMap(x -> x.getChannelType().toUpperCase().replace(type, "") .collect(Collectors.toMap(x -> x.getChannelType().toUpperCase().replace(type, "")
, SourceIssue.ChannelListDTO::getFAmp)); , SourceIssue.ChannelListDTO::getFAmp));
Map<String,Float> devMap =new HashMap<>(3); Map<String, Float> devMap = new HashMap<>(3);
devMap.put("A",devData.getA()); devMap.put("A", devData.getA());
devMap.put("B",devData.getB()); devMap.put("B", devData.getB());
devMap.put("C",devData.getC()); devMap.put("C", devData.getC());
Boolean is = true; Boolean is = true;
for (SourceIssue.ChannelListDTO channelListDTO : sourceList) { for (SourceIssue.ChannelListDTO channelListDTO : sourceList) {
if (!is) { if (!is) {
break; break;
} }
if (channelListDTO.getChannelType().equals((type+"a"))) { if (channelListDTO.getChannelType().equals((type + "a"))) {
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()), is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()),
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)); BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
} }
if (channelListDTO.getChannelType().equals((type+"b"))) { if (channelListDTO.getChannelType().equals((type + "b"))) {
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getB()), is = NumberUtil.isIn(BigDecimal.valueOf(devData.getB()),
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)); BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
} }
if (channelListDTO.getChannelType().equals((type+"c"))) { if (channelListDTO.getChannelType().equals((type + "c"))) {
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getC()), is = NumberUtil.isIn(BigDecimal.valueOf(devData.getC()),
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)); BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05));
@@ -509,4 +561,25 @@ public class SocketDevResponseService {
} }
/**
* 初始化集合
*/
public void initList(PreDetectionParam param) {
this.moniterIdListComm = new ArrayList<>();
this.successComm = new ArrayList<>();
this.devNameMapComm = new HashMap<>();
this.moniterIdListXieyi = new ArrayList<>();
this.successXieyi = new ArrayList<>();
this.devNameMapXieyi = new HashMap<>();
List<PreDetection> pqDevList = iPqDevService.getDevInfo(param.getDevIds());
this.moniterIdListComm = pqDevList.stream().flatMap(x -> x.getMonitorList().stream())
.map(PreDetection.MonitorListDTO::getLineId)
.collect(Collectors.toList());
}
} }

View File

@@ -4,6 +4,7 @@ package com.njcn.gather.detection.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.gather.detection.handler.SocketDevResponseService;
import com.njcn.gather.detection.handler.SocketSourceResponseService; import com.njcn.gather.detection.handler.SocketSourceResponseService;
import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum; import com.njcn.gather.detection.pojo.enums.SourceOperateCodeEnum;
import com.njcn.gather.detection.pojo.param.PreDetectionParam; import com.njcn.gather.detection.pojo.param.PreDetectionParam;
@@ -45,6 +46,8 @@ public class PreDetectionServiceImpl implements PreDetectionService {
private final IPqSourceService pqSourceService; private final IPqSourceService pqSourceService;
private final IPqScriptDtlsService pqScriptDtlsService; private final IPqScriptDtlsService pqScriptDtlsService;
private final SocketDevResponseService socketDevResponseService;
@Value("${socket.source.ip}") @Value("${socket.source.ip}")
private String ip; private String ip;
@@ -124,6 +127,10 @@ public class PreDetectionServiceImpl implements PreDetectionService {
@Override @Override
public boolean startTest(PreDetectionParam param) { public boolean startTest(PreDetectionParam param) {
socketDevResponseService.initList(param);
Runnable runnable = new Runnable() { Runnable runnable = new Runnable() {
@Override @Override
public void run() { public void run() {