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 96fc42e8..28c66d2b 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 @@ -534,6 +534,15 @@ public class SocketContrastResponseService { FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_ALIGN; +// if (FormalTestManager.isWaveCheck) { +// System.out.println("(仅有闪变、录波)模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》"); +// this.sendXu(s); +// FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY; +// } else { +// System.out.println("(仅有闪变)模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始数据对齐校验》》》》》》》》》》》》》》》》"); +// this.sendAlignData(s, requestOperateCode); +// FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_ALIGN; +// } this.resetTimer(); } } @@ -644,7 +653,9 @@ public class SocketContrastResponseService { SourceResponseCodeEnum dictDataEnumByCode = SourceResponseCodeEnum.getDictDataEnumByCode(socketDataMsg.getCode()); String s = param.getUserPageId() + CnSocketUtil.CONTRAST_DEV_TAG; DevData devData = JSON.parseObject(socketDataMsg.getData(), DevData.class); - socketDataMsg.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue()); + if (SourceOperateCodeEnum.FORMAL_REAL.getValue().equals(socketDataMsg.getRequestId())) { + socketDataMsg.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue()); + } if (ObjectUtil.isNotNull(dictDataEnumByCode)) { SourceOperateCodeEnum requestOperateCode = this.getRequestOperateCode(); @@ -652,61 +663,63 @@ public class SocketContrastResponseService { switch (dictDataEnumByCode) { case SUCCESS: - //成功收到数据后重置超时统计时间 - this.resetTimer(); - String monitorId1 = devData.getId(); - successComm.add(monitorId1); + if (SourceOperateCodeEnum.YJC_MXYZXJY.getValue().equals(socketDataMsg.getRequestId())) { + //成功收到数据后重置超时统计时间 + this.resetTimer(); + String monitorId1 = devData.getId(); + successComm.add(monitorId1); - if (FormalTestManager.standardDevDataMap.containsKey(monitorId1)) { - FormalTestManager.standardDevDataMap.get(monitorId1).add(devData); - Collections.sort(FormalTestManager.standardDevDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime()))); - } - if (FormalTestManager.devDataMap.containsKey(monitorId1)) { - FormalTestManager.devDataMap.get(monitorId1).add(devData); - Collections.sort(FormalTestManager.devDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime()))); - } + if (FormalTestManager.standardDevDataMap.containsKey(monitorId1)) { + FormalTestManager.standardDevDataMap.get(monitorId1).add(devData); + Collections.sort(FormalTestManager.standardDevDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime()))); + } + if (FormalTestManager.devDataMap.containsKey(monitorId1)) { + FormalTestManager.devDataMap.get(monitorId1).add(devData); + Collections.sort(FormalTestManager.devDataMap.get(monitorId1), Comparator.comparing(obj -> DetectionUtil.getMillis(obj.getTime()))); + } - if (successComm.size() == FormalTestManager.monitorMap.size()) { - boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1), true); - modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1), false) && modelCheckResult; + if (successComm.size() == FormalTestManager.monitorMap.size()) { + boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1), true); + modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1), false) && modelCheckResult; - this.clearData(); - if (!modelCheckResult) { - SocketDataMsg webSend = new SocketDataMsg(); - webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue()); - webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode()); //最终错误推送 - WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0)); + this.clearData(); + if (!modelCheckResult) { + SocketDataMsg webSend = new SocketDataMsg(); + webSend.setRequestId(SourceOperateCodeEnum.YJC_MXYZXJY.getValue()); + webSend.setCode(SourceResponseCodeEnum.ALL_FAIL.getCode()); //最终错误推送 + WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 0)); - System.out.println("模型一致性校验失败!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》"); - 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()); - webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 - WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); + System.out.println("模型一致性校验失败!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》"); + 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()); + webSend.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); - if (ObjectUtil.isNotNull(FormalTestManager.nonWaveDataSourceEnum)) { - System.out.println("模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始数据对齐校验》》》》》》》》》》》》》》》》"); + if (ObjectUtil.isNotNull(FormalTestManager.nonWaveDataSourceEnum)) { + System.out.println("模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始数据对齐校验》》》》》》》》》》》》》》》》"); - this.sendAlignData(s, requestOperateCode); + this.sendAlignData(s, requestOperateCode); - FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_ALIGN; + FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_ALIGN; - this.resetTimer(); - } else if (FormalTestManager.isWaveCheck) { - System.out.println("(仅有录波)模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》》》》》》》》》》》》"); + this.resetTimer(); + } else if (FormalTestManager.isWaveCheck) { + System.out.println("(仅有录波)模型一致性校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》》》》》》》》》》》》"); - this.sendXu(s); - this.resetTimer(); - FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY; + this.sendXu(s); + this.resetTimer(); + FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY; + } } } } @@ -1513,7 +1526,7 @@ 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) && lists.stream().flatMap(List::stream).allMatch(devData -> CollUtil.isNotEmpty(devData.getSqlData()) || CollUtil.isNotEmpty(devData.getSqlDataHarm()))) { + 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)); @@ -2222,12 +2235,19 @@ public class SocketContrastResponseService { */ private boolean singleMonitorXuCheck(String devMonitorId, String standardDevMonitorId, PreDetection.MonitorListDTO monitorListDTO, List devData, List stdData, Map devNameMapComm, String userId) { DecimalFormat df = new DecimalFormat("0.000000"); - Boolean flag = true; + Boolean flagU = true; + Boolean flagI = true; + Boolean flagIMBV = true; + Boolean flagIMBA = true; + Boolean flagPhase = true; + + // 获取被检设备的额定电流 + Double ratedCurrent = Double.valueOf(monitorListDTO.getCtStr().split("\\:")[1]); + String pairStr = MsgUtil.getPairStr(devMonitorId, standardDevMonitorId, devNameMapComm); SocketDataMsg webSend = new SocketDataMsg(); webSend.setRequestId(SourceOperateCodeEnum.YJC_XUJY.getValue()); webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); - String detail = "数据为空!"; boolean isStar = DetectionCodeEnum.STAR.getCode().equals(monitorListDTO.getConnection()); boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(monitorListDTO.getConnection()); @@ -2245,6 +2265,7 @@ public class SocketContrastResponseService { uStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.PVRMS.getCode()); } + String detail = "数据为空!"; if (CollUtil.isNotEmpty(uDev) && CollUtil.isNotEmpty(uStd)) { DevData.SqlDataDTO.ListDTO uDevList = uDev.get(0).getList(); DevData.SqlDataDTO.ListDTO uStdList = uStd.get(0).getList(); @@ -2255,7 +2276,7 @@ public class SocketContrastResponseService { ", " + (isDelta ? "Ubc" : "Ub") + "=" + df.format(uStdList.getB()) + ", " + (isDelta ? "Uca" : "Uc") + "=" + df.format(uStdList.getC()); if (!voltageOrCurrentCheck(uDevList.getA(), uDevList.getB(), uDevList.getC(), uStdList.getA(), uStdList.getB(), uStdList.getC(), true)) { - flag = false; + flagU = false; // 单个检测点电压校验失败,推送失败消息 webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSend.setData(pairStr + ":电压校验失败!" + detail); @@ -2264,7 +2285,7 @@ public class SocketContrastResponseService { webSend.setData(pairStr + ":电压校验成功!" + detail); } } else { - flag = false; + flagU = false; webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSend.setData(pairStr + ":电压校验失败!" + (isDelta ? "线" : "相") + "电压" + detail); } @@ -2278,22 +2299,30 @@ public class SocketContrastResponseService { if (CollUtil.isNotEmpty(iDev) && CollUtil.isNotEmpty(iStd)) { DevData.SqlDataDTO.ListDTO iDevList = iDev.get(0).getList(); DevData.SqlDataDTO.ListDTO iStdList = iStd.get(0).getList(); - detail = "被检设备:Ia=" + df.format(iDevList.getA()) + ",Ib=" + df.format(iDevList.getB()) + ",Ic=" + df.format(iDevList.getC()) + ";标准设备:Ia=" + df.format(iStdList.getA()) + ",Ib=" + df.format(iStdList.getB()) + ",Ic=" + df.format(iStdList.getC()); - if (!voltageOrCurrentCheck(iDevList.getA(), iDevList.getB(), iDevList.getC(), iStdList.getA(), iStdList.getB(), iStdList.getC(), false)) { - // 单个检测点电流校验失败,推送失败消息 - flag = false; - webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); - webSend.setData(pairStr + ":电流校验失败!" + detail); + + if (!DetectionUtil.isZero(iDevList.getA(), ratedCurrent) && !DetectionUtil.isZero(iDevList.getB(), ratedCurrent) && !DetectionUtil.isZero(iDevList.getC(), ratedCurrent) && !DetectionUtil.isZero(iStdList.getA(), ratedCurrent) && !DetectionUtil.isZero(iStdList.getB(), ratedCurrent) && !DetectionUtil.isZero(iStdList.getC(), ratedCurrent)) { + detail = "被检设备:Ia=" + df.format(iDevList.getA()) + ",Ib=" + df.format(iDevList.getB()) + ",Ic=" + df.format(iDevList.getC()) + ";标准设备:Ia=" + df.format(iStdList.getA()) + ",Ib=" + df.format(iStdList.getB()) + ",Ic=" + df.format(iStdList.getC()); + if (!voltageOrCurrentCheck(iDevList.getA(), iDevList.getB(), iDevList.getC(), iStdList.getA(), iStdList.getB(), iStdList.getC(), false)) { + // 单个检测点电流校验失败,推送失败消息 + flagI = false; + webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); + webSend.setData(pairStr + ":电流校验失败!" + detail); + WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend)); + } else { + webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); + webSend.setData(pairStr + ":电流校验成功!" + detail); + WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend)); + } } else { - webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); - webSend.setData(pairStr + ":电流校验成功!" + detail); + // 什么都不做,不推送消息 } } else { - flag = false; + flagI = false; webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSend.setData(pairStr + ":电流校验失败!" + detail); + WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend)); } - WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend)); + // 根据接线方式(星型、角型)来决定是否进行三项不平衡校验 detail = "数据为空!"; @@ -2308,7 +2337,7 @@ public class SocketContrastResponseService { detail = "被检设备:IMBV=" + df.format(uUnblanceDevList.getB()) + ";标准设备:IMBV=" + df.format(uUnblanceStdList.getB()); if (!unbalanceCheck(uUnblanceDevList.getB(), uUnblanceStdList.getB(), true)) { // 单个检测点三项电压不平衡校验失败,推送失败消息 - flag = false; + flagIMBV = false; webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSend.setData(pairStr + ":三项电压不平衡校验失败!" + detail); } else { @@ -2316,7 +2345,7 @@ public class SocketContrastResponseService { webSend.setData(pairStr + ":三项电压不平衡校验成功!" + detail); } } else { - flag = false; + flagIMBV = false; webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSend.setData(pairStr + ":三项电压不平衡校验失败!" + detail); } @@ -2329,7 +2358,7 @@ public class SocketContrastResponseService { DevData.SqlDataDTO.ListDTO iUnblanceStdList = iUnblanceStd.get(0).getList(); detail = "被检设备:IMBA=" + df.format(iUnblanceDevList.getB()) + ";标准设备:IMBA=" + df.format(iUnblanceStdList.getB()); if (!unbalanceCheck(iUnblanceDevList.getB(), iUnblanceStdList.getB(), false)) { - flag = false; + flagIMBA = false; webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSend.setData(pairStr + ":三项电流不平衡校验失败!" + detail); } else { @@ -2337,7 +2366,7 @@ public class SocketContrastResponseService { webSend.setData(pairStr + ":三项电流不平衡校验成功!" + detail); } } else { - flag = false; + flagIMBA = false; webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); webSend.setData(pairStr + ":三项电流不平衡校验失败!" + detail); } @@ -2352,66 +2381,69 @@ public class SocketContrastResponseService { // 动态调控是否支持相角差校验 if (isPhaseAngle) { - // 获取被检设备的额定电流 - Double ratedCurrent = Double.valueOf(monitorListDTO.getCtStr().split("\\:")[1]); - - // 是否存在电流 - boolean notHasCurrent = iDev.stream().allMatch( - p -> p.getList().getA() != null && DetectionUtil.isZero(p.getList().getA(), ratedCurrent) - && p.getList().getB() != null && DetectionUtil.isZero(p.getList().getB(), ratedCurrent) - && p.getList().getC() != null && DetectionUtil.isZero(p.getList().getC(), ratedCurrent)); - if (!notHasCurrent) { - detail = "数据为空!"; - // 相角差校验 - List vaDev = null; - List vaStd = null; - List iaDev = null; - List iaStd = null; - if (isStar) { - vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.VA.getCode()); - vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.VA.getCode()); - iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.IA.getCode()); - iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.IA.getCode()); - if (CollUtil.isEmpty(vaDev) && CollUtil.isEmpty(vaStd) && CollUtil.isEmpty(iaDev) && CollUtil.isEmpty(iaStd)) { - vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.U1A.getCode()); - vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.U1A.getCode()); + if (flagIMBV && flagIMBA) { + // 是否存在电流 + boolean hasCurrent = iDev.stream().allMatch( + p -> p.getList().getA() != null && !DetectionUtil.isZero(p.getList().getA(), ratedCurrent) + && p.getList().getB() != null && !DetectionUtil.isZero(p.getList().getB(), ratedCurrent) + && p.getList().getC() != null && !DetectionUtil.isZero(p.getList().getC(), ratedCurrent)); + hasCurrent = hasCurrent && iStd.stream().allMatch( + p -> p.getList().getA() != null && !DetectionUtil.isZero(p.getList().getA(), ratedCurrent) + && p.getList().getB() != null && !DetectionUtil.isZero(p.getList().getB(), ratedCurrent) + && p.getList().getC() != null && !DetectionUtil.isZero(p.getList().getC(), ratedCurrent)); + if (hasCurrent) { + detail = "数据为空!"; + // 相角差校验 + List vaDev = null; + List vaStd = null; + List iaDev = null; + List iaStd = null; + if (isStar) { + vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.VA.getCode()); + vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.VA.getCode()); + iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.IA.getCode()); + iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.IA.getCode()); + if (CollUtil.isEmpty(vaDev) && CollUtil.isEmpty(vaStd) && CollUtil.isEmpty(iaDev) && CollUtil.isEmpty(iaStd)) { + vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.U1A.getCode()); + vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.U1A.getCode()); + iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.I1A.getCode()); + iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.I1A.getCode()); + } + } + if (isDelta) { + vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.PU1A.getCode()); + vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.PU1A.getCode()); iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.I1A.getCode()); iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.I1A.getCode()); } - } - if (isDelta) { - vaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.PU1A.getCode()); - vaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.PU1A.getCode()); - iaDev = getSingleMonitorSqlData(devData, DetectionCodeEnum.I1A.getCode()); - iaStd = getSingleMonitorSqlData(stdData, DetectionCodeEnum.I1A.getCode()); - } - if (CollUtil.isNotEmpty(vaDev) && CollUtil.isNotEmpty(vaStd) && CollUtil.isNotEmpty(iaDev) && CollUtil.isNotEmpty(iaStd)) { - DevData.SqlDataDTO.ListDTO vaDevList = vaDev.get(0).getList(); - DevData.SqlDataDTO.ListDTO vaStdList = vaDev.get(0).getList(); - DevData.SqlDataDTO.ListDTO iaDevList = vaDev.get(0).getList(); - DevData.SqlDataDTO.ListDTO iaStdList = vaDev.get(0).getList(); + if (CollUtil.isNotEmpty(vaDev) && CollUtil.isNotEmpty(vaStd) && CollUtil.isNotEmpty(iaDev) && CollUtil.isNotEmpty(iaStd)) { + DevData.SqlDataDTO.ListDTO vaDevList = vaDev.get(0).getList(); + DevData.SqlDataDTO.ListDTO vaStdList = vaDev.get(0).getList(); + DevData.SqlDataDTO.ListDTO iaDevList = vaDev.get(0).getList(); + DevData.SqlDataDTO.ListDTO iaStdList = vaDev.get(0).getList(); - detail = "被检设备:a=" + (vaDevList.getA() - iaDevList.getA()) + "°,b=" + (vaDevList.getB() - iaDevList.getB()) + "°,c=" + (vaDevList.getC() - iaDevList.getC()) + ";标准设备:a=" + (vaStdList.getA() - iaStdList.getA()) + "°,b=" + (vaStdList.getB() - iaStdList.getB()) + "°,c=" + (vaStdList.getC() - iaStdList.getC()); + detail = "被检设备:a=" + (vaDevList.getA() - iaDevList.getA()) + "°,b=" + (vaDevList.getB() - iaDevList.getB()) + "°,c=" + (vaDevList.getC() - iaDevList.getC()) + ";标准设备:a=" + (vaStdList.getA() - iaStdList.getA()) + "°,b=" + (vaStdList.getB() - iaStdList.getB()) + "°,c=" + (vaStdList.getC() - iaStdList.getC()); - if (!phaseCheck(vaDevList, iaDevList, vaStdList, iaStdList)) { - // 单个检测点相角校验失败,推送失败消息 - flag = false; - webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); - webSend.setData(pairStr + ":相角差校验失败!" + detail); + if (!phaseCheck(vaDevList, iaDevList, vaStdList, iaStdList)) { + // 单个检测点相角校验失败,推送失败消息 + flagPhase = false; + webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); + webSend.setData(pairStr + ":相角差校验失败!" + detail); + } else { + webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); + webSend.setData(pairStr + ":相角差校验成功!" + detail); + } } else { - webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); - webSend.setData(pairStr + ":相角差校验成功!" + detail); + flagPhase = false; + webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); + webSend.setData(pairStr + ":相角差校验失败!相角差" + detail); } - } else { - flag = false; - webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); - webSend.setData(pairStr + ":相角差校验失败!相角差" + detail); + WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend)); } - WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend)); } } - return flag; + return flagU && flagI && flagIMBV && flagIMBA && flagPhase; } /** @@ -2909,6 +2941,18 @@ public class SocketContrastResponseService { targetDatStream, isStar ? 0 : isDelta ? 1 : 2); if (ObjectUtil.isNotNull(compareWaveDTO) && ObjectUtil.isNotNull(compareWaveDTO.getSourceResults()) && ObjectUtil.isNotNull(compareWaveDTO.getTargetResults())) { +// DetectionCodeEnum prefixEnum = this.getPrefixEnum(); +// adTypeCodeList = Arrays.asList(prefixEnum.getCode() + DetectionCodeEnum.VRMS.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.PVRMS.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.IRMS.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.V_UNBAN.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.I_UNBAN.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.V2_50.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.P2_50.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.PV2_50.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.SV_1_49.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.SI_1_49.getCode(), +// prefixEnum.getCode() + DetectionCodeEnum.I2_50.getCode()); return this.getDevData(compareWaveDTO.getSourceResults(), compareWaveDTO.getTargetResults(), devMonitorId, stdDevMonitorId, adTypeCodeList); } else { return null; @@ -2934,8 +2978,8 @@ public class SocketContrastResponseService { List stdDevDataList = new ArrayList<>(); int dataPoints = Math.min(sourceDataList.size(), targetDataList.size()); for (int i = 0; i < dataPoints; i++) { - devDataList.add(getSinglePointDevData(sourceDataList.get(i), devMonitorId, adTypeCodeList)); - stdDevDataList.add(getSinglePointDevData(targetDataList.get(i), stdDevMonitorId, adTypeCodeList)); + devDataList.add(getSinglePointDevData(targetDataList.get(i), devMonitorId, adTypeCodeList)); + stdDevDataList.add(getSinglePointDevData(sourceDataList.get(i), stdDevMonitorId, adTypeCodeList)); } result.add(devDataList); result.add(stdDevDataList); @@ -2975,7 +3019,7 @@ public class SocketContrastResponseService { List cListI = null; for (String adTypeCode : adTypeCodeList) { - String code = adTypeCode.replace(DetectionCodeEnum.REAL_PREFIX.getCode(), ""); + String code = adTypeCode.replace(this.getPrefixEnum().getCode(), ""); DetectionCodeEnum detectionCodeEnum = DetectionCodeEnum.getDetectionCodeByCode(code); switch (detectionCodeEnum) { // case FREQ: @@ -2992,7 +3036,7 @@ public class SocketContrastResponseService { // 相电压有效值 sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.VRMS.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); listDTO.setA((double) pointDevData.getRms()[0]); listDTO.setB((double) pointDevData.getRms()[1]); @@ -3004,7 +3048,7 @@ public class SocketContrastResponseService { // 线电压有效值 sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.PVRMS.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); listDTO.setA((double) pointDevData.getRms()[6]); listDTO.setB((double) pointDevData.getRms()[7]); @@ -3016,7 +3060,7 @@ public class SocketContrastResponseService { // 相电流有效值 sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.IRMS.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); listDTO.setA((double) pointDevData.getRms()[3]); listDTO.setB((double) pointDevData.getRms()[4]); @@ -3028,7 +3072,7 @@ public class SocketContrastResponseService { // 三项电压不平衡度 sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.V_UNBAN.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); listDTO.setB((double) pointDevData.getUiSeq()[0][4]); sqlDataDTO.setList(listDTO); @@ -3038,7 +3082,7 @@ public class SocketContrastResponseService { // 三项电流不平衡度 sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.I_UNBAN.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); listDTO.setB((double) pointDevData.getUiSeq()[1][4]); sqlDataDTO.setList(listDTO); @@ -3048,7 +3092,7 @@ public class SocketContrastResponseService { // 谐波电压含有率 sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.U1.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); u1A = (double) pointDevData.getFuHarm()[0][0]; u1B = (double) pointDevData.getFuHarm()[1][0]; @@ -3061,7 +3105,7 @@ public class SocketContrastResponseService { sqlDataHarmDTOV = new DevData.SqlDataHarmDTO(); sqlDataHarmDTOV.setDesc(DetectionCodeEnum.V2_50.getCode()); - sqlDataHarmDTOV.setType("real"); + sqlDataHarmDTOV.setType("wave"); listDTOHarmV = new DevData.SqlDataHarmDTO.ListDTO(); aListV = new ArrayList<>(); @@ -3086,7 +3130,7 @@ public class SocketContrastResponseService { // 谐波电流幅值 sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.I1.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); listDTO.setA((double) pointDevData.getInHarm()[3][0]); listDTO.setB((double) pointDevData.getInHarm()[4][0]); @@ -3096,7 +3140,7 @@ public class SocketContrastResponseService { DevData.SqlDataHarmDTO sqlDataHarmDTOI = new DevData.SqlDataHarmDTO(); sqlDataHarmDTOI.setDesc(DetectionCodeEnum.I2_50.getCode()); - sqlDataHarmDTOI.setType("real"); + sqlDataHarmDTOI.setType("wave"); DevData.SqlDataHarmDTO.ListDTO listDTOHarmI = new DevData.SqlDataHarmDTO.ListDTO(); aListI = new ArrayList<>(); @@ -3142,7 +3186,7 @@ public class SocketContrastResponseService { // 间谐波电压含有率 sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.U1.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); u1A = (double) pointDevData.getFuHarm()[0][0]; u1B = (double) pointDevData.getFuHarm()[1][0]; @@ -3155,7 +3199,7 @@ public class SocketContrastResponseService { sqlDataHarmDTOV = new DevData.SqlDataHarmDTO(); sqlDataHarmDTOV.setDesc(DetectionCodeEnum.SV_1_49.getCode()); - sqlDataHarmDTOV.setType("real"); + sqlDataHarmDTOV.setType("wave"); listDTOHarmV = new DevData.SqlDataHarmDTO.ListDTO(); aListV = new ArrayList<>(); @@ -3179,7 +3223,7 @@ public class SocketContrastResponseService { case SI_1_49: sqlDataDTO = new DevData.SqlDataDTO(); sqlDataDTO.setDesc(DetectionCodeEnum.I1.getCode()); - sqlDataDTO.setType("real"); + sqlDataDTO.setType("wave"); listDTO = new DevData.SqlDataDTO.ListDTO(); listDTO.setA((double) pointDevData.getInHarm()[3][0]); listDTO.setB((double) pointDevData.getInHarm()[4][0]); @@ -3190,7 +3234,7 @@ public class SocketContrastResponseService { // 间谐波电流幅值 sqlDataHarmDTOI = new DevData.SqlDataHarmDTO(); sqlDataHarmDTOI.setDesc(DetectionCodeEnum.SI_1_49.getCode()); - sqlDataHarmDTOI.setType("real"); + sqlDataHarmDTOI.setType("wave"); listDTOHarmI = new DevData.SqlDataHarmDTO.ListDTO(); aListI = new ArrayList<>(); 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 cb088def..507cac5d 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 @@ -42,8 +42,8 @@ public enum SourceResponseCodeEnum { FAIL(25002,"失败"), ALL_FAIL(25003,"校验失败"), RECEIVE_DATA_TIME_OUT(25004,"接收数据超时"), - REAL_DATA_CHECK_FAIL(25005,"实时数据校验失败"), - STATISTICS_DATA_CHECK_FAIL(25006,"统计数据校验失败"), + REAL_DATA_CHECK_FAIL(25005,"实时数据不符合"), + STATISTICS_DATA_CHECK_FAIL(25006,"统计数据不符合"), FLICKER_DATA_START(25007,"开始接收闪变数据") diff --git a/detection/src/main/java/com/njcn/gather/device/mapper/mapping/PqDevMapper.xml b/detection/src/main/java/com/njcn/gather/device/mapper/mapping/PqDevMapper.xml index 099c73ed..cf3e12ed 100644 --- a/detection/src/main/java/com/njcn/gather/device/mapper/mapping/PqDevMapper.xml +++ b/detection/src/main/java/com/njcn/gather/device/mapper/mapping/PqDevMapper.xml @@ -134,7 +134,7 @@ #{item} - order by dev.Create_Time DESC,dev.Name + order by dev.Create_Time DESC, dev.Name ASC diff --git a/detection/src/main/java/com/njcn/gather/device/pojo/vo/PqDevVO.java b/detection/src/main/java/com/njcn/gather/device/pojo/vo/PqDevVO.java index 844858b9..42d3383d 100644 --- a/detection/src/main/java/com/njcn/gather/device/pojo/vo/PqDevVO.java +++ b/detection/src/main/java/com/njcn/gather/device/pojo/vo/PqDevVO.java @@ -111,4 +111,9 @@ public class PqDevVO extends PqDev { * 是否已经分配。0-未分配、1-已分配、2-所有 */ private Integer assign; + + /** + * 检测点结果 + */ + private List monitorResults; } diff --git a/detection/src/main/java/com/njcn/gather/device/service/impl/PqDevServiceImpl.java b/detection/src/main/java/com/njcn/gather/device/service/impl/PqDevServiceImpl.java index a393a17a..f73c5c44 100644 --- a/detection/src/main/java/com/njcn/gather/device/service/impl/PqDevServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/device/service/impl/PqDevServiceImpl.java @@ -37,6 +37,7 @@ import com.njcn.gather.device.service.IPqDevSubService; import com.njcn.gather.monitor.pojo.po.PqMonitor; import com.njcn.gather.monitor.pojo.vo.PqMonitorExcel; import com.njcn.gather.monitor.service.IPqMonitorService; +import com.njcn.gather.plan.pojo.enums.DataSourceEnum; import com.njcn.gather.pojo.enums.DetectionResponseEnum; import com.njcn.gather.storage.service.DetectionDataDealService; import com.njcn.gather.system.cfg.pojo.enums.SceneEnum; @@ -216,7 +217,8 @@ public class PqDevServiceImpl extends ServiceImpl implements if (PatternEnum.CONTRAST.getValue().equals(dictDataService.getDictDataById(param.getPattern()).getCode())) { for (String id : param.getIds()) { if (ObjectUtils.isNotEmpty(pqMonitorService.listPqMonitorByDevIds(Collections.singletonList(id)))) { - throw new BusinessException(DetectionResponseEnum.PQ_DEV_HAS_MONITOR); +// throw new BusinessException(DetectionResponseEnum.PQ_DEV_HAS_MONITOR); + pqMonitorService.removeByDevId(id); } } } @@ -290,6 +292,33 @@ public class PqDevServiceImpl extends ServiceImpl implements return Collections.emptyList(); } List pqDevList = this.baseMapper.selectByQueryParam(param); + pqDevList.forEach(pqDev -> { + List monitorList = pqMonitorService.listPqMonitorByDevIds(Collections.singletonList(pqDev.getId())); + List enabledMonitorList = monitorList.stream().filter(x -> x.getCheckFlag() == 1).collect(Collectors.toList()); + pqDev.setMonitorResults(enabledMonitorList.stream().map(x -> { + if (ObjectUtil.isNull(x.getResultType())) { + return CheckResultEnum.UNCHECKED.getValue(); + } else { + DataSourceEnum dataSourceEnum = DataSourceEnum.ofByValue(x.getResultType()); + + switch (dataSourceEnum) { + case REAL_DATA: + return x.getRealtimeResult(); + case MINUTE_STATISTICS_AVG: + case MINUTE_STATISTICS_CP95: + case MINUTE_STATISTICS_MIN: + case MINUTE_STATISTICS_MAX: + return x.getStatisticsResult(); + case WAVE_DATA: + return x.getRecordedResult(); + default: + break; + } + } + return CheckResultEnum.UNCHECKED.getValue(); + }).collect(Collectors.toList())); + }); + return pqDevList; } @@ -1254,9 +1283,9 @@ public class PqDevServiceImpl extends ServiceImpl implements } // 校验监测点数量 int devChns = devType.getDevChns(); - if (pqMonitorExcelList.size() != devChns) { - throw new BusinessException(DetectionResponseEnum.IMPORT_DATA_FAIL, "【" + name + "】的设备类型必须具备" + devChns + "个监测点信息!"); - } +// if (pqMonitorExcelList.size() != devChns) { +// throw new BusinessException(DetectionResponseEnum.IMPORT_DATA_FAIL, "【" + name + "】的设备类型必须具备" + devChns + "个监测点信息!"); +// } List numList = pqMonitorExcelList.stream().map(PqMonitorExcel::getNum).collect(Collectors.toList()); // 判断是否有重复的num Set uniqueNumSet = new HashSet<>(numList); diff --git a/detection/src/main/java/com/njcn/gather/monitor/service/IPqMonitorService.java b/detection/src/main/java/com/njcn/gather/monitor/service/IPqMonitorService.java index 3e603ec9..869ccf8b 100644 --- a/detection/src/main/java/com/njcn/gather/monitor/service/IPqMonitorService.java +++ b/detection/src/main/java/com/njcn/gather/monitor/service/IPqMonitorService.java @@ -6,7 +6,6 @@ import com.njcn.gather.monitor.pojo.po.PqMonitor; import com.njcn.gather.plan.pojo.enums.DataSourceEnum; import java.util.List; -import java.util.Map; /** * @author caozehui @@ -112,4 +111,11 @@ public interface IPqMonitorService extends IService { */ Integer getDevCheckResult(String devId); + /** + * 根据被检设备id删除监测点信息 + * + * @param devId + * @return + */ + boolean removeByDevId(String devId); } diff --git a/detection/src/main/java/com/njcn/gather/monitor/service/impl/PqMonitorServiceImpl.java b/detection/src/main/java/com/njcn/gather/monitor/service/impl/PqMonitorServiceImpl.java index 487f62a0..b879c0fa 100644 --- a/detection/src/main/java/com/njcn/gather/monitor/service/impl/PqMonitorServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/monitor/service/impl/PqMonitorServiceImpl.java @@ -280,4 +280,11 @@ public class PqMonitorServiceImpl extends ServiceImpl wrapper = new QueryWrapper<>(); + wrapper.eq("pq_monitor.Dev_Id", devId); + return this.remove(wrapper); + } } 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 16e48a26..23dfa85c 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 @@ -2932,6 +2932,7 @@ public class ResultServiceImpl implements IResultService { "A_Value_0 json NULL COMMENT 'A相基波有效值',\n" + "B_Value_0 json NULL COMMENT 'B相基波有效值',\n" + "C_Value_0 json NULL COMMENT 'B相基波有效值',\n" + + "Wave_Num tinyint(1) unsigned DEFAULT null COMMENT '录波数据第几组',\n"+ "PRIMARY KEY (Id)\n" : " Script_Id CHAR(32) NOT NULL COMMENT '检测脚本表Id',\n" + @@ -3130,13 +3131,15 @@ public class ResultServiceImpl implements IResultService { 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); + if(CollUtil.isNotEmpty(devData)&&CollUtil.isNotEmpty(standardDevData)){ + detectionServiceImpl.processing(devData, standardDevData, parsIp, devIdMapComm, testItemMap.keySet().stream().collect(Collectors.toList()), errorSysId, dataRule, numMap, code, null, finalNonWaveDataSourceEnum); - parsId.forEach((devMonitorId, stdDevMonitorId) -> { - String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG); - pqMonitorService.updateMonitorResult(devMonitorId, null, finalNonWaveDataSourceEnum, num, null, oldCode); - pqDevService.updateResult(split[0], null); - }); + parsId.forEach((devMonitorId, stdDevMonitorId) -> { + String[] split = devMonitorId.split(CnSocketUtil.SPLIT_TAG); + pqMonitorService.updateMonitorResult(devMonitorId, null, finalNonWaveDataSourceEnum, num, null, oldCode); + pqDevService.updateResult(split[0], null); + }); + } AdPlanTestConfig adPlanTestConfig = adPlanTestConfigService.getByPlanId(planId); for (int i = 1; i <= adPlanTestConfig.getWaveRecord(); i++) {