From 06e0ddf80274f728524732980d34870a832f0685 Mon Sep 17 00:00:00 2001 From: zhuxinyu <1799009482@qq.com> Date: Thu, 11 May 2023 14:53:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=80=E5=8C=97=E5=9C=B0=E5=9B=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pms/pojo/dto/PmsLedgerStaticDTO.java | 42 ++++++++++ .../device/pms/pojo/dto/PmsSimpleDTO.java | 27 +++++++ .../device/pms/pojo/po/SubstationExpend.java | 5 +- .../SubstationExpendController.java | 18 ++++- .../DistributionMonitorMapper.java | 6 ++ .../mapping/DistributionMonitorMapper.xml | 48 ++++++++++- .../mapper/mapping/SubstationExpendMapper.xml | 5 -- .../pms/service/ISubstationExpendService.java | 3 + .../impl/SubstationExpendServiceImpl.java | 80 +++++++++++++++++-- 9 files changed, 216 insertions(+), 18 deletions(-) create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsLedgerStaticDTO.java create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsSimpleDTO.java diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsLedgerStaticDTO.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsLedgerStaticDTO.java new file mode 100644 index 000000000..0fe5fc583 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsLedgerStaticDTO.java @@ -0,0 +1,42 @@ +package com.njcn.device.pms.pojo.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; + +@Data +public class PmsLedgerStaticDTO implements Serializable { + + /** + * 监测点统计 + */ + private List monitorStatistics; + + /** + * 装置统计 + */ + private List terminalStatistics; + + /** + * 在线率统计 + */ + private List OnlineRateStatistics; + + /** + * 完整性统计 + */ + private List integrityStatistics; + + /** + * 根据单位统计监测点数量 + */ + private HashMap> monitorStatisticsByDept; + + /** + * 根据单位统计终端数量 + */ + private HashMap> terminalStatisticsByDept; + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsSimpleDTO.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsSimpleDTO.java new file mode 100644 index 000000000..b377e6c40 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsSimpleDTO.java @@ -0,0 +1,27 @@ +package com.njcn.device.pms.pojo.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class PmsSimpleDTO implements Serializable { + + @ApiModelProperty(name = "name", value = "名称") + private String name; + + @ApiModelProperty(name = "value", value = "数值") + private Double[] value; + + @ApiModelProperty(name = "value", value = "数值") + private Double doubleValue; + + @ApiModelProperty(name = "statistics", value = "数量") + private Integer statistics; + + @ApiModelProperty(name = "classification", value = "分类") + private String classification; + + private Integer sort; +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/SubstationExpend.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/SubstationExpend.java index 6e173e690..5b0f69074 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/SubstationExpend.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/SubstationExpend.java @@ -7,6 +7,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.util.List; +import com.njcn.device.pms.pojo.dto.PmsSimpleDTO; import lombok.*; /** @@ -60,6 +61,8 @@ public class SubstationExpend implements Serializable { */ private String deptId; + private String deptName; + /** * 关联台账变电站:pq_substation表主键 */ @@ -72,7 +75,7 @@ public class SubstationExpend implements Serializable { */ private String connectType; - private List sites; + private List sites; // public SubstationExpend(String name, String type, BigDecimal lng, BigDecimal lat, String deptId) { // this.name = name; diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java index 4ef918db9..e136d7456 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java @@ -7,7 +7,9 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pms.pojo.dto.PmsLedgerStaticDTO; import com.njcn.device.pms.pojo.param.PmsBaseParam; +import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam; import com.njcn.device.pms.pojo.po.SubstationExpend; import com.njcn.device.pms.service.ISubstationExpendService; import io.swagger.annotations.Api; @@ -36,7 +38,7 @@ import java.util.Map; * @since 2023-05-08 */ @Slf4j -@Api(tags = "变电站地图信息") +@Api(tags = "冀北变电站地图信息") @RestController @RequestMapping("/pms/substationExpend") @RequiredArgsConstructor @@ -47,14 +49,24 @@ public class SubstationExpendController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getSubstationExpendInfo") - @ApiOperation("变电站信息") - @ApiImplicitParam(name = "param", value = "变电站信息参数", required = true) + @ApiOperation("冀北变电站地图信息") + @ApiImplicitParam(name = "param", value = "冀北变电站地图信息参数", required = true) public HttpResult>> getSubstationExpendInfo(@RequestBody StatisticsBizBaseParam param) { String methodDescribe = getMethodDescribe("getSubstationExpendInfo"); Map> result = substationExpendService.getSubstationExpendInfo(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getLedgerStatic") + @ApiOperation("冀北主网监测点台账统计") + @ApiImplicitParam(name = "param", value = "冀北主网监测点台账统计参数", required = true) + public HttpResult getLedgerStatic(@RequestBody PmsDeviceInfoParam param) { + String methodDescribe = getMethodDescribe("getLedgerStatic"); + PmsLedgerStaticDTO result = substationExpendService.getLedgerStatistics(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + // @OperateInfo(info = LogEnum.BUSINESS_COMMON) // @PostMapping("/insert") // @ApiOperation("变电站信息") diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java index 4fcb3d3c6..cca88a5fd 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO; +import com.njcn.device.pms.pojo.dto.PmsSimpleDTO; import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam; import com.njcn.device.pms.pojo.param.TaiZhangParam; import com.njcn.device.pms.pojo.po.DistributionMonitor; @@ -67,6 +68,11 @@ public interface DistributionMonitorMapper extends BaseMapper distributionMonitorListByCondition(@Param("deptIds")List deptIds, @Param("monitorSort")String monitorSort); + List statisticMonitorWithMonitorSort(@Param("list") List monitorIds); + List statisticTerminal(@Param("list") List terminalIds); + List getOnlineRate(@Param("list") List terminalIds); + + List getIntegrity(@Param("list") List terminalIds); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml index cb1bc2d02..c8d756ce4 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml @@ -182,7 +182,53 @@ AND EXISTS ( a.Monitor_Id = temp.id ) - + + + + + diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/mapping/SubstationExpendMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/mapping/SubstationExpendMapper.xml index cbb6b3885..25945a459 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/mapping/SubstationExpendMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/mapping/SubstationExpendMapper.xml @@ -5,18 +5,13 @@ \ No newline at end of file diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ISubstationExpendService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ISubstationExpendService.java index c6550dc19..4cd66bd23 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ISubstationExpendService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ISubstationExpendService.java @@ -3,6 +3,8 @@ package com.njcn.device.pms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import com.njcn.device.pms.pojo.dto.PmsLedgerStaticDTO; +import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam; import com.njcn.device.pms.pojo.po.SubstationExpend; import java.util.List; @@ -22,4 +24,5 @@ public interface ISubstationExpendService extends IService { Map> getSubstationExpendInfo(StatisticsBizBaseParam param); + PmsLedgerStaticDTO getLedgerStatistics(PmsDeviceInfoParam param); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java index cae38a721..72b5cabee 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java @@ -4,10 +4,14 @@ package com.njcn.device.pms.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSON; -import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient; import com.njcn.device.pms.mapper.SubstationExpendMapper; -import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO; +import com.njcn.device.pms.mapper.majornetwork.DistributionMonitorMapper; +import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO; +import com.njcn.device.pms.pojo.dto.PmsLedgerStaticDTO; +import com.njcn.device.pms.pojo.dto.PmsSimpleDTO; +import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam; import com.njcn.device.pms.pojo.po.SubstationExpend; import com.njcn.device.pms.service.ISubstationExpendService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -15,9 +19,9 @@ import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -39,36 +43,96 @@ public class SubstationExpendServiceImpl extends ServiceImpl> getSubstationExpendInfo(StatisticsBizBaseParam param) { Map> map = new HashMap<>(); List deptInfos = deptFeignClient.getDeptDescendantIndexes(param.getId(), Stream.of(0, 1).collect(Collectors.toList())).getData(); + Map> deptMap = deptInfos.stream().collect(Collectors.groupingBy(DeptDTO::getCode)); if (CollectionUtil.isNotEmpty(deptInfos)) { List list = deptInfos.stream() - .map(DeptDTO::getId) + .map(DeptDTO::getCode) .collect(Collectors.toList()); // 获取部门所属变电站 List subList=substationExpendMapper.getSubList(list, param); if (CollUtil.isNotEmpty(subList)) { subList.forEach ( t -> { + if (t.getDeptId()!=null){ + t.setDeptName(deptMap.get(t.getDeptId()).get(0).getName()); + } if (t.getBreakSite()!=null) { - List simpleDTOS = new ArrayList<>(); + List simpleDTOS = new ArrayList<>(); String[][] arr = JSON.parseObject(t.getBreakSite(), String[][].class); List sites = Arrays.asList(arr); for (String[] site : sites) { - SimpleDTO simpleDTO = new SimpleDTO(); + PmsSimpleDTO simpleDTO = new PmsSimpleDTO(); simpleDTO.setName(""); - simpleDTO.setValue(Arrays.toString(site)); + Double[] ds=new Double[site.length]; + for(int i=0;i generalDeviceDTOS = pmsGeneralDeviceInfoClient.getPwPmsDeviceInfoWithOrgId(param).getData(); + // 统计监测点 + List monitorIds = new ArrayList<>(); + generalDeviceDTOS.stream().forEach(e -> monitorIds.addAll(e.getMonitorIdList())); + List monitorStatistic = distributionMonitorMapper.statisticMonitorWithMonitorSort(monitorIds); + ledgerStaticDTO.setMonitorStatistics(monitorStatistic); + + // 根据单位统计监测点数量 + HashMap> monitorMap = new HashMap<>(); + for (PmsGeneralDeviceDTO generalDeviceDTO : generalDeviceDTOS) { + List monitors = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(generalDeviceDTO.getMonitorIdList())) { + monitors = distributionMonitorMapper.statisticMonitorWithMonitorSort(generalDeviceDTO.getMonitorIdList()); + } + + monitorMap.put(generalDeviceDTO.getName(),monitors); + } + ledgerStaticDTO.setMonitorStatisticsByDept(monitorMap); + // 统计终端 + List terminalIds = new ArrayList<>(); + generalDeviceDTOS.stream().forEach(e -> terminalIds.addAll(e.getTerminalIdList())); + List terminalNumStatistic = distributionMonitorMapper.statisticTerminal(terminalIds); + ledgerStaticDTO.setTerminalStatistics(terminalNumStatistic); + + // 根据单位统计终端数量 + HashMap> terminalsMap = new HashMap<>(); + for (PmsGeneralDeviceDTO generalDeviceDTO : generalDeviceDTOS) { + List terminals = distributionMonitorMapper.statisticTerminal(terminalIds); + terminalsMap.put(generalDeviceDTO.getName(),terminals); + } + ledgerStaticDTO.setTerminalStatisticsByDept(terminalsMap); + + // 统计在线率 + List onlineRateStatistic = distributionMonitorMapper.getOnlineRate(terminalIds); + double sum = onlineRateStatistic.stream().mapToDouble(PmsSimpleDTO::getDoubleValue).sum(); + onlineRateStatistic.forEach(dto -> dto.setDoubleValue(new BigDecimal(dto.getDoubleValue() * 100 / sum).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())); + ledgerStaticDTO.setTerminalStatistics(onlineRateStatistic); + + // 完整性 + List integrityStatistic = distributionMonitorMapper.getIntegrity(terminalIds); + double s = integrityStatistic.stream().mapToDouble(PmsSimpleDTO::getDoubleValue).sum(); + integrityStatistic.forEach(dto -> dto.setDoubleValue(new BigDecimal(dto.getDoubleValue() * 100 / s).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())); + return ledgerStaticDTO; + } }