From cb94792a57a2ed99dacff51e6bcc99ae94306d19 Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Sun, 27 Apr 2025 08:47:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BE=BD=E5=AE=81=E5=8A=9F=E8=83=BD=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../njcn/device/pq/enums/LineBaseEnum.java | 2 +- .../device/pq/pojo/dto/MonitorPowerDTO.java | 48 +++++++ .../device/pq/pojo/dto/OverLimitLineDTO.java | 2 + .../device/pq/mapper/mapping/LineMapper.xml | 2 +- .../pq/service/impl/LineServiceImpl.java | 3 + .../service/impl/TerminalTreeServiceImpl.java | 11 +- .../pojo/param/HarmonicPublicParam.java | 3 + .../harmonic/pojo/vo/SteadyQualifyVO.java | 8 +- pqs-harmonic/harmonic-boot/pom.xml | 8 ++ .../PollutionSubstationController.java | 14 ++- .../mapper/mapping/SteadyQualifyMapper.xml | 9 +- .../service/PollutionSubstationService.java | 4 + .../service/impl/AnalyzeServiceImpl.java | 12 ++ .../impl/PollutionSubstationServiceImpl.java | 95 ++++++++++++-- .../impl/SteadyQualifyServiceImpl.java | 119 +++++++++++++----- .../service/report/CnCustomReportService.java | 18 +++ 16 files changed, 306 insertions(+), 52 deletions(-) create mode 100644 pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/MonitorPowerDTO.java create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/report/CnCustomReportService.java diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/LineBaseEnum.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/LineBaseEnum.java index 6bac2f942..111c6ec23 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/LineBaseEnum.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/LineBaseEnum.java @@ -20,7 +20,7 @@ public enum LineBaseEnum { PROVINCE_LEVEL(1, "省份"), GD_LEVEL(2, "供电公司"), SUB_LEVEL(3, "变电站"), - DEVICE_LEVEL(4, "设备"), + DEVICE_LEVEL(4, "终端"), SUB_V_LEVEL(5, "母线"), LINE_LEVEL(6, "监测点"), USER_LEVEL(7,"用户"), diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/MonitorPowerDTO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/MonitorPowerDTO.java new file mode 100644 index 000000000..3d07cd255 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/MonitorPowerDTO.java @@ -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 userMonitorList; + + private List powerMonitorList; + + + private List userStationList; + + private List 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; + + + + } + +} + diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/OverLimitLineDTO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/OverLimitLineDTO.java index c27417a1f..d1101bc30 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/OverLimitLineDTO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/dto/OverLimitLineDTO.java @@ -24,6 +24,8 @@ public class OverLimitLineDTO { private String lineObjectName; + private String objId; + private String monitorNumber; private String subName; diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml index f34f1a58d..045511c84 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml @@ -738,7 +738,7 @@ A1.Name lineName, C1.Name lineScale, C2.Name loadType, - D.Obj_Name lineObjectName, + D.Obj_Id objId, D.Monitor_Id monitorNumber, A4.Name subName, C3.Name subScale, diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java index e11b91f4c..ec5bcdfcf 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java @@ -25,6 +25,7 @@ import com.njcn.device.pq.enums.LineBaseEnum; import com.njcn.device.pq.mapper.*; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; 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.PollutionSubstationDTO; import com.njcn.device.pq.pojo.param.*; @@ -772,6 +773,8 @@ public class LineServiceImpl extends ServiceImpl implements Li return pollutionLineInfoDTOList; } + + @Override public List getOverLimitByList(PollutionParamDTO pollutionParamDTO) { return overlimitMapper.selectBatchIds(pollutionParamDTO.getLineList()); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java index 197135928..72d18a318 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java @@ -230,6 +230,12 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) { // 创建集合 List taiZhang = new ArrayList<>(); + // 获取用户 + UserReportParam userReportParam = new UserReportParam(); + List userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData(); + userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList()); + Map userMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity())); + // 遍历集合 for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { // 创建实体类 @@ -253,10 +259,6 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { Map> temMap = new HashMap<>(); if(CollUtil.isNotEmpty(userLineList)) { Map> objMap = userLineList.stream().collect(Collectors.groupingBy(TerminalTree::getObjId)); - UserReportParam userReportParam = new UserReportParam(); - List userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData(); - userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList()); - Map userMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity())); List temList = new ArrayList<>(); objMap.forEach((objId, monitorList) -> { UserLedgerVO userLedgerVO = userMap.get(objId); @@ -275,7 +277,6 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { tree.setPids(String.valueOf(devSize)); temList.add(tree); }); - temMap = temList.stream().collect(Collectors.groupingBy(TerminalTree::getPid)); } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/HarmonicPublicParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/HarmonicPublicParam.java index 21143bc72..fdc9f04e8 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/HarmonicPublicParam.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/HarmonicPublicParam.java @@ -20,4 +20,7 @@ public class HarmonicPublicParam extends DeviceInfoParam.BusinessParam{ @ApiModelProperty(name = "type", value = "区分(0:pq 1:pms)") private Integer type=0; + + @ApiModelProperty(name = "stationType", value = "(0:变电站 1:非变电站场站)") + private Integer stationType; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SteadyQualifyVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SteadyQualifyVO.java index 45c5fbfef..bd3a158d1 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SteadyQualifyVO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/SteadyQualifyVO.java @@ -35,7 +35,13 @@ public class SteadyQualifyVO implements Serializable { * 父级id集合 */ @ApiModelProperty("父级id集合") - private String pidS; + private String pids; + + @ApiModelProperty("排序") + private Integer sort; + + @ApiModelProperty("监测对象id") + private String objId; /** * 电压等级 */ diff --git a/pqs-harmonic/harmonic-boot/pom.xml b/pqs-harmonic/harmonic-boot/pom.xml index 146750ee8..a2ae3372e 100644 --- a/pqs-harmonic/harmonic-boot/pom.xml +++ b/pqs-harmonic/harmonic-boot/pom.xml @@ -112,12 +112,20 @@ cs-device-api 1.0.0 + com.njcn.platform data-processing-api 1.0.0 compile + + + com.njcn + supervision-api + 1.0.0 + compile + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java index 7e729119c..093d711c3 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java @@ -50,7 +50,19 @@ public class PollutionSubstationController extends BaseController { public HttpResult> getPollutionSubstationData(@RequestBody @Validated PollutionSubstationQuryParam pollutionSubstationQuryParam) { String methodDescribe = getMethodDescribe ("getPollutionSubstationData"); LogUtil.njcnDebug(log, "{},实体参数:{}", methodDescribe, pollutionSubstationQuryParam); - List list = pollutionSubstationService.getPollutionSubstationData (pollutionSubstationQuryParam); + List 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> getEnergyStationPollution(@RequestBody @Validated PollutionSubstationQuryParam pollutionSubstationQuryParam) { + String methodDescribe = getMethodDescribe ("getEnergyStationPollution"); + List list = pollutionSubstationService.getEnergyStationPollution(pollutionSubstationQuryParam); return HttpResultUtil.assembleCommonResponseResult (CommonResponseEnum.SUCCESS, list, methodDescribe); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/SteadyQualifyMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/SteadyQualifyMapper.xml index ebfc403a5..9419a375b 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/SteadyQualifyMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/SteadyQualifyMapper.xml @@ -9,12 +9,15 @@ A.Pid, A.Pids, A.Name name, + A.sort, C.Name voltageLevel, D.IP networkParam, C1.Name factoryName, - A.Name lineName + A.Name lineName, + detail.obj_id FROM pq_line A, + pq_line_detail detail, pq_voltage B, sys_dict_data C, pq_device D, @@ -25,6 +28,7 @@ #{item} + AND A.id = detail.id AND A.Pid = B.Id AND B.Scale = C.Id AND A.Pid = A1.Id @@ -37,7 +41,8 @@ Id, Pid, Pids, - Name + Name, + sort FROM pq_line WHERE diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java index 2cb061861..3b3f202ac 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java @@ -36,6 +36,10 @@ public interface PollutionSubstationService extends IService getPollutionSubstationData(PollutionSubstationQuryParam pollutionSubstationQuryParam); + + + List getEnergyStationPollution(PollutionSubstationQuryParam pollutionSubstationQuryParam); + /** * @Description: getDeptSubstationRelations * @Param: [param] diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/AnalyzeServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/AnalyzeServiceImpl.java index eb0b8eca8..b57acb1f0 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/AnalyzeServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/AnalyzeServiceImpl.java @@ -37,6 +37,9 @@ import com.njcn.harmonic.pojo.vo.OverAreaVO; import com.njcn.harmonic.pojo.vo.WarningSubstationVO; import com.njcn.harmonic.service.IAnalyzeService; 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.enums.DicDataEnum; import com.njcn.system.enums.DicDataTypeEnum; @@ -83,6 +86,8 @@ public class AnalyzeServiceImpl implements IAnalyzeService { private final EventDetailFeignClient eventDetailFeignClient; private final DicDataFeignClient dicDataFeignClient; + private final UserLedgerFeignClient userLedgerFeignClient; + @Override public Page getAreaData(OverAreaVO param) { Page 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())), DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())))); Map> rsMap = rStatLimitTargetDPOS.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId)); + + + List userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData(); + Map userLedgerVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity())); + for (OverLimitLineDTO vo : overLimitLineList) { MonitorOverLimitVO monitorOverLimitVO = new MonitorOverLimitVO(); BeanUtil.copyProperties(vo, monitorOverLimitVO); 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.setVolDevOverDay(source.getVolDevOverDay()); monitorOverLimitVO.setFreqOverDay(source.getFreqOverDay()); diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java index fdeff25db..5d62f017b 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java @@ -15,6 +15,7 @@ import com.njcn.common.pojo.constant.BizParamConstant; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; 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.param.DeptGetLineParam; 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.LineFeignClient; 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.param.GridDiagramParam; 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.vo.GridDiagramVO; 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.SubstationVo; 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.enums.DicDataEnum; import com.njcn.user.api.DeptFeignClient; @@ -111,6 +118,8 @@ public class PollutionSubstationServiceImpl extends ServiceImpl getEnergyStationPollution(PollutionSubstationQuryParam pollutionSubstationQuryParam) { + List result = new ArrayList<>(); + DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); + deptGetLineParam.setDeptId(pollutionSubstationQuryParam.getDeptIndex()); + deptGetLineParam.setLineRunFlag(RunFlagEnum.RUNNING.getStatus()); + List deptLineList = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); + if(CollUtil.isNotEmpty(deptLineList)){ + UserReportParam userReportParam = new UserReportParam(); + List userLedgerList = userLedgerFeignClient.selectUserList(userReportParam).getData(); + Map userMap = userLedgerList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity())); + + for(DeptGetChildrenMoreDTO dto : deptLineList){ + List monitorList = dto.getLineBaseList(); + if(CollUtil.isEmpty(monitorList)){ + continue; + } + List objIds = monitorList.stream().map(LineDevGetDTO::getObjId).distinct().collect(Collectors.toList()); + //ListuserLedgerList.stream().filter(it->objIds.contains(it.getId())).collect(Collectors.toList()); + + } + } + + return result; + } + /** * @Description: getDeptSubstationRelations * @Param: [param] @@ -201,8 +236,12 @@ public class PollutionSubstationServiceImpl extends ServiceImpl userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData(); + Map userLedgerVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity())); + if (harmonicPublicParam.getType() != 0) { - PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam(); + /* PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam(); pmsDeviceInfoParam.setDeptIndex(harmonicPublicParam.getDeptIndex()); //获取统计类型 pmsDeviceInfoParam.setStatisticalType(harmonicPublicParam.getStatisticalType()); @@ -246,7 +285,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl subPollutionVO = new ArrayList<>(); - subIndexes.forEach(subIndex -> { - PollutionVO pollutionsubVO = new PollutionVO(); - PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(subIndex).getData(); - String id = pollutionSubstationDTO.getId(); - pollutionsubVO.setId(id); - pollutionsubVO.setName(pollutionSubstationDTO.getName()); - pollutionsubVO.setPid(temp.getIndex()); - pollutionsubVO.setData(3.14159); - setSubData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionsubVO, id); - subPollutionVO.add(pollutionsubVO); - }); + + List lineDetailList = lineFeignClient.getLineDetail(temp.getLineIndexes()).getData(); + if(CollUtil.isNotEmpty(lineDetailList)){ + List userLedgerList = lineDetailList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList()); + List powerLedgerList = lineDetailList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(userLedgerList)){ + List objIds = userLedgerList.stream().map(LineDetail::getObjId).distinct().collect(Collectors.toList()); + objIds.forEach(obj->{ + PollutionVO pollutionsubVO = new PollutionVO(); + 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 ids = powerLedgerList.stream().map(LineDetail::getId).collect(Collectors.toList()); + List lineList = lineFeignClient.getBaseLineList(ids).getData(); + List subIds = lineList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).distinct().collect(Collectors.toList()); + List 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); list.add(pollutionVO); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java index 325c387ae..84afcb493 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java @@ -10,6 +10,7 @@ import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.enums.LineBaseEnum; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; 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.pojo.dto.SteadyQualifyDTO; 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.SteadyQualifyService; 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 org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -41,25 +46,29 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { private final IRStatLimitRateDService rateDService; + private final UserLedgerFeignClient userLedgerFeignClient; + @Override public List getSteadyQualifyData(DeviceInfoParam.BusinessParam steadyParam) { List steadyQualifyList = new ArrayList<>(); + UserReportParam userReportParam = new UserReportParam(); + List userLedgerList = userLedgerFeignClient.selectUserList(userReportParam).getData(); + Map userMap = userLedgerList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity())); + //按照条件获取实际运行终端综合信息 List deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyParam).getData(); //组装监测点Top层集合 for (GeneralDeviceDTO generalDeviceDTO : deviceDataList) { - List lineIndexes = generalDeviceDTO.getLineIndexes(); - if (CollectionUtils.isEmpty(lineIndexes)) { + if (CollectionUtils.isEmpty(generalDeviceDTO.getLineIndexes())) { continue; } SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO(); steadyQualifyVO.setId(generalDeviceDTO.getIndex()); steadyQualifyVO.setName(generalDeviceDTO.getName()); - // List lineData = steadyQualifyMapper.getSteadyQualifyData(lineIndexes); - List qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime()); + List qualifiesRate = getQualifiesRate(generalDeviceDTO.getLineIndexes(), steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime()); //组装子集级数据树 - List treeList = getTreeData(qualifiesRate, lineIndexes); + List treeList = getTreeData(qualifiesRate, generalDeviceDTO,userMap); if (CollectionUtil.isNotEmpty(treeList)) { List flicker = treeList.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList()); List freqOffset = treeList.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList()); @@ -205,20 +214,10 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { /** * 获取父级每层数据 */ - private List getTreeData(List qualifiesRate, List lineIndexes) { + private List getTreeData(List qualifiesRate, GeneralDeviceDTO generalDeviceDTO,Map userMap) { //监测点集合 - List monitorList = steadyQualifyMapper.getSteadyQualifyData(lineIndexes); - //母线集合 - List busBarList = steadyQualifyMapper.getLineInfoByList(monitorList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList())); - //终端集合 - List deviceList = steadyQualifyMapper.getLineInfoByList(busBarList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList())); - //变电站集合 - List substationList = steadyQualifyMapper.getLineInfoByList(deviceList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList())); - //供电公司集合 - List powerCompanyList = steadyQualifyMapper.getLineInfoByList(substationList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList())); - -// List qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime()); - monitorList.forEach(steadyQualifyVO -> { + List treeMonitorList = steadyQualifyMapper.getSteadyQualifyData(generalDeviceDTO.getLineIndexes()); + treeMonitorList.forEach(steadyQualifyVO -> { SteadyQualifyVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyQualifyVO.getId()); steadyQualifyVO.setFlicker(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFlicker())); steadyQualifyVO.setFreqOffset(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFreqOffset())); @@ -229,21 +228,85 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { steadyQualifyVO.setHarmonicCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicCurrent())); steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic())); }); - setChildesList(substationList, monitorList); - setFatherDistortion(substationList); - powerCompanyList.stream().peek(item -> item.setChildren(getChildCategoryList(item, substationList))).collect(Collectors.toList()); - setFatherDistortion(powerCompanyList); + List userLineList = treeMonitorList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList()); + List otherLineList = treeMonitorList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); + + Map> temMap = new HashMap<>(); + if(CollUtil.isNotEmpty(userLineList)) { + Map> objMap = userLineList.stream().collect(Collectors.groupingBy(SteadyQualifyVO::getObjId)); + List 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 substationList = steadyQualifyMapper.getLineInfoByList(generalDeviceDTO.getSubIndexes()); + //供电公司集合 + List powerCompanyList = steadyQualifyMapper.getLineInfoByList(generalDeviceDTO.getGdIndexes()); + + dealChildrenData(substationList,otherLineList,temMap,true); + + dealChildrenData(powerCompanyList,substationList,temMap,false); return powerCompanyList; } + + + /** + * 处理变电站 + * + * @param targetData + * @param childrenData + * @param isLine + */ + private void dealChildrenData(List targetData, List childrenData, Map> userLineMap, boolean isLine) { + // 创建一个map集合,用于封装对象 + Map> 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 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 userList = userLineMap.get(terminalTree.getId()); + terminalTrees.addAll(userList); + } + terminalTree.setChildren(terminalTrees); + } else { + terminalTree.setChildren(terminalTrees); + } + setFatherDistortion(terminalTree,terminalTrees); + }); + } + + /** * 计算父级合格率 */ - private void setFatherDistortion(List list) { - list.forEach(steadyQualifyVO -> { - List children = steadyQualifyVO.getChildren(); + private void setFatherDistortion(SteadyQualifyVO steadyQualifyVO,List children) { List flicker = children.stream().filter(child -> !Objects.equals(child.getFlicker(), 3.14159)).collect(Collectors.toList()); List freqOffset = children.stream().filter(child -> !Objects.equals(child.getFreqOffset(), 3.14159)).collect(Collectors.toList()); List 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)) { 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 item, List childes) { Map> groupLine; groupLine = childes.stream().collect(Collectors.groupingBy(steadyQualifyVO -> { - String[] pid = steadyQualifyVO.getPidS().split(","); + String[] pid = steadyQualifyVO.getPids().split(","); return pid[LineBaseEnum.SUB_LEVEL.getCode()]; })); item.stream().peek(steadyQualifyVO -> { if (!CollectionUtils.isEmpty(groupLine.get(steadyQualifyVO.getId()))) { steadyQualifyVO.setChildren(groupLine.get(steadyQualifyVO.getId())); + setFatherDistortion(steadyQualifyVO,steadyQualifyVO.getChildren()); + } }).collect(Collectors.toList()); } @@ -671,7 +735,6 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic())); }); setChildesList(substationList, monitorList); - setFatherDistortion(substationList); return substationList; diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/report/CnCustomReportService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/report/CnCustomReportService.java new file mode 100644 index 000000000..6745338f9 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/report/CnCustomReportService.java @@ -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); + +}