diff --git a/detection/src/main/java/com/njcn/gather/detection/controller/PreDetectionController.java b/detection/src/main/java/com/njcn/gather/detection/controller/PreDetectionController.java index 984f52e1..399eee8e 100644 --- a/detection/src/main/java/com/njcn/gather/detection/controller/PreDetectionController.java +++ b/detection/src/main/java/com/njcn/gather/detection/controller/PreDetectionController.java @@ -105,7 +105,7 @@ public class PreDetectionController extends BaseController { @ApiOperation("启动") @ApiImplicitParam(name = "param", value = "查询参数", required = true) public HttpResult startTestSimulate(@RequestBody @Validated SimulateDetectionParam param) { - String methodDescribe = getMethodDescribe("startTestSimulate"); + String methodDescribe = getMethodDescribe("startSimulateTest"); // ContrastDetectionParam 无 userPageId 字段,用 loginName 作为会话标识(与 WS 会话 key 一致) HttpResult busy = tryAcquireLock(param.getUserPageId()); if (busy != null) { @@ -121,7 +121,7 @@ public class PreDetectionController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } finally { if (!keepLock) { - releaseLockSelf("START_CONTRAST_SYNC_FAILED"); + releaseLockSelf("START_SIMULATE_TEST_SYNC_FAILED"); } } } 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 5a537de6..48a75e67 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 @@ -33,7 +33,9 @@ public enum DetectionCodeEnum { IA("IA", "电流相角"), I1A("I1A", "电流基波角度值"), V_UNBAN("V_UNBAN", "三相电压负序不平衡度"), + SeqV("SeqV", "电压序分量"), I_UNBAN("I_UNBAN", "三相电流负序不平衡度"), + SeqA("SeqA", "电流序分量"), PST("PST", "短时间闪变"), W("W", "有功功率"), VARW("VARW", "无功功率"), 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 4bb4530f..2098f87c 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 @@ -5,7 +5,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.njcn.gather.detection.pojo.enums.DetectionCodeEnum; @@ -205,22 +204,12 @@ public class DetectionServiceImpl { * 三相电压不平衡度 */ case IMBV: - SimAndDigNonHarmonicResult vUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, "V_UNBAN", oneConfig.getScale()); - if (ObjectUtil.isNotNull(vUnban)) { - detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(vUnban), code); - return vUnban.getResultFlag(); - } - return 4; + return isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, code, oneConfig.getScale()); /** * 三相电流不平衡度 */ case IMBA: - SimAndDigNonHarmonicResult iUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, "I_UNBAN", oneConfig.getScale()); - if (ObjectUtil.isNotNull(iUnban)) { - detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(iUnban), code); - return iUnban.getResultFlag(); - } - return 4; + return isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, code, oneConfig.getScale()); /** * 谐波有功功率 */ @@ -235,12 +224,7 @@ public class DetectionServiceImpl { * 闪变 */ case F: - SimAndDigNonHarmonicResult pst = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, null, sourceIssue, dataRule, "PST", oneConfig.getScale()); - if (ObjectUtil.isNotNull(pst)) { - detectionDataDealService.acceptNonHarmonicResult(Arrays.asList(pst), code); - return pst.getResultFlag(); - } - return 4; + return isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, DetectionCodeEnum.PST.getCode(), sourceIssue, dataRule, code, oneConfig.getScale()); /** * 暂态 */ @@ -435,6 +419,10 @@ public class DetectionServiceImpl { } // 根据数据处理规则取值。key为相别,value为值列表 Map> map = devListMap(dev, dataRule, s.split("\\$")[1]); + List dtlsCheckData = null; + if (CollUtil.isNotEmpty(errDtlsCheckData)) { + dtlsCheckData = errDtlsCheckData.stream().filter(x -> x.getValueTypeCode().equals(s.split("\\$")[1])).collect(Collectors.toList()); + } Double fData = 1.0; if (U.equals(type)) { fData = sourceIssue.getFUn(); @@ -448,7 +436,7 @@ public class DetectionServiceImpl { if (P.equals(type)) { fData = sourceIssue.getFUn() * sourceIssue.getFIn() * 0.01; Double finalFData = fData; - errDtlsCheckData.stream().forEach(x -> x.setValue(x.getValue() * finalFData)); + dtlsCheckData.stream().forEach(x -> x.setValue(x.getValue() * finalFData)); } SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult(); String[] split = dev.get(0).getId().split("_"); @@ -459,52 +447,50 @@ public class DetectionServiceImpl { result.setDataType(sourceIssue.getDataType()); List pqErrSysDtls = new ArrayList<>(); Integer isQualified = 4; - if (CollUtil.isNotEmpty(errDtlsCheckData)) { - List dtlsCheckData = errDtlsCheckData.stream().filter(x -> x.getValueTypeCode().equals(s.split("\\$")[1])).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(dtlsCheckData)) { - result.setAdType(dtlsCheckData.get(0).getValueType()); - isQualified = dtlsCheckData.get(0).getIsQualified(); - if (CollUtil.isNotEmpty(dtlsCheckData.get(0).getErrSysDtls())) { - pqErrSysDtls = dtlsCheckData.get(0).getErrSysDtls(); - } + if (CollUtil.isNotEmpty(dtlsCheckData)) { + result.setAdType(dtlsCheckData.get(0).getValueType()); + isQualified = dtlsCheckData.get(0).getIsQualified(); + if (CollUtil.isNotEmpty(dtlsCheckData.get(0).getErrSysDtls())) { + pqErrSysDtls = dtlsCheckData.get(0).getErrSysDtls(); } - if (map.containsKey(TYPE_T)) { - List checkDataT = dtlsCheckData.stream().filter(x -> TYPE_T.equals(x.getPhase())).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(checkDataT)) { - DetectionData t = rangeComparisonList(map.get(TYPE_T), isQualified, pqErrSysDtls, fData, checkDataT.get(0).getValue(), dataRule, scale); - result.setTValue(JSON.toJSONString(t)); - result.setResultFlag(t.getIsData()); - } - } else { - List resultFlag = new ArrayList<>(); - Map> setters = new HashMap<>(); - setters.put(TYPE_A, (r, d) -> r.setAValue(JSON.toJSONString(d))); - setters.put(TYPE_B, (r, d) -> r.setBValue(JSON.toJSONString(d))); - setters.put(TYPE_C, (r, d) -> r.setCValue(JSON.toJSONString(d))); + } + result.setResultFlag(isQualified); + if (map.containsKey(TYPE_T)) { + List checkDataT = dtlsCheckData.stream().filter(x -> TYPE_T.equals(x.getPhase())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(checkDataT)) { + DetectionData t = rangeComparisonList(map.get(TYPE_T), isQualified, pqErrSysDtls, fData, checkDataT.get(0).getValue(), dataRule, scale); + result.setTValue(JSON.toJSONString(t)); + result.setResultFlag(t.getIsData()); + } + } else { + List resultFlag = new ArrayList<>(); + Map> setters = new HashMap<>(); + setters.put(TYPE_A, (r, d) -> r.setAValue(JSON.toJSONString(d))); + setters.put(TYPE_B, (r, d) -> r.setBValue(JSON.toJSONString(d))); + setters.put(TYPE_C, (r, d) -> r.setCValue(JSON.toJSONString(d))); - List phases = Arrays.asList(TYPE_A, TYPE_B, TYPE_C); - for (String phase : phases) { - List checkData = dtlsCheckData.stream() - .filter(x -> phase.equals(x.getPhase())) - .collect(Collectors.toList()); - if (CollUtil.isNotEmpty(checkData)) { - List phaseValue = map.get(phase); - // 注意:如果map中不存在该phase的键,phaseValue可能为null,需确保map包含该键 - DetectionData detectionData = rangeComparisonList(phaseValue, isQualified, pqErrSysDtls, fData, checkData.get(0).getValue(), dataRule, scale); - resultFlag.add(detectionData); - BiConsumer setter = setters.get(phase); - if (setter != null) { - setter.accept(result, detectionData); - } else { - // 处理未定义的setter的情况 - throw new IllegalArgumentException("Setter not defined for phase: " + phase); - } + List phases = Arrays.asList(TYPE_A, TYPE_B, TYPE_C); + for (String phase : phases) { + List checkData = dtlsCheckData.stream() + .filter(x -> phase.equals(x.getPhase())) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(checkData)) { + List phaseValue = map.get(phase); + // 注意:如果map中不存在该phase的键,phaseValue可能为null,需确保map包含该键 + DetectionData detectionData = rangeComparisonList(phaseValue, isQualified, pqErrSysDtls, fData, checkData.get(0).getValue(), dataRule, scale); + resultFlag.add(detectionData); + BiConsumer setter = setters.get(phase); + if (setter != null) { + setter.accept(result, detectionData); + } else { + // 处理未定义的setter的情况 + throw new IllegalArgumentException("Setter not defined for phase: " + phase); } } - result.setResultFlag(setResultFlag(resultFlag)); } - info.add(result); + result.setResultFlag(setResultFlag(resultFlag)); } + info.add(result); } if (CollUtil.isNotEmpty(info)) { detectionDataDealService.acceptNonHarmonicResult(info, code); @@ -607,74 +593,110 @@ public class DetectionServiceImpl { * @param dataRule 数据处理原则 * @return */ - public SimAndDigNonHarmonicResult isUnBalanceOrFlickerQualified(List dev, - Map devIdMapComm, - List errDtlsCheckData, - String type, - SourceIssue sourceIssue, - DictDataEnum dataRule, - String code, Integer scale) { + public Integer isUnBalanceOrFlickerQualified(List dev, + Map devIdMapComm, + List errDtlsCheckData, + String type, + SourceIssue sourceIssue, + DictDataEnum dataRule, + String code, Integer scale) { + List info = new ArrayList<>(); List checkData = pqScriptCheckDataService.list(new MPJLambdaWrapper() .eq(PqScriptCheckData::getScriptIndex, sourceIssue.getIndex()) .eq(PqScriptCheckData::getScriptId, sourceIssue.getScriptId()) ); - Map> map = devListMap(dev, dataRule, code); - if (CollUtil.isNotEmpty(map)) { - Double fData = 1.0; - if (U.equals(type)) { - fData = sourceIssue.getFUn(); - } - if (I.equals(type)) { - fData = sourceIssue.getFIn(); - } - SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult(); - String[] split = dev.get(0).getId().split("_"); - String devID = devIdMapComm.get(split[0]); - result.setDevMonitorId(devID + "_" + split[1]); - result.setScriptId(sourceIssue.getScriptId()); - result.setSort(sourceIssue.getIndex()); - List pqErrSysDtls = new ArrayList<>(); - Integer isQualified = 4; - if (CollUtil.isNotEmpty(errDtlsCheckData)) { - result.setAdType(errDtlsCheckData.get(0).getValueType()); - isQualified = errDtlsCheckData.get(0).getIsQualified(); - if (CollUtil.isNotEmpty(errDtlsCheckData.get(0).getErrSysDtls())) { - pqErrSysDtls = errDtlsCheckData.get(0).getErrSysDtls(); + List devValueTypeList = sourceIssue.getDevValueTypeList(); + for (String s : devValueTypeList) { + String[] splitArr = s.split("\\$"); + Map> map = devListMap(dev, dataRule, splitArr[1]); + if (CollUtil.isNotEmpty(map)) { + List dtlsCheckData = null; + if (CollUtil.isNotEmpty(errDtlsCheckData)) { + dtlsCheckData = errDtlsCheckData.stream().filter(x -> x.getValueTypeCode().equals(s.split("\\$")[1])).collect(Collectors.toList()); } + Double fData = 1.0; + if (U.equals(type)) { + fData = sourceIssue.getFUn(); + } + if (I.equals(type)) { + fData = sourceIssue.getFIn(); + } + SimAndDigNonHarmonicResult result = new SimAndDigNonHarmonicResult(); + String[] split = dev.get(0).getId().split("_"); + String devID = devIdMapComm.get(split[0]); + result.setDevMonitorId(devID + "_" + split[1]); + result.setScriptId(sourceIssue.getScriptId()); + result.setSort(sourceIssue.getIndex()); + result.setDataType(sourceIssue.getDataType()); + List pqErrSysDtls = new ArrayList<>(); + Integer isQualified = 4; + if (CollUtil.isNotEmpty(dtlsCheckData)) { + result.setAdType(dtlsCheckData.get(0).getValueType()); + isQualified = dtlsCheckData.get(0).getIsQualified(); + if (CollUtil.isNotEmpty(dtlsCheckData.get(0).getErrSysDtls())) { + pqErrSysDtls = dtlsCheckData.get(0).getErrSysDtls(); + } + } + result.setResultFlag(isQualified); + // 闪变 + if (DetectionCodeEnum.PST.getCode().equals(splitArr[1]) || DetectionCodeEnum.SeqV.getCode().equals(splitArr[1]) || DetectionCodeEnum.SeqA.getCode().equals(splitArr[1])) { + + //取出源所对应的相别信息 + List channelTypeAList = checkData.stream() + .filter(x -> TYPE_A.equals(x.getPhase())) + .collect(Collectors.toList()); + Double channelDataA = channelTypeAList.get(0).getValue(); + if (DetectionCodeEnum.SeqV.getCode().equals(splitArr[1]) || DetectionCodeEnum.SeqA.getCode().equals(splitArr[1])) { + channelDataA = BigDecimal.valueOf(channelDataA / 100 * fData) + .setScale(scale, RoundingMode.HALF_UP) + .doubleValue(); + } + DetectionData a = rangeComparisonList(map.get(TYPE_A), isQualified, pqErrSysDtls, fData, channelDataA, dataRule, scale); + result.setAValue(JSON.toJSONString(a)); + + List channelTypeBList = checkData.stream() + .filter(x -> TYPE_B.equals(x.getPhase())) + .collect(Collectors.toList()); + Double channelDataB = channelTypeBList.get(0).getValue(); + if (DetectionCodeEnum.SeqV.getCode().equals(splitArr[1]) || DetectionCodeEnum.SeqA.getCode().equals(splitArr[1])) { + channelDataB = BigDecimal.valueOf(channelDataB / 100 * fData) + .setScale(scale, RoundingMode.HALF_UP) + .doubleValue(); + } + DetectionData b = rangeComparisonList(map.get(TYPE_B), isQualified, pqErrSysDtls, fData, channelDataB, dataRule, scale); + result.setBValue(JSON.toJSONString(b)); + + List channelTypeCList = checkData.stream() + .filter(x -> TYPE_C.equals(x.getPhase())) + .collect(Collectors.toList()); + Double channelDataC = channelTypeCList.get(0).getValue(); + if (DetectionCodeEnum.SeqV.getCode().equals(splitArr[1]) || DetectionCodeEnum.SeqA.getCode().equals(splitArr[1])) { + channelDataC = BigDecimal.valueOf(channelDataC / 100 * fData) + .setScale(scale, RoundingMode.HALF_UP) + .doubleValue(); + } + DetectionData c = rangeComparisonList(map.get(TYPE_C), isQualified, pqErrSysDtls, fData, channelDataC, dataRule, scale); + result.setCValue(JSON.toJSONString(c)); + + result.setResultFlag(setResultFlag(Arrays.asList(a, b, c))); + } else { + // 三项不平衡 + List channelTypeBList = checkData.stream() + .filter(x -> TYPE_T.equals(x.getPhase())) + .collect(Collectors.toList()); + DetectionData t = rangeComparisonList(map.get(TYPE_B), isQualified, pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule, scale); + result.setTValue(JSON.toJSONString(t)); + result.setResultFlag(setResultFlag(Arrays.asList(t))); + } + info.add(result); } - result.setDataType(sourceIssue.getDataType()); - if (StrUtil.isBlank(type)) { - //取出源所对应的相别信息 - List channelTypeAList = checkData.stream() - .filter(x -> TYPE_A.equals(x.getPhase())) - .collect(Collectors.toList()); - DetectionData a = rangeComparisonList(map.get(TYPE_A), isQualified, pqErrSysDtls, fData, channelTypeAList.get(0).getValue(), dataRule, scale); - result.setAValue(JSON.toJSONString(a)); - - List channelTypeBList = checkData.stream() - .filter(x -> TYPE_B.equals(x.getPhase())) - .collect(Collectors.toList()); - DetectionData b = rangeComparisonList(map.get(TYPE_B), isQualified, pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule, scale); - result.setBValue(JSON.toJSONString(b)); - - List channelTypeCList = checkData.stream() - .filter(x -> TYPE_C.equals(x.getPhase())) - .collect(Collectors.toList()); - DetectionData c = rangeComparisonList(map.get(TYPE_C), isQualified, pqErrSysDtls, fData, channelTypeCList.get(0).getValue(), dataRule, scale); - result.setCValue(JSON.toJSONString(c)); - - result.setResultFlag(setResultFlag(Arrays.asList(a, b, c))); - } else { - List channelTypeBList = checkData.stream() - .filter(x -> TYPE_T.equals(x.getPhase())) - .collect(Collectors.toList()); - DetectionData t = rangeComparisonList(map.get(TYPE_B), isQualified, pqErrSysDtls, fData, channelTypeBList.get(0).getValue(), dataRule, scale); - result.setTValue(JSON.toJSONString(t)); - result.setResultFlag(setResultFlag(Arrays.asList(t))); - } - return result; } - return null; + if (CollUtil.isNotEmpty(info)) { + detectionDataDealService.acceptNonHarmonicResult(info, code); + List resultFlag = info.stream().map(SimAndDigNonHarmonicResult::getResultFlag).distinct().collect(Collectors.toList()); + return StorageUtil.getInteger(resultFlag); + } + return 4; } diff --git a/detection/src/main/java/com/njcn/gather/script/service/impl/PqScriptDtlsServiceImpl.java b/detection/src/main/java/com/njcn/gather/script/service/impl/PqScriptDtlsServiceImpl.java index f80e44fd..7ce95046 100644 --- a/detection/src/main/java/com/njcn/gather/script/service/impl/PqScriptDtlsServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/script/service/impl/PqScriptDtlsServiceImpl.java @@ -593,10 +593,18 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl x.getChannelType().contains("U")).collect(Collectors.toList()); unbanCheck(info, channelListDTO, channelU, checkArchive); break; + case SeqV: + channelU = channelList.stream().filter(x -> x.getChannelType().contains("U")).collect(Collectors.toList()); + unbanSeqCheck(info, channelListDTO, channelU, checkArchive); + break; case I_UNBAN: channelI = channelList.stream().filter(x -> x.getChannelType().contains("I")).collect(Collectors.toList()); unbanCheck(info, channelListDTO, channelI, checkArchive); break; + case SeqA: + channelI = channelList.stream().filter(x -> x.getChannelType().contains("I")).collect(Collectors.toList()); + unbanSeqCheck(info, channelListDTO, channelI, checkArchive); + break; case PST: if (CollUtil.isNotEmpty(channelList)) { channelU = channelList.stream().filter(x -> x.getChannelType().contains("U")).collect(Collectors.toList()); @@ -826,6 +834,82 @@ public class PqScriptDtlsServiceImpl extends ServiceImpl info, + PqScriptDtlsParam.CheckData channelListDTO, + List list, + List checkArchive + ) { + PqScriptDtlsParam.CheckData checkData; + if (CollUtil.isNotEmpty(list)) { + List channelA = list.stream().filter(x -> x.getChannelType().contains("a")).collect(Collectors.toList()); + List channelB = list.stream().filter(x -> x.getChannelType().contains("b")).collect(Collectors.toList()); + List channelC = list.stream().filter(x -> x.getChannelType().contains("c")).collect(Collectors.toList()); + if (CollUtil.isEmpty(checkArchive)) { + if (CollUtil.isNotEmpty(channelA) && CollUtil.isNotEmpty(channelB) && CollUtil.isNotEmpty(channelC)) { + PqScriptDtlsParam.ChannelListDTO a = channelA.get(0); + PqScriptDtlsParam.ChannelListDTO b = channelB.get(0); + PqScriptDtlsParam.ChannelListDTO c = channelC.get(0); + + BigDecimal vaMagnitude = new BigDecimal(a.getFAmp()); + BigDecimal vaAngle = new BigDecimal(a.getFPhase()); + BigDecimal vbMagnitude = new BigDecimal(b.getFAmp()); + BigDecimal vbAngle = new BigDecimal(b.getFPhase()); + BigDecimal vcMagnitude = new BigDecimal(c.getFAmp()); + BigDecimal vcAngle = new BigDecimal(c.getFPhase()); + + // 将幅值和角度转换为复数 + ThreePhaseUnbalance.Complex va = ThreePhaseUnbalance.fromPolar(vaMagnitude, vaAngle); + ThreePhaseUnbalance.Complex vb = ThreePhaseUnbalance.fromPolar(vbMagnitude, vbAngle); + ThreePhaseUnbalance.Complex vc = ThreePhaseUnbalance.fromPolar(vcMagnitude, vcAngle); + + // 计算对称分量 + ThreePhaseUnbalance.Complex[] symmetricalComponents = ThreePhaseUnbalance.calculateSymmetricalComponents(va, vb, vc); + ThreePhaseUnbalance.Complex v0 = symmetricalComponents[0]; // 零序分量 + ThreePhaseUnbalance.Complex v1 = symmetricalComponents[1]; // 正序分量 + ThreePhaseUnbalance.Complex v2 = symmetricalComponents[2]; // 负序分量 + + checkData = new PqScriptDtlsParam.CheckData(); + checkData.setErrorFlag(channelListDTO.getErrorFlag()); + checkData.setEnable(channelListDTO.getEnable()); + checkData.setPhase("A"); + checkData.setValueType(channelListDTO.getValueType()); + checkData.setPid(channelListDTO.getPid()); + checkData.setValue(v1.magnitude().doubleValue()); + info.add(checkData); + + checkData = new PqScriptDtlsParam.CheckData(); + checkData.setErrorFlag(channelListDTO.getErrorFlag()); + checkData.setEnable(channelListDTO.getEnable()); + checkData.setPhase("B"); + checkData.setValueType(channelListDTO.getValueType()); + checkData.setPid(channelListDTO.getPid()); + checkData.setValue(v2.magnitude().doubleValue()); + info.add(checkData); + + checkData = new PqScriptDtlsParam.CheckData(); + checkData.setErrorFlag(channelListDTO.getErrorFlag()); + checkData.setEnable(channelListDTO.getEnable()); + checkData.setPhase("C"); + checkData.setValueType(channelListDTO.getValueType()); + checkData.setPid(channelListDTO.getPid()); + checkData.setValue(v0.magnitude().doubleValue()); + info.add(checkData); + } + } else { + for (PqScriptCheckData checkArciveData : checkArchive) { + checkData = new PqScriptDtlsParam.CheckData(); + checkData.setErrorFlag(checkArciveData.getErrorFlag()); + checkData.setEnable(checkArciveData.getEnable()); + checkData.setPhase(checkArciveData.getPhase()); + checkData.setValueType(checkArciveData.getValueType()); + checkData.setPid(channelListDTO.getPid()); + checkData.setValue(checkArciveData.getValue()); + info.add(checkData); + } + } + } + } + private void rmsCheck(List info, PqScriptDtlsParam.CheckData channelListDTO, List list, diff --git a/detection/src/main/java/com/njcn/gather/script/util/ThreePhaseUnbalance.java b/detection/src/main/java/com/njcn/gather/script/util/ThreePhaseUnbalance.java index 2a1c2e1b..4341c3aa 100644 --- a/detection/src/main/java/com/njcn/gather/script/util/ThreePhaseUnbalance.java +++ b/detection/src/main/java/com/njcn/gather/script/util/ThreePhaseUnbalance.java @@ -13,7 +13,7 @@ import java.math.RoundingMode; public class ThreePhaseUnbalance { // 定义复数类 - static class Complex { + public static class Complex { BigDecimal real; // 复数的实部 BigDecimal imag; // 复数的虚部 @@ -108,10 +108,10 @@ public class ThreePhaseUnbalance { BigDecimal vaMagnitude = new BigDecimal(Ua0); BigDecimal vaAngle = new BigDecimal(thetaA); - BigDecimal vbMagnitude =new BigDecimal(Ub0); + BigDecimal vbMagnitude = new BigDecimal(Ub0); BigDecimal vbAngle = new BigDecimal(thetaB); - BigDecimal vcMagnitude =new BigDecimal(Uc0); + BigDecimal vcMagnitude = new BigDecimal(Uc0); BigDecimal vcAngle = new BigDecimal(thetaC); // 将幅值和角度转换为复数 @@ -146,12 +146,12 @@ public class ThreePhaseUnbalance { BigDecimal vaAngle = new BigDecimal(0); System.out.println("请输入B相电压的幅值(单位:V):"); - BigDecimal vbMagnitude =new BigDecimal(57.74*0.9); + BigDecimal vbMagnitude = new BigDecimal(57.74 * 0.9); System.out.println("请输入B相电压的相位角(单位:度):"); BigDecimal vbAngle = new BigDecimal(-122); System.out.println("请输入C相电压的幅值(单位:V):"); - BigDecimal vcMagnitude =new BigDecimal(57.74); + BigDecimal vcMagnitude = new BigDecimal(57.74); System.out.println("请输入C相电压的相位角(单位:度):"); BigDecimal vcAngle = new BigDecimal(118); diff --git a/storage/src/main/java/com/njcn/gather/util/StorageUtil.java b/storage/src/main/java/com/njcn/gather/util/StorageUtil.java index 466bc3d2..9951c985 100644 --- a/storage/src/main/java/com/njcn/gather/util/StorageUtil.java +++ b/storage/src/main/java/com/njcn/gather/util/StorageUtil.java @@ -73,6 +73,12 @@ public class StorageUtil { case "IMBA": unit = "%"; break; + case "SeqV": + unit = "V"; + break; + case "SeqA": + unit = "A"; + break; /** * 谐波有功功率 */