装置通讯检测

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);
SourceOperateCodeEnum sourceOperateCodeEnum = SourceOperateCodeEnum.getDictDataEnumByCode(socketDataMsg.getRequestId());
switch (sourceOperateCodeEnum) {
case YJC_SBTXJY:
devComm(socketDataMsg,param,msg);
devComm(socketDataMsg, param, msg);
break;
case QUITE:
SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode());
String userKey = param.getUserPageId()+handlerStr;
switch (dictDataEnumByCode){
String userKey = param.getUserPageId() + handlerStr;
switch (dictDataEnumByCode) {
case SUCCESS:
//通讯校验成功
webSocketHandler.sendMsgToUser(userKey, msg);
Channel channel = SocketManager.getChannelByUserId(userKey);
channel.close();
SocketManager.removeUser(userKey);
break;
case UNPROCESSED_BUSINESS:
break;
@@ -84,39 +110,45 @@ public class SocketDevResponseService {
}
break;
case YJC_XYJY:
devXieyi(socketDataMsg,param,msg);
devXieyi(socketDataMsg, param, msg);
break;
case YJC_XUJY:
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());
String s = param.getUserPageId() + handlerStr;
SocketMsg socketMsg=new SocketMsg();
switch (dictDataEnumByCode){
SocketMsg socketMsg = new SocketMsg();
switch (dictDataEnumByCode) {
case SUCCESS:
//通讯校验成功
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg);
String mId = JSON.parseObject(msg).get("data").toString();
successComm.add(mId);
System.out.println(successComm.size()+"====="+moniterIdListComm.size());
if (successComm.size() == moniterIdListComm.size()) {
//开始进行协议校验
/* List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds());
List<PreDetection> devList = iPqDevService.getDevInfo(param.getDevIds());
Map<String, List<PreDetection>> map = new HashMap(1);
map.put("deviceList", devList);
String jsonString = JSON.toJSONString(map);
socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue());
socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_02.getValue());
socketMsg.setData(jsonString);
String json = JSON.toJSONString(socketMsg);*/
//
String json = JSON.toJSONString(socketMsg);
System.out.println("开始协议校验++++++++++");
//SocketManager.sendMsg(s,json);
SocketManager.sendMsg(s, json);
}
break;
case UNPROCESSED_BUSINESS:
@@ -134,8 +166,11 @@ public class SocketDevResponseService {
//发起关闭操作
socketMsg.setRequestId("quit");
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;
default:
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());
switch (dictDataEnumByCode){
case SUCCESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg);
SocketMsg socketMsg = new SocketMsg();
String s = param.getUserPageId() + handlerStr;
switch (dictDataEnumByCode) {
case SUCCESS:
webSocketHandler.sendMsgToUser(param.getUserPageId(), msg);
System.out.println(successXieyi.size()+"====="+moniterIdListXieyi.size());
String mId = JSON.parseObject(msg).get("data").toString();
successXieyi.add(mId);
if (successXieyi.size() == moniterIdListXieyi.size()) {
//开始相序校验
}
break;
case UNPROCESSED_BUSINESS:
break;
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;
default:
WebSocketVO webSocketVO = new WebSocketVO();
@@ -188,9 +239,9 @@ public class SocketDevResponseService {
case SUCCESS:
success.add(devData.getId());
if (success.size() == moniterIdList.size()) {
PqScriptIssueParam sourceParam=new PqScriptIssueParam();
PqScriptIssueParam sourceParam = new PqScriptIssueParam();
List<SourceIssue> sourceIssues = scriptDtlsService.listSourceIssue(sourceParam);
if(CollUtil.isNotEmpty(sourceIssues)){
if (CollUtil.isNotEmpty(sourceIssues)) {
List<SourceCompareDev> info = new ArrayList<>();
for (DevData dev : devInfo) {
info.addAll(devIsSource(dev, sourceIssues.get(0)));
@@ -235,7 +286,7 @@ public class SocketDevResponseService {
// list.add(socketDataMsg);
list.add(socketDataMsgb);
String is="\n" +
String is = "\n" +
" {\n" +
" \"sourceId\": \"1111\",\n" +
" \"type\": \"Freq\",\n" +
@@ -429,7 +480,7 @@ public class SocketDevResponseService {
private List<SourceCompareDev> devIsSource(DevData dev, SourceIssue issue) {
List<SourceCompareDev> info=new ArrayList<>();
List<SourceCompareDev> info = new ArrayList<>();
String[] split = dev.getId().split("_");
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> dataI = sqlData.stream().filter(x -> "电流有效值".equals(x.getDesc())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(dataV)) {
SourceCompareDev compareDev = getSourceCompareDev(split, dataV,"电压有效值","U", channelList);
SourceCompareDev compareDev = getSourceCompareDev(split, dataV, "电压有效值", "U", channelList);
info.add(compareDev);
}
if (CollUtil.isNotEmpty(dataI)) {
SourceCompareDev compareDev = getSourceCompareDev(split, dataI,"电流有效值","I", channelList);
SourceCompareDev compareDev = getSourceCompareDev(split, dataI, "电流有效值", "I", channelList);
info.add(compareDev);
}
@@ -450,6 +501,7 @@ public class SocketDevResponseService {
/**
* 计算是否合格
*
* @param split
* @param data
* @param name 指标名称
@@ -469,33 +521,33 @@ public class SocketDevResponseService {
compareDev.setDesc(name);
//装置数据
DevData.SqlDataDTO.ListDTO devData = data.get(0).getList();
List<SourceIssue.ChannelListDTO> sourceList = channelList.stream().filter(x -> (type+"a").equals(x.getChannelType()) ||
(type+"b").equals(x.getChannelType()) ||
(type+"c").equals(x.getChannelType())
List<SourceIssue.ChannelListDTO> sourceList = channelList.stream().filter(x -> (type + "a").equals(x.getChannelType()) ||
(type + "b").equals(x.getChannelType()) ||
(type + "c").equals(x.getChannelType())
).collect(Collectors.toList());
Map<String, Float> sourceMap = sourceList.stream()
.collect(Collectors.toMap(x -> x.getChannelType().toUpperCase().replace(type, "")
, SourceIssue.ChannelListDTO::getFAmp));
Map<String,Float> devMap =new HashMap<>(3);
devMap.put("A",devData.getA());
devMap.put("B",devData.getB());
devMap.put("C",devData.getC());
Map<String, Float> devMap = new HashMap<>(3);
devMap.put("A", devData.getA());
devMap.put("B", devData.getB());
devMap.put("C", devData.getC());
Boolean is = true;
for (SourceIssue.ChannelListDTO channelListDTO : sourceList) {
if (!is) {
break;
}
if (channelListDTO.getChannelType().equals((type+"a"))) {
if (channelListDTO.getChannelType().equals((type + "a"))) {
is = NumberUtil.isIn(BigDecimal.valueOf(devData.getA()),
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
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()),
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
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()),
BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95),
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 com.alibaba.fastjson.JSON;
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.pojo.enums.SourceOperateCodeEnum;
import com.njcn.gather.detection.pojo.param.PreDetectionParam;
@@ -45,6 +46,8 @@ public class PreDetectionServiceImpl implements PreDetectionService {
private final IPqSourceService pqSourceService;
private final IPqScriptDtlsService pqScriptDtlsService;
private final SocketDevResponseService socketDevResponseService;
@Value("${socket.source.ip}")
private String ip;
@@ -124,6 +127,10 @@ public class PreDetectionServiceImpl implements PreDetectionService {
@Override
public boolean startTest(PreDetectionParam param) {
socketDevResponseService.initList(param);
Runnable runnable = new Runnable() {
@Override
public void run() {