From 7394762e281d4ad1e65e6ce6809c61c63d5e0e1f Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Thu, 16 Oct 2025 10:19:13 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AA=E5=8F=98=E3=80=81=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SocketContrastResponseService.java | 417 ++++++++++++++---- .../pojo/enums/SourceOperateCodeEnum.java | 2 + .../pojo/enums/SourceResponseCodeEnum.java | 3 +- .../service/impl/DetectionServiceImpl.java | 26 +- .../util/socket/FormalTestManager.java | 15 + .../cilent/NettyContrastClientHandler.java | 35 +- .../socket/websocket/WebSocketHandler.java | 12 +- .../err/service/impl/PqErrSysServiceImpl.java | 6 +- .../monitor/pojo/param/PqMonitorParam.java | 2 +- .../plan/service/impl/AdPlanServiceImpl.java | 2 +- .../service/impl/ResultServiceImpl.java | 123 ++++-- 11 files changed, 487 insertions(+), 156 deletions(-) diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketContrastResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketContrastResponseService.java index f54fa172..cdaef49a 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketContrastResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketContrastResponseService.java @@ -175,7 +175,12 @@ public class SocketContrastResponseService { FormalTestManager.preNumTestResultList.clear(); checkResult = false; - + FormalTestManager.isTesting = true; + FormalTestManager.realProtocol = false; + FormalTestManager.statisticsProtocol = false; + FormalTestManager.voltageProtocol = false; + FormalTestManager.pstDataType = null; + FormalTestManager.isPstData = false; FormalTestManager.isWaveCheck = false; FormalTestManager.nonWaveDataSourceEnum = null; @@ -413,8 +418,8 @@ public class SocketContrastResponseService { //开始模型一致性校验 System.out.println("装置通信成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始模型一致性校验》》》》》》》》》》》》》》》》"); List allDataType = this.getAllDataType(); - if (allDataType.contains(getPrefixEnum().getCode() + DetectionCodeEnum.PST.getCode())) { - allDataType.remove(getPrefixEnum().getCode() + DetectionCodeEnum.PST.getCode()); + if (allDataType.contains(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode())) { + allDataType.remove(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode()); } if (CollUtil.isNotEmpty(allDataType)) { this.sendModelDeal(s, allDataType); @@ -444,12 +449,15 @@ public class SocketContrastResponseService { voltage = SourceOperateCodeEnum.DEV_INIT_GATHER_03.getValue().equals(socketDataMsg.getOperateCode()); if (real) { msg = "实时协议校验成功!"; + FormalTestManager.realProtocol = true; } if (voltage) { msg = "暂态协议校验成功!"; + FormalTestManager.voltageProtocol = true; } if (statistics) { msg = "统计协议校验成功!"; + FormalTestManager.statisticsProtocol = true; } MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1); socketDataMsg.setData(socketDataMsg.getData() + msg); @@ -457,9 +465,27 @@ public class SocketContrastResponseService { System.out.println(msg + successComm.size() + "=====" + FormalTestManager.monitorMap.size()); if (successComm.size() == FormalTestManager.monitorMap.size()) { + if (FormalTestManager.testItemMap.keySet().stream().anyMatch(key -> DetectionCodeEnum.PST.getCode().equals(key.split("\\$")[1]))) { + if (!FormalTestManager.statisticsProtocol) { + successComm.clear(); + failComm.clear(); + SocketMsg socketMsg = new SocketMsg<>(); + // 进行统计协议校验 + socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); + socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_INIT_GATHER_01.getValue()); + Map> map = new HashMap<>(1); + List preDetectionList = new ArrayList<>(); + preDetectionList.addAll(FormalTestManager.devList); + preDetectionList.addAll(FormalTestManager.standardDevList); + map.put("deviceList", preDetectionList); + socketMsg.setData(JSON.toJSONString(map)); + SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); + return; + } + } if (FormalTestManager.isWaveCheck) { - if (voltage) { + if (FormalTestManager.voltageProtocol) { successComm.clear(); failComm.clear(); @@ -467,6 +493,9 @@ public class SocketContrastResponseService { this.sendRecordWave(s); return; } else { + successComm.clear(); + failComm.clear(); + SocketMsg socketMsg = new SocketMsg<>(); // 进行暂态协议校验 socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); @@ -488,8 +517,8 @@ public class SocketContrastResponseService { System.out.println("装置通信成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始模型一致性校验》》》》》》》》》》》》》》》》"); List allDataType = this.getAllDataType(); - if (allDataType.contains(getPrefixEnum().getCode() + DetectionCodeEnum.PST.getCode())) { - allDataType.remove(getPrefixEnum().getCode() + DetectionCodeEnum.PST.getCode()); + if (allDataType.contains(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode())) { + allDataType.remove(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode()); } if (CollUtil.isNotEmpty(allDataType)) { this.sendModelDeal(s, allDataType); @@ -526,8 +555,12 @@ public class SocketContrastResponseService { webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_03.getValue()); System.out.println("无效的录波指令!"); + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; Collection disjunction = CollectionUtil.disjunction(FormalTestManager.monitorMap.keySet(), successComm); // 向前端推送 @@ -549,36 +582,52 @@ public class SocketContrastResponseService { } break; case DEV_ERROR: - WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0)); failComm.addAll(FormalTestManager.devMapMonitorNum.get(socketDataMsg.getData())); + WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0)); completeJudgment(param); - if (voltage) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case DEV_TARGET: - WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1)); failComm.add(socketDataMsg.getData()); + WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1)); completeJudgment(param); - if (voltage) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case RE_OPERATE: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); - if (voltage) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case NO_INIT_DEV: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); - if (voltage) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; default: WebServiceManager.sendUnknownErrorMessage(param.getUserPageId()); @@ -629,10 +678,14 @@ public class SocketContrastResponseService { WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0)); System.out.println("模型一致性校验失败!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》"); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); + FormalTestManager.isTesting = false; } else { SocketDataMsg webSend = new SocketDataMsg(); webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue()); @@ -666,31 +719,47 @@ public class SocketContrastResponseService { break; case DEV_ERROR: WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case DEV_TARGET: WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case RE_OPERATE: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case NO_INIT_DEV: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; default: WebServiceManager.sendUnknownErrorMessage(param.getUserPageId()); @@ -737,10 +806,14 @@ public class SocketContrastResponseService { FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> { if (!checkResult) { System.out.println(delay + "s内数据对齐校验失败!"); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); + FormalTestManager.isTesting = false; Collection disjunction = CollectionUtil.disjunction(FormalTestManager.pairsIpMap.keySet(), successPair.keySet()); // 向前端推送实时数据对齐失败的配对项 for (String key : disjunction) { @@ -837,31 +910,47 @@ public class SocketContrastResponseService { break; case DEV_ERROR: WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case DEV_TARGET: WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case RE_OPERATE: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case NO_INIT_DEV: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; default: WebServiceManager.sendUnknownErrorMessage(param.getUserPageId()); @@ -942,7 +1031,21 @@ public class SocketContrastResponseService { socketMsg.setOperateCode(requestOperateCode.getValue()); DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam(); phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()]))); - phaseSequenceParam.setDataType(this.getAllDataType()); + List allDataType = this.getAllDataType(); + FormalTestManager.pstDataType = new ArrayList<>(); + if (allDataType.contains(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode())) { + FormalTestManager.pstDataType.add(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode()); + allDataType.remove(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode()); + } + if (CollUtil.isNotEmpty(allDataType)) { + phaseSequenceParam.setDataType(allDataType); + } else { + if (CollUtil.isNotEmpty(FormalTestManager.pstDataType)) { + FormalTestManager.isPstData = true; + socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_01.getValue()); + phaseSequenceParam.setDataType(FormalTestManager.pstDataType); + } + } phaseSequenceParam.setReadCount(this.getReadCount(this.getTargetCount())); phaseSequenceParam.setIgnoreCount(0); socketMsg.setData(JSON.toJSONString(phaseSequenceParam)); @@ -952,6 +1055,9 @@ public class SocketContrastResponseService { this.resetTimer(); checkResult = false; } else if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } // 录波数据 CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); successComm.clear(); @@ -961,10 +1067,14 @@ public class SocketContrastResponseService { this.sendRecordWave(s); } } else { - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); + FormalTestManager.isTesting = false; } } } else if (successComm.size() == FormalTestManager.monitorMap.size()) { @@ -976,14 +1086,17 @@ public class SocketContrastResponseService { webSend.setOperateCode(requestOperateCode.getValue()); webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode()); //最终错误推送 WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); - - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); + FormalTestManager.isTesting = false; } } else { - Integer maxReadCount = getReadCount(1); + Integer maxReadCount = this.getReadCount(1); WebSocketVO webSend = new WebSocketVO(); webSend.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue()); webSend.setOperateCode(requestOperateCode.getValue()); @@ -992,10 +1105,14 @@ public class SocketContrastResponseService { webSend.setData(MsgUtil.getPairStr(devMonitorId, standardDevMonitorId, FormalTestManager.devNameMapComm) + " 数据对齐失败!"); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); + FormalTestManager.isTesting = false; } } } @@ -1006,24 +1123,36 @@ public class SocketContrastResponseService { break; case DEV_ERROR: WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case DEV_TARGET: WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case RE_OPERATE: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; default: WebServiceManager.sendUnknownErrorMessage(param.getUserPageId()); @@ -1065,35 +1194,40 @@ public class SocketContrastResponseService { type = 2; } } - if (Objects.isNull(FormalTestManager.scheduler)) { - FormalTestManager.scheduler = Executors.newScheduledThreadPool(1); - long delay = this.getDelay(targetCount); - FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> { - if (!checkResult) { - System.out.println("正式检测-" + delay + "s内收集数据不完整!"); - // 断开与设备的连接,但是不要将Socket移除 - if (FormalTestManager.isWaveCheck) { - CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); - } - CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); - - this.clearData(); - - Collection disjunction = CollectionUtil.disjunction(FormalTestManager.pairsIpMap.keySet(), successPair.keySet()); - // 向前端推送收集数据不完整的配对项 - for (String key : disjunction) { - webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); - webSend.setData(MsgUtil.getPairStr(key, FormalTestManager.pairsIpMap.inverse().get(key), FormalTestManager.devNameMapComm) + " 数据收集不完整!"); - WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); - } - // 推送最终失败结果 - webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送 - WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); - } - FormalTestManager.scheduler.shutdown(); - FormalTestManager.scheduler = null; - }, delay, TimeUnit.SECONDS); - } + this.setScheduler(targetCount, param.getUserPageId(), requestOperateCode, quitOperateCode); +// if (Objects.isNull(FormalTestManager.scheduler)) { +// FormalTestManager.scheduler = Executors.newScheduledThreadPool(1); +// long delay = this.getDelay(targetCount); +// FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> { +// if (!checkResult) { +// System.out.println("正式检测-" + delay + "s内收集数据不完整!"); +// // 断开与设备的连接,但是不要将Socket移除 +// if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { +// CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); +// } +// if (FormalTestManager.voltageProtocol) { +// CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); +// } +// CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); +// FormalTestManager.isTesting = false; +// +// this.clearData(); +// +// Collection disjunction = CollectionUtil.disjunction(FormalTestManager.pairsIpMap.keySet(), successPair.keySet()); +// // 向前端推送收集数据不完整的配对项 +// for (String key : disjunction) { +// webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); +// webSend.setData(MsgUtil.getPairStr(key, FormalTestManager.pairsIpMap.inverse().get(key), FormalTestManager.devNameMapComm) + " 数据收集不完整!"); +// WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); +// } +// // 推送最终失败结果 +// webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送 +// WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); +// } +// FormalTestManager.scheduler.shutdown(); +// FormalTestManager.scheduler = null; +// }, delay, TimeUnit.SECONDS); +// } String monitorId1 = devData.getId(); String devMonitorId = monitorId1; @@ -1102,14 +1236,26 @@ public class SocketContrastResponseService { if (FormalTestManager.devDataMap.containsKey(monitorId1)) { standardDevMonitorId = FormalTestManager.pairsIpMap.get(monitorId1); if (!successPair.containsKey(devMonitorId)) { - FormalTestManager.devDataMap.get(monitorId1).add(devData); + if (FormalTestManager.isPstData) { + if (devData.getSqlData().stream().anyMatch(obj -> DetectionCodeEnum.PST.getCode().equals(obj.getDesc()))) { + FormalTestManager.devDataMap.get(monitorId1).add(devData); + } + } else { + FormalTestManager.devDataMap.get(monitorId1).add(devData); + } Collections.sort(FormalTestManager.devDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime()))); } } if (FormalTestManager.standardDevDataMap.containsKey(monitorId1)) { devMonitorId = FormalTestManager.pairsIpMap.inverse().get(monitorId1); if (!successPair.containsKey(devMonitorId)) { - FormalTestManager.standardDevDataMap.get(monitorId1).add(devData); + if (FormalTestManager.isPstData) { + if (devData.getSqlData().stream().anyMatch(obj -> DetectionCodeEnum.PST.getCode().equals(obj.getDesc()))) { + FormalTestManager.standardDevDataMap.get(monitorId1).add(devData); + } + } else { + FormalTestManager.standardDevDataMap.get(monitorId1).add(devData); + } Collections.sort(FormalTestManager.standardDevDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime()))); } } @@ -1131,8 +1277,6 @@ public class SocketContrastResponseService { FormalTestManager.standardDevDataMap.get(standardDevMonitorId).addAll(singleMonitorAlignData.get(1)); if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) { - // 断开与设备的连接,但是不要将Socket移除 - CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); checkResult = true; FormalTestManager.scheduledFuture.cancel(true); FormalTestManager.scheduler.shutdown(); @@ -1148,28 +1292,61 @@ public class SocketContrastResponseService { baseDataInsert(false, null, FormalTestManager.nonWaveDataSourceEnum, devDataList, FormalTestManager.numMap, prefixEnum, code); baseDataInsert(true, null, FormalTestManager.nonWaveDataSourceEnum, standardDevDataList, FormalTestManager.numMap, prefixEnum, code); + List testItem = null; + if (FormalTestManager.isPstData) { + testItem = FormalTestManager.testItemMap.keySet().stream().filter(a -> DetectionCodeEnum.PST.getCode().equals(a.split("\\$")[1])).collect(Collectors.toList()); + } else { + testItem = FormalTestManager.testItemMap.keySet().stream().filter(a -> !DetectionCodeEnum.PST.getCode().equals(a.split("\\$")[1])).collect(Collectors.toList()); + } // 进行误差计算 List allResultList = detectionService.processing( devDataList, standardDevDataList, FormalTestManager.pairsIpMap, FormalTestManager.devIdMapComm, - FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()), + testItem, errorSysId, FormalTestManager.dataRule, FormalTestManager.numMap, code, null, FormalTestManager.nonWaveDataSourceEnum); this.clearData(); - webSend.setData(JSON.toJSONString(allResultList)); - List adTypes = FormalTestManager.testItemMap.values().stream().collect(Collectors.toList()); + if (CollUtil.isNotEmpty(FormalTestManager.pstDataType)) { + if (!FormalTestManager.isPstData) { + webSend.setCode(SourceResponseCodeEnum.FLICKER_DATA_START.getCode()); + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); + SocketMsg socketMsg = new SocketMsg<>(); + socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue()); + socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_01.getValue()); + DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam(); + phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()]))); + FormalTestManager.isPstData = true; + phaseSequenceParam.setDataType(FormalTestManager.pstDataType); + phaseSequenceParam.setReadCount(this.getReadCount(this.getTargetCount())); + phaseSequenceParam.setIgnoreCount(0); + socketMsg.setData(JSON.toJSONString(phaseSequenceParam)); + FormalTestManager.currentStep = SourceOperateCodeEnum.FORMAL_REAL; + SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); + this.resetTimer(); + this.setScheduler(targetCount, param.getUserPageId(), requestOperateCode, quitOperateCode); + checkResult = false; + return; + } + } + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + // 断开与设备的连接,但是不要将Socket移除 + CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, false); + + List adTypes = FormalTestManager.testItemMap.values().stream().collect(Collectors.toList()); Map result = detectionDataDealService.devResult(true, FormalTestManager.pairsIdMap.keySet().stream().collect(Collectors.toList()), adTypes, code); // 若有不符合的 if (result.values().stream().anyMatch(r -> r.equals(ResultEnum.NOT_QUALIFIED.getValue()))) { // 最终将检测结果推送到前端 if (FormalTestManager.isWaveCheck) { - if (FormalTestManager.nonWaveDataSourceEnum == DataSourceEnum.WAVE_DATA) { + if (FormalTestManager.nonWaveDataSourceEnum == DataSourceEnum.REAL_DATA) { webSend.setCode(SourceResponseCodeEnum.REAL_DATA_CHECK_FAIL.getCode()); } else { webSend.setCode(SourceResponseCodeEnum.STATISTICS_DATA_CHECK_FAIL.getCode()); @@ -1214,6 +1391,9 @@ public class SocketContrastResponseService { // 配对关系入库 this.pairDataInsert(); + if (FormalTestManager.isPstData) { + webSend.setRequestId(SourceOperateCodeEnum.FLICKER_DATA_CHECK.getValue()); + } // 最终将检测结果推送到前端 webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); @@ -1222,11 +1402,15 @@ public class SocketContrastResponseService { pqMonitorService.updateMonitorResult(id1, adTypes, FormalTestManager.nonWaveDataSourceEnum, FormalTestManager.numMap.get(id1), null, code); pqDevService.updateResult(id1.split(CnSocketUtil.SPLIT_TAG)[0], param.getUserId()); }); + FormalTestManager.isTesting = false; } } else { // 配对关系入库 this.pairDataInsert(); + if (FormalTestManager.isPstData) { + webSend.setRequestId(SourceOperateCodeEnum.FLICKER_DATA_CHECK.getValue()); + } // 最终将检测结果推送到前端 webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); @@ -1236,9 +1420,10 @@ public class SocketContrastResponseService { pqDevService.updateResult(id1.split(CnSocketUtil.SPLIT_TAG)[0], param.getUserId()); }); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } + FormalTestManager.isTesting = false; } } } @@ -1250,24 +1435,36 @@ public class SocketContrastResponseService { break; case DEV_ERROR: WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 0)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case DEV_TARGET: WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(socketDataMsg, FormalTestManager.devNameMapComm, 1)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; case RE_OPERATE: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); - if (FormalTestManager.isWaveCheck) { + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); } CnSocketUtil.contrastSendquit(param.getUserPageId(), quitOperateCode, true); + FormalTestManager.isTesting = false; break; default: WebServiceManager.sendUnknownErrorMessage(param.getUserPageId()); @@ -1316,14 +1513,14 @@ public class SocketContrastResponseService { PreDetection.MonitorListDTO monitorListDTO = FormalTestManager.monitorMap.get(devMonitorId); List> lists = this.analyzeWaveFile(waveResultDTO1, waveResultDTO2, monitorListDTO, devMonitorId, stdDevMonitorId, FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList())); - if (CollUtil.isNotEmpty(lists)) { + if (CollUtil.isNotEmpty(lists) && lists.stream().flatMap(List::stream).allMatch(devData -> CollUtil.isNotEmpty(devData.getSqlData()) || CollUtil.isNotEmpty(devData.getSqlDataHarm()))) { // if (false) { FormalTestManager.devDataMap.put(devMonitorId, lists.get(0)); FormalTestManager.standardDevDataMap.put(stdDevMonitorId, lists.get(1)); } else { flag.set(true); webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); - webSend.setData(MsgUtil.getPairStr(devMonitorId, stdDevMonitorId, FormalTestManager.devNameMapComm) + " 录波对齐失败!"); + webSend.setData(MsgUtil.getPairStr(devMonitorId, stdDevMonitorId, FormalTestManager.devNameMapComm) + " 录波数据异常!"); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); } } @@ -1404,6 +1601,7 @@ public class SocketContrastResponseService { } else { // 断开与设备的连接,但是不要将Socket移除 CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); + FormalTestManager.isTesting = false; // 配对关系入库 this.pairDataInsert(); @@ -1425,11 +1623,12 @@ public class SocketContrastResponseService { } } else { webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode()); - webSend.setData("录波对齐失败!"); + webSend.setData("录波数据异常!"); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); // 断开与设备的连接,但是不要将Socket移除 CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); + FormalTestManager.isTesting = false; } successComm.clear(); @@ -1450,6 +1649,7 @@ public class SocketContrastResponseService { System.out.println("无效的录波指令!"); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true); + FormalTestManager.isTesting = false; Collection disjunction = CollectionUtil.disjunction(FormalTestManager.monitorMap.keySet(), successComm); // 向前端推送 @@ -1474,6 +1674,7 @@ public class SocketContrastResponseService { case RECORD_WAVE_FAILED: WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(socketDataMsg)); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true); + FormalTestManager.isTesting = false; break; } } @@ -1526,7 +1727,10 @@ public class SocketContrastResponseService { if (successComm.size() + failComm.size() == FormalTestManager.monitorMap.size()) { //全部装置返回 if (!failComm.isEmpty()) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, false); CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, false); + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, false); + FormalTestManager.isTesting = false; WebSocketVO webSocketVO = new WebSocketVO<>(); webSocketVO.setRequestId(SourceOperateCodeEnum.ERROR_FLOW_END.getValue()); WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO)); @@ -1570,6 +1774,10 @@ public class SocketContrastResponseService { if (testCodes.contains(prefixEnum.getCode() + DetectionCodeEnum.I2_50.getCode())) { testCodes.add(prefixEnum.getCode() + DetectionCodeEnum.I1.getCode()); } + if (testCodes.contains(prefixEnum.getCode() + DetectionCodeEnum.PST.getCode())) { + testCodes.remove(prefixEnum.getCode() + DetectionCodeEnum.PST.getCode()); + testCodes.add(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode()); + } return testCodes.stream().sorted().collect(Collectors.toList()); } @@ -1626,6 +1834,9 @@ public class SocketContrastResponseService { * @return */ private long getDelay(int targetCount) { + if (FormalTestManager.isPstData) { + return 60 * 10; + } if (ObjectUtil.isNotNull(FormalTestManager.nonWaveDataSourceEnum)) { if (FormalTestManager.nonWaveDataSourceEnum == DataSourceEnum.REAL_DATA) { return (int) (Math.ceil(targetCount / 5.0) * 60); @@ -1642,6 +1853,9 @@ public class SocketContrastResponseService { * @return */ private Integer getTargetCount() { + if (FormalTestManager.isPstData) { + return FormalTestManager.curretntTestPlanConfig.getFlicker(); + } if (ObjectUtil.isNotNull(FormalTestManager.nonWaveDataSourceEnum)) { if (FormalTestManager.nonWaveDataSourceEnum == DataSourceEnum.REAL_DATA) { return FormalTestManager.curretntTestPlanConfig.getRealTime(); @@ -1652,6 +1866,46 @@ public class SocketContrastResponseService { return -1; } + private void setScheduler(int targetCount, String userPageId, SourceOperateCodeEnum requestOperateCode, SourceOperateCodeEnum quitOperateCode) { + if (Objects.isNull(FormalTestManager.scheduler)) { + SocketDataMsg webSend = new SocketDataMsg(); + webSend.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue()); + webSend.setOperateCode(requestOperateCode.getValue()); + + FormalTestManager.scheduler = Executors.newScheduledThreadPool(1); + long delay = this.getDelay(targetCount); + FormalTestManager.scheduledFuture = FormalTestManager.scheduler.schedule(() -> { + if (!checkResult) { + System.out.println("正式检测-" + delay + "s内收集数据不完整!"); + // 断开与设备的连接,但是不要将Socket移除 + if (FormalTestManager.statisticsProtocol && quitOperateCode == SourceOperateCodeEnum.QUIT_INIT_02) { + CnSocketUtil.contrastSendquit(userPageId, SourceOperateCodeEnum.QUIT_INIT_01, false); + } + if (FormalTestManager.voltageProtocol) { + CnSocketUtil.contrastSendquit(userPageId, SourceOperateCodeEnum.QUIT_INIT_03, false); + } + CnSocketUtil.contrastSendquit(userPageId, quitOperateCode, false); + FormalTestManager.isTesting = false; + + this.clearData(); + + Collection disjunction = CollectionUtil.disjunction(FormalTestManager.pairsIpMap.keySet(), successPair.keySet()); + // 向前端推送收集数据不完整的配对项 + for (String key : disjunction) { + webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); + webSend.setData(MsgUtil.getPairStr(key, FormalTestManager.pairsIpMap.inverse().get(key), FormalTestManager.devNameMapComm) + " 数据收集不完整!"); + WebServiceManager.sendMsg(userPageId, JSON.toJSONString(webSend)); + } + // 推送最终失败结果 + webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode());//最终错误推送 + WebServiceManager.sendMsg(userPageId, JSON.toJSONString(webSend)); + } + FormalTestManager.scheduler.shutdown(); + FormalTestManager.scheduler = null; + }, delay, TimeUnit.SECONDS); + } + } + /** * 实时数据对齐-将数据推送给前端 */ @@ -1857,8 +2111,8 @@ public class SocketContrastResponseService { webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue()); webSend.setData(k); List allTestItem = this.getAllDataType(); - if (allTestItem.contains(prefixEnum.getCode() + DetectionCodeEnum.PST.getCode())) { - allTestItem.remove(prefixEnum.getCode() + DetectionCodeEnum.PST.getCode()); + if (allTestItem.contains(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode())) { + allTestItem.remove(DetectionCodeEnum.AVG_PREFIX.getCode() + DetectionCodeEnum.PST.getCode()); } if (DetectionCodeEnum.STAR.getCode().equals(monitorListDTO.getConnection())) { // 移除相关线电压测试项 @@ -2185,14 +2439,15 @@ public class SocketContrastResponseService { */ private boolean voltageOrCurrentCheck(Double a, Double b, Double c, Double aStd, Double bStd, Double cStd, boolean isVoltage) { if (isVoltage) { - return NumberUtil.isIn(BigDecimal.valueOf(a), BigDecimal.valueOf(aStd * 0.99), BigDecimal.valueOf(aStd * 1.01)) && NumberUtil.isIn(BigDecimal.valueOf(b), BigDecimal.valueOf(bStd * 0.99), BigDecimal.valueOf(bStd * 1.01)) && NumberUtil.isIn(BigDecimal.valueOf(c), BigDecimal.valueOf(cStd * 0.99), BigDecimal.valueOf(cStd * 1.01)); +// return true; } else { return NumberUtil.isIn(BigDecimal.valueOf(a), BigDecimal.valueOf(aStd * 0.90), BigDecimal.valueOf(aStd * 1.10)) && NumberUtil.isIn(BigDecimal.valueOf(b), BigDecimal.valueOf(bStd * 0.90), BigDecimal.valueOf(bStd * 1.10)) && NumberUtil.isIn(BigDecimal.valueOf(c), BigDecimal.valueOf(cStd * 0.90), BigDecimal.valueOf(cStd * 1.10)); +// return true; } } @@ -2206,9 +2461,11 @@ public class SocketContrastResponseService { */ private boolean unbalanceCheck(Double devData, Double stdData, boolean isVoltage) { if (isVoltage) { - return NumberUtil.isIn(BigDecimal.valueOf(devData), BigDecimal.valueOf(stdData * 0.95), BigDecimal.valueOf(stdData * 1.05)); +// return NumberUtil.isIn(BigDecimal.valueOf(devData), BigDecimal.valueOf(stdData * 0.95), BigDecimal.valueOf(stdData * 1.05)); + return true; } else { - return NumberUtil.isIn(BigDecimal.valueOf(devData), BigDecimal.valueOf(stdData * 0.90), BigDecimal.valueOf(stdData * 1.10)); +// return NumberUtil.isIn(BigDecimal.valueOf(devData), BigDecimal.valueOf(stdData * 0.90), BigDecimal.valueOf(stdData * 1.10)); + return true; } } diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceOperateCodeEnum.java b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceOperateCodeEnum.java index 29d6c4be..8a5fd050 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceOperateCodeEnum.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/SourceOperateCodeEnum.java @@ -67,6 +67,8 @@ public enum SourceOperateCodeEnum { SERVER_ERROR("server_error","服务端主动关闭连接,请稍后再试"), DEVICE_ERROR("device_error","设备主动关闭连接,请稍后再试"), + FLICKER_DATA_CHECK("flicker_data_check","闪变数据校验"), + 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 b7ef7116..cb088def 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 @@ -43,7 +43,8 @@ public enum SourceResponseCodeEnum { ALL_FAIL(25003,"校验失败"), RECEIVE_DATA_TIME_OUT(25004,"接收数据超时"), REAL_DATA_CHECK_FAIL(25005,"实时数据校验失败"), - STATISTICS_DATA_CHECK_FAIL(25006,"统计数据校验失败") + STATISTICS_DATA_CHECK_FAIL(25006,"统计数据校验失败"), + FLICKER_DATA_START(25007,"开始接收闪变数据") diff --git a/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java b/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java index ff8cc712..4e2a5141 100644 --- a/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java @@ -1605,13 +1605,13 @@ public class DetectionServiceImpl { switch (anEnum) { case FREQ: - if (ObjectUtil.isNull(waveNum)) { - devDataList.stream().forEach(devData -> devData.getSqlData().stream().filter(sqlData -> sqlData.getDesc().equals(DetectionCodeEnum.FREQ.getCode())).findFirst().ifPresent(sqlData -> { - DevData.SqlDataDTO.ListDTO listDTO = sqlData.getList(); - listDTO.setT(55.0); - sqlData.setList(listDTO); - })); - } +// if (ObjectUtil.isNull(waveNum)) { +// devDataList.stream().forEach(devData -> devData.getSqlData().stream().filter(sqlData -> sqlData.getDesc().equals(DetectionCodeEnum.FREQ.getCode())).findFirst().ifPresent(sqlData -> { +// DevData.SqlDataDTO.ListDTO listDTO = sqlData.getList(); +// listDTO.setT(55.0); +// sqlData.setList(listDTO); +// })); +// } resultMap.put(PowerIndexEnum.FREQ.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fHz, DetectionCodeEnum.FREQ.getCode(), dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum)); break; case VRMS: @@ -1654,7 +1654,7 @@ public class DetectionServiceImpl { resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum)); break; case PST: - resultMap.put(PowerIndexEnum.PST.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn , DetectionCodeEnum.PST.getCode(), dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum)); + resultMap.put(PowerIndexEnum.F.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn , DetectionCodeEnum.PST.getCode(), dataRule, num, code, oneConfig.getScale(), waveNum, DataSourceEnum.MINUTE_STATISTICS_AVG)); break; case UNKNOWN_ERROR: break; @@ -1852,6 +1852,9 @@ public class DetectionServiceImpl { } Map>>> devMap = devHarmListMap(devDataList, standardDevDataList, fundCode, harmCode, harmonicFlag, dataRule); + if (ObjectUtil.isNull(devMap)) { + return 4; + } ContrastHarmonicResult result = new ContrastHarmonicResult(); result.setWaveNum(waveNum); @@ -2106,9 +2109,12 @@ public class DetectionServiceImpl { fund2 = first2.get(); } - List devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList()); - List stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> x.getDesc().equals(harmCode)).collect(Collectors.toList()); + List devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> harmCode.equals(x.getDesc())).collect(Collectors.toList()); + List stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> harmCode.equals(x.getDesc())).collect(Collectors.toList()); + if (CollUtil.isEmpty(devHarmList) || CollUtil.isEmpty(stdDevHarmList)) { + return null; + } // // 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算 // if (CollUtil.isEmpty(devHarmList)) { // if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { 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 b016e34d..6d87f2e2 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 @@ -180,4 +180,19 @@ public class FormalTestManager { public static boolean isWaveCheck; + + public static List pstDataType; + + public static boolean isPstData; + + /** + * 是否在检测中 + */ + public static boolean isTesting; + + public static boolean realProtocol; + + public static boolean statisticsProtocol; + + public static boolean voltageProtocol; } diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyContrastClientHandler.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyContrastClientHandler.java index 5c4f830e..f7f1dac1 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyContrastClientHandler.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyContrastClientHandler.java @@ -88,20 +88,33 @@ public class NettyContrastClientHandler extends SimpleChannelInboundHandler= 60) { - CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true); - timeoutSend(SourceOperateCodeEnum.QUIT_INIT_02); + if (FormalTestManager.isPstData) { + if (time > 60 * 10) { + if (DataSourceEnum.REAL_DATA == FormalTestManager.nonWaveDataSourceEnum) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true); + } + if (FormalTestManager.isWaveCheck) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_03, true); + } + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, true); + timeoutSend(SourceOperateCodeEnum.QUIT_INIT_01); + } + } else if (DataSourceEnum.REAL_DATA == FormalTestManager.nonWaveDataSourceEnum) { + if (time >= 60) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true); + timeoutSend(SourceOperateCodeEnum.QUIT_INIT_02); + } + } else if (time >= FormalTestManager.maxTime) { + CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_01, true); + timeoutSend(SourceOperateCodeEnum.QUIT_INIT_01); } - } else if (time >= FormalTestManager.maxTime) { - CnSocketUtil.contrastSendquit(param.getUserPageId(), SourceOperateCodeEnum.QUIT_INIT_02, true); - timeoutSend(SourceOperateCodeEnum.QUIT_INIT_01); } } } diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/websocket/WebSocketHandler.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/websocket/WebSocketHandler.java index bc296a29..30584eb5 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/websocket/WebSocketHandler.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/websocket/WebSocketHandler.java @@ -380,21 +380,27 @@ public class WebSocketHandler extends SimpleChannelInboundHandler i List parentDictTreeList = dictTreeService.listByIds(pids); Map map = new HashMap<>(); parentDictTreeList.forEach(dictTree -> { - map.put(dictTree.getId(), dictTree.getName()); + if(!dictTree.getCode().equals(PowerIndexEnum.VOLTAGE.getKey())&&!dictTree.getCode().equals(PowerIndexEnum.P.getKey())){ + map.put(dictTree.getId(), dictTree.getName()); + } }); return map; } diff --git a/detection/src/main/java/com/njcn/gather/monitor/pojo/param/PqMonitorParam.java b/detection/src/main/java/com/njcn/gather/monitor/pojo/param/PqMonitorParam.java index 8caccf73..2fa3d27c 100644 --- a/detection/src/main/java/com/njcn/gather/monitor/pojo/param/PqMonitorParam.java +++ b/detection/src/main/java/com/njcn/gather/monitor/pojo/param/PqMonitorParam.java @@ -52,7 +52,7 @@ public class PqMonitorParam { private Integer statInterval; @ApiModelProperty(value = "谐波系统监测点id") - @NotBlank(message = DetectionValidMessage.MONITOR_ID_NOT_BLANK) +// @NotBlank(message = DetectionValidMessage.MONITOR_ID_NOT_BLANK) private String harmSysId; @ApiModelProperty(value = "是否做检测") diff --git a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java index 5001d30b..ca29f2ff 100644 --- a/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/plan/service/impl/AdPlanServiceImpl.java @@ -630,7 +630,7 @@ public class AdPlanServiceImpl extends ServiceImpl impleme || datasourceId.contains(DataSourceEnum.MINUTE_STATISTICS_MAX.getValue()) || datasourceId.contains(DataSourceEnum.MINUTE_STATISTICS_MIN.getValue())) { String[] split = adPlan.getTestItem().split(StrUtil.COMMA); - List dictTreeList = dictTreeService.list(new QueryWrapper().in("id", split).eq("state", DataStateEnum.DELETED.getCode())); + List dictTreeList = dictTreeService.list(new QueryWrapper().in("id", split).eq("state", DataStateEnum.DELETED.getCode()).orderByAsc("sort")); for (DictTree dictTree : dictTreeList) { Map map = new HashMap<>(); diff --git a/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java b/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java index 6c3bb6ac..83c8d344 100644 --- a/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/result/service/impl/ResultServiceImpl.java @@ -99,6 +99,8 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import static com.njcn.gather.plan.pojo.enums.DataSourceEnum.*; + /** * @author caozehui * @data 2024-12-30 @@ -111,6 +113,7 @@ public class ResultServiceImpl implements IResultService { private final IAdPlanService adPlanService; private final IAdPlanTestConfigService adPlanTestConfigService; private final IPqDevService pqDevService; + private final IPqStandardDevService pqStandardDevService; private final SimAndDigNonHarmonicService simAndDigNonHarmonicService; private final SimAndDigHarmonicService simAndDigHarmonicService; private final ContrastHarmonicService contrastHarmonicService; @@ -2705,7 +2708,7 @@ public class ResultServiceImpl implements IResultService { if (CollUtil.isNotEmpty(contrastHarmonicResults)) { ContrastHarmonicResult contrastHarmonicResult = contrastHarmonicResults.get(0); List harmonicNum = null; - if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode())) { + if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode()) || DicDataEnum.HP.getCode().equals(dictTree.getCode())) { harmonicNum = Stream.iterate(2.0, n -> n + 1).limit(49).collect(Collectors.toList()); } if (DicDataEnum.HSV.getCode().equals(dictTree.getCode()) || DicDataEnum.HSI.getCode().equals(dictTree.getCode())) { @@ -2789,7 +2792,7 @@ public class ResultServiceImpl implements IResultService { if (CollUtil.isNotEmpty(devHarmonicRawDataList) && CollUtil.isNotEmpty(stdDevHarmonicRawDataList)) { List harmonicNum = null; - if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode())) { + if (DicDataEnum.HV.getCode().equals(dictTree.getCode()) || DicDataEnum.HI.getCode().equals(dictTree.getCode()) || DicDataEnum.HP.getCode().equals(dictTree.getCode())) { harmonicNum = Stream.iterate(2.0, n -> n + 1).limit(49).collect(Collectors.toList()); } if (DicDataEnum.HSV.getCode().equals(dictTree.getCode()) || DicDataEnum.HSI.getCode().equals(dictTree.getCode())) { @@ -3043,18 +3046,19 @@ public class ResultServiceImpl implements IResultService { DataSourceEnum nonWaveDataSourceEnum = DataSourceEnum.REAL_DATA; for (String ds : dataSourceIds) { - switch (DataSourceEnum.valueOf(ds)) { + DataSourceEnum dataSourceEnum = DataSourceEnum.ofByValue(ds); + switch (dataSourceEnum) { case MINUTE_STATISTICS_MIN: - nonWaveDataSourceEnum = DataSourceEnum.MINUTE_STATISTICS_MIN; + nonWaveDataSourceEnum = MINUTE_STATISTICS_MIN; break; case MINUTE_STATISTICS_MAX: - nonWaveDataSourceEnum = DataSourceEnum.MINUTE_STATISTICS_MAX; + nonWaveDataSourceEnum = MINUTE_STATISTICS_MAX; break; case MINUTE_STATISTICS_AVG: nonWaveDataSourceEnum = DataSourceEnum.MINUTE_STATISTICS_AVG; break; case MINUTE_STATISTICS_CP95: - nonWaveDataSourceEnum = DataSourceEnum.MINUTE_STATISTICS_CP95; + nonWaveDataSourceEnum = MINUTE_STATISTICS_CP95; break; } } @@ -3107,6 +3111,7 @@ public class ResultServiceImpl implements IResultService { parsId.put(dev.getId() + CnSocketUtil.SPLIT_TAG + split1[1], standardDev.getId() + CnSocketUtil.SPLIT_TAG + split2[1]); numMap.put(devMonitorId, num); numMap.put(adPair.getStdDevMonitorId(), num); + devIdMapComm.put(standardDev.getIp(), standardDev.getId()); }); List devNonHarmonicRawDataList = contrastNonHarmonicService.listAllRawData(oldCode, num, null, false, 0, deviceId, null); @@ -3114,8 +3119,8 @@ public class ResultServiceImpl implements IResultService { List devHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, null, false, 0, deviceId, null); List stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, null, false, 1, deviceId, null); - List devData = contrastToList(devNonHarmonicRawDataList, devHarmonicRawDataList, testItemMap); - List standardDevData = contrastToList(stdDevNonHarmonicRawDataList, stdDevHarmonicRawDataList, testItemMap); + List devData = contrastToList(devNonHarmonicRawDataList, devHarmonicRawDataList, testItemMap, 0); + List standardDevData = contrastToList(stdDevNonHarmonicRawDataList, stdDevHarmonicRawDataList, testItemMap, 1); detectionServiceImpl.processing(devData, standardDevData, parsIp, devIdMapComm, testItemMap.keySet().stream().collect(Collectors.toList()), errorSysId, dataRule, numMap, code, null, finalNonWaveDataSourceEnum); @@ -3132,8 +3137,8 @@ public class ResultServiceImpl implements IResultService { devHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, i, true, 0, deviceId, null); stdDevHarmonicRawDataList = contrastHarmonicService.listAllRawData(oldCode, num, i, true, 1, deviceId, null); - devData = contrastToList(devNonHarmonicRawDataList, devHarmonicRawDataList, testItemMap); - standardDevData = contrastToList(stdDevNonHarmonicRawDataList, stdDevHarmonicRawDataList, testItemMap); + devData = contrastToList(devNonHarmonicRawDataList, devHarmonicRawDataList, testItemMap, 0); + standardDevData = contrastToList(stdDevNonHarmonicRawDataList, stdDevHarmonicRawDataList, testItemMap, 1); detectionServiceImpl.processing(devData, standardDevData, parsIp, devIdMapComm, testItemMap.keySet().stream().collect(Collectors.toList()), errorSysId, dataRule, numMap, oldCode, i, DataSourceEnum.WAVE_DATA); } @@ -3230,58 +3235,79 @@ public class ResultServiceImpl implements IResultService { return info; } - private List contrastToList(List nonHarm, List harm, BiMap testItemMap) { + private List contrastToList(List nonHarm, List harm, BiMap testItemMap, Integer flag) { List info = new ArrayList<>(); - if (CollUtil.isNotEmpty(nonHarm)) { - Map> devMonitorIdMap = nonHarm.stream().collect(Collectors.groupingBy(ContrastNonHarmonicResult::getDevMonitorId, Collectors.toList())); - devMonitorIdMap.forEach((devMonitorId, value) -> { + + Map> devMonitorIdMap1 = null; + if (flag == 0) { + devMonitorIdMap1 = nonHarm.stream().collect(Collectors.groupingBy(ContrastNonHarmonicResult::getDevMonitorId, Collectors.toList())); + } else { + devMonitorIdMap1 = nonHarm.stream().collect(Collectors.groupingBy(ContrastNonHarmonicResult::getStdDevMonitorId, Collectors.toList())); + } + devMonitorIdMap1.forEach((devMonitorId, value) -> { + Map> timeListMap = value.stream().collect(Collectors.groupingBy(ContrastNonHarmonicResult::getTimeId, Collectors.toList())); + timeListMap.forEach((time, value1) -> { DevData devData = new DevData(); String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG); - PqDev dev = pqDevService.getById(split[0]); - devData.setId(dev.getIp() + CnSocketUtil.SPLIT_TAG + split[1]); - Map> timeListMap = value.stream().collect(Collectors.groupingBy(ContrastNonHarmonicResult::getTimeId, Collectors.toList())); - timeListMap.forEach((time, value1) -> { - List sqlData = new ArrayList<>(); - devData.setTime(time.format(DateTimeFormatter.ofPattern(DatePattern.ISO8601_PATTERN))); + if (flag == 0) { + PqDev dev = pqDevService.getById(split[0]); + devData.setId(dev.getIp() + CnSocketUtil.SPLIT_TAG + split[1]); + } else { + PqStandardDev standardDev = pqStandardDevService.getById(split[0]); + devData.setId(standardDev.getIp() + CnSocketUtil.SPLIT_TAG + split[1]); + } + devData.setTime(time.format(DateTimeFormatter.ofPattern(DatePattern.ISO8601_PATTERN))); + List sqlData = new ArrayList<>(); - value1.forEach(x -> { - DevData.SqlDataDTO sqlDataDTO = new DevData.SqlDataDTO(); - DevData.SqlDataDTO.ListDTO listDTO = new DevData.SqlDataDTO.ListDTO(); - listDTO.setA(StrUtil.isNotBlank(x.getAValue()) ? Double.valueOf(x.getAValue()) : null); - listDTO.setB(StrUtil.isNotBlank(x.getBValue()) ? Double.valueOf(x.getBValue()) : null); - listDTO.setC(StrUtil.isNotBlank(x.getCValue()) ? Double.valueOf(x.getCValue()) : null); - listDTO.setT(StrUtil.isNotBlank(x.getTValue()) ? Double.valueOf(x.getTValue()) : null); - sqlDataDTO.setType(x.getDataType()); - sqlDataDTO.setDesc(testItemMap.inverse().get(x.getAdType()).replace(DetectionCodeEnum.REAL_PREFIX.getCode(), "")); - sqlDataDTO.setList(listDTO); - sqlData.add(sqlDataDTO); - }); - devData.setSqlData(sqlData); + value1.forEach(x -> { + DevData.SqlDataDTO sqlDataDTO = new DevData.SqlDataDTO(); + DevData.SqlDataDTO.ListDTO listDTO = new DevData.SqlDataDTO.ListDTO(); + listDTO.setA(StrUtil.isNotBlank(x.getAValue()) ? Double.valueOf(x.getAValue()) : null); + listDTO.setB(StrUtil.isNotBlank(x.getBValue()) ? Double.valueOf(x.getBValue()) : null); + listDTO.setC(StrUtil.isNotBlank(x.getCValue()) ? Double.valueOf(x.getCValue()) : null); + listDTO.setT(StrUtil.isNotBlank(x.getTValue()) ? Double.valueOf(x.getTValue()) : null); + sqlDataDTO.setType(x.getDataType()); + sqlDataDTO.setDesc(testItemMap.inverse().get(x.getAdType()).replace(DetectionCodeEnum.REAL_PREFIX.getCode(), "")); + sqlDataDTO.setList(listDTO); + sqlData.add(sqlDataDTO); }); + devData.setSqlData(sqlData); info.add(devData); }); + }); + + Map> devMonitorIdMap2 = null; + if (flag == 0) { + devMonitorIdMap2 = harm.stream().collect(Collectors.groupingBy(ContrastHarmonicResult::getDevMonitorId, Collectors.toList())); + } else { + devMonitorIdMap2 = harm.stream().collect(Collectors.groupingBy(ContrastHarmonicResult::getStdDevMonitorId, Collectors.toList())); } - if (CollUtil.isNotEmpty(harm)) { - Map> devMonitorIdMap = harm.stream().collect(Collectors.groupingBy(ContrastHarmonicResult::getDevMonitorId, Collectors.toList())); - devMonitorIdMap.forEach((devMonitorId, value) -> { - DevData devData = new DevData(); - String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG); - PqDev dev = pqDevService.getById(split[0]); - devData.setId(dev.getIp() + CnSocketUtil.SPLIT_TAG + split[1]); - Map> timeListMap = value.stream().collect(Collectors.groupingBy(ContrastHarmonicResult::getTimeId, Collectors.toList())); - timeListMap.forEach((time, value1) -> { + devMonitorIdMap2.forEach((devMonitorId, value) -> { + Map> timeListMap = value.stream().collect(Collectors.groupingBy(ContrastHarmonicResult::getTimeId, Collectors.toList())); + + timeListMap.forEach((time, value1) -> { + DevData devData = info.stream().filter(x -> x.getTime().equals(time.format(DateTimeFormatter.ofPattern(DatePattern.ISO8601_PATTERN)))).findFirst().orElse(null); + if (ObjectUtil.isNotNull(devData)) { + String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG); + if (flag == 0) { + PqDev dev = pqDevService.getById(split[0]); + devData.setId(dev.getIp() + CnSocketUtil.SPLIT_TAG + split[1]); + } else { + PqStandardDev standardDev = pqStandardDevService.getById(split[0]); + devData.setId(standardDev.getIp() + CnSocketUtil.SPLIT_TAG + split[1]); + } + devData.setTime(time.format(DateTimeFormatter.ofPattern(DatePattern.ISO8601_PATTERN))); - List sqlData = new ArrayList<>(); + List sqlData = devData.getSqlData(); List sqlDataHarm = new ArrayList<>(); - value1.forEach(x -> { DevData.SqlDataHarmDTO dataHarmDTO = new DevData.SqlDataHarmDTO(); dataHarmDTO.setType(x.getDataType()); String desc = testItemMap.inverse().get(x.getAdType()).replace(DetectionCodeEnum.REAL_PREFIX.getCode(), ""); dataHarmDTO.setDesc(desc); boolean notContainBaseHarm = false; - if (DetectionCodeEnum.V2_50.getCode().equals(desc) || DetectionCodeEnum.PV2_50.getCode().equals(desc) || DetectionCodeEnum.I2_50.getCode().equals(desc)) { + if (DetectionCodeEnum.V2_50.getCode().equals(desc) || DetectionCodeEnum.PV2_50.getCode().equals(desc) || DetectionCodeEnum.I2_50.getCode().equals(desc) || DetectionCodeEnum.P2_50.getCode().equals(desc)) { dataHarmDTO.setNum(49); notContainBaseHarm = true; } @@ -3316,12 +3342,13 @@ public class ResultServiceImpl implements IResultService { } } }); + devData.setSqlDataHarm(sqlDataHarm); devData.setSqlData(sqlData); - }); - info.add(devData); + } }); - } + }); + return info; }