diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java index 87f8c17..a32d9f1 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java @@ -104,7 +104,7 @@ public class CsGroupServiceImpl extends ServiceImpl impl private final EventDetailFeignClient eventDetailFeignClient; - private final DecimalFormat df = new DecimalFormat("#0.0000"); + private final DecimalFormat df = new DecimalFormat("#0.00"); private final EleEvtFeignClient eleEvtFeignClient; @@ -114,6 +114,14 @@ public class CsGroupServiceImpl extends ServiceImpl impl private final InfluxDbParamUtil influxDbParamUtil; + private final Set POWER_LIST = new HashSet<>(Arrays.asList( + "电网有功功率", "电网无功功率", "电网视在功率", "负载有功功率", + "负载无功功率", "负载视在功率", "有功功率", "无功功率", + "视在功率", "基波有功功率", "基波无功功率", + "基波视在功率", "三相总有功功率", "三相总无功功率", + "三相总视在功率" + )); + @Override @Transactional(rollbackFor = Exception.class) @@ -144,15 +152,12 @@ public class CsGroupServiceImpl extends ServiceImpl impl //获取所有字典指标 List epdPqdList = epdFeignClient.selectByIds(list.stream().map(EnergyTemplateVO::getDataId).distinct().collect(Collectors.toList())).getData(); Map eventTypeMap = epdPqdList.stream().collect(Collectors.toMap(EleEpdPqd::getId, Function.identity())); - getUnit(list,epdPqdList,groupList); + getUnit(list,epdPqdList,groupList,dataLevel); //根据lineId获取监测点pt、ct变比 CsLinePO csLinePO = csLineFeignClient.queryLineById(Collections.singletonList(lineId)).getData().get(0); for (EnergyTemplateVO item : list) { EnergyTemplateVO vo = new EnergyTemplateVO(); BeanUtils.copyProperties(item,vo); - if (vo.getAnotherName().contains("A相") || vo.getAnotherName().contains("B相") || vo.getAnotherName().contains("C相")) { - vo.setAnotherName(vo.getAnotherName().substring(0,2)); - } EleEpdPqd eleEpdPqd = eventTypeMap.get(item.getDataId()); vo.setClassId(eleEpdPqd.getClassId()); vo.setUnit(eleEpdPqd.getUnit()); @@ -162,13 +167,20 @@ public class CsGroupServiceImpl extends ServiceImpl impl //判断监测点类型 针对治理设备 模块数据是一次值、电能质量设备是二次值 if (csLinePO.getClDid() != 0 && Objects.equals("Primary",dataLevel) && ObjectUtil.isNotNull(eleEpdPqd.getPrimaryFormula())) { double secondaryData = DataChangeUtil.secondaryToPrimary(eleEpdPqd.getPrimaryFormula(), statisticalDataDTO.getValue(), csLinePO.getPtRatio(), csLinePO.getCtRatio()); - vo.setDataValue(BigDecimal.valueOf(secondaryData).setScale(2, RoundingMode.HALF_UP).doubleValue()); + if (changePower(vo.getAnotherName())) { + vo.setDataValue(Double.valueOf(df.format(BigDecimal.valueOf(secondaryData / 1000).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + } else { + vo.setDataValue(Double.valueOf(df.format(BigDecimal.valueOf(secondaryData).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + } } else { - vo.setDataValue(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(2, RoundingMode.HALF_UP).doubleValue()); + vo.setDataValue(Double.valueOf(df.format(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(2, RoundingMode.HALF_UP).doubleValue()))); } } else { vo.setDataValue(3.1415926); } + if (vo.getAnotherName().contains("A相") || vo.getAnotherName().contains("B相") || vo.getAnotherName().contains("C相")) { + vo.setAnotherName(vo.getAnotherName().substring(0,2)); + } arrayList.add(vo); } if (CollectionUtil.isNotEmpty(arrayList)){ @@ -202,7 +214,7 @@ public class CsGroupServiceImpl extends ServiceImpl impl //获取所有字典指标 List epdPqdList = epdFeignClient.selectByIds(list.stream().map(EnergyTemplateVO::getDataId).distinct().collect(Collectors.toList())).getData(); Map eventTypeMap = epdPqdList.stream().collect(Collectors.toMap(EleEpdPqd::getId, Function.identity())); - getUnit(list,epdPqdList,groupList); + getUnit(list,epdPqdList,groupList,energyBaseParam.getDataLevel()); //根据lineId获取监测点pt、ct变比 CsLinePO po = csLineFeignClient.queryLineById(Collections.singletonList(energyBaseParam.getLineId())).getData().get(0); for (EnergyTemplateVO item : list) { @@ -222,13 +234,19 @@ public class CsGroupServiceImpl extends ServiceImpl impl double secondaryData1 = DataChangeUtil.secondaryToPrimary(eleEpdPqd.getPrimaryFormula(), statisticalDataDTO.getMaxValue(), po.getPtRatio(), po.getCtRatio()); double secondaryData2 = DataChangeUtil.secondaryToPrimary(eleEpdPqd.getPrimaryFormula(), statisticalDataDTO.getMinValue(), po.getPtRatio(), po.getCtRatio()); double secondaryData3 = DataChangeUtil.secondaryToPrimary(eleEpdPqd.getPrimaryFormula(), statisticalDataDTO.getAvgValue(), po.getPtRatio(), po.getCtRatio()); - vo.setMaxValue(BigDecimal.valueOf(secondaryData1).setScale(2, RoundingMode.HALF_UP).doubleValue()); - vo.setMinValue(BigDecimal.valueOf(secondaryData2).setScale(2, RoundingMode.HALF_UP).doubleValue()); - vo.setAvgValue(BigDecimal.valueOf(secondaryData3).setScale(2, RoundingMode.HALF_UP).doubleValue()); + if (changePower(vo.getAnotherName())) { + vo.setMaxValue(Double.valueOf(df.format(BigDecimal.valueOf(secondaryData1/1000).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + vo.setMinValue(Double.valueOf(df.format(BigDecimal.valueOf(secondaryData2/1000).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + vo.setAvgValue(Double.valueOf(df.format(BigDecimal.valueOf(secondaryData3/1000).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + } else { + vo.setMaxValue(Double.valueOf(df.format(BigDecimal.valueOf(secondaryData1).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + vo.setMinValue(Double.valueOf(df.format(BigDecimal.valueOf(secondaryData2).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + vo.setAvgValue(Double.valueOf(df.format(BigDecimal.valueOf(secondaryData3).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + } } else { - vo.setMaxValue(BigDecimal.valueOf(statisticalDataDTO.getMaxValue()).setScale(2, RoundingMode.HALF_UP).doubleValue()); - vo.setMinValue(BigDecimal.valueOf(statisticalDataDTO.getMinValue()).setScale(2, RoundingMode.HALF_UP).doubleValue()); - vo.setAvgValue(BigDecimal.valueOf(statisticalDataDTO.getAvgValue()).setScale(2, RoundingMode.HALF_UP).doubleValue()); + vo.setMaxValue(Double.valueOf(df.format(BigDecimal.valueOf(statisticalDataDTO.getMaxValue()).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + vo.setMinValue(Double.valueOf(df.format(BigDecimal.valueOf(statisticalDataDTO.getMinValue()).setScale(2, RoundingMode.HALF_UP).doubleValue()))); + vo.setAvgValue(Double.valueOf(df.format(BigDecimal.valueOf(statisticalDataDTO.getAvgValue()).setScale(2, RoundingMode.HALF_UP).doubleValue()))); } } else { vo.setMaxValue(3.1415956); @@ -695,7 +713,9 @@ public class CsGroupServiceImpl extends ServiceImpl impl } //单位处理 - public void getUnit(List energyTemplates, List eleEpdPqds, List dataGroupTemplates) { + public void getUnit(List energyTemplates, List eleEpdPqds, List dataGroupTemplates, String type) { + List pList = Arrays.asList("电网有功功率", "电网无功功率", "电网视在功率","负载有功功率","负载无功功率","负载视在功率" + ,"有功功率","无功功率","视在功率","基波有功功率","基波无功功率","基波视在功率","三相总有功功率","三相总无功功率","三相总视在功率"); // 使用Map来存储EleEpdPqd的ID和Unit,以便快速查找 Map unitMap = new HashMap<>(); for (EleEpdPqd item : eleEpdPqds) { @@ -720,10 +740,20 @@ public class CsGroupServiceImpl extends ServiceImpl impl for (DataGroupTemplateVO dataGroupTemplate : dataGroupTemplates) { EnergyTemplateVO energyTemplate = energyTemplateMap.get(dataGroupTemplate.getId()); if (energyTemplate != null && energyTemplate.getUnit() != null) { - dataGroupTemplate.setName(dataGroupTemplate.getName() + "(" + energyTemplate.getUnit() + ")"); + if (changePower(dataGroupTemplate.getName()) && Objects.equals(type,"Primary")) { + dataGroupTemplate.setName(dataGroupTemplate.getName() + "(k" + energyTemplate.getUnit() + ")"); + } else { + dataGroupTemplate.setName(dataGroupTemplate.getName() + "(" + energyTemplate.getUnit() + ")"); + } } dataGroupTemplate.setName(dataGroupTemplate.getName().replace("序列",""));; } } + //判断功率是否需要转换 + public boolean changePower(String name) { + return POWER_LIST.stream() + .anyMatch(name::contains); + } + }