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 64807059..ad7d1bb1 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 @@ -15,6 +15,7 @@ import com.njcn.gather.err.pojo.param.PqErrSysParam; import com.njcn.gather.err.pojo.po.PqErrSysDtls; import com.njcn.gather.err.pojo.vo.ErrDtlsCheckDataVO; import com.njcn.gather.err.service.IPqErrSysDtlsService; +import com.njcn.gather.result.pojo.enums.ResultUnitEnum; import com.njcn.gather.script.pojo.po.PqScriptCheckData; import com.njcn.gather.script.pojo.po.SourceIssue; import com.njcn.gather.script.service.IPqScriptCheckDataService; @@ -87,90 +88,145 @@ public class DetectionServiceImpl { param.setScriptId(sourceIssue.getScriptId()); param.setErrorSysId(errorSysId); List errDtlsCheckData = pqErrSysDtlsService.listByPqErrSysIdAndTypes(param); - switch (sourceIssue.getType()) { + ResultUnitEnum resultUnitEnumByCode = ResultUnitEnum.getResultUnitEnumByCode(sourceIssue.getType()); + switch (resultUnitEnumByCode) { /** * 频率 */ - case "FREQ": + case FREQ: return isQualified(dev, devIdMapComm, errDtlsCheckData, F, sourceIssue, dataRule, code); /** * 电压 */ - case "V": + case V_RELATIVE: + case V_ABSOLUTELY: return isQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, code); /** * 电流 */ - case "I": + case I_RELATIVE: + case I_ABSOLUTELY: return isQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, code); /** * 谐波电压 */ - case "HV": + case HV: AdHarmonicResult harmV = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, 2); detectionDataDealService.acceptAdResult(Arrays.asList(harmV), code); return harmV.getResultFlag(); /** * 谐波电流 */ - case "HI": + case HI: AdHarmonicResult harmI = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, 2); detectionDataDealService.acceptAdResult(Arrays.asList(harmI), code); return harmI.getResultFlag(); /** * 间谐波电压 */ - case "HSV": + case HSV: AdHarmonicResult harmInV = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, 1); detectionDataDealService.acceptAdResult(Arrays.asList(harmInV), code); return harmInV.getResultFlag(); /** * 间谐波电流 */ - case "HSI": + case HSI: AdHarmonicResult harmInI = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, 1); detectionDataDealService.acceptAdResult(Arrays.asList(harmInI), code); return harmInI.getResultFlag(); /** * 三相电压不平衡度 */ - case "IMBV": + case IMBV: AdNonHarmonicResult vUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, U, sourceIssue, dataRule, "V_UNBAN"); detectionDataDealService.acceptAdNonResult(Arrays.asList(vUnban), code); return vUnban.getResultFlag(); /** * 三相电流不平衡度 */ - case "IMBA": + case IMBA: AdNonHarmonicResult iUnban = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, I, sourceIssue, dataRule, "I_UNBAN"); detectionDataDealService.acceptAdNonResult(Arrays.asList(iUnban), code); return iUnban.getResultFlag(); /** * 谐波有功功率 */ - case "HP": + case HP: AdHarmonicResult harmP = isHarmQualified(dev, devIdMapComm, errDtlsCheckData, P, sourceIssue, dataRule, 2); detectionDataDealService.acceptAdResult(Arrays.asList(harmP), code); return harmP.getResultFlag(); - /** - * 功率 - */ - case "P": - return 4; /** * 闪变 */ - case "F": + case F: AdNonHarmonicResult pst = isUnBalanceOrFlickerQualified(dev, devIdMapComm, errDtlsCheckData, null, sourceIssue, dataRule, "PST"); detectionDataDealService.acceptAdNonResult(Arrays.asList(pst), code); return pst.getResultFlag(); /** * 暂态 */ - case "VOLTAGE": + case VOLTAGE_MAG: + case VOLTAGE_DUR: return isVoltageQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code); + default: +// return isUnknownQualified(dev, devIdMapComm, errDtlsCheckData, sourceIssue, dataRule, code); + return 4; } - return null; + } + + public Integer isUnknownQualified(List dev, + Map devIdMapComm, + List errDtlsCheckData, + SourceIssue sourceIssue, + DictDataEnum dataRule, + String code) { + List info = new ArrayList<>(); + List devValueTypeList = sourceIssue.getDevValueTypeList(); + for (String s : devValueTypeList) { + //基本数据 + Map> map = devListMap(dev, dataRule, s.split("\\$")[1]); + AdNonHarmonicResult result = new AdNonHarmonicResult(); + String[] split = dev.get(0).getId().split("_"); + String devID = devIdMapComm.get(split[0]); + result.setMonitorId(devID + "_" + split[1]); + result.setScriptId(sourceIssue.getScriptId()); + result.setSort(sourceIssue.getIndex()); + result.setDataType("avg"); + List dtlsCheckData = errDtlsCheckData.stream().filter(x -> x.getValueTypeCode().equals(s.split("\\$")[1])).collect(Collectors.toList()); + List resultFlag = new ArrayList<>(); + map.forEach((key, value) -> { + List checkData = dtlsCheckData.stream().filter(x -> key.equals(x.getPhase())).collect(Collectors.toList()); + DetectionData detectionData = rangeComparisonList(value, new ArrayList<>(), null, checkData.get(0).getValue(), dataRule); + if (key.equals(TYPE_T)) { + result.setTValue(JSON.toJSONString(detectionData)); + } + if (key.equals(TYPE_A)) { + result.setAValue(JSON.toJSONString(detectionData)); + } + if (key.equals(TYPE_B)) { + result.setBValue(JSON.toJSONString(detectionData)); + } + if (key.equals(TYPE_C)) { + result.setCValue(JSON.toJSONString(detectionData)); + } + resultFlag.add(detectionData); + }); + result.setResultFlag(setResultFlag(resultFlag)); + info.add(result); + //谐波 + Map>> devHarmMap = devHarmListMap(dev, sourceIssue, dataRule, 2); + List detectionData = harmRangeComparison(new ArrayList<>(), null, TYPE_T, sourceIssue, dataRule, devHarmMap.get(TYPE_T), sourceIssue.getFUn(), 2); + //间谐波 + Map>> devInHarmMap = devHarmListMap(dev, sourceIssue, dataRule, 1); + } + + if (CollUtil.isNotEmpty(info)) { + detectionDataDealService.acceptAdNonResult(info, code); + List resultFlag = info.stream().filter(x -> 4 != x.getResultFlag()).map(AdNonHarmonicResult::getResultFlag).distinct().collect(Collectors.toList()); + return getInteger(resultFlag); + } + return 4; } /** @@ -223,7 +279,7 @@ public class DetectionServiceImpl { } if (map.containsKey(TYPE_T)) { List checkDataT = dtlsCheckData.stream().filter(x -> TYPE_T.equals(x.getPhase())).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(checkDataT)){ + if (CollUtil.isNotEmpty(checkDataT)) { DetectionData t = rangeComparisonList(map.get(TYPE_T), pqErrSysDtls, fData, checkDataT.get(0).getValue(), dataRule); result.setTValue(JSON.toJSONString(t)); result.setResultFlag(t.getIsData()); @@ -232,19 +288,19 @@ public class DetectionServiceImpl { List resultFlag = new ArrayList<>(); //取出源所对应的相别信息 List checkDataA = dtlsCheckData.stream().filter(x -> TYPE_A.equals(x.getPhase())).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(checkDataA)){ + if (CollUtil.isNotEmpty(checkDataA)) { DetectionData a = rangeComparisonList(map.get(TYPE_A), pqErrSysDtls, fData, checkDataA.get(0).getValue(), dataRule); resultFlag.add(a); result.setAValue(JSON.toJSONString(a)); } List checkDataB = dtlsCheckData.stream().filter(x -> TYPE_B.equals(x.getPhase())).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(checkDataB)){ + if (CollUtil.isNotEmpty(checkDataB)) { DetectionData b = rangeComparisonList(map.get(TYPE_B), pqErrSysDtls, fData, checkDataB.get(0).getValue(), dataRule); resultFlag.add(b); result.setBValue(JSON.toJSONString(b)); } List checkDataC = dtlsCheckData.stream().filter(x -> TYPE_C.equals(x.getPhase())).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(checkDataC)){ + if (CollUtil.isNotEmpty(checkDataC)) { DetectionData c = rangeComparisonList(map.get(TYPE_C), pqErrSysDtls, fData, checkDataC.get(0).getValue(), dataRule); resultFlag.add(c); result.setCValue(JSON.toJSONString(c)); @@ -554,16 +610,16 @@ public class DetectionServiceImpl { .collect(Collectors.toList()); switch (dataRule) { case SECTION_VALUE: - a = getDoubles(a, 1, 19); - b = getDoubles(b, 1, 19); - c = getDoubles(c, 1, 19); - t = getDoubles(t, 1, 19); + a = getDoubles(a); + b = getDoubles(b); + c = getDoubles(c); + t = getDoubles(t); break; case CP95_VALUE: - a = getDoubles(a, 1, 2); - b = getDoubles(b, 1, 2); - c = getDoubles(c, 1, 2); - t = getDoubles(t, 1, 2); + a = getCP95Doubles(a); + b = getCP95Doubles(b); + c = getCP95Doubles(c); + t = getCP95Doubles(t); break; case AVG_VALUE: a = getAvgDoubles(a); @@ -730,7 +786,13 @@ public class DetectionServiceImpl { } } - + /** + * @param dev 原始数据 + * @param sourceIssue + * @param dataRule + * @param num + * @return + */ public Map>> devHarmListMap(List dev, SourceIssue sourceIssue, DictDataEnum dataRule, Integer num) { Map>> map = new HashMap<>(3); List harmNum = new ArrayList<>(); @@ -768,19 +830,33 @@ public class DetectionServiceImpl { map.forEach((typeKey, typeValue) -> { typeValue.forEach((key, value) -> { value.sort(Comparator.comparing(Double::doubleValue).reversed()); - switch (dataRule) { - case SECTION_VALUE: - value.subList(19, value.size()).clear(); // 保留前19个元素 - value.remove(0); // 移除第一个元素 - break; - case CP95_VALUE: - value.subList(1, value.size()).clear(); // 保留第一个元素 - break; - case AVG_VALUE: - double average = value.stream().mapToDouble(Double::doubleValue).average().orElse(0.0); - value.clear(); // 清空列表 - value.add(average); // 添加平均值 - break; + if (CollUtil.isNotEmpty(value)) { + switch (dataRule) { + case SECTION_VALUE: + if (value.size() > 2) { + Double max = Collections.max(value); + Double min = Collections.min(value); + value.remove(max); + value.remove(min); + } + break; + case CP95_VALUE: + if (value.size() < 21) { + if (value.size() > 1) { + value.subList(1, 2); + } + } else { + int v = (int) (value.size() * 0.5); + value.subList(v, v + 1); + } + value.subList(1, value.size()).clear(); // 保留第一个元素 + break; + case AVG_VALUE: + double average = value.stream().mapToDouble(Double::doubleValue).average().orElse(0.0); + value.clear(); // 清空列表 + value.add(average); // 添加平均值 + break; + } } }); }); @@ -1047,9 +1123,32 @@ public class DetectionServiceImpl { return t; } - public List getDoubles(List t, Integer start, Integer end) { + public List getDoubles(List t) { if (CollUtil.isNotEmpty(t)) { - t = t.subList(start, end); + if (t == null || t.size() < 2) { + return t; + } + Double max = Collections.max(t); + Double min = Collections.min(t); + t.remove(max); + t.remove(min); + } + return t; + } + + public List getCP95Doubles(List t) { + if (CollUtil.isNotEmpty(t)) { + if (t.size() < 21) { + if (t.size() == 1) { + return t; + } + if (t.size() > 1) { + return t.subList(1, 2); + } + } else { + int v = (int) (t.size() * 0.5); + return t.subList(v, v + 1); + } } return t; } diff --git a/detection/src/main/java/com/njcn/gather/result/pojo/enums/ResultUnitEnum.java b/detection/src/main/java/com/njcn/gather/result/pojo/enums/ResultUnitEnum.java index efee48f6..27649d29 100644 --- a/detection/src/main/java/com/njcn/gather/result/pojo/enums/ResultUnitEnum.java +++ b/detection/src/main/java/com/njcn/gather/result/pojo/enums/ResultUnitEnum.java @@ -1,5 +1,6 @@ package com.njcn.gather.result.pojo.enums; +import cn.hutool.core.util.ObjectUtil; import lombok.Getter; /** @@ -9,28 +10,41 @@ import lombok.Getter; @Getter public enum ResultUnitEnum { - FREQ_UNIT("Hz", "频率"), - V_RELATIVE_UNIT("%Un", "电压"), - V_ABSOLUTELY_UNIT("V", "电压"), - I_RELATIVE_UNIT("%In", "电流"), - I_ABSOLUTELY_UNIT("A", "电流"), - HV_UNIT("%", "谐波电压"), - HI_UNIT("%", "谐波电流"), - HP_UNIT("W", "谐波有功功率"), - HSV_UNIT("%", "间谐波电压"), - HSI_UNIT("%", "间谐波电流"), - VOLTAGE_MAG_UNIT("周波", "暂态持续时间"), - VOLTAGE_DUR_UNIT("%", "暂态深度"), - IMBV_UNIT("%", "电压不平衡度"), - IMBA_UNIT("%", "电流不平衡度"), + FREQ("Hz", "频率","FREQ"), + V_RELATIVE("%Un", "电压","V"), + V_ABSOLUTELY("V", "电压","V"), + I_RELATIVE("%In", "电流","I"), + I_ABSOLUTELY("A", "电流","I"), + HV("%", "谐波电压","HV"), + HI("%", "谐波电流","HI"), + HP("W", "谐波有功功率","HP"), + HSV("%", "间谐波电压","HSV"), + HSI("%", "间谐波电流","HSI"), + VOLTAGE_MAG("周波", "暂态持续时间","VOLTAGE"), + VOLTAGE_DUR("%", "暂态深度","VOLTAGE"), + IMBV("%", "电压不平衡度","IMBV"), + IMBA("%", "电流不平衡度","IMBA"), + F("","闪变","F"), + UNKNOWN("","未知","UNKNOWN"), ; private String unit; private String name; + private String code; - ResultUnitEnum(String unit, String name) { + ResultUnitEnum(String unit, String name, String code) { this.unit = unit; this.name = name; + this.code = code; + } + + public static ResultUnitEnum getResultUnitEnumByCode(String code) { + for (ResultUnitEnum resultUnitEnum : ResultUnitEnum.values()) { + if (ObjectUtil.equals(code, resultUnitEnum.getCode())) { + return resultUnitEnum; + } + } + return UNKNOWN; } } 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 b789aee7..80afed75 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 @@ -289,23 +289,25 @@ public class ResultServiceImpl implements IResultService { } private void ratedScriptTypeName(List scriptDtlIndexList, Boolean isValueType, TreeDataVO dtlType, DictTree dictTree) { - switch (dictTree.getCode()) { + ResultUnitEnum resultUnitEnumByCode = ResultUnitEnum.getResultUnitEnumByCode(dictTree.getCode()); + switch (resultUnitEnumByCode) { /** * 频率 */ - case "FREQ": + case FREQ: List f = scriptDtlIndexList.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName(dictTree.getName() + "=" + f.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit()); + dtlType.setScriptTypeName(dictTree.getName() + "=" + f.get(0).getValue() + ResultUnitEnum.FREQ.getUnit()); break; /** * 电压 */ - case "V": + case V_RELATIVE: + case V_ABSOLUTELY: String unit; if (isValueType) { - unit = ResultUnitEnum.V_RELATIVE_UNIT.getUnit(); + unit = ResultUnitEnum.V_RELATIVE.getUnit(); } else { - unit = ResultUnitEnum.V_ABSOLUTELY_UNIT.getUnit(); + unit = ResultUnitEnum.V_ABSOLUTELY.getUnit(); } List v = scriptDtlIndexList.stream().filter(x -> "VOL".equals(x.getValueType())).collect(Collectors.toList()); dtlType.setScriptTypeName(dictTree.getName() + "=" + v.get(0).getValue().intValue() + unit); @@ -313,24 +315,23 @@ public class ResultServiceImpl implements IResultService { /** * 电流 */ - case "I": + case I_RELATIVE: + case I_ABSOLUTELY: String unitI; if (isValueType) { - unitI = ResultUnitEnum.I_RELATIVE_UNIT.getUnit(); + unitI = ResultUnitEnum.I_RELATIVE.getUnit(); } else { - unitI = ResultUnitEnum.I_ABSOLUTELY_UNIT.getUnit(); + unitI = ResultUnitEnum.I_ABSOLUTELY.getUnit(); } List I = scriptDtlIndexList.stream().filter(x -> "CUR".equals(x.getValueType())).collect(Collectors.toList()); dtlType.setScriptTypeName(dictTree.getName() + "=" + I.get(0).getValue().intValue() + unitI); break; /** * 谐波电压 + * 谐波电流 */ - case "HV": - /** - * 谐波电流 - */ - case "HI": + case HV: + case HI: String valueType; if ("HV".equals(dictTree.getCode())) { valueType = "Harm_V"; @@ -348,17 +349,15 @@ public class ResultServiceImpl implements IResultService { + "次" + dictTree.getName() + "(含有率为GB/T)"); } else { //叠加5%的2次谐波电压 - dtlType.setScriptTypeName("叠加" + hv.get(0).getValue().intValue() + ResultUnitEnum.HV_UNIT.getUnit() + "的" + hv.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("叠加" + hv.get(0).getValue().intValue() + ResultUnitEnum.HV.getUnit() + "的" + hv.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); } break; /** * 间谐波电压 + * 间谐波电流 */ - case "HSV": - /** - * 间谐波电流 - */ - case "HSI": + case HSV: + case HSI: //叠加1.5/5.5/7.5/49.5次间谐波,含有率为。。。 String in; if ("HSV".equals(dictTree.getCode())) { @@ -384,36 +383,36 @@ public class ResultServiceImpl implements IResultService { dtlType.setScriptTypeName(a.toString()); } else { //叠加5%的2次谐波电压 - dtlType.setScriptTypeName("叠加" + harmInNumList.get(0).getValue().intValue() + ResultUnitEnum.HV_UNIT.getUnit() + "的" + harmInNumList.get(0).getHarmNum() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("叠加" + harmInNumList.get(0).getValue().intValue() + ResultUnitEnum.HV.getUnit() + "的" + harmInNumList.get(0).getHarmNum() + "次" + dictTree.getName()); } break; /** * 三相电压不平衡度 */ - case "IMBV": + case IMBV: List list = pqScriptCheckDataService.list(new MPJLambdaWrapper() .eq(PqScriptCheckData::getScriptId, scriptDtlIndexList.get(0).getScriptId()) .eq(PqScriptCheckData::getIndex, scriptDtlIndexList.get(0).getIndex()) ); //三相负序电压不平衡度=0% - dtlType.setScriptTypeName(dictTree.getName() + "=" + list.get(0).getValue() + ResultUnitEnum.IMBV_UNIT.getUnit()); + dtlType.setScriptTypeName(dictTree.getName() + "=" + list.get(0).getValue() + ResultUnitEnum.IMBV.getUnit()); break; /** * 三相电流不平衡度 */ - case "IMBA": + case IMBA: List imba = pqScriptCheckDataService.list(new MPJLambdaWrapper() .eq(PqScriptCheckData::getScriptId, scriptDtlIndexList.get(0).getScriptId()) .eq(PqScriptCheckData::getIndex, scriptDtlIndexList.get(0).getIndex()) ); //三相负序电流不平衡度=0% - dtlType.setScriptTypeName(dictTree.getName() + "=" + imba.get(0).getValue() + ResultUnitEnum.IMBV_UNIT.getUnit()); + dtlType.setScriptTypeName(dictTree.getName() + "=" + imba.get(0).getValue() + ResultUnitEnum.IMBV.getUnit()); break; /** * 谐波有功功率 */ - case "HP": + case HP: //10%的2次谐波电压,40%的2次谐波电流 List hpv = scriptDtlIndexList.stream().filter(x -> "Harm_V".equals(x.getValueType())).collect(Collectors.toList()); List hpI = scriptDtlIndexList.stream().filter(x -> "Harm_I".equals(x.getValueType())).collect(Collectors.toList()); @@ -429,7 +428,7 @@ public class ResultServiceImpl implements IResultService { ArrayList> lists = new ArrayList<>(harmNumVMap.values()); Map> hpvMap = lists.stream().flatMap(x -> x.stream().filter(j -> "A".equals(j.getPhase()))).collect(Collectors.groupingBy(PqScriptDtls::getValue)); hpvMap.forEach((key, value) -> { - a.append(key.intValue() + ResultUnitEnum.HV_UNIT.getUnit() + "的"); + a.append(key.intValue() + ResultUnitEnum.HV.getUnit() + "的"); for (int i = 0; i < value.size(); i++) { if (i == value.size() - 1) { a.append(value.get(i).getHarmNum().intValue()); @@ -437,18 +436,18 @@ public class ResultServiceImpl implements IResultService { a.append(value.get(i).getHarmNum().intValue() + "、"); } } - a.append("次" + ResultUnitEnum.HV_UNIT.getName()); + a.append("次" + ResultUnitEnum.HV.getName()); }); } else { PqScriptDtls dtls = harmNumVMap.entrySet().iterator().next().getValue().get(0); - a.append(dtls.getValue().intValue() + ResultUnitEnum.HV_UNIT.getUnit() + "的" + dtls.getHarmNum().intValue() + ResultUnitEnum.HV_UNIT.getName()); + a.append(dtls.getValue().intValue() + ResultUnitEnum.HV.getUnit() + "的" + dtls.getHarmNum().intValue() + ResultUnitEnum.HV.getName()); } a.append(","); if (harmNumIMap.size() > 1) { ArrayList> lists = new ArrayList<>(harmNumIMap.values()); Map> hpvMap = lists.stream().flatMap(x -> x.stream().filter(j -> "A".equals(j.getPhase()))).collect(Collectors.groupingBy(PqScriptDtls::getValue)); hpvMap.forEach((key, value) -> { - a.append(key.intValue() + ResultUnitEnum.HI_UNIT.getUnit() + "的"); + a.append(key.intValue() + ResultUnitEnum.HI.getUnit() + "的"); for (int i = 0; i < value.size(); i++) { if (i == value.size() - 1) { a.append(value.get(i).getHarmNum().intValue()); @@ -456,23 +455,18 @@ public class ResultServiceImpl implements IResultService { a.append(value.get(i).getHarmNum().intValue() + "、"); } } - a.append("次" + ResultUnitEnum.HI_UNIT.getName()); + a.append("次" + ResultUnitEnum.HI.getName()); }); } else { PqScriptDtls dtls = harmNumIMap.entrySet().iterator().next().getValue().get(0); - a.append(dtls.getValue().intValue() + ResultUnitEnum.HI_UNIT.getUnit() + "的" + dtls.getHarmNum().intValue() + "次" + ResultUnitEnum.HI_UNIT.getName()); + a.append(dtls.getValue().intValue() + ResultUnitEnum.HI.getUnit() + "的" + dtls.getHarmNum().intValue() + "次" + ResultUnitEnum.HI.getName()); } dtlType.setScriptTypeName(a.toString()); break; - /** - * 功率 - */ - case "P": - break; /** * 闪变 */ - case "F": + case F: //Pst=1(变动率=1.459%*1) List flicker = scriptDtlIndexList.stream().filter(x -> "Flicker".equals(x.getValueType())).collect(Collectors.toList()); dtlType.setScriptTypeName("Pst=" + flicker.get(0).getChagFre() + "(变动率=" + flicker.get(0).getChagValue() + "%*" + flicker.get(0).getChagFre() + ")"); @@ -480,29 +474,32 @@ public class ResultServiceImpl implements IResultService { /** * 暂态 */ - case "VOLTAGE": + case VOLTAGE_MAG: + case VOLTAGE_DUR: break; } } private void harmScriptTypeName(List dtls, DictTree dictTree, Boolean isValueType, TreeDataVO dtlType) { - switch (dictTree.getCode()) { + ResultUnitEnum resultUnitEnumByCode = ResultUnitEnum.getResultUnitEnumByCode(dictTree.getCode()); + switch (resultUnitEnumByCode) { /** * 频率 */ - case "FREQ": + case FREQ: List f = dtls.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("叠加多次谐波对" + dictTree.getName() + "=" + f.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit() + "的影响"); + dtlType.setScriptTypeName("叠加多次谐波对" + dictTree.getName() + "=" + f.get(0).getValue() + ResultUnitEnum.FREQ.getUnit() + "的影响"); break; /** * 电压 */ - case "V": + case V_RELATIVE: + case V_ABSOLUTELY: String unit; if (isValueType) { - unit = ResultUnitEnum.V_RELATIVE_UNIT.getUnit(); + unit = ResultUnitEnum.V_RELATIVE.getUnit(); } else { - unit = ResultUnitEnum.V_ABSOLUTELY_UNIT.getUnit(); + unit = ResultUnitEnum.V_ABSOLUTELY.getUnit(); } List v = dtls.stream().filter(x -> "VOL".equals(x.getValueType())).collect(Collectors.toList()); dtlType.setScriptTypeName("叠加多次谐波对" + dictTree.getName() + "=" + v.get(0).getValue() + unit + "的影响"); @@ -510,246 +507,240 @@ public class ResultServiceImpl implements IResultService { /** * 电流 */ - case "I": + case I_RELATIVE: + case I_ABSOLUTELY: break; /** * 谐波电压 */ - case "HV": + case HV: break; /** * 谐波电流 */ - case "HI": + case HI: break; /** * 间谐波电压 */ - case "HSV": + case HSV: break; /** * 间谐波电流 */ - case "HSI": + case HSI: break; /** * 三相电压不平衡度 */ - case "IMBV": + case IMBV: break; /** * 三相电流不平衡度 */ - case "IMBA": + case IMBA: break; /** * 谐波有功功率 */ - case "HP": - break; - /** - * 功率 - */ - case "P": + case HP: break; /** * 闪变 */ - case "F": + case F: break; /** * 暂态 */ - case "VOLTAGE": + case VOLTAGE_MAG: + case VOLTAGE_DUR: break; } } private void volScriptTypeName(List dtls, DictTree dictTree, Boolean isValueType, TreeDataVO dtlType) { - switch (dictTree.getCode()) { + ResultUnitEnum resultUnitEnumByCode = ResultUnitEnum.getResultUnitEnumByCode(dictTree.getCode()); + switch (resultUnitEnumByCode) { /** * 频率 */ - case "FREQ": + case FREQ: String unit; if (isValueType) { - unit = ResultUnitEnum.V_RELATIVE_UNIT.getUnit(); + unit = ResultUnitEnum.V_RELATIVE.getUnit(); } else { - unit = ResultUnitEnum.V_ABSOLUTELY_UNIT.getUnit(); + unit = ResultUnitEnum.V_ABSOLUTELY.getUnit(); } List f = dtls.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); List v = dtls.stream().filter(x -> "VOL".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName(v.get(0).getValue().intValue() + unit + "对" + dictTree.getName() + "=" + f.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit() + "的影响"); + dtlType.setScriptTypeName(v.get(0).getValue().intValue() + unit + "对" + dictTree.getName() + "=" + f.get(0).getValue() + ResultUnitEnum.FREQ.getUnit() + "的影响"); break; /** * 电压 */ - case "V": - + case V_RELATIVE: + case V_ABSOLUTELY: break; /** * 电流 */ - case "I": + case I_RELATIVE: + case I_ABSOLUTELY: break; /** * 谐波电压 */ - case "HV": + case HV: //电压有效值10%,3次谐波电压,含有率 List hvv = dtls.stream().filter(x -> "VOL".equals(x.getValueType())).collect(Collectors.toList()); List hv = dtls.stream().filter(x -> "Harm_V".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("电压有效值" + hvv.get(0).getValue().intValue() + ResultUnitEnum.HV_UNIT.getUnit() + "," + hv.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("电压有效值" + hvv.get(0).getValue().intValue() + ResultUnitEnum.HV.getUnit() + "," + hv.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); break; /** * 谐波电流 */ - case "HI": + case HI: List hiv = dtls.stream().filter(x -> "VOL".equals(x.getValueType())).collect(Collectors.toList()); List hi = dtls.stream().filter(x -> "Harm_I".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("电压有效值" + hiv.get(0).getValue().intValue() + ResultUnitEnum.HI_UNIT.getUnit() + "," + hi.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("电压有效值" + hiv.get(0).getValue().intValue() + ResultUnitEnum.HI.getUnit() + "," + hi.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); break; /** * 间谐波电压 */ - case "HSV": + case HSV: List hsvv = dtls.stream().filter(x -> "VOL".equals(x.getValueType())).collect(Collectors.toList()); List hsv = dtls.stream().filter(x -> "InHarm_V".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("电压有效值" + hsvv.get(0).getValue().intValue() + ResultUnitEnum.HSV_UNIT.getUnit() + "," + hsv.get(0).getHarmNum() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("电压有效值" + hsvv.get(0).getValue().intValue() + ResultUnitEnum.HSV.getUnit() + "," + hsv.get(0).getHarmNum() + "次" + dictTree.getName()); break; /** * 间谐波电流 */ - case "HSI": + case HSI: List hsiv = dtls.stream().filter(x -> "VOL".equals(x.getValueType())).collect(Collectors.toList()); List hsi = dtls.stream().filter(x -> "InHarm_I".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("电压有效值" + hsiv.get(0).getValue().intValue() + ResultUnitEnum.HSI_UNIT.getUnit() + "," + hsi.get(0).getHarmNum() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("电压有效值" + hsiv.get(0).getValue().intValue() + ResultUnitEnum.HSI.getUnit() + "," + hsi.get(0).getHarmNum() + "次" + dictTree.getName()); break; /** * 三相电压不平衡度 */ - case "IMBV": + case IMBV: break; /** * 三相电流不平衡度 */ - case "IMBA": + case IMBA: break; /** * 谐波有功功率 */ - case "HP": - break; - /** - * 功率 - */ - case "P": + case HP: break; /** * 闪变 */ - case "F": + case F: break; /** * 暂态 */ - case "VOLTAGE": + case VOLTAGE_MAG: + case VOLTAGE_DUR: break; } } private void freqScriptTypeName(List dtls, DictTree dictTree, Boolean isValueType, TreeDataVO dtlType) { - switch (dictTree.getCode()) { + ResultUnitEnum resultUnitEnumByCode = ResultUnitEnum.getResultUnitEnumByCode(dictTree.getCode()); + switch (resultUnitEnumByCode) { /** * 频率 */ - case "FREQ": + case FREQ: break; /** * 电压 */ - case "V": + case V_RELATIVE: + case V_ABSOLUTELY: String unit; if (isValueType) { - unit = ResultUnitEnum.V_RELATIVE_UNIT.getUnit(); + unit = ResultUnitEnum.V_RELATIVE.getUnit(); } else { - unit = ResultUnitEnum.V_ABSOLUTELY_UNIT.getUnit(); + unit = ResultUnitEnum.V_ABSOLUTELY.getUnit(); } List f = dtls.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); List v = dtls.stream().filter(x -> "VOL".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("频率=" + f.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit() + "," + dictTree.getName() + "=" + v.get(0).getValue() + unit); + dtlType.setScriptTypeName("频率=" + f.get(0).getValue() + ResultUnitEnum.FREQ.getUnit() + "," + dictTree.getName() + "=" + v.get(0).getValue() + unit); break; /** * 电流 */ - case "I": + case I_RELATIVE: + case I_ABSOLUTELY: break; /** * 谐波电压 */ - case "HV": + case HV: //基波频率为42.5Hz,2次谐波电压 List hvf = dtls.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); List hv = dtls.stream().filter(x -> "Harm_V".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("基波频率为" + hvf.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit() + "," + hv.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("基波频率为" + hvf.get(0).getValue() + ResultUnitEnum.FREQ.getUnit() + "," + hv.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); break; /** * 谐波电流 */ - case "HI": + case HI: List hif = dtls.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); List hi = dtls.stream().filter(x -> "Harm_I".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("基波频率为" + hif.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit() + "," + hi.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("基波频率为" + hif.get(0).getValue() + ResultUnitEnum.FREQ.getUnit() + "," + hi.get(0).getHarmNum().intValue() + "次" + dictTree.getName()); break; /** * 间谐波电压 */ - case "HSV": + case HSV: List hsvf = dtls.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); List hsv = dtls.stream().filter(x -> "InHarm_V".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("基波频率为" + hsvf.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit() + "," + hsv.get(0).getHarmNum() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("基波频率为" + hsvf.get(0).getValue() + ResultUnitEnum.FREQ.getUnit() + "," + hsv.get(0).getHarmNum() + "次" + dictTree.getName()); break; /** * 间谐波电流 */ - case "HSI": + case HSI: List hsif = dtls.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); List hsi = dtls.stream().filter(x -> "InHarm_I".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("基波频率为" + hsif.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit() + "," + hsi.get(0).getHarmNum() + "次" + dictTree.getName()); + dtlType.setScriptTypeName("基波频率为" + hsif.get(0).getValue() + ResultUnitEnum.FREQ.getUnit() + "," + hsi.get(0).getHarmNum() + "次" + dictTree.getName()); break; /** * 三相电压不平衡度 */ - case "IMBV": + case IMBV: break; /** * 三相电流不平衡度 */ - case "IMBA": + case IMBA: break; /** * 谐波有功功率 */ - case "HP": - break; - /** - * 功率 - */ - case "P": + case HP: break; /** * 闪变 */ - case "F": + case F: break; /** * 暂态 */ - case "VOLTAGE": + case VOLTAGE_MAG: + case VOLTAGE_DUR: //频率=42.5H在,特征幅值=60%Un,持续时间=1周波 List dipf = dtls.stream().filter(x -> "Freq".equals(x.getValueType())).collect(Collectors.toList()); List dip = dtls.stream().filter(x -> "Dip".equals(x.getValueType())).collect(Collectors.toList()); - dtlType.setScriptTypeName("频率=" + dipf.get(0).getValue() + ResultUnitEnum.FREQ_UNIT.getUnit() + ",特征幅值=" + dip.get(0).getTransValue().intValue() + "%Un,持续时间=" + dip.get(0).getRetainTime().intValue() + "周波"); + dtlType.setScriptTypeName("频率=" + dipf.get(0).getValue() + ResultUnitEnum.FREQ.getUnit() + ",特征幅值=" + dip.get(0).getTransValue().intValue() + "%Un,持续时间=" + dip.get(0).getRetainTime().intValue() + "周波"); break; } }