辽宁功能调整

This commit is contained in:
2025-04-27 08:47:41 +08:00
parent 9d6a5875f6
commit cb94792a57
16 changed files with 306 additions and 52 deletions

View File

@@ -20,7 +20,7 @@ public enum LineBaseEnum {
PROVINCE_LEVEL(1, "省份"), PROVINCE_LEVEL(1, "省份"),
GD_LEVEL(2, "供电公司"), GD_LEVEL(2, "供电公司"),
SUB_LEVEL(3, "变电站"), SUB_LEVEL(3, "变电站"),
DEVICE_LEVEL(4, "设备"), DEVICE_LEVEL(4, "终端"),
SUB_V_LEVEL(5, "母线"), SUB_V_LEVEL(5, "母线"),
LINE_LEVEL(6, "监测点"), LINE_LEVEL(6, "监测点"),
USER_LEVEL(7,"用户"), USER_LEVEL(7,"用户"),

View File

@@ -0,0 +1,48 @@
package com.njcn.device.pq.pojo.dto;
import lombok.Data;
import java.util.List;
/**
* @Author: cdf
* @CreateTime: 2025-04-25
* @Description: 区分电网侧非电网侧信息台账信息
*/
@Data
public class MonitorPowerDTO {
private List<MonitorBase> userMonitorList;
private List<MonitorBase> powerMonitorList;
private List<MonitorBase> userStationList;
private List<MonitorBase> powerStationList;
@Data
public static class MonitorBase{
private String id;
private String pid;
private String pids;
private String name;
private Integer sort;
private String objId;
private String bigObjType;
private String smallObjType;
}
}

View File

@@ -24,6 +24,8 @@ public class OverLimitLineDTO {
private String lineObjectName; private String lineObjectName;
private String objId;
private String monitorNumber; private String monitorNumber;
private String subName; private String subName;

View File

@@ -738,7 +738,7 @@
A1.Name lineName, A1.Name lineName,
C1.Name lineScale, C1.Name lineScale,
C2.Name loadType, C2.Name loadType,
D.Obj_Name lineObjectName, D.Obj_Id objId,
D.Monitor_Id monitorNumber, D.Monitor_Id monitorNumber,
A4.Name subName, A4.Name subName,
C3.Name subScale, C3.Name subScale,

View File

@@ -25,6 +25,7 @@ import com.njcn.device.pq.enums.LineBaseEnum;
import com.njcn.device.pq.mapper.*; import com.njcn.device.pq.mapper.*;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.biz.pojo.dto.PollutionLineDTO; import com.njcn.device.biz.pojo.dto.PollutionLineDTO;
import com.njcn.device.pq.pojo.dto.MonitorPowerDTO;
import com.njcn.device.pq.pojo.dto.PollutionParamDTO; import com.njcn.device.pq.pojo.dto.PollutionParamDTO;
import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
import com.njcn.device.pq.pojo.param.*; import com.njcn.device.pq.pojo.param.*;
@@ -772,6 +773,8 @@ public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements Li
return pollutionLineInfoDTOList; return pollutionLineInfoDTOList;
} }
@Override @Override
public List<Overlimit> getOverLimitByList(PollutionParamDTO pollutionParamDTO) { public List<Overlimit> getOverLimitByList(PollutionParamDTO pollutionParamDTO) {
return overlimitMapper.selectBatchIds(pollutionParamDTO.getLineList()); return overlimitMapper.selectBatchIds(pollutionParamDTO.getLineList());

View File

@@ -230,6 +230,12 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) { if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
// 创建集合 // 创建集合
List<TerminalTree> taiZhang = new ArrayList<>(); List<TerminalTree> taiZhang = new ArrayList<>();
// 获取用户
UserReportParam userReportParam = new UserReportParam();
List<UserLedgerVO> userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData();
userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList());
Map<String, UserLedgerVO> userMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
// 遍历集合 // 遍历集合
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
// 创建实体类 // 创建实体类
@@ -253,10 +259,6 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
Map<String,List<TerminalTree>> temMap = new HashMap<>(); Map<String,List<TerminalTree>> temMap = new HashMap<>();
if(CollUtil.isNotEmpty(userLineList)) { if(CollUtil.isNotEmpty(userLineList)) {
Map<String, List<TerminalTree>> objMap = userLineList.stream().collect(Collectors.groupingBy(TerminalTree::getObjId)); Map<String, List<TerminalTree>> objMap = userLineList.stream().collect(Collectors.groupingBy(TerminalTree::getObjId));
UserReportParam userReportParam = new UserReportParam();
List<UserLedgerVO> userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData();
userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList());
Map<String, UserLedgerVO> userMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
List<TerminalTree> temList = new ArrayList<>(); List<TerminalTree> temList = new ArrayList<>();
objMap.forEach((objId, monitorList) -> { objMap.forEach((objId, monitorList) -> {
UserLedgerVO userLedgerVO = userMap.get(objId); UserLedgerVO userLedgerVO = userMap.get(objId);
@@ -275,7 +277,6 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
tree.setPids(String.valueOf(devSize)); tree.setPids(String.valueOf(devSize));
temList.add(tree); temList.add(tree);
}); });
temMap = temList.stream().collect(Collectors.groupingBy(TerminalTree::getPid)); temMap = temList.stream().collect(Collectors.groupingBy(TerminalTree::getPid));
} }

View File

@@ -20,4 +20,7 @@ public class HarmonicPublicParam extends DeviceInfoParam.BusinessParam{
@ApiModelProperty(name = "type", value = "区分(0:pq 1:pms)") @ApiModelProperty(name = "type", value = "区分(0:pq 1:pms)")
private Integer type=0; private Integer type=0;
@ApiModelProperty(name = "stationType", value = "(0:变电站 1:非变电站场站)")
private Integer stationType;
} }

View File

@@ -35,7 +35,13 @@ public class SteadyQualifyVO implements Serializable {
* 父级id集合 * 父级id集合
*/ */
@ApiModelProperty("父级id集合") @ApiModelProperty("父级id集合")
private String pidS; private String pids;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("监测对象id")
private String objId;
/** /**
* 电压等级 * 电压等级
*/ */

View File

@@ -112,12 +112,20 @@
<artifactId>cs-device-api</artifactId> <artifactId>cs-device-api</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.njcn.platform</groupId> <groupId>com.njcn.platform</groupId>
<artifactId>data-processing-api</artifactId> <artifactId>data-processing-api</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.njcn</groupId>
<artifactId>supervision-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -50,7 +50,19 @@ public class PollutionSubstationController extends BaseController {
public HttpResult<List<PollutionSubstationVO>> getPollutionSubstationData(@RequestBody @Validated PollutionSubstationQuryParam pollutionSubstationQuryParam) { public HttpResult<List<PollutionSubstationVO>> getPollutionSubstationData(@RequestBody @Validated PollutionSubstationQuryParam pollutionSubstationQuryParam) {
String methodDescribe = getMethodDescribe ("getPollutionSubstationData"); String methodDescribe = getMethodDescribe ("getPollutionSubstationData");
LogUtil.njcnDebug(log, "{},实体参数:{}", methodDescribe, pollutionSubstationQuryParam); LogUtil.njcnDebug(log, "{},实体参数:{}", methodDescribe, pollutionSubstationQuryParam);
List<PollutionSubstationVO> list = pollutionSubstationService.getPollutionSubstationData (pollutionSubstationQuryParam); List<PollutionSubstationVO> list = pollutionSubstationService.getPollutionSubstationData(pollutionSubstationQuryParam);
return HttpResultUtil.assembleCommonResponseResult (CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getEnergyStationPollution")
@ApiOperation("新能源场站污区图")
@ApiImplicitParam(name = "pollutionSubstationQuryParam", value = "污染指标查询参数", required = true)
public HttpResult<List<PollutionSubstationVO>> getEnergyStationPollution(@RequestBody @Validated PollutionSubstationQuryParam pollutionSubstationQuryParam) {
String methodDescribe = getMethodDescribe ("getEnergyStationPollution");
List<PollutionSubstationVO> list = pollutionSubstationService.getEnergyStationPollution(pollutionSubstationQuryParam);
return HttpResultUtil.assembleCommonResponseResult (CommonResponseEnum.SUCCESS, list, methodDescribe); return HttpResultUtil.assembleCommonResponseResult (CommonResponseEnum.SUCCESS, list, methodDescribe);
} }

View File

@@ -9,12 +9,15 @@
A.Pid, A.Pid,
A.Pids, A.Pids,
A.Name name, A.Name name,
A.sort,
C.Name voltageLevel, C.Name voltageLevel,
D.IP networkParam, D.IP networkParam,
C1.Name factoryName, C1.Name factoryName,
A.Name lineName A.Name lineName,
detail.obj_id
FROM FROM
pq_line A, pq_line A,
pq_line_detail detail,
pq_voltage B, pq_voltage B,
sys_dict_data C, sys_dict_data C,
pq_device D, pq_device D,
@@ -25,6 +28,7 @@
<foreach item="item" collection="list" separator="," open="(" close=")"> <foreach item="item" collection="list" separator="," open="(" close=")">
#{item} #{item}
</foreach> </foreach>
AND A.id = detail.id
AND A.Pid = B.Id AND A.Pid = B.Id
AND B.Scale = C.Id AND B.Scale = C.Id
AND A.Pid = A1.Id AND A.Pid = A1.Id
@@ -37,7 +41,8 @@
Id, Id,
Pid, Pid,
Pids, Pids,
Name Name,
sort
FROM FROM
pq_line pq_line
WHERE WHERE

View File

@@ -36,6 +36,10 @@ public interface PollutionSubstationService extends IService<RStatPollutionSubst
* @Date: 2022/10/13 * @Date: 2022/10/13
*/ */
List<PollutionSubstationVO> getPollutionSubstationData(PollutionSubstationQuryParam pollutionSubstationQuryParam); List<PollutionSubstationVO> getPollutionSubstationData(PollutionSubstationQuryParam pollutionSubstationQuryParam);
List<PollutionSubstationVO> getEnergyStationPollution(PollutionSubstationQuryParam pollutionSubstationQuryParam);
/** /**
* @Description: getDeptSubstationRelations * @Description: getDeptSubstationRelations
* @Param: [param] * @Param: [param]

View File

@@ -37,6 +37,9 @@ import com.njcn.harmonic.pojo.vo.OverAreaVO;
import com.njcn.harmonic.pojo.vo.WarningSubstationVO; import com.njcn.harmonic.pojo.vo.WarningSubstationVO;
import com.njcn.harmonic.service.IAnalyzeService; import com.njcn.harmonic.service.IAnalyzeService;
import com.njcn.poi.excel.ExcelUtil; import com.njcn.poi.excel.ExcelUtil;
import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.enums.DicDataTypeEnum;
@@ -83,6 +86,8 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
private final EventDetailFeignClient eventDetailFeignClient; private final EventDetailFeignClient eventDetailFeignClient;
private final DicDataFeignClient dicDataFeignClient; private final DicDataFeignClient dicDataFeignClient;
private final UserLedgerFeignClient userLedgerFeignClient;
@Override @Override
public Page<OverAreaLimitVO> getAreaData(OverAreaVO param) { public Page<OverAreaLimitVO> getAreaData(OverAreaVO param) {
Page<OverAreaLimitVO> page = new Page<>(); Page<OverAreaLimitVO> page = new Page<>();
@@ -317,10 +322,17 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
.in("r_stat_limit_target_d.my_index", list).between("r_stat_limit_target_d.time_id", DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())), .in("r_stat_limit_target_d.my_index", list).between("r_stat_limit_target_d.time_id", DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())),
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())))); DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))));
Map<String, List<RStatLimitTargetDPO>> rsMap = rStatLimitTargetDPOS.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId)); Map<String, List<RStatLimitTargetDPO>> rsMap = rStatLimitTargetDPOS.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId));
List<UserLedgerVO> userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData();
Map<String,UserLedgerVO> userLedgerVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity()));
for (OverLimitLineDTO vo : overLimitLineList) { for (OverLimitLineDTO vo : overLimitLineList) {
MonitorOverLimitVO monitorOverLimitVO = new MonitorOverLimitVO(); MonitorOverLimitVO monitorOverLimitVO = new MonitorOverLimitVO();
BeanUtil.copyProperties(vo, monitorOverLimitVO); BeanUtil.copyProperties(vo, monitorOverLimitVO);
MonitorOverLimitVO source = monMap.get(vo.getId()).get(0); MonitorOverLimitVO source = monMap.get(vo.getId()).get(0);
UserLedgerVO userLedgerVO = userLedgerVOMap.getOrDefault(vo.getObjId(),null);
monitorOverLimitVO.setLineObjectName(Objects.nonNull(userLedgerVO)?userLedgerVO.getProjectName():"/");
monitorOverLimitVO.setOverDay(source.getOverDay()); monitorOverLimitVO.setOverDay(source.getOverDay());
monitorOverLimitVO.setVolDevOverDay(source.getVolDevOverDay()); monitorOverLimitVO.setVolDevOverDay(source.getVolDevOverDay());
monitorOverLimitVO.setFreqOverDay(source.getFreqOverDay()); monitorOverLimitVO.setFreqOverDay(source.getFreqOverDay());

View File

@@ -15,6 +15,7 @@ import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.enums.RunFlagEnum;
import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.dto.*;
import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.pms.api.MonitorClient; import com.njcn.device.pms.api.MonitorClient;
@@ -28,9 +29,11 @@ import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.api.SubstationFeignClient; import com.njcn.device.pq.api.SubstationFeignClient;
import com.njcn.device.pq.enums.LineBaseEnum;
import com.njcn.device.pq.pojo.dto.*; import com.njcn.device.pq.pojo.dto.*;
import com.njcn.device.pq.pojo.param.GridDiagramParam; import com.njcn.device.pq.pojo.param.GridDiagramParam;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam; import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.po.Line;
import com.njcn.device.pq.pojo.po.LineDetail; import com.njcn.device.pq.pojo.po.LineDetail;
import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.device.pq.pojo.vo.GridDiagramVO;
import com.njcn.harmonic.constant.Param; import com.njcn.harmonic.constant.Param;
@@ -45,6 +48,10 @@ import com.njcn.harmonic.pojo.vo.PollutionSubstationVO;
import com.njcn.harmonic.pojo.vo.PollutionVO; import com.njcn.harmonic.pojo.vo.PollutionVO;
import com.njcn.harmonic.pojo.vo.SubstationVo; import com.njcn.harmonic.pojo.vo.SubstationVo;
import com.njcn.harmonic.service.PollutionSubstationService; import com.njcn.harmonic.service.PollutionSubstationService;
import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
import com.njcn.user.api.DeptFeignClient; import com.njcn.user.api.DeptFeignClient;
@@ -111,6 +118,8 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
private final DicDataFeignClient dicDataFeignClient; private final DicDataFeignClient dicDataFeignClient;
private final RStatLimitRateDMapper rStatLimitRateDMapper; private final RStatLimitRateDMapper rStatLimitRateDMapper;
private final UserLedgerFeignClient userLedgerFeignClient;
/** /**
* @param pollutionSubstationQuryParam * @param pollutionSubstationQuryParam
* @Description: getPollutionSubstationData * @Description: getPollutionSubstationData
@@ -186,6 +195,32 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
return result; return result;
} }
@Override
public List<PollutionSubstationVO> getEnergyStationPollution(PollutionSubstationQuryParam pollutionSubstationQuryParam) {
List<PollutionSubstationVO> result = new ArrayList<>();
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
deptGetLineParam.setDeptId(pollutionSubstationQuryParam.getDeptIndex());
deptGetLineParam.setLineRunFlag(RunFlagEnum.RUNNING.getStatus());
List<DeptGetChildrenMoreDTO> deptLineList = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
if(CollUtil.isNotEmpty(deptLineList)){
UserReportParam userReportParam = new UserReportParam();
List<UserLedgerVO> userLedgerList = userLedgerFeignClient.selectUserList(userReportParam).getData();
Map<String,UserLedgerVO> userMap = userLedgerList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity()));
for(DeptGetChildrenMoreDTO dto : deptLineList){
List<LineDevGetDTO> monitorList = dto.getLineBaseList();
if(CollUtil.isEmpty(monitorList)){
continue;
}
List<String> objIds = monitorList.stream().map(LineDevGetDTO::getObjId).distinct().collect(Collectors.toList());
//List<UserLedgerVO>userLedgerList.stream().filter(it->objIds.contains(it.getId())).collect(Collectors.toList());
}
}
return result;
}
/** /**
* @Description: getDeptSubstationRelations * @Description: getDeptSubstationRelations
* @Param: [param] * @Param: [param]
@@ -201,8 +236,12 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
if (StringUtils.isBlank(RequestUtil.getDeptIndex())) { if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
return list; return list;
} }
List<UserLedgerVO> userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData();
Map<String,UserLedgerVO> userLedgerVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity()));
if (harmonicPublicParam.getType() != 0) { if (harmonicPublicParam.getType() != 0) {
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam(); /* PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
pmsDeviceInfoParam.setDeptIndex(harmonicPublicParam.getDeptIndex()); pmsDeviceInfoParam.setDeptIndex(harmonicPublicParam.getDeptIndex());
//获取统计类型 //获取统计类型
pmsDeviceInfoParam.setStatisticalType(harmonicPublicParam.getStatisticalType()); pmsDeviceInfoParam.setStatisticalType(harmonicPublicParam.getStatisticalType());
@@ -246,7 +285,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
pollutionVO.setChildren(powersVO); pollutionVO.setChildren(powersVO);
} }
list.add(pollutionVO); list.add(pollutionVO);
}); });*/
} else { } else {
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName()); harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
@@ -264,18 +303,48 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
pollutionVO.setName(name + "\n(" + temp.getLineIndexes().size() + ")"); pollutionVO.setName(name + "\n(" + temp.getLineIndexes().size() + ")");
pollutionVO.setData(3.14159); pollutionVO.setData(3.14159);
setData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionVO, detpid); setData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionVO, detpid);
List<PollutionVO> subPollutionVO = new ArrayList<>(); List<PollutionVO> subPollutionVO = new ArrayList<>();
subIndexes.forEach(subIndex -> {
PollutionVO pollutionsubVO = new PollutionVO(); List<LineDetail> lineDetailList = lineFeignClient.getLineDetail(temp.getLineIndexes()).getData();
PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(subIndex).getData(); if(CollUtil.isNotEmpty(lineDetailList)){
String id = pollutionSubstationDTO.getId(); List<LineDetail> userLedgerList = lineDetailList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList());
pollutionsubVO.setId(id); List<LineDetail> powerLedgerList = lineDetailList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList());
pollutionsubVO.setName(pollutionSubstationDTO.getName()); if(CollUtil.isNotEmpty(userLedgerList)){
pollutionsubVO.setPid(temp.getIndex()); List<String> objIds = userLedgerList.stream().map(LineDetail::getObjId).distinct().collect(Collectors.toList());
pollutionsubVO.setData(3.14159); objIds.forEach(obj->{
setSubData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionsubVO, id); PollutionVO pollutionsubVO = new PollutionVO();
subPollutionVO.add(pollutionsubVO); if(userLedgerVOMap.containsKey(obj)){
}); UserLedgerVO userLedgerVO = userLedgerVOMap.get(obj);
pollutionsubVO.setId(userLedgerVO.getId());
pollutionsubVO.setName(userLedgerVO.getProjectName());
pollutionsubVO.setPid(temp.getIndex());
pollutionsubVO.setData(3.14159);
setSubData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionsubVO, userLedgerVO.getId());
subPollutionVO.add(pollutionsubVO);
}
});
}
if(CollUtil.isNotEmpty(powerLedgerList)){
List<String> ids = powerLedgerList.stream().map(LineDetail::getId).collect(Collectors.toList());
List<Line> lineList = lineFeignClient.getBaseLineList(ids).getData();
List<String> subIds = lineList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).distinct().collect(Collectors.toList());
List<Line> subList = lineFeignClient.getBaseLineList(subIds).getData();
subList.forEach(station->{
PollutionVO pollutionsubVO = new PollutionVO();
pollutionsubVO.setId(station.getId());
pollutionsubVO.setName(station.getName());
pollutionsubVO.setPid(temp.getIndex());
pollutionsubVO.setData(3.14159);
setSubData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionsubVO, station.getId());
subPollutionVO.add(pollutionsubVO);
});
}
}
pollutionVO.setChildren(subPollutionVO); pollutionVO.setChildren(subPollutionVO);
list.add(pollutionVO); list.add(pollutionVO);
} }

View File

@@ -10,6 +10,7 @@ import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.enums.LineBaseEnum; import com.njcn.device.pq.enums.LineBaseEnum;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.vo.TerminalTree;
import com.njcn.harmonic.mapper.SteadyQualifyMapper; import com.njcn.harmonic.mapper.SteadyQualifyMapper;
import com.njcn.harmonic.pojo.dto.SteadyQualifyDTO; import com.njcn.harmonic.pojo.dto.SteadyQualifyDTO;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
@@ -18,12 +19,16 @@ import com.njcn.harmonic.pojo.vo.SteadyQualifyVO;
import com.njcn.harmonic.service.IRStatLimitRateDService; import com.njcn.harmonic.service.IRStatLimitRateDService;
import com.njcn.harmonic.service.SteadyQualifyService; import com.njcn.harmonic.service.SteadyQualifyService;
import com.njcn.harmonic.utils.PubUtils; import com.njcn.harmonic.utils.PubUtils;
import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -41,25 +46,29 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
private final IRStatLimitRateDService rateDService; private final IRStatLimitRateDService rateDService;
private final UserLedgerFeignClient userLedgerFeignClient;
@Override @Override
public List<SteadyQualifyVO> getSteadyQualifyData(DeviceInfoParam.BusinessParam steadyParam) { public List<SteadyQualifyVO> getSteadyQualifyData(DeviceInfoParam.BusinessParam steadyParam) {
List<SteadyQualifyVO> steadyQualifyList = new ArrayList<>(); List<SteadyQualifyVO> steadyQualifyList = new ArrayList<>();
UserReportParam userReportParam = new UserReportParam();
List<UserLedgerVO> userLedgerList = userLedgerFeignClient.selectUserList(userReportParam).getData();
Map<String, UserLedgerVO> userMap = userLedgerList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
//按照条件获取实际运行终端综合信息 //按照条件获取实际运行终端综合信息
List<GeneralDeviceDTO> deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyParam).getData(); List<GeneralDeviceDTO> deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyParam).getData();
//组装监测点Top层集合 //组装监测点Top层集合
for (GeneralDeviceDTO generalDeviceDTO : deviceDataList) { for (GeneralDeviceDTO generalDeviceDTO : deviceDataList) {
List<String> lineIndexes = generalDeviceDTO.getLineIndexes(); if (CollectionUtils.isEmpty(generalDeviceDTO.getLineIndexes())) {
if (CollectionUtils.isEmpty(lineIndexes)) {
continue; continue;
} }
SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO(); SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO();
steadyQualifyVO.setId(generalDeviceDTO.getIndex()); steadyQualifyVO.setId(generalDeviceDTO.getIndex());
steadyQualifyVO.setName(generalDeviceDTO.getName()); steadyQualifyVO.setName(generalDeviceDTO.getName());
// List<SteadyQualifyVO> lineData = steadyQualifyMapper.getSteadyQualifyData(lineIndexes); List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(generalDeviceDTO.getLineIndexes(), steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
//组装子集级数据树 //组装子集级数据树
List<SteadyQualifyVO> treeList = getTreeData(qualifiesRate, lineIndexes); List<SteadyQualifyVO> treeList = getTreeData(qualifiesRate, generalDeviceDTO,userMap);
if (CollectionUtil.isNotEmpty(treeList)) { if (CollectionUtil.isNotEmpty(treeList)) {
List<SteadyQualifyVO> flicker = treeList.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList()); List<SteadyQualifyVO> flicker = treeList.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> freqOffset = treeList.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList()); List<SteadyQualifyVO> freqOffset = treeList.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList());
@@ -205,20 +214,10 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
/** /**
* 获取父级每层数据 * 获取父级每层数据
*/ */
private List<SteadyQualifyVO> getTreeData(List<SteadyQualifyDTO> qualifiesRate, List<String> lineIndexes) { private List<SteadyQualifyVO> getTreeData(List<SteadyQualifyDTO> qualifiesRate, GeneralDeviceDTO generalDeviceDTO,Map<String, UserLedgerVO> userMap) {
//监测点集合 //监测点集合
List<SteadyQualifyVO> monitorList = steadyQualifyMapper.getSteadyQualifyData(lineIndexes); List<SteadyQualifyVO> treeMonitorList = steadyQualifyMapper.getSteadyQualifyData(generalDeviceDTO.getLineIndexes());
//母线集合 treeMonitorList.forEach(steadyQualifyVO -> {
List<SteadyQualifyVO> busBarList = steadyQualifyMapper.getLineInfoByList(monitorList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
//终端集合
List<SteadyQualifyVO> deviceList = steadyQualifyMapper.getLineInfoByList(busBarList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
//变电站集合
List<SteadyQualifyVO> substationList = steadyQualifyMapper.getLineInfoByList(deviceList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
//供电公司集合
List<SteadyQualifyVO> powerCompanyList = steadyQualifyMapper.getLineInfoByList(substationList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
// List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
monitorList.forEach(steadyQualifyVO -> {
SteadyQualifyVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyQualifyVO.getId()); SteadyQualifyVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyQualifyVO.getId());
steadyQualifyVO.setFlicker(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFlicker())); steadyQualifyVO.setFlicker(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFlicker()));
steadyQualifyVO.setFreqOffset(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFreqOffset())); steadyQualifyVO.setFreqOffset(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFreqOffset()));
@@ -229,21 +228,85 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
steadyQualifyVO.setHarmonicCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicCurrent())); steadyQualifyVO.setHarmonicCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicCurrent()));
steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic())); steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic()));
}); });
setChildesList(substationList, monitorList);
setFatherDistortion(substationList);
powerCompanyList.stream().peek(item -> item.setChildren(getChildCategoryList(item, substationList))).collect(Collectors.toList()); List<SteadyQualifyVO> userLineList = treeMonitorList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList());
setFatherDistortion(powerCompanyList); List<SteadyQualifyVO> otherLineList = treeMonitorList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList());
Map<String,List<SteadyQualifyVO>> temMap = new HashMap<>();
if(CollUtil.isNotEmpty(userLineList)) {
Map<String, List<SteadyQualifyVO>> objMap = userLineList.stream().collect(Collectors.groupingBy(SteadyQualifyVO::getObjId));
List<SteadyQualifyVO> temList = new ArrayList<>();
objMap.forEach((objId, monitorList) -> {
UserLedgerVO userLedgerVO = userMap.get(objId);
SteadyQualifyVO tree = new SteadyQualifyVO();
tree.setPid(userLedgerVO.getStationId());
tree.setId(userLedgerVO.getId());
tree.setChildren(monitorList);
tree.setName(userLedgerVO.getProjectName());
setFatherDistortion(tree,monitorList);
temList.add(tree);
});
temMap = temList.stream().collect(Collectors.groupingBy(SteadyQualifyVO::getPid));
}
//变电站集合
List<SteadyQualifyVO> substationList = steadyQualifyMapper.getLineInfoByList(generalDeviceDTO.getSubIndexes());
//供电公司集合
List<SteadyQualifyVO> powerCompanyList = steadyQualifyMapper.getLineInfoByList(generalDeviceDTO.getGdIndexes());
dealChildrenData(substationList,otherLineList,temMap,true);
dealChildrenData(powerCompanyList,substationList,temMap,false);
return powerCompanyList; return powerCompanyList;
} }
/**
* 处理变电站
*
* @param targetData
* @param childrenData
* @param isLine
*/
private void dealChildrenData(List<SteadyQualifyVO> targetData, List<SteadyQualifyVO> childrenData, Map<String,List<SteadyQualifyVO>> userLineMap, boolean isLine) {
// 创建一个map集合用于封装对象
Map<String, List<SteadyQualifyVO>> groupLine;
if (isLine) {
// 通过stream流分组
groupLine = childrenData.stream().collect(Collectors.groupingBy(terminalTree -> {
// 获取父id字符串通过 逗号 分割 成一个数组
String[] pid = terminalTree.getPids().split(StrUtil.COMMA);
return pid[LineBaseEnum.SUB_LEVEL.getCode()];
}));
} else {
groupLine = childrenData.stream().collect(Collectors.groupingBy(SteadyQualifyVO::getPid));
}
//变电站
targetData.forEach(terminalTree -> {
List<SteadyQualifyVO> terminalTrees = new ArrayList<>();
if(groupLine.containsKey(terminalTree.getId())) {
terminalTrees.addAll(groupLine.get(terminalTree.getId()).stream().sorted(Comparator.comparing(SteadyQualifyVO::getSort)).collect(Collectors.toList()));
}
if (isLine) {
//变电站集合
if(userLineMap.containsKey(terminalTree.getId())){
List<SteadyQualifyVO> userList = userLineMap.get(terminalTree.getId());
terminalTrees.addAll(userList);
}
terminalTree.setChildren(terminalTrees);
} else {
terminalTree.setChildren(terminalTrees);
}
setFatherDistortion(terminalTree,terminalTrees);
});
}
/** /**
* 计算父级合格率 * 计算父级合格率
*/ */
private void setFatherDistortion(List<SteadyQualifyVO> list) { private void setFatherDistortion(SteadyQualifyVO steadyQualifyVO,List<SteadyQualifyVO> children) {
list.forEach(steadyQualifyVO -> {
List<SteadyQualifyVO> children = steadyQualifyVO.getChildren();
List<SteadyQualifyVO> flicker = children.stream().filter(child -> !Objects.equals(child.getFlicker(), 3.14159)).collect(Collectors.toList()); List<SteadyQualifyVO> flicker = children.stream().filter(child -> !Objects.equals(child.getFlicker(), 3.14159)).collect(Collectors.toList());
List<SteadyQualifyVO> freqOffset = children.stream().filter(child -> !Objects.equals(child.getFreqOffset(), 3.14159)).collect(Collectors.toList()); List<SteadyQualifyVO> freqOffset = children.stream().filter(child -> !Objects.equals(child.getFreqOffset(), 3.14159)).collect(Collectors.toList());
List<SteadyQualifyVO> voltageOffset = children.stream().filter(child -> !Objects.equals(child.getVoltageOffset(), 3.14159)).collect(Collectors.toList()); List<SteadyQualifyVO> voltageOffset = children.stream().filter(child -> !Objects.equals(child.getVoltageOffset(), 3.14159)).collect(Collectors.toList());
@@ -276,7 +339,6 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
if (!CollectionUtils.isEmpty(InterHarmonic)) { if (!CollectionUtils.isEmpty(InterHarmonic)) {
steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(NumberUtil.round(InterHarmonic.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue())); steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(NumberUtil.round(InterHarmonic.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue()));
} }
});
} }
/** /**
@@ -289,12 +351,14 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
private void setChildesList(List<SteadyQualifyVO> item, List<SteadyQualifyVO> childes) { private void setChildesList(List<SteadyQualifyVO> item, List<SteadyQualifyVO> childes) {
Map<String, List<SteadyQualifyVO>> groupLine; Map<String, List<SteadyQualifyVO>> groupLine;
groupLine = childes.stream().collect(Collectors.groupingBy(steadyQualifyVO -> { groupLine = childes.stream().collect(Collectors.groupingBy(steadyQualifyVO -> {
String[] pid = steadyQualifyVO.getPidS().split(","); String[] pid = steadyQualifyVO.getPids().split(",");
return pid[LineBaseEnum.SUB_LEVEL.getCode()]; return pid[LineBaseEnum.SUB_LEVEL.getCode()];
})); }));
item.stream().peek(steadyQualifyVO -> { item.stream().peek(steadyQualifyVO -> {
if (!CollectionUtils.isEmpty(groupLine.get(steadyQualifyVO.getId()))) { if (!CollectionUtils.isEmpty(groupLine.get(steadyQualifyVO.getId()))) {
steadyQualifyVO.setChildren(groupLine.get(steadyQualifyVO.getId())); steadyQualifyVO.setChildren(groupLine.get(steadyQualifyVO.getId()));
setFatherDistortion(steadyQualifyVO,steadyQualifyVO.getChildren());
} }
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
@@ -671,7 +735,6 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic())); steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic()));
}); });
setChildesList(substationList, monitorList); setChildesList(substationList, monitorList);
setFatherDistortion(substationList);
return substationList; return substationList;

View File

@@ -0,0 +1,18 @@
package com.njcn.harmonic.service.report;
import com.njcn.harmonic.pojo.param.ReportSearchParam;
import com.njcn.harmonic.pojo.po.ExcelRptTemp;
import javax.servlet.http.HttpServletResponse;
public interface CnCustomReportService {
/**
* 根据id获取模板
* @author qijian
* @date 2022/10/18
*/
void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response);
}