From 3afa32bda44a3f4e05fe620f4a022db6f316e611 Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Tue, 14 Jan 2025 19:40:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/SocketDevResponseService.java | 58 ++++++++++++++----- .../handler/SocketSourceResponseService.java | 14 +++-- .../pojo/enums/SourceResponseCodeEnum.java | 2 +- .../detection/pojo/vo/CoefficientVO.java | 19 ++++++ .../util/socket/FormalTestManager.java | 2 + .../socket/cilent/NettyDevClientHandler.java | 8 +++ .../cilent/NettySourceClientHandler.java | 10 +--- 7 files changed, 85 insertions(+), 28 deletions(-) diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java index da052df2..812bada1 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java @@ -463,6 +463,12 @@ public class SocketDevResponseService { return percentage <= limit; } + private BigDecimal rangeNum(double num1, double num2){ + double diff = Math.abs(num1 - num2); + double larger = Math.max(num1, num2); + return BigDecimal.valueOf(diff / larger).setScale(4,RoundingMode.HALF_UP); + } + private void assemblyEntity(List deList, DevXiNumData.F F, CoefficientVO coefficientVO, CoefficientVO.DevParameter devParameter) { @@ -522,6 +528,14 @@ public class SocketDevResponseService { coefficientVO.setAIeXi(isWithinTenPercent(optionalIA, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格"); coefficientVO.setBIeXi(isWithinTenPercent(optionalIB, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格"); coefficientVO.setCIeXi(isWithinTenPercent(optionalIC, devParameter.getDevCurr(), iLimit) ? "合格" : "不合格"); + + coefficientVO.setAV(rangeNum(optionalA, devParameter.getDevVolt()).toString()); + coefficientVO.setBV(rangeNum(optionalB, devParameter.getDevVolt()).toString()); + coefficientVO.setCV(rangeNum(optionalC, devParameter.getDevVolt()).toString()); + coefficientVO.setAI(rangeNum(optionalIA, devParameter.getDevVolt()).toString()); + coefficientVO.setBI(rangeNum(optionalIB, devParameter.getDevVolt()).toString()); + coefficientVO.setCI(rangeNum(optionalIC, devParameter.getDevVolt()).toString()); + if("不合格".equals(coefficientVO.getAVuXi()) ||"不合格".equals(coefficientVO.getBVuXi()) ||"不合格".equals(coefficientVO.getCVuXi()) ||"不合格".equals(coefficientVO.getAIeXi()) ||"不合格".equals(coefficientVO.getBIeXi()) ||"不合格".equals(coefficientVO.getCIeXi())){ coefficientVO.setResultFlag(0); }else { @@ -726,6 +740,7 @@ public class SocketDevResponseService { SocketManager.addSourceList(sourceIssues); Map sourceIssueMap = sourceIssues.stream().collect(Collectors.groupingBy(SourceIssue::getType, Collectors.counting())); SocketManager.initMap(sourceIssueMap); + socketMsg.setData(JSON.toJSONString(sourceIssues.get(0))); socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue() + stepTag + sourceIssues.get(0).getType()); SocketManager.sendMsg(param.getUserPageId() + handlerSourceStr, JSON.toJSONString(socketMsg)); @@ -825,9 +840,18 @@ public class SocketDevResponseService { dataMsg.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); for (SourceCompareDev sourceCompareDev : info) { - dataMsg.setData(sourceCompareDev.getDevName() + splitTag + sourceCompareDev.getLineNum() + sourceCompareDev.getDesc() + "校验结果:" + (sourceCompareDev.getIsQualified() ? "合格" : "不合格")); + dataMsg.setData(sourceCompareDev.getDevName() + splitTag + sourceCompareDev.getLineNum() + SocketManager.valueTypeMap.get(sourceCompareDev.getDesc()) + "校验结果:" + (sourceCompareDev.getIsQualified() ? "合格" : "不合格")); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(dataMsg)); } + + if(info.stream().anyMatch(it -> !it.getIsQualified())){ + WebSocketVO webSocketVO = new WebSocketVO<>(); + webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue()); + webSocketVO.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); + webSocketVO.setCode(SourceResponseCodeEnum.PHASE_CHECK_FAIL.getCode()); + webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO)); + return; + } } //向前端推送消息 @@ -839,7 +863,7 @@ public class SocketDevResponseService { successComm.clear(); if (param.getOperateType().equals(SourceOperateCodeEnum.PRE_TEST.getValue())) { - System.out.println("预检测流程接受-----------------关闭源"); + System.out.println("预检测流程结束-----------------关闭源"); //同时关闭设备三个步骤 CnSocketUtil.quitSend(param); } else if (param.getOperateType().equals(SourceOperateCodeEnum.COEFFICIENT_TEST.getValue())) { @@ -916,7 +940,7 @@ public class SocketDevResponseService { if (successComm.size() == FormalTestManager.monitorIdListComm.size()) { - //TODO 理论上遇到返回code10200的数量与监测点数量一致则认为数据返回结束,但是会存在缺失数据情况,例如有部分装置是没有暂降功能的 + System.out.println(sourceIssue.getType() + splitTag + sourceIssue.getIndex() + "当前测试小项读取数据已经全部结束。。。。。。。。。"); //修改装置为监测中 adPlanService.updateTestState(param.getPlanId(), param.getDevIds()); @@ -925,9 +949,7 @@ public class SocketDevResponseService { //调用判断方法 Map textResult = detectionServiceImpl.processing(realDataXiList, param, FormalTestManager.devIdMapComm, sourceIssue, dataRule); - WebSocketVO> webSocketVO = new WebSocketVO<>(); - webSocketVO.setRequestId(socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd); - webSocketVO.setDesc(sourceIssue.getDesc()); + //组装实体推送给前台 List devListRes = new ArrayList<>(); FormalTestManager.devList.forEach(dev -> { @@ -944,15 +966,20 @@ public class SocketDevResponseService { devLineTestResult.setChnResult(resultFlagList.toArray(new Integer[monitorListDTOList.size()])); devListRes.add(devLineTestResult); }); + + WebSocketVO> webSocketVO = new WebSocketVO<>(); + webSocketVO.setRequestId(socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd); + webSocketVO.setDesc(sourceIssue.getDesc()); webSocketVO.setData(devListRes); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO)); - + //当小项结束后需要删除集合中的小项 + SocketManager.delSource(sourceIssue.getIndex()); + System.out.println("当前小项结束进行删除============" + sourceIssue.getType() + splitTag + sourceIssue.getIndex()); long tem = SocketManager.getSourceTarget(sourceIssue.getType()) - 1; SocketManager.addTargetMap(sourceIssue.getType(), tem); System.out.println("该大项还有" + tem + "个小项没有进行检测!!!!!!!!"); - if (tem == 0) { System.out.println(sourceIssue.getType() + sourceIssue.getIndex() + "当前测试大项已经全部结束》》》》》》》》"); //当val为0则认为大项中的小项已经全部跑完,开始组装信息推送给前端 @@ -960,13 +987,10 @@ public class SocketDevResponseService { webSocketVO.setRequestId(socketDataMsg.getRequestId().split(stepTag)[1] + stepEnd); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO)); } - System.out.println("当前小项结束进行删除============" + sourceIssue.getType() + splitTag + sourceIssue.getIndex()); - //当小项结束后需要删除集合中的小项 - SocketManager.delSource(sourceIssue.getIndex()); //在这一步判断是否已经触发暂停按钮 - if (FormalTestManager.stopFlag) { - // CnSocketUtil.quitSend(param); + if (FormalTestManager.stopFlag && CollUtil.isNotEmpty(SocketManager.getSourceList())) { + FormalTestManager.stopTime = 0; successComm.clear(); realDataXiList.clear(); sendWebSocket(param.getUserPageId(), "preStopTest", "stop", null); @@ -976,8 +1000,13 @@ public class SocketDevResponseService { //开始进行下一项检测 List sourceIssueList = SocketManager.getSourceList(); if (CollUtil.isNotEmpty(sourceIssueList)) { - SourceIssue sourceIssues = SocketManager.getSourceList().get(0); + if(tem == 0){ + webSocketVO.setRequestId(sourceIssues.getType()+ stepBegin); + webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO)); + + } + SocketMsg xuMsg = new SocketMsg<>(); xuMsg.setOperateCode(SourceOperateCodeEnum.OPER_GATHER.getValue()); xuMsg.setData(JSON.toJSONString(sourceIssues)); @@ -1198,6 +1227,7 @@ public class SocketDevResponseService { successComm.clear(); successDevComm.clear(); failDevComm.clear(); + FormalTestManager.stopFlag = false; //初始化相序集合 this.devInfo.clear(); diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java index 5bd7c217..c7b5b523 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketSourceResponseService.java @@ -315,10 +315,7 @@ public class SocketSourceResponseService { SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); - //告诉前端当前项开始了 - WebSocketVO> webSocketVO = new WebSocketVO<>(); - webSocketVO.setRequestId(socketDataMsg.getRequestId().split(stepTag)[1]+stepBegin); - webSocketVO.setDesc(SocketManager.getSourceList().get(0).getDesc()); + List devListRes = new ArrayList<>(); devList.forEach(item->{ DevLineTestResult devLineTestResult = new DevLineTestResult(); @@ -326,6 +323,15 @@ public class SocketSourceResponseService { devLineTestResult.setDeviceName(item.getDevName()); devListRes.add(devLineTestResult); }); + + //告诉前端当前项开始了 + WebSocketVO> webSocketVO = new WebSocketVO<>(); + webSocketVO.setRequestId(socketDataMsg.getRequestId().split(stepTag)[1]+stepBegin); + webSocketVO.setData(devListRes); + webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO)); + + webSocketVO.setRequestId(socketDataMsg.getRequestId().split(stepTag)[1]+stepBegin); + webSocketVO.setDesc(SocketManager.getSourceList().get(0).getDesc()); webSocketVO.setData(devListRes); webSocketHandler.sendMsgToUser(param.getUserPageId(), JSON.toJSONString(webSocketVO)); diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceResponseCodeEnum.java b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceResponseCodeEnum.java index b2267d36..39cc43a5 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceResponseCodeEnum.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceResponseCodeEnum.java @@ -38,7 +38,7 @@ public enum SourceResponseCodeEnum { SOCKET_ERROR(25000,"服务端连接失败"), DEV_COMM_ALL_SUCCESS(25001,"校验成功"), DEV_COMM_TEST_FAIL(25002,"设备通讯校验失败"), - + PHASE_CHECK_FAIL(25003,"相序校验未通过"), diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/vo/CoefficientVO.java b/detection/src/main/java/com/njcn/gather/detection/pojo/vo/CoefficientVO.java index 5db4bb7b..3b70ea80 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/vo/CoefficientVO.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/vo/CoefficientVO.java @@ -63,6 +63,25 @@ public class CoefficientVO { private String cIeXi; + @JSONField(name = "aV", ordinal = 16) + private String aV; + + @JSONField(name = "bV", ordinal = 17) + private String bV; + + @JSONField(name = "cV", ordinal = 18) + private String cV; + + @JSONField(name = "aI", ordinal = 19) + private String aI; + + @JSONField(name = "bI", ordinal = 20) + private String bI; + + @JSONField(name = "cI", ordinal = 21) + private String cI; + + /** * 标识校验不合格的为 0 合格项为 1 diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/FormalTestManager.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/FormalTestManager.java index 0d19d9ee..9fdf2f7f 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/FormalTestManager.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/FormalTestManager.java @@ -42,5 +42,7 @@ public class FormalTestManager { public static Boolean stopFlag = false; + public static Integer stopTime = 0; + } diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyDevClientHandler.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyDevClientHandler.java index 863a921d..7173e24e 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyDevClientHandler.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyDevClientHandler.java @@ -87,6 +87,7 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler { @Override public void channelInactive(ChannelHandlerContext ctx) { System.out.println("设备通讯客户端断线"); + ctx.close(); SocketManager.removeUser(param.getUserPageId() + dev); } @@ -139,6 +140,13 @@ public class NettyDevClientHandler extends SimpleChannelInboundHandler { CnSocketUtil.quitSend(param); } System.out.println("已经等了一分钟了。。。。。。。。。。。。"); + }else { + //如果是暂停操作后 + FormalTestManager.stopTime+=60; + System.out.println("当前进入暂停操作超时函数-----------------"+FormalTestManager.stopTime); + if(FormalTestManager.stopTime > 600){ + CnSocketUtil.quitSend(param); + } } } } diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettySourceClientHandler.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettySourceClientHandler.java index 58c447c9..7de4933a 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettySourceClientHandler.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettySourceClientHandler.java @@ -72,15 +72,7 @@ public class NettySourceClientHandler extends SimpleChannelInboundHandler {