From 6ae9037a47611ab200942847700d00f046a991a0 Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Tue, 26 Aug 2025 18:49:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=86=B3=E5=AE=9A=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E8=BF=9B=E8=A1=8C=E7=9B=B8=E8=A7=92=E5=B7=AE=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E3=80=81=E8=A7=92=E5=9E=8B=E6=8E=A5=E7=BA=BF=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E4=BD=BF=E7=94=A8=E7=9B=B8=E5=88=AB=E7=9A=84=E6=8C=87?= =?UTF-8?q?=E6=A0=87=E8=BF=9B=E8=A1=8C=E6=AD=A3=E5=BC=8F=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E3=80=81=E6=95=B0=E6=A8=A1=E8=84=9A=E6=9C=AC=E4=B8=8E=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E6=A0=A1=E9=AA=8C=E6=97=B6=E5=8A=A8=E6=80=81=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E7=9B=B8=E8=A7=92=E7=9A=84=E6=B5=8B=E8=AF=95=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SocketContrastResponseService.java | 184 +++++++++++------- .../handler/SocketDevResponseService.java | 145 +++++++++----- .../pojo/enums/DetectionCodeEnum.java | 3 +- .../pojo/param/ContrastDetectionParam.java | 5 - .../pojo/param/PreDetectionParam.java | 5 - .../gather/detection/pojo/vo/AlignDataVO.java | 2 + .../service/impl/DetectionServiceImpl.java | 161 ++++++++------- .../service/impl/PreDetectionServiceImpl.java | 1 - .../util/socket/FormalTestManager.java | 7 +- .../gather/detection/util/socket/MsgUtil.java | 13 ++ .../util/socket/cilent/NettyClient.java | 1 - .../device/mapper/mapping/PqDevMapper.xml | 6 +- .../mapper/mapping/PqStandardDevMapper.xml | 13 +- .../gather/device/pojo/vo/PreDetection.java | 12 ++ .../err/controller/PqErrSysController.java | 4 +- .../gather/err/service/IPqErrSysService.java | 2 +- .../err/service/impl/PqErrSysServiceImpl.java | 25 ++- .../service/impl/ResultServiceImpl.java | 87 +++++---- .../script/service/IPqScriptDtlsService.java | 5 +- .../service/impl/PqScriptDtlsServiceImpl.java | 4 +- .../storage/mapper/mapping/TableGenMapper.xml | 4 +- .../service/impl/TableGenServiceImpl.java | 4 +- 22 files changed, 434 insertions(+), 259 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 79c66a82..ef0f69ae 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 @@ -130,10 +130,6 @@ public class SocketContrastResponseService { @Value("${log.homeDir}") private String alignDataFilePath; - @Value("${phaseAngle.isEnable}") - private Boolean isPhaseAngle; - - private static final Map> testItemCodeMap = new HashMap() {{ put("FREQ", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.FREQ.getCode())); put("V", Arrays.asList(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode())); @@ -275,7 +271,8 @@ public class SocketContrastResponseService { FormalTestManager.devIdMapComm.putAll(FormalTestManager.standardDevList.stream().collect(Collectors.toMap(PreDetection::getDevIP, PreDetection::getDevId))); Map numMap = getContrastTestNum(param.getPairs().keySet().stream().collect(Collectors.toList())); - param.setNumMap(numMap); + FormalTestManager.numMap.clear(); + FormalTestManager.numMap.putAll(numMap); SysTestConfig oneConfig = sysTestConfigService.getOneConfig(); if (param.getTestItemList().get(2)) { numMap.forEach((devMonitorId, num) -> { @@ -463,8 +460,8 @@ public class SocketContrastResponseService { if (successComm.size() == FormalTestManager.monitorMap.size()) { - boolean modelCheckResult = this.modelCheck(param, FormalTestManager.devDataMap, FormalTestManager.monitorMap.get(monitorId1)); - modelCheckResult = this.modelCheck(param, FormalTestManager.standardDevDataMap, FormalTestManager.monitorMap.get(monitorId1)) && modelCheckResult; + 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 (!modelCheckResult) { this.clearData(); @@ -606,60 +603,70 @@ public class SocketContrastResponseService { // 进行单个监测点的对齐校验 if (!successPair.containsKey(devMonitorId)) { - if (this.singleMonitorAlignCheck(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId))) { - successPair.put(devMonitorId, standardDevMonitorId); + if (FormalTestManager.devDataMap.get(devMonitorId).size() >= 5 && FormalTestManager.standardDevDataMap.get(standardDevMonitorId).size() >= 5) { + List> singleMonitorAlignData = this.getSingleMonitorAlignData(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId), 5); - //向前端推送实时数据对齐成功的配对 - SocketDataMsg webSend = new SocketDataMsg(); - webSend.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue()); - webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); - webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); - webSend.setData(MsgUtil.getPairStr(standardDevMonitorId, devMonitorId, FormalTestManager.devNameMapComm)); - WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); +// if (this.singleMonitorAlignCheck(FormalTestManager.devDataMap.get(devMonitorId), FormalTestManager.standardDevDataMap.get(standardDevMonitorId))) { + if (singleMonitorAlignData.get(0).size() >= 5 && singleMonitorAlignData.get(1).size() >= 5) { + successPair.put(devMonitorId, standardDevMonitorId); + FormalTestManager.devDataMap.get(devMonitorId).clear(); + FormalTestManager.devDataMap.get(devMonitorId).addAll(singleMonitorAlignData.get(0)); - // 若成功的配对项等于总的配对项,则判定为成功 - if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) { - checkResult = true; - scheduledFuture.cancel(true); - scheduler.shutdown(); + FormalTestManager.standardDevDataMap.get(standardDevMonitorId).clear(); + FormalTestManager.standardDevDataMap.get(standardDevMonitorId).addAll(singleMonitorAlignData.get(1)); - // 将数据推送给前端 - this.sendAlignDataToWeb(param.getUserPageId()); - this.saveAlignData(); + //向前端推送实时数据对齐成功的配对 + SocketDataMsg webSend = new SocketDataMsg(); + webSend.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue()); + webSend.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); + webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); + webSend.setData(MsgUtil.getPairStr(standardDevMonitorId, devMonitorId, FormalTestManager.devNameMapComm)); + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); - this.clearData(); + // 若成功的配对项等于总的配对项,则判定为成功 + if (successPair.keySet().containsAll(FormalTestManager.pairsIpMap.keySet())) { + checkResult = true; + scheduledFuture.cancel(true); + scheduler.shutdown(); - SocketDataMsg webSend1 = new SocketDataMsg(); - webSend1.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue()); - webSend1.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); - webSend1.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 - WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend1)); + // 将数据推送给前端 + this.sendAlignDataToWeb(param.getUserPageId()); + this.saveAlignData(); - System.out.println("实时数据对齐校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》"); + this.clearData(); - socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue()); - socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); - DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam(); - phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()]))); - phaseSequenceParam.setDataType(Arrays.asList( - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(), - DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode())); - phaseSequenceParam.setReadCount(this.getMaxReadCount(1)); - phaseSequenceParam.setIgnoreCount(0); - socketMsg.setData(JSON.toJSONString(phaseSequenceParam)); + SocketDataMsg webSend1 = new SocketDataMsg(); + webSend1.setRequestId(SourceOperateCodeEnum.YJC_ALIGN.getValue()); + webSend1.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); + webSend1.setCode(SourceResponseCodeEnum.ALL_SUCCESS.getCode());//最终成功推送 + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend1)); - FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY; - SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); - // 实时数据开始计时 - SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L); + System.out.println("实时数据对齐校验成功!》》》》》》》》》》》》》》》》》》》》》》》》》》》》》开始相序校验》》》》》》》》》》》》》》》》"); + + socketMsg.setRequestId(SourceOperateCodeEnum.FORMAL_REAL.getValue()); + socketMsg.setOperateCode(SourceOperateCodeEnum.DEV_DATA_REQUEST_02.getValue()); + DevPhaseSequenceParam phaseSequenceParam = new DevPhaseSequenceParam(); + phaseSequenceParam.setMoniterIdList(Arrays.asList(FormalTestManager.monitorMap.keySet().toArray(new String[FormalTestManager.monitorMap.size()]))); + phaseSequenceParam.setDataType(Arrays.asList( + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VRMS.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.U1A.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1A.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I1A.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IRMS.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.V_UNBAN.getCode(), + DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.I_UNBAN.getCode())); + phaseSequenceParam.setReadCount(this.getMaxReadCount(1)); + phaseSequenceParam.setIgnoreCount(0); + socketMsg.setData(JSON.toJSONString(phaseSequenceParam)); + + FormalTestManager.currentStep = SourceOperateCodeEnum.YJC_XUJY; + SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); + // 实时数据开始计时 + SocketManager.contrastClockMap.put(DataSourceEnum.REAL_DATA, 0L); + } } } } @@ -909,14 +916,14 @@ public class SocketContrastResponseService { adPair.setPlanId(FormalTestManager.currentTestPlan.getId()); adPair.setDevMonitorId(key); adPair.setStdDevMonitorId(FormalTestManager.pairsIdMap.get(key)); - adPair.setNum(param.getNumMap().get(key)); + adPair.setNum(FormalTestManager.numMap.get(key)); adPairList.add(adPair); } adPairService.saveBatch(adPairList); // 原始数据入库 - baseDataInsert(false, singleMonitorAlignData.get(0), param.getNumMap(), code); - baseDataInsert(true, singleMonitorAlignData.get(1), param.getNumMap(), code); + baseDataInsert(false, FormalTestManager.devDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()), FormalTestManager.numMap, code); + baseDataInsert(true, FormalTestManager.standardDevDataMap.values().stream().flatMap(List::stream).collect(Collectors.toList()), FormalTestManager.numMap, code); // 进行误差计算 List allResultList = detectionService.processing( @@ -925,7 +932,7 @@ public class SocketContrastResponseService { FormalTestManager.pairsIpMap, FormalTestManager.devIdMapComm, FormalTestManager.testItemMap.keySet().stream().collect(Collectors.toList()), - errorSysId, FormalTestManager.dataRule, param.getNumMap(), code); + errorSysId, FormalTestManager.dataRule, FormalTestManager.numMap, code); this.clearData(); @@ -1245,10 +1252,11 @@ public class SocketContrastResponseService { /** * 模型一致性校验 * - * @param param - * @param dataMap + * @param param 预检测参数 + * @param dataMap 收到的数据 + * @param isDev 是否是被检设备 */ - private boolean modelCheck(PreDetectionParam param, Map> dataMap, PreDetection.MonitorListDTO monitorListDTO) { + private boolean modelCheck(PreDetectionParam param, Map> dataMap, PreDetection.MonitorListDTO monitorListDTO, boolean isDev) { AtomicBoolean flag = new AtomicBoolean(true); dataMap.forEach((k, v) -> { v.stream().forEach(devData1 -> { @@ -1274,25 +1282,42 @@ public class SocketContrastResponseService { allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.SV_1_49.getCode()); // 如果是在是没有线电压谐波含有率、线电压间谐波含有率,勉强使其通过 - if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode())) { - allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode()); - allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode()); + String ip = k.split(CnSocketUtil.SPLIT_TAG)[0]; + PreDetection preDetection = null; + if (isDev) { + preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getDevIP().equals(ip)).findFirst().orElse(null); + } else { + preDetection = FormalTestManager.standardDevList.stream().filter(obj -> obj.getDevIP().equals(ip)).findFirst().orElse(null); } - if (!descList.contains(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode())) { - allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode()); - allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode()); + if (ObjectUtil.isNotNull(preDetection)) { + if (preDetection.getUsePhaseIndex() == 1) { + allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PVRMS.getCode()); + allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PU1.getCode()); + allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PV2_50.getCode()); + allTestItem.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.PSV_1_49.getCode()); + } } } if (CollUtil.isNotEmpty(descList) && descList.containsAll(allTestItem)) { // 成功信息 webSend.setCode(SourceResponseCodeEnum.SUCCESS.getCode()); + WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1)); } else { // 错误信息 + allTestItem.removeAll(descList); + String appendMsg = allTestItem.stream().map(obj -> { + String s = obj.split(DetectionCodeEnum.REAL_PREFIX.getCode())[1]; + DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(s); + return anEnum.getMessage(); + }).reduce((a, b) -> a + "、" + b).get(); + + appendMsg += "测试项未通过!"; webSend.setCode(SourceResponseCodeEnum.FAIL.getCode()); + webSend.setData(MsgUtil.getMsg(k, FormalTestManager.devNameMapComm, appendMsg)); + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSend)); flag.set(false); } - WebServiceManager.sendMsg(param.getUserPageId(), MsgUtil.msgToWebData(webSend, FormalTestManager.devNameMapComm, 1)); }); }); @@ -1509,6 +1534,12 @@ public class SocketContrastResponseService { WebServiceManager.sendMsg(userId, JSON.toJSONString(webSend)); } + boolean isPhaseAngle = false; + PreDetection preDetection = FormalTestManager.devList.stream().filter(dev -> dev.getDevId().equals(devMonitorId.split(CnSocketUtil.SPLIT_TAG)[0])).findFirst().orElse(null); + if (ObjectUtil.isNotNull(preDetection)) { + isPhaseAngle = preDetection.getAngle() == 1 ? true : false; + } + // 动态调控是否支持相角差校验 if (isPhaseAngle) { // 获取被检设备的额定电流 @@ -1681,9 +1712,26 @@ public class SocketContrastResponseService { if (Objects.nonNull(localDateTime)) { String[] splitArr = data.getId().split(CnSocketUtil.SPLIT_TAG); - String temId = FormalTestManager.devIdMapComm.get(splitArr[0]) + CnSocketUtil.SPLIT_TAG + splitArr[1]; + String devId = FormalTestManager.devIdMapComm.get(splitArr[0]); + String temId = devId + CnSocketUtil.SPLIT_TAG + splitArr[1]; + List devInfo = null; + if (isStdDev) { + devInfo = pqStandardDevService.listStandardDevPreDetection(Collections.singletonList(devId)); + } else { + devInfo = pqDevService.getDevInfo(Collections.singletonList(devId)); + } for (DevData.SqlDataDTO sqlDataDTO : data.getSqlData()) { + if (devInfo.get(0).getUsePhaseIndex().equals(1)) { + if (DetectionCodeEnum.PVRMS.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PV2_50.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PSV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.PU1.getCode().equals(sqlDataDTO.getDesc())) { + continue; + } + } else { + if (DetectionCodeEnum.VRMS.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.V2_50.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.SV_1_49.getCode().equals(sqlDataDTO.getDesc()) || DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc())) { + continue; + } + } + if (!DetectionCodeEnum.U1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.PU1.getCode().equals(sqlDataDTO.getDesc()) && !DetectionCodeEnum.I1.getCode().equals(sqlDataDTO.getDesc())) { DevData.SqlDataDTO.ListDTO listDTO = sqlDataDTO.getList(); ContrastNonHarmonicResult adNonHarmonicResult = new ContrastNonHarmonicResult(); diff --git a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java index 08b1c900..6c243175 100644 --- a/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java +++ b/detection/src/main/java/com/njcn/gather/detection/handler/SocketDevResponseService.java @@ -37,14 +37,11 @@ import com.njcn.gather.storage.pojo.po.SimAndDigHarmonicResult; import com.njcn.gather.storage.pojo.po.SimAndDigNonHarmonicResult; import com.njcn.gather.storage.service.DetectionDataDealService; import com.njcn.gather.storage.service.SimAndDigHarmonicService; -import com.njcn.gather.system.cfg.service.ISysTestConfigService; import com.njcn.gather.system.dictionary.pojo.enums.DictDataEnum; import com.njcn.gather.system.dictionary.pojo.po.DictData; import com.njcn.gather.system.dictionary.service.IDictDataService; import com.njcn.gather.system.pojo.enums.DicDataEnum; -import com.njcn.gather.system.reg.service.ISysRegResService; import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.lang.reflect.Field; @@ -62,13 +59,11 @@ import java.util.stream.Stream; @RequiredArgsConstructor public class SocketDevResponseService { - private List dataTypeList; + private Set dataTypeList; private List icdTypeList; private final List nonHarmonicList = Stream.of(DicDataEnum.FREQ.getCode(), DicDataEnum.V.getCode(), DicDataEnum.I.getCode(), DicDataEnum.IMBV.getCode(), DicDataEnum.IMBA.getCode(), DicDataEnum.VOLTAGE.getCode(), DicDataEnum.F.getCode()).collect(Collectors.toList()); - private final List harmonicList = Stream.of(DicDataEnum.HV.getCode(), DicDataEnum.HI.getCode(), DicDataEnum.HP.getCode(), DicDataEnum.HSV.getCode(), DicDataEnum.HSI.getCode()).collect(Collectors.toList()); - private final IPqDevService iPqDevService; private final IPqDevSubService iPqDevSubService; @@ -76,24 +71,16 @@ public class SocketDevResponseService { private final IPqScriptDtlsService pqScriptDtlsService; private final DetectionServiceImpl detectionServiceImpl; private final DetectionDataDealService detectionDataDealService; - private final ISysRegResService iSysRegResService; private final IPqScriptCheckDataService iPqScriptCheckDataService; - private final ISysTestConfigService sysTestConfigService; private final SimAndDigHarmonicService adHarmonicService; private final IAdPlanService adPlanService; - private final IPqScriptCheckDataService pqScriptCheckDataService; private final IDictDataService dictDataService; - @Value("${phaseAngle.isEnable}") - private Boolean isPhaseAngle; - /** * 存储的装置相序数据 */ List devInfo = new ArrayList<>(); - //Map devDataMap = new HashMap<>(); - /** * 成功结束的测点 */ @@ -825,12 +812,24 @@ public class SocketDevResponseService { icdCheckDataMap.clear(); dataTypeList = pqScriptDtlsService.getScriptToIcdCheckInfo(param); - icdTypeList = FormalTestManager.devList.stream().map(PreDetection::getIcdType).distinct().collect(Collectors.toList()); + icdTypeList = FormalTestManager.devList.stream().map(PreDetection::getIcdType).collect(Collectors.toList()); + PreDetection preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getIcdType().equals(icdTypeList.get(0))).findFirst().orElse(null); + boolean angleCheck = false; + if (ObjectUtil.isNotNull(preDetection)) { + angleCheck = preDetection.getAngle() == 1 ? true : false; + } + if (angleCheck) { + dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode()); + dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode()); + } else { + dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode()); + dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode()); + } socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); socketMsg.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue()); Map map = new HashMap<>(2); - map.put("dataType", dataTypeList); + map.put("dataType", new ArrayList<>(dataTypeList)); map.put("icdType", icdTypeList.get(0)); socketMsg.setData(JSON.toJSONString(map)); System.out.println("开始脚本与icd校验:++++++++++"); @@ -841,28 +840,40 @@ public class SocketDevResponseService { String data = socketDataMsg.getData(); IcdCheckData icdCheckData = JSON.parseObject(data, IcdCheckData.class); boolean isContinue = true; - for (int i = 0; i < icdCheckData.getResultData().size(); i++) { - IcdCheckData.ResultData item = icdCheckData.getResultData().get(i); - Integer errorType = getErrorType(item.getDesc(), item.getPhaseResult()); - // 校验脚本与icd校验失败 - if (errorType.equals(0)) { - isContinue = false; - Map map = new HashMap<>(2); - map.put("icdType", icdCheckData.getIcdType()); - DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(item.getDesc()); - map.put("dataType", anEnum.getMessage()); - WebSocketVO webSocketVO = new WebSocketVO<>(); - webSocketVO.setData(JSON.toJSONString(map)); - webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); - webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue()); - webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode()); - WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO)); - CnSocketUtil.quitSend(param); - break; + List descList = icdCheckData.getResultData().stream().map( + obj -> { + if(DetectionCodeEnum.MAG.getCode().equals(obj.getDesc()) || DetectionCodeEnum.DUR.getCode().equals(obj.getDesc())){ + return DetectionCodeEnum.AVG_PREFIX.getCode() + obj.getDesc(); + }else{ + return DetectionCodeEnum.REAL_PREFIX.getCode() + obj.getDesc(); + } + } + ).collect(Collectors.toList()); + if (descList.containsAll(dataTypeList)) { + for (int i = 0; i < icdCheckData.getResultData().size(); i++) { + IcdCheckData.ResultData item = icdCheckData.getResultData().get(i); + Integer errorType = getErrorType(item.getDesc(), item.getPhaseResult()); + // 校验脚本与icd校验失败 + if (errorType.equals(0)) { + isContinue = false; + Map map = new HashMap<>(2); + map.put("icdType", icdCheckData.getIcdType()); + DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(item.getDesc()); + map.put("dataType", anEnum.getMessage()); + WebSocketVO webSocketVO = new WebSocketVO<>(); + webSocketVO.setData(JSON.toJSONString(map)); + webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); + webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue()); + webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode()); + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO)); + } else { + icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData); + } } + } else { + isContinue = false; } - icdCheckDataMap.put(icdCheckData.getIcdType(), icdCheckData); if (isContinue) { //System.out.println("icdCheckDataMap.size()="+icdCheckDataMap.size()+",icdTypeList.size()="+icdTypeList.size()); if (icdCheckDataMap.size() == icdTypeList.size()) { @@ -940,8 +951,21 @@ public class SocketDevResponseService { // 发送下一个脚本与icd校验 String icdType = icdTypeList.stream().filter(it -> !icdCheckDataMap.containsKey(it)).findFirst().orElse(null); if (ObjectUtil.isNotNull(icdType)) { + PreDetection preDetection = FormalTestManager.devList.stream().filter(obj -> obj.getIcdType().equals(icdType)).findFirst().orElse(null); + boolean angleCheck = false; + if (ObjectUtil.isNotNull(preDetection)) { + angleCheck = preDetection.getAngle() == 1 ? true : false; + } + if (angleCheck) { + dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode()); + dataTypeList.add(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode()); + } else { + dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.VA.getCode()); + dataTypeList.remove(DetectionCodeEnum.REAL_PREFIX.getCode() + DetectionCodeEnum.IA.getCode()); + } + Map map = new HashMap<>(2); - map.put("dataType", dataTypeList); + map.put("dataType", new ArrayList<>(dataTypeList)); map.put("icdType", icdType); socketMsg.setData(JSON.toJSONString(map)); socketMsg.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); @@ -950,6 +974,23 @@ public class SocketDevResponseService { SocketManager.sendMsg(s, JSON.toJSONString(socketMsg)); } } + } else { + WebSocketVO webSocketVO = new WebSocketVO<>(); + webSocketVO.setRequestId(SourceOperateCodeEnum.YJC_XYJY.getValue()); + webSocketVO.setOperateCode(SourceOperateCodeEnum.VERIFY_MAPPING$01.getValue()); + webSocketVO.setCode(SourceResponseCodeEnum.FAIL.getCode()); + + dataTypeList.removeAll(descList); + for (String dataType : dataTypeList) { + Map map = new HashMap<>(2); + map.put("icdType", icdCheckData.getIcdType()); + DetectionCodeEnum anEnum = DetectionCodeEnum.getDetectionCodeByCode(dataType.replace(DetectionCodeEnum.REAL_PREFIX.getCode(), "")); + map.put("dataType", anEnum.getMessage()); + webSocketVO.setData(JSON.toJSONString(map)); + WebServiceManager.sendMsg(param.getUserPageId(), JSON.toJSONString(webSocketVO)); + } + + CnSocketUtil.quitSend(param); } } break; @@ -1299,7 +1340,7 @@ public class SocketDevResponseService { checkDataParam.setIsValueTypeName(false); List valueType = iPqScriptCheckDataService.getValueType(checkDataParam); - iPqDevService.updateResult(false,param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity()); + iPqDevService.updateResult(false, param.getDevIds(), valueType, param.getCode(), param.getUserId(), param.getTemperature(), param.getHumidity()); CnSocketUtil.quitSend(param); } successComm.clear(); @@ -1505,9 +1546,10 @@ public class SocketDevResponseService { private String devMessage(String type, List data, - List dataPhase) { + List dataPhase, + boolean angleCheck) { StringBuffer str = new StringBuffer(); - if (isPhaseAngle) { + if (angleCheck) { if (CollUtil.isNotEmpty(data) && CollUtil.isNotEmpty(dataPhase)) { if (data.size() == dataPhase.size()) { DevData.SqlDataDTO.ListDTO dto = data.get(0).getList(); @@ -1572,7 +1614,13 @@ public class SocketDevResponseService { } compareDev.setDevName(devName); compareDev.setLineNum(split[1]); - getSourceCompareDev(type.get(2), dataV, dataVPhase, compareDev, sourceMessageMap.get(type.get(3)), sourceV, type.get(4)); + + boolean angleCheck = false; + PreDetection preDetection = FormalTestManager.devList.stream().filter(x -> x.getDevIP().equals(split[0])).findFirst().orElse(null); + if (ObjectUtil.isNotNull(preDetection)) { + angleCheck = preDetection.getAngle() == 1 ? true : false; + } + getSourceCompareDev(type.get(2), dataV, dataVPhase, compareDev, sourceMessageMap.get(type.get(3)), sourceV, type.get(4), angleCheck); info.add(compareDev); } @@ -1591,20 +1639,19 @@ public class SocketDevResponseService { SourceCompareDev compareDev, String desc, List channelList, - String name - - ) { + String name, + boolean angleCheck) { //源信息 Map sourceMap = channelList.stream() .collect(Collectors.toMap(x -> x.getChannelType(), Function.identity())); Boolean a = getaBoolean(sourceMap.get(type + "a"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getA() : null, - CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getA() : null); + CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getA() : null, angleCheck); Boolean b = getaBoolean(sourceMap.get(type + "b"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getB() : null, - CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getB() : null); + CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getB() : null, angleCheck); Boolean c = getaBoolean(sourceMap.get(type + "c"), CollUtil.isNotEmpty(data) ? data.get(0).getList().getC() : null, - CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getC() : null); + CollUtil.isNotEmpty(dataPhase) ? dataPhase.get(0).getList().getC() : null, angleCheck); compareDev.setIsQualified(a && b && c); - compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") + CnSocketUtil.STEP_TAG + desc + CnSocketUtil.STEP_TAG + devMessage(type, data, dataPhase)); + compareDev.setDesc(name + (compareDev.getIsQualified() ? "合格->" : "不合格->") + CnSocketUtil.STEP_TAG + desc + CnSocketUtil.STEP_TAG + devMessage(type, data, dataPhase, angleCheck)); return compareDev; } @@ -1616,7 +1663,7 @@ public class SocketDevResponseService { * @param devPhase 装置返回相角数据 * @return */ - private Boolean getaBoolean(SourceIssue.ChannelListDTO channelListDTO, Double devData, Double devPhase) { + private Boolean getaBoolean(SourceIssue.ChannelListDTO channelListDTO, Double devData, Double devPhase, boolean angleCheck) { Boolean isDev = false; Boolean isPhase = false; @@ -1625,7 +1672,7 @@ public class SocketDevResponseService { BigDecimal.valueOf(channelListDTO.getFAmp() * 0.95), BigDecimal.valueOf(channelListDTO.getFAmp() * 1.05)); } - if (isPhaseAngle) { + if (angleCheck) { if (ObjectUtil.isNotNull(devPhase)) { isPhase = phaseBoolean(channelListDTO, devPhase); } diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/DetectionCodeEnum.java b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/DetectionCodeEnum.java index faf9213c..a49909eb 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/enums/DetectionCodeEnum.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/enums/DetectionCodeEnum.java @@ -43,7 +43,8 @@ public enum DetectionCodeEnum { STAR("Star","星型接线"), DELTA("Delta","角型接线"), - REAL_PREFIX("real$", "实时数据前缀"); + REAL_PREFIX("real$", "实时数据前缀"), + AVG_PREFIX("avg$", "统计数据前缀"); private final String code; private final String message; diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/param/ContrastDetectionParam.java b/detection/src/main/java/com/njcn/gather/detection/pojo/param/ContrastDetectionParam.java index dc8e1a80..2987bce9 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/param/ContrastDetectionParam.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/param/ContrastDetectionParam.java @@ -42,10 +42,5 @@ public class ContrastDetectionParam { */ private List testItemList; - /** - * 第几次监测 key为设备监测点id,value为第几次监测 - */ - private Map numMap; - private String userId; } diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/param/PreDetectionParam.java b/detection/src/main/java/com/njcn/gather/detection/pojo/param/PreDetectionParam.java index cb933950..f6a56114 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/param/PreDetectionParam.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/param/PreDetectionParam.java @@ -74,9 +74,4 @@ public class PreDetectionParam { * 检测项列表。第一个元素为预检测、第二个元素为系数校准、第三个元素为正式检测 */ private List testItemList; - - /** - * 第几次监测 key为设备监测点id,value为第几次监测 - */ - private Map numMap; } diff --git a/detection/src/main/java/com/njcn/gather/detection/pojo/vo/AlignDataVO.java b/detection/src/main/java/com/njcn/gather/detection/pojo/vo/AlignDataVO.java index 96e80d16..397d5ce5 100644 --- a/detection/src/main/java/com/njcn/gather/detection/pojo/vo/AlignDataVO.java +++ b/detection/src/main/java/com/njcn/gather/detection/pojo/vo/AlignDataVO.java @@ -57,5 +57,7 @@ public class AlignDataVO { private Double ucStdDev; private Double utStdDev; + + private String unit; } } 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 2af831ca..2d5fac51 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 @@ -16,6 +16,8 @@ import com.njcn.gather.detection.pojo.vo.DetectionData; import com.njcn.gather.detection.pojo.vo.DevLineTestResult; import com.njcn.gather.detection.util.DetectionUtil; import com.njcn.gather.detection.util.socket.CnSocketUtil; +import com.njcn.gather.device.pojo.vo.PreDetection; +import com.njcn.gather.device.service.IPqDevService; import com.njcn.gather.err.pojo.param.PqErrSysParam; import com.njcn.gather.err.pojo.po.PqErrSysDtls; import com.njcn.gather.err.pojo.vo.ErrDtlsCheckDataVO; @@ -62,6 +64,7 @@ public class DetectionServiceImpl { private final DetectionDataDealService detectionDataDealService; private final ISysTestConfigService sysTestConfigService; private final IPqMonitorService pqMonitorService; + private final IPqDevService pqDevService; public static final String TYPE_A = "A"; public static final String TYPE_B = "B"; @@ -119,6 +122,8 @@ public class DetectionServiceImpl { */ case FREQ: return isQualified(dev, devIdMapComm, errDtlsCheckData, F, sourceIssue, dataRule, code, oneConfig.getScale()); + case P: + return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code, oneConfig.getScale()); /** * 电压 */ @@ -193,8 +198,6 @@ public class DetectionServiceImpl { case VOLTAGE_MAG: case VOLTAGE_DUR: return isVoltageQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale()); - case P: - return isQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, code, oneConfig.getScale()); default: return isUnknownQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code, oneConfig.getScale()); } @@ -1127,6 +1130,7 @@ public class DetectionServiceImpl { } map.forEach((typeKey, typeValue) -> { + typeValue.remove(0.0); typeValue.forEach((key, value) -> { value.sort(Comparator.comparing(Double::doubleValue).reversed()); if (CollUtil.isNotEmpty(value)) { @@ -1568,7 +1572,8 @@ public class DetectionServiceImpl { boolean isStar = DetectionCodeEnum.STAR.getCode().equals(pqMonitor.getConnection()); boolean isDelta = DetectionCodeEnum.DELTA.getCode().equals(pqMonitor.getConnection()); Double fUn = pqMonitorService.getRatedVoltage(devMonitorId); - if (isStar) { + boolean isExitDelta = this.isExitDeltaIndex(devIdMapComm.get(split1[0]), devDataList); + if (isStar || !isExitDelta) { fUn = BigDecimal.valueOf(fUn).divide(BigDecimal.valueOf(Math.sqrt(3)), oneConfig.getScale(), RoundingMode.HALF_UP).doubleValue(); } Double fIn = pqMonitorService.getRatedCurrent(devMonitorId); @@ -1599,7 +1604,8 @@ public class DetectionServiceImpl { break; case VRMS: case PVRMS: - resultMap.put(PowerIndexEnum.V.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, (isStar ? DetectionCodeEnum.VRMS.getCode() : DetectionCodeEnum.PVRMS.getCode()), dataRule, num, code, oneConfig.getScale())); + // 如果是角型接法且存在角型接法的一些指标,则不进行使用角型接线的指标。反之,则使用相别的指标。 + resultMap.put(PowerIndexEnum.V.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, (isDelta && isExitDelta ? DetectionCodeEnum.PVRMS.getCode() : DetectionCodeEnum.VRMS.getCode()), dataRule, num, code, oneConfig.getScale())); break; case IRMS: resultMap.put(PowerIndexEnum.I.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fIn, DetectionCodeEnum.IRMS.getCode(), dataRule, num, code, oneConfig.getScale())); @@ -1615,20 +1621,20 @@ public class DetectionServiceImpl { break; case V2_50: case PV2_50: - resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); + resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale())); break; case I2_50: - resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); + resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale())); break; case P2_50: - resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn * fIn, HARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); + resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, HP, fUn * fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale())); break; case SV_1_49: case PSV_1_49: - resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); + resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale())); break; case SI_1_49: - resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta, dataRule, num, code, oneConfig.getScale())); + resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale())); break; case UNKNOWN_ERROR: break; @@ -1638,6 +1644,37 @@ public class DetectionServiceImpl { return resultMap; } + /** + * 判断是否存在角型接法的一些线电压指标 + * + * @param devId 设备id + * @param devDataList 监测点数据 + * @return + */ + private boolean isExitDeltaIndex(String devId, List devDataList) { + if (CollUtil.isNotEmpty(devDataList)) { + List deltaIndex = Arrays.asList(DetectionCodeEnum.PVRMS.getCode(), + DetectionCodeEnum.PV2_50.getCode(), + DetectionCodeEnum.PSV_1_49.getCode(), + DetectionCodeEnum.PU1.getCode()); + DevData devData = devDataList.get(0); + List sqlData = devData.getSqlData(); + List sqlDataHarm = devData.getSqlDataHarm(); + + if (CollUtil.isNotEmpty(sqlData) && CollUtil.isNotEmpty(sqlDataHarm)) { + List descList = sqlData.stream().map(DevData.SqlDataDTO::getDesc).filter(desc -> deltaIndex.contains(desc)).collect(Collectors.toList()); + descList.addAll(sqlDataHarm.stream().map(DevData.SqlDataHarmDTO::getDesc).filter(desc -> deltaIndex.contains(desc)).collect(Collectors.toList())); + if (descList.containsAll(deltaIndex)) { + List devInfo = pqDevService.getDevInfo(Collections.singletonList(devId)); + if (devInfo.get(0).getUsePhaseIndex() == 1) { + return true; + } + } + } + } + return false; + } + /** * 处理非谐波数据 @@ -1724,7 +1761,7 @@ public class DetectionServiceImpl { * @param fData 额定值 * @param type U或I、用来区分电压或电流 * @param harmonicFlag 1:间谐波,2:谐波 - * @param isDelta 是否角型接法 + * @param isUseDelta 是否使用角型接线的一些指标 * @param dataRule 数据处理原则 * @param num 第几次检测 * @param code 结果表code @@ -1738,7 +1775,7 @@ public class DetectionServiceImpl { String type, Double fData, Integer harmonicFlag, - boolean isDelta, + boolean isUseDelta, DictDataEnum dataRule, Integer num, String code, @@ -1749,17 +1786,17 @@ public class DetectionServiceImpl { String harmCode = ""; if (U.equals(type)) { fundCode = DetectionCodeEnum.U1.getCode(); - if (isDelta) { + if (isUseDelta) { fundCode = DetectionCodeEnum.PU1.getCode(); } if (harmonicFlag == 1) { harmCode = DetectionCodeEnum.SV_1_49.getCode(); - if (isDelta) { + if (isUseDelta) { harmCode = DetectionCodeEnum.PSV_1_49.getCode(); } } else { harmCode = DetectionCodeEnum.V2_50.getCode(); - if (isDelta) { + if (isUseDelta) { harmCode = DetectionCodeEnum.PV2_50.getCode(); } } @@ -1831,25 +1868,12 @@ public class DetectionServiceImpl { List devSqlData = dev.get(i).getSqlData(); List standardDevSqlData = standardDev.get(i).getSqlData(); - List devList = devSqlData.stream().filter(j -> desc.equals(j.getDesc())) + String finalDesc = desc; + List devList = devSqlData.stream().filter(j -> finalDesc.equals(j.getDesc())) .map(DevData.SqlDataDTO::getList).collect(Collectors.toList()); - List standardDevList = standardDevSqlData.stream().filter(j -> desc.equals(j.getDesc())) + List standardDevList = standardDevSqlData.stream().filter(j -> finalDesc.equals(j.getDesc())) .map(DevData.SqlDataDTO::getList).collect(Collectors.toList()); - // 如果角型接法中,不存在线电压有效值,则取相电压有效值进行计算 - if (CollUtil.isEmpty(devList)) { - if (desc.equals(DetectionCodeEnum.PVRMS.getCode())) { - devList = devSqlData.stream().filter(j -> DetectionCodeEnum.VRMS.getCode().equals(j.getDesc())) - .map(DevData.SqlDataDTO::getList).collect(Collectors.toList()); - } - } - if (CollUtil.isEmpty(standardDevList)) { - if (desc.equals(DetectionCodeEnum.PVRMS.getCode())) { - standardDevList = standardDevSqlData.stream().filter(j -> DetectionCodeEnum.VRMS.getCode().equals(j.getDesc())) - .map(DevData.SqlDataDTO::getList).collect(Collectors.toList()); - } - } - aDev.addAll(devList.stream().filter(x -> ObjectUtil.isNotNull(x.getA())) .map(x -> x.getA().doubleValue()) .collect(Collectors.toList())); @@ -1993,31 +2017,32 @@ public class DetectionServiceImpl { Optional first1 = Optional.empty(); Optional first2 = Optional.empty(); + if (CollUtil.isNotEmpty(devSqlData) && CollUtil.isNotEmpty(standardDevSqlData)) { first1 = devSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); first2 = standardDevSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); } - // 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算 - if (!first1.isPresent()) { - if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) { - first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); - } - } else { - // 防止出现有PU1而没有PV2_50、SV_1_49的情况 - if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) { - first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); - } - } - if (!first2.isPresent()) { - if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) { - first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); - } - } else { - // 防止出现有PU1而没有PV2_50、SV_1_49的情况 - if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) { - first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); - } - } +// // 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算 +// if (!first1.isPresent()) { +// if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) { +// first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); +// } +// } else { +// // 防止出现有PU1而没有PV2_50、SV_1_49的情况 +// if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) { +// first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); +// } +// } +// if (!first2.isPresent()) { +// if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) { +// first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); +// } +// } else { +// // 防止出现有PU1而没有PV2_50、SV_1_49的情况 +// if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) { +// first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); +// } +// } DevData.SqlDataDTO fund1 = null; DevData.SqlDataDTO fund2 = null; @@ -2031,23 +2056,23 @@ public class DetectionServiceImpl { 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()); - // 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算 - if (CollUtil.isEmpty(devHarmList)) { - if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { - devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList()); - } - if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) { - devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList()); - } - } - if (CollUtil.isEmpty(stdDevHarmList)) { - if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { - stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList()); - } - if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) { - stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList()); - } - } +// // 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算 +// if (CollUtil.isEmpty(devHarmList)) { +// if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { +// devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList()); +// } +// if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) { +// devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList()); +// } +// } +// if (CollUtil.isEmpty(stdDevHarmList)) { +// if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { +// stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList()); +// } +// if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) { +// stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList()); +// } +// } if (CollUtil.isNotEmpty(devHarmList) && CollUtil.isNotEmpty(stdDevHarmList)) { DevData.SqlDataHarmDTO devHarm = devHarmList.get(0); diff --git a/detection/src/main/java/com/njcn/gather/detection/service/impl/PreDetectionServiceImpl.java b/detection/src/main/java/com/njcn/gather/detection/service/impl/PreDetectionServiceImpl.java index 6e3188be..641e3590 100644 --- a/detection/src/main/java/com/njcn/gather/detection/service/impl/PreDetectionServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/detection/service/impl/PreDetectionServiceImpl.java @@ -385,7 +385,6 @@ public class PreDetectionServiceImpl implements PreDetectionService { PreDetectionParam preDetectionParam = new PreDetectionParam(); preDetectionParam.setUserPageId(param.getLoginName()); preDetectionParam.setTestItemList(param.getTestItemList()); - preDetectionParam.setNumMap(param.getNumMap()); preDetectionParam.setDevIds(param.getDevIds()); preDetectionParam.setUserId(param.getUserId()); WebServiceManager.addPreDetectionParam(param.getLoginName(), preDetectionParam); 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 7f95cde9..866663f1 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 @@ -90,7 +90,7 @@ public class FormalTestManager { public static PatternEnum patternEnum; /** - * 比对式检测-检测项。key为检测项id,value为检测项code + * 比对式检测-检测项。key为检测项code,value为检测项id */ public static Map testItemMap = new HashMap<>(); @@ -123,4 +123,9 @@ public class FormalTestManager { * 是否要移除和通信模块的socket连接 */ public static Boolean isRemoveSocket = true; + + /** + * 第几次监测 key为设备监测点id,value为第几次监测 + */ + public static Map numMap = new HashMap<>(); } diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/MsgUtil.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/MsgUtil.java index 287979f4..2768d5d1 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/MsgUtil.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/MsgUtil.java @@ -83,4 +83,17 @@ public class MsgUtil { return "被检设备\"" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + split1[1] + "路\"" + " -> 标准设备\"" + devMap.get(split2[0]) + CnSocketUtil.SPLIT_TAG + split2[1] + "路\""; } } + + /** + * 获取消息 + * + * @param monitorId 监测点id + * @param devMap key为设备ip,value为设备名称 + * @param appendMsg 附加的消息 + * @return + */ + public static String getMsg(String monitorId, Map devMap, String appendMsg) { + String[] split1 = monitorId.split("_"); + return "\"" + devMap.get(split1[0]) + CnSocketUtil.SPLIT_TAG + "第" + split1[1] + "路\"" + appendMsg; + } } diff --git a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyClient.java b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyClient.java index 3ded6040..03746c9c 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyClient.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/socket/cilent/NettyClient.java @@ -126,7 +126,6 @@ public class NettyClient { PreDetectionParam preDetectionParam = new PreDetectionParam(); preDetectionParam.setUserPageId(param.getLoginName()); preDetectionParam.setTestItemList(param.getTestItemList()); - preDetectionParam.setNumMap(param.getNumMap()); preDetectionParam.setDevIds(param.getDevIds()); preDetectionParam.setUserId(param.getUserId()); NettyContrastClientHandler handler = new NettyContrastClientHandler(preDetectionParam, socketContrastResponseService); 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 a5bc4700..129fdd8d 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 @@ -15,6 +15,8 @@ + + - - - - - - - + +