diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/MonitorEnergy.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/MonitorEnergy.java index b1bbd0270..e490ebd8d 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/MonitorEnergy.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/MonitorEnergy.java @@ -27,9 +27,9 @@ public class MonitorEnergy { private String objType; @ApiModelProperty(value = "接入线路电压等级为110kV及以上变电站数量(座)") - private String num; + private Long num; - @ApiModelProperty(value = "接入线路电压等级为110kV及以上变电站数量(座)") + @ApiModelProperty(value = "各类电压等级新能源场站监测信息") List voltageInfo; } @@ -37,22 +37,22 @@ public class MonitorEnergy { public static class VoltageInfo { @ApiModelProperty(value = "已监测数量") - private Integer monitorNum; + private Long monitorNum; @ApiModelProperty(value = "新能源场站总数") - private Integer totalNum; + private Long totalNum; @ApiModelProperty(value = "监测率") - private Float monitorRate; + private Double monitorRate; @ApiModelProperty(value = "装置数量(台)") - private Integer deviceNum; + private Long deviceNum; @ApiModelProperty(value = "覆盖变电站数量(座)") - private Integer substationsNum; + private Long substationsNum; @ApiModelProperty(value = "电站覆盖率(%)") - private Float substationsRate; + private Double substationsRate; } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/MonitorStatisticsController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/MonitorStatisticsController.java index 3c23a4c10..60a9e9813 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/MonitorStatisticsController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/MonitorStatisticsController.java @@ -5,6 +5,7 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.pms.pojo.vo.gw.MonitorEnergy; import com.njcn.device.pms.service.gwPush.MonitorStatisticsService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; @@ -34,5 +35,12 @@ public class MonitorStatisticsController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gwMonitorStatistics, methodDescribe); } - + @PostMapping("/energy") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("新能源场站监测率") + public HttpResult> energy(String deptId){ + String methodDescribe = getMethodDescribe("energy"); + List gwMonitorEnergy = monitorStatisticsService.getGwMonitorEnergy(deptId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gwMonitorEnergy, methodDescribe); + } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsNewEnergyController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsNewEnergyController.java index 53d4639b0..5d11f0a66 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsNewEnergyController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsNewEnergyController.java @@ -11,6 +11,7 @@ import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pms.pojo.param.NewEnergyQueryParam; import com.njcn.device.pms.pojo.po.PmsNewEnergy; import com.njcn.device.pms.service.gwPush.IPmsNewEnergyService; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -31,6 +32,7 @@ import java.util.List; */ @RestController @RequestMapping("/pmsNewEnergy") +@Api(tags = "新能源场站信息管理") @RequiredArgsConstructor public class PmsNewEnergyController extends BaseController { @@ -48,9 +50,9 @@ public class PmsNewEnergyController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("getNewEnergySelectList") @ApiOperation("查询场站台账所有信息") - public HttpResult> getNewEnergySelectList(String orgId){ + public HttpResult> getNewEnergySelectList(String orgId,String type){ String methodDescribe = getMethodDescribe("getNewEnergySelectList"); - List res = newEnergyService.getNewEnergySelectList(orgId); + List res = newEnergyService.getNewEnergySelectList(orgId,type); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,res,methodDescribe); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/MonitorMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/MonitorMapper.java index 5e8df1b24..f47945c0c 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/MonitorMapper.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/MonitorMapper.java @@ -106,5 +106,6 @@ public interface MonitorMapper extends BaseMapper { Map getCustomDetailByLineId(@Param("lineId")String lineId); - + List selectMonitorAndNewEnergy(@Param("orgIds")List orgIds, + @Param("objIds")List objIds); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml index f14f77ddd..9dfb5a969 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml @@ -232,5 +232,27 @@ left join sys_dict_data dic on monitor.Voltage_Level = dic.id WHERE monitor.id = #{lineId} + diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/IPmsNewEnergyService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/IPmsNewEnergyService.java index a61a558ec..5a4212fd4 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/IPmsNewEnergyService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/IPmsNewEnergyService.java @@ -29,7 +29,7 @@ public interface IPmsNewEnergyService extends IService { * @param * @return */ - List getNewEnergySelectList(String orgId); + List getNewEnergySelectList(String orgId,String type); /** diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/MonitorStatisticsService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/MonitorStatisticsService.java index dbe72f835..6837bd237 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/MonitorStatisticsService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/MonitorStatisticsService.java @@ -15,4 +15,11 @@ public interface MonitorStatisticsService { * @Date: 2024/3/22 9:49 */ List> getGwMonitorStatistics(String deptId); + + /** + * @Description: 国网上送新能源场站统计 + * @Author: wr + * @Date: 2024/3/22 9:49 + */ + List getGwMonitorEnergy(String deptId); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorStatisticsServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorStatisticsServiceImpl.java index c07310c46..6cefccaa3 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorStatisticsServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorStatisticsServiceImpl.java @@ -1,23 +1,36 @@ package com.njcn.device.pms.service.gwPush.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.device.biz.pojo.dto.DeptGetBase; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.device.pms.mapper.majornetwork.MonitorMapper; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.device.pms.pojo.po.PmsNewEnergy; +import com.njcn.device.pms.pojo.vo.gw.MonitorEnergy; +import com.njcn.device.pms.service.gwPush.IPmsNewEnergyService; import com.njcn.device.pms.service.gwPush.MonitorStatisticsService; import com.njcn.device.pms.service.ledgerManger.CommTerminalService; +import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.enums.DicTreeEnum; +import com.njcn.system.pojo.po.DictData; import com.njcn.system.pojo.po.SysDicTreePO; +import com.njcn.system.pojo.vo.DictTreeVO; import com.njcn.user.api.DeptFeignClient; -import com.njcn.user.pojo.po.Dept; +import com.njcn.user.pojo.dto.DeptDTO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * pqs @@ -31,7 +44,10 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { private final CommTerminalService commTerminalService; private final DictTreeFeignClient dictTreeFeignClient; - + private final IPmsNewEnergyService pmsNewEnergyService; + private final MonitorMapper monitorIdList; + private final DeptFeignClient deptFeignClient; + private final DicDataFeignClient dicDataFeignClient; @Override public List> getGwMonitorStatistics(String deptId) { List> info = new ArrayList<>(); @@ -90,6 +106,86 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { return info; } + @Override + public List getGwMonitorEnergy(String deptId) { + List data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); + + List> voltage=new ArrayList<>(); + //220kv电压等级 + List than220kv = data.stream().filter(x -> Double.valueOf(x.getValue()) == 220).map(DictData::getId).collect(Collectors.toList()); + //110kv电压等级 + List than110kv = data.stream().filter(x -> Double.valueOf(x.getValue()) == 110).map(DictData::getId).collect(Collectors.toList()); + + //大于110kv电压等级 + List greaterThan110kv = data.stream().filter(x -> Double.valueOf(x.getValue()) >= 110).map(DictData::getId).collect(Collectors.toList()); + //小于于110kv电压等级 + List lessThan110kv = data.stream().filter(x -> Double.valueOf(x.getValue()) < 110).map(DictData::getId).collect(Collectors.toList()); + voltage.add(than220kv); + voltage.add(than110kv); + voltage.add(lessThan110kv); + List totalVoltage=new ArrayList<>(); + totalVoltage.addAll(than220kv); + totalVoltage.addAll(than110kv); + totalVoltage.addAll(lessThan110kv); + voltage.add(totalVoltage); + + List monitorEnergyList = new ArrayList<>(); + + //根据部门进行分组 + List deptChildrenByParent = getDeptChildrenByParent(deptId); + MonitorEnergy monitorEnergy; + List list; + //查询所有一级树字典 + List dictTreeVOS = new ArrayList<>(); + DictTreeVO powerStation = dictTreeFeignClient.queryByCode(DicTreeEnum.Power_Station.getCode()).getData(); + DictTreeVO windFarms = dictTreeFeignClient.queryByCode(DicTreeEnum.Wind_Farms.getCode()).getData(); + dictTreeVOS.add(powerStation); + dictTreeVOS.add(windFarms); + for (DeptGetBase pmsGeneralDeviceDTO : deptChildrenByParent) { + monitorEnergy = new MonitorEnergy(); + list=new ArrayList<>(); + monitorEnergy.setOrgName(pmsGeneralDeviceDTO.getUnitName()); + List monitors = monitorIdList.selectMonitorAndNewEnergy(pmsGeneralDeviceDTO.getUnitChildrenList(), Arrays.asList(powerStation.getId(), windFarms.getId())); + //获取场站台账信息 + List newEnergies = pmsNewEnergyService.list(new LambdaQueryWrapper() + .in(PmsNewEnergy::getObjType, Arrays.asList(powerStation.getId(), windFarms.getId())) + .in(PmsNewEnergy::getOrgId, pmsGeneralDeviceDTO.getUnitChildrenList()) + ); + for (DictTreeVO dictTreeVO : dictTreeVOS) { + List powerStationMonitors = monitors.stream().filter(x -> x.getObjType().equals(dictTreeVO.getId())).collect(Collectors.toList()); + List powerStationEnergies = newEnergies.stream().filter(x -> x.getObjType().equals(dictTreeVO.getId())).collect(Collectors.toList()); + + MonitorEnergy.Details details = new MonitorEnergy.Details(); + details.setObjType(dictTreeVO.getName()); + long count = powerStationMonitors.stream().filter(x -> greaterThan110kv.contains(x.getVoltageLevel())).map(Monitor::getPowerrId).distinct().count(); + details.setNum(count); + + List voltageInfos = new ArrayList<>(); + for (List strings : voltage) { + MonitorEnergy.VoltageInfo info=new MonitorEnergy.VoltageInfo(); + long monitorNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getTractionId).distinct().count(); + info.setMonitorNum(monitorNum); + long totalNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getId).distinct().count(); + info.setTotalNum(totalNum); + info.setMonitorRate(totalNum==0?0:NumberUtil.div(monitorNum*100.0, totalNum, 2)); + long deviceNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getTerminalId).distinct().count(); + info.setDeviceNum(deviceNum); + long SubsNum = powerStationMonitors.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(Monitor::getPowerrId).distinct().count(); + long SubstationsNum = powerStationEnergies.stream().filter(x -> strings.contains(x.getVoltageLevel())).map(PmsNewEnergy::getPowerrName).distinct().count(); + info.setSubstationsNum(SubstationsNum); + info.setSubstationsRate(SubstationsNum==0?0:NumberUtil.div(SubsNum*100.0, SubstationsNum, 2)); + voltageInfos.add(info); + } + + details.setVoltageInfo(voltageInfos); + list.add(details); + monitorEnergy.setInfo(list); + } + monitorEnergyList.add(monitorEnergy); + } + return monitorEnergyList; + } + private List addmetWorkList(Map> mapSourceLoad, List upToGridList, List line) { long total = 0; for (String s : mapSourceLoad.keySet()) { @@ -138,6 +234,21 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService { } return mapKey; } - + public List getDeptChildrenByParent(String deptId) { + List result = new ArrayList<>(); + List deptDTOList = deptFeignClient.getDepSonDetailByDeptId(deptId).getData(); + List deptList = deptFeignClient.getDeptDescendantIndexes(deptId, Stream.of(0, 1).collect(Collectors.toList())).getData(); + deptDTOList.forEach(it -> { + DeptGetBase deptGetBase = new DeptGetBase(); + deptGetBase.setUnitId(it.getCode()); + deptGetBase.setUnitName(it.getName()); + List deptChildren = deptList.stream().filter(deptDTO -> deptDTO.getPids().contains(it.getId())).map(DeptDTO::getCode).collect(Collectors.toList()); + deptChildren.add(it.getCode()); + deptGetBase.setUnitChildrenList(deptChildren); + deptGetBase.setDeptLevel(it.getPids().split(StrUtil.COMMA).length); + result.add(deptGetBase); + }); + return result; + } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/PmsNewEnergyServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/PmsNewEnergyServiceImpl.java index 50c4a8262..70f6a62cb 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/PmsNewEnergyServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/PmsNewEnergyServiceImpl.java @@ -63,9 +63,10 @@ public class PmsNewEnergyServiceImpl extends ServiceImpl getNewEnergySelectList(String orgId) { + public List getNewEnergySelectList(String orgId,String type) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(PmsNewEnergy::getState,DataStateEnum.ENABLE.getCode()); + lambdaQueryWrapper.eq(PmsNewEnergy::getObjType,type); if(StrUtil.isNotBlank(orgId)){ List deptCodes = deptFeignClient.getDepSonSelfCodetByDeptId(orgId).getData(); lambdaQueryWrapper.in(PmsNewEnergy::getOrgId,deptCodes);