1.新能源场站统计
This commit is contained in:
@@ -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> 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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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<List<MonitorEnergy>> energy(String deptId){
|
||||
String methodDescribe = getMethodDescribe("energy");
|
||||
List<MonitorEnergy> gwMonitorEnergy = monitorStatisticsService.getGwMonitorEnergy(deptId);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, gwMonitorEnergy, methodDescribe);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<List<PmsNewEnergy>> getNewEnergySelectList(String orgId){
|
||||
public HttpResult<List<PmsNewEnergy>> getNewEnergySelectList(String orgId,String type){
|
||||
String methodDescribe = getMethodDescribe("getNewEnergySelectList");
|
||||
List<PmsNewEnergy> res = newEnergyService.getNewEnergySelectList(orgId);
|
||||
List<PmsNewEnergy> res = newEnergyService.getNewEnergySelectList(orgId,type);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,res,methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
@@ -106,5 +106,6 @@ public interface MonitorMapper extends BaseMapper<Monitor> {
|
||||
|
||||
Map<String, String> getCustomDetailByLineId(@Param("lineId")String lineId);
|
||||
|
||||
|
||||
List<Monitor> selectMonitorAndNewEnergy(@Param("orgIds")List<String> orgIds,
|
||||
@Param("objIds")List<String> objIds);
|
||||
}
|
||||
|
||||
@@ -232,5 +232,27 @@
|
||||
left join sys_dict_data dic on monitor.Voltage_Level = dic.id
|
||||
WHERE monitor.id = #{lineId}
|
||||
</select>
|
||||
<select id="selectMonitorAndNewEnergy" resultType="com.njcn.device.pms.pojo.po.Monitor">
|
||||
SELECT
|
||||
pm.*
|
||||
FROM
|
||||
pms_monitor pm
|
||||
INNER JOIN pms_new_energy pne ON pne.Id = pm.traction_Id
|
||||
<where>
|
||||
<if test="orgIds != null and orgIds.size() != 0">
|
||||
and pm.Org_Id IN
|
||||
<foreach collection="orgIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="objIds != null and objIds.size() != 0">
|
||||
and pm.Obj_Type IN
|
||||
<foreach collection="objIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -29,7 +29,7 @@ public interface IPmsNewEnergyService extends IService<PmsNewEnergy> {
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
List<PmsNewEnergy> getNewEnergySelectList(String orgId);
|
||||
List<PmsNewEnergy> getNewEnergySelectList(String orgId,String type);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,4 +15,11 @@ public interface MonitorStatisticsService {
|
||||
* @Date: 2024/3/22 9:49
|
||||
*/
|
||||
List<List<String>> getGwMonitorStatistics(String deptId);
|
||||
|
||||
/**
|
||||
* @Description: 国网上送新能源场站统计
|
||||
* @Author: wr
|
||||
* @Date: 2024/3/22 9:49
|
||||
*/
|
||||
List<MonitorEnergy> getGwMonitorEnergy(String deptId);
|
||||
}
|
||||
|
||||
@@ -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<List<String>> getGwMonitorStatistics(String deptId) {
|
||||
List<List<String>> info = new ArrayList<>();
|
||||
@@ -90,6 +106,86 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
return info;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MonitorEnergy> getGwMonitorEnergy(String deptId) {
|
||||
List<DictData> data = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData();
|
||||
|
||||
List<List<String>> voltage=new ArrayList<>();
|
||||
//220kv电压等级
|
||||
List<String> than220kv = data.stream().filter(x -> Double.valueOf(x.getValue()) == 220).map(DictData::getId).collect(Collectors.toList());
|
||||
//110kv电压等级
|
||||
List<String> than110kv = data.stream().filter(x -> Double.valueOf(x.getValue()) == 110).map(DictData::getId).collect(Collectors.toList());
|
||||
|
||||
//大于110kv电压等级
|
||||
List<String> greaterThan110kv = data.stream().filter(x -> Double.valueOf(x.getValue()) >= 110).map(DictData::getId).collect(Collectors.toList());
|
||||
//小于于110kv电压等级
|
||||
List<String> 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<String> totalVoltage=new ArrayList<>();
|
||||
totalVoltage.addAll(than220kv);
|
||||
totalVoltage.addAll(than110kv);
|
||||
totalVoltage.addAll(lessThan110kv);
|
||||
voltage.add(totalVoltage);
|
||||
|
||||
List<MonitorEnergy> monitorEnergyList = new ArrayList<>();
|
||||
|
||||
//根据部门进行分组
|
||||
List<DeptGetBase> deptChildrenByParent = getDeptChildrenByParent(deptId);
|
||||
MonitorEnergy monitorEnergy;
|
||||
List<MonitorEnergy.Details> list;
|
||||
//查询所有一级树字典
|
||||
List<DictTreeVO> 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<Monitor> monitors = monitorIdList.selectMonitorAndNewEnergy(pmsGeneralDeviceDTO.getUnitChildrenList(), Arrays.asList(powerStation.getId(), windFarms.getId()));
|
||||
//获取场站台账信息
|
||||
List<PmsNewEnergy> newEnergies = pmsNewEnergyService.list(new LambdaQueryWrapper<PmsNewEnergy>()
|
||||
.in(PmsNewEnergy::getObjType, Arrays.asList(powerStation.getId(), windFarms.getId()))
|
||||
.in(PmsNewEnergy::getOrgId, pmsGeneralDeviceDTO.getUnitChildrenList())
|
||||
);
|
||||
for (DictTreeVO dictTreeVO : dictTreeVOS) {
|
||||
List<Monitor> powerStationMonitors = monitors.stream().filter(x -> x.getObjType().equals(dictTreeVO.getId())).collect(Collectors.toList());
|
||||
List<PmsNewEnergy> 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<MonitorEnergy.VoltageInfo> voltageInfos = new ArrayList<>();
|
||||
for (List<String> 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<String> addmetWorkList(Map<String, List<String>> mapSourceLoad, List<LineDevGetDTO> upToGridList, List<String> line) {
|
||||
long total = 0;
|
||||
for (String s : mapSourceLoad.keySet()) {
|
||||
@@ -138,6 +234,21 @@ public class MonitorStatisticsServiceImpl implements MonitorStatisticsService {
|
||||
}
|
||||
return mapKey;
|
||||
}
|
||||
|
||||
public List<DeptGetBase> getDeptChildrenByParent(String deptId) {
|
||||
List<DeptGetBase> result = new ArrayList<>();
|
||||
List<DeptDTO> deptDTOList = deptFeignClient.getDepSonDetailByDeptId(deptId).getData();
|
||||
List<DeptDTO> 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<String> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -63,9 +63,10 @@ public class PmsNewEnergyServiceImpl extends ServiceImpl<PmsNewEnergyMapper, Pms
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PmsNewEnergy> getNewEnergySelectList(String orgId) {
|
||||
public List<PmsNewEnergy> getNewEnergySelectList(String orgId,String type) {
|
||||
LambdaQueryWrapper<PmsNewEnergy> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(PmsNewEnergy::getState,DataStateEnum.ENABLE.getCode());
|
||||
lambdaQueryWrapper.eq(PmsNewEnergy::getObjType,type);
|
||||
if(StrUtil.isNotBlank(orgId)){
|
||||
List<String> deptCodes = deptFeignClient.getDepSonSelfCodetByDeptId(orgId).getData();
|
||||
lambdaQueryWrapper.in(PmsNewEnergy::getOrgId,deptCodes);
|
||||
|
||||
Reference in New Issue
Block a user