From 3e8b420db82a14c7d35b31dbb6cc3e06a88dbd18 Mon Sep 17 00:00:00 2001 From: hzj <826100833@qq.com> Date: Mon, 8 Apr 2024 15:12:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E8=83=BD=E8=B4=A8=E9=87=8F=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E7=9B=91=E6=B5=8B=E7=82=B9=E8=B6=85=E6=A0=87=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/biz/commApi/CommLineClient.java | 7 +- .../CommLineClientFallbackFactory.java | 7 + .../device/biz/pojo/dto/LineALLInfoDTO.java | 85 +++++++++ .../ledgerManger/CommLineController.java | 13 +- .../service/majornetwork/IMonitorService.java | 3 + .../majornetwork/impl/MonitorServiceImpl.java | 38 ++++ .../pq/controller/CommLineController.java | 10 + .../njcn/device/pq/service/LineService.java | 3 + .../pq/service/impl/LineServiceImpl.java | 79 ++++++++ .../pojo/dto/RMpPartHarmonicDetailDTO.java | 55 ++++++ .../RMpPartHarmonicDetailQueryParam.java | 33 ++++ .../RMpPartHarmonicDetailController.java | 50 +++++ .../RMpPartHarmonicDetailDService.java | 4 + .../RMpPartHarmonicDetailDServiceImpl.java | 179 +++++++++++++++++- 14 files changed, 558 insertions(+), 8 deletions(-) create mode 100644 pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineALLInfoDTO.java create mode 100644 pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/RMpPartHarmonicDetailDTO.java create mode 100644 pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RMpPartHarmonicDetailQueryParam.java create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/dataquality/RMpPartHarmonicDetailController.java diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommLineClient.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommLineClient.java index 1b45628f2..8b660e789 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommLineClient.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommLineClient.java @@ -3,7 +3,7 @@ package com.njcn.device.biz.commApi; import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.biz.commApi.fallback.CommLineClientFallbackFactory; -import com.njcn.device.biz.commApi.fallback.CommTerminalGeneralClientFallbackFactory; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.biz.pojo.dto.LineDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -42,4 +42,9 @@ public interface CommLineClient { */ @PostMapping("/getLineDetailBatch") HttpResult> getLineDetailBatch(@RequestParam("ids") List ids); + + + + @GetMapping("/getLineAllDetail") + LineALLInfoDTO getLineAllDetail(@RequestParam("id") String id); } diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommLineClientFallbackFactory.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommLineClientFallbackFactory.java index 842e9a5fd..d1bd59cb5 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommLineClientFallbackFactory.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommLineClientFallbackFactory.java @@ -4,6 +4,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.biz.commApi.CommLineClient; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.biz.pojo.dto.LineDTO; import com.njcn.device.biz.utils.DeviceEnumUtil; import feign.hystrix.FallbackFactory; @@ -43,6 +44,12 @@ public class CommLineClientFallbackFactory implements FallbackFactory getLineAllDetail(@RequestParam("id") String id) { + String methodDescribe = getMethodDescribe("getLineAllDetail"); + LineALLInfoDTO result = monitorService.getLineAllDetail(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getLineDetailBatch") @ApiOperation("批量获取监测点信息") diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/IMonitorService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/IMonitorService.java index 639673c40..881cd3ceb 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/IMonitorService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/IMonitorService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.biz.pojo.dto.LineDTO; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO; @@ -197,4 +198,6 @@ public interface IMonitorService extends IService { * @date 2024/2/26 */ List existMonitorDeptTree(); + + LineALLInfoDTO getLineAllDetail(String id); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java index da63d4ee3..28cf8d58d 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java @@ -19,6 +19,7 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.device.biz.enums.DeviceResponseEnum; import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.biz.pojo.dto.LineDTO; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.biz.pojo.po.DeviceBak; @@ -612,6 +613,43 @@ public class MonitorServiceImpl extends ServiceImpl impl return deptList.stream().filter(it->monitorList.contains(it.getCode())).collect(Collectors.toList()); } + @Override + public LineALLInfoDTO getLineAllDetail(String id) { + LineALLInfoDTO lineALLInfoDTO = new LineALLInfoDTO(); + Monitor monitor = this.getBaseMapper().selectById(id); + + PmsTerminal pmsTerminal = terminalMapper.selectById(monitor.getTerminalId()); + //处理监测点信息 + LineALLInfoDTO.LineLineDTO lineLineDTO = new LineALLInfoDTO.LineLineDTO(); + lineLineDTO.setLineId(monitor.getId()); + lineLineDTO.setLinename(monitor.getLineName()); + lineLineDTO.setObjName(monitor.getMonitorObjectName()); + lineLineDTO.setLoadType(dicDataFeignClient.getDicDataById(monitor.getMonitorTag()).getData().getName()); + //电压使用母线电压 + lineLineDTO.setVoltageLevel(dicDataFeignClient.getDicDataById(monitor.getVoltageLevel()).getData().getName()); + lineALLInfoDTO.setLineLineDTO(lineLineDTO); + //处理母线信息 + LineALLInfoDTO.LineBusbarDTO lineBusbarDTO = new LineALLInfoDTO.LineBusbarDTO(); + lineBusbarDTO.setBusBarId(monitor.getLineId()); + lineBusbarDTO.setBusBarName(monitor.getLineName()); + lineALLInfoDTO.setLineBusbarDTO(lineBusbarDTO); + //处理设备信息 + LineALLInfoDTO.LineDeviceDTO lineDeviceDTO = new LineALLInfoDTO.LineDeviceDTO(); + lineDeviceDTO.setDeviceId(monitor.getTerminalId()); + lineDeviceDTO.setDeviceName(pmsTerminal.getName()); + lineALLInfoDTO.setLineDeviceDTO(lineDeviceDTO); + //处理电站信息 + LineALLInfoDTO.LineSubStationDTO lineSubStationDTO = new LineALLInfoDTO.LineSubStationDTO(); + lineSubStationDTO.setSubStationId(monitor.getPowerrId()); + lineSubStationDTO.setSubStationName(monitor.getPowerrName()); + + lineALLInfoDTO.setLineSubStationDTO(lineSubStationDTO); + //todo 处理部门信息后续需要部门信息在添加 + + + return lineALLInfoDTO; + } + private String dealDataBatchUpdate(List pmsLedgerExcelList) { List oracleTerminalExcelMsg = new ArrayList<>(); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/CommLineController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/CommLineController.java index f97f5dd45..134ba6894 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/CommLineController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/CommLineController.java @@ -6,6 +6,7 @@ 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.biz.pojo.dto.LineDTO; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.pq.service.LineService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; @@ -40,6 +41,15 @@ public class CommLineController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @GetMapping("/getLineAllDetail") + @ApiOperation("获取监测点id取超标监测点信息") + public HttpResult getLineAllDetail(@RequestParam("id") String id) { + String methodDescribe = getMethodDescribe("getLineAllDetail"); + LineALLInfoDTO result = lineService.getLineAllDetail(id); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getLineDetailBatch") diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java index ea3ebf138..52d628caa 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java @@ -2,6 +2,7 @@ package com.njcn.device.pq.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.biz.pojo.dto.LineDTO; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.pq.pojo.dto.PollutionLineDTO; import com.njcn.device.pq.pojo.dto.PollutionParamDTO; import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; @@ -205,4 +206,6 @@ public interface LineService { * @Date: 2023/11/8 15:46 */ List getLineDetailByIds(List ids); + + LineALLInfoDTO getLineAllDetail(String id); } 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 3bd03d09c..5cb541971 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 @@ -17,6 +17,7 @@ import com.njcn.common.utils.EnumUtils; import com.njcn.common.utils.PubUtils; import com.njcn.device.biz.enums.DeviceResponseEnum; import com.njcn.device.biz.pojo.dto.LineDTO; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.pq.enums.LineBaseEnum; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; @@ -552,6 +553,84 @@ public class LineServiceImpl extends ServiceImpl implements Li return details; } + @Override + public LineALLInfoDTO getLineAllDetail(String id) { + LineALLInfoDTO lineALLInfoDTO = new LineALLInfoDTO(); +//根据id查询当前信息的pids + List pids = Arrays.asList(this.baseMapper.selectById(id).getPids().split(",")); + List list = new ArrayList(pids); + list.add(id); + List lineDataVOList = this.baseMapper.getLineDetail(list); + LineDetailDataVO lineDetailDataVO = new LineDetailDataVO(); + + String areaId = "",gdId="",subStationId = "", devId = "", voId = "",lineId="", + areaName = "",gdName="",subStationName = "", devName = "", voName = "",lineName=""; + for (LineDataVO lineDataVO : lineDataVOList) { + switch (lineDataVO.getLevel()) { + case 1: + areaId = lineDataVO.getId(); + areaName = lineDataVO.getName(); + break; + case 2: + gdId = lineDataVO.getId(); + gdName = lineDataVO.getName(); + break; + case 3: + subStationId = lineDataVO.getId(); + subStationName = lineDataVO.getName(); + break; + case 4: + devId = lineDataVO.getId(); + devName = lineDataVO.getName(); + break; + case 5: + voId = lineDataVO.getId(); + voName = lineDataVO.getName(); + break; + case 6: + lineId = lineDataVO.getId(); + lineName = lineDataVO.getName(); + break; + default: + break; + } + } + + LineDetail lineDetail = lineDetailMapper.selectById(id); + Voltage voltage = voltageMapper.selectById(voId); + Device device = deviceMapper.selectById(devId); + Substation substation = substationMapper.selectById(subStationId); + //处理监测点信息 + LineALLInfoDTO.LineLineDTO lineLineDTO = new LineALLInfoDTO.LineLineDTO(); + lineLineDTO.setLineId(lineId); + lineLineDTO.setLinename(lineName); + lineLineDTO.setNum(lineDetail.getNum()); + lineLineDTO.setObjName(lineDetail.getObjName()); + lineLineDTO.setLoadType(dicDataFeignClient.getDicDataById(lineDetail.getLoadType()).getData().getName()); + //电压使用母线电压 + lineLineDTO.setVoltageLevel(dicDataFeignClient.getDicDataById(voltage.getScale()).getData().getName()); + lineALLInfoDTO.setLineLineDTO(lineLineDTO); + //处理母线信息 + LineALLInfoDTO.LineBusbarDTO lineBusbarDTO = new LineALLInfoDTO.LineBusbarDTO(); + lineBusbarDTO.setBusBarId(voId); + lineBusbarDTO.setBusBarName(voName); + lineALLInfoDTO.setLineBusbarDTO(lineBusbarDTO); + //处理设备信息 + LineALLInfoDTO.LineDeviceDTO lineDeviceDTO = new LineALLInfoDTO.LineDeviceDTO(); + lineDeviceDTO.setDeviceId(devId); + lineDeviceDTO.setDeviceName(devName); + lineALLInfoDTO.setLineDeviceDTO(lineDeviceDTO); + //处理电站信息 + LineALLInfoDTO.LineSubStationDTO lineSubStationDTO = new LineALLInfoDTO.LineSubStationDTO(); + lineSubStationDTO.setSubStationId(subStationId); + lineSubStationDTO.setSubStationName(subStationName); + + lineALLInfoDTO.setLineSubStationDTO(lineSubStationDTO); + //todo 处理部门信息后续需要部门信息在添加 + + return lineALLInfoDTO; + } + @Override public List getOverLimitByList(PollutionParamDTO pollutionParamDTO) { return overlimitMapper.selectBatchIds(pollutionParamDTO.getLineList()); diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/RMpPartHarmonicDetailDTO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/RMpPartHarmonicDetailDTO.java new file mode 100644 index 000000000..fe2c1eb43 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/RMpPartHarmonicDetailDTO.java @@ -0,0 +1,55 @@ +package com.njcn.harmonic.pojo.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +/** + * Description: + * Date: 2024/4/3 16:13【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class RMpPartHarmonicDetailDTO { + + /** + * 监测点ID + */ + private String measurementPointId; + + private String measurementPointName; + + + //告警指标 + private String harmonicType; + + //母线id + private String barId; + + private String barName; + + + //电站id + private String sustationId; + + private String sustationName; + + @ApiModelProperty(name = "objName",value = "监测点对象名称") + private String objName; + @ApiModelProperty(name = "loadType",value = "监测对象类型") + private String loadType; + @ApiModelProperty(name = "voltageLevel",value = "电压等级") + private String voltageLevel; + + //超标天数 + private Double overLimitrate; + + + /*当月超标日期 + * */ + private List dateList; +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RMpPartHarmonicDetailQueryParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RMpPartHarmonicDetailQueryParam.java new file mode 100644 index 000000000..3faf9fc9c --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RMpPartHarmonicDetailQueryParam.java @@ -0,0 +1,33 @@ +package com.njcn.harmonic.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Description: + * Date: 2024/4/3 16:16【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +public class RMpPartHarmonicDetailQueryParam { + + /** + * 统计起始日期 + */ + @ApiModelProperty(name="startTime",value="统计起始日期(yyyy-MM-dd)") + private String startTime; + + /** + * 统计截止日期 + */ + @ApiModelProperty(name="endTime",value="统计截止日期(yyyy-MM-dd)") + private String endTime; + @ApiModelProperty(name="harmonicTypes",value="稳态指标id集合") + private List harmonicTypes; + @ApiModelProperty(name="harmonicTypes",value="越线天数占比(一个月)") + private Double rate; +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/dataquality/RMpPartHarmonicDetailController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/dataquality/RMpPartHarmonicDetailController.java new file mode 100644 index 000000000..7de7d2626 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/dataquality/RMpPartHarmonicDetailController.java @@ -0,0 +1,50 @@ +package com.njcn.harmonic.controller.dataquality; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO; +import com.njcn.harmonic.pojo.param.RMpPartHarmonicDetailQueryParam; +import com.njcn.harmonic.service.majornetwork.RMpPartHarmonicDetailDService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * Description: + * Date: 2024/4/3 15:58【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "稳态指标超标警告统计") +@RequestMapping("/rmppartharmonicdetail") +public class RMpPartHarmonicDetailController extends BaseController { + + private final RMpPartHarmonicDetailDService rMpPartHarmonicDetailDService; + /** + * 稳态指标超标明细表-月表统计 + * + * @param param + * @return + */ + @PostMapping("/getRMpPartHarmonicDetail") + @ApiOperation("稳态指标超标在线监测超标问题详情") + @ApiImplicitParam(name = "param", value = "参数", required = true) + public HttpResult> getRMpPartHarmonicDetail(@RequestBody RMpPartHarmonicDetailQueryParam param) { + String methodDescribe = getMethodDescribe("getRMpPartHarmonicDetail"); + List list = rMpPartHarmonicDetailDService.getRMpPartHarmonicDetail(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RMpPartHarmonicDetailDService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RMpPartHarmonicDetailDService.java index 8c8ed1c81..72d540e01 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RMpPartHarmonicDetailDService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RMpPartHarmonicDetailDService.java @@ -1,6 +1,8 @@ package com.njcn.harmonic.service.majornetwork; import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO; +import com.njcn.harmonic.pojo.param.RMpPartHarmonicDetailQueryParam; import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.harmonic.pojo.vo.RMpPartHarmonicDetailIconVO; @@ -24,4 +26,6 @@ public interface RMpPartHarmonicDetailDService extends IService getRMpPartHarmonicDetailIcon(StatisticsBizBaseParam param); + + List getRMpPartHarmonicDetail(RMpPartHarmonicDetailQueryParam param); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RMpPartHarmonicDetailDServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RMpPartHarmonicDetailDServiceImpl.java index 254a2d5bd..0923e8624 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RMpPartHarmonicDetailDServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RMpPartHarmonicDetailDServiceImpl.java @@ -1,15 +1,31 @@ package com.njcn.harmonic.service.majornetwork.impl; -import com.njcn.common.pojo.param.StatisticsBizBaseParam; -import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD; -import com.njcn.harmonic.mapper.majornetwork.RMpPartHarmonicDetailDMapper; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import com.njcn.device.biz.commApi.CommLineClient; +import com.njcn.device.biz.pojo.dto.LineALLInfoDTO; +import com.njcn.harmonic.mapper.majornetwork.RMpPartHarmonicDetailDMapper; +import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO; +import com.njcn.harmonic.pojo.param.RMpPartHarmonicDetailQueryParam; +import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.vo.RMpPartHarmonicDetailIconVO; +import com.njcn.harmonic.service.IRStatLimitRateDService; import com.njcn.harmonic.service.majornetwork.RMpPartHarmonicDetailDService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.YearMonth; +import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** *

@@ -24,10 +40,165 @@ import java.util.List; public class RMpPartHarmonicDetailDServiceImpl extends ServiceImpl implements RMpPartHarmonicDetailDService { private final RMpPartHarmonicDetailDMapper rMpPartHarmonicDetailDMapper; - + private final DicDataFeignClient dicDataFeignClient; + private final IRStatLimitRateDService irStatLimitRateDService; + private final CommLineClient commLineClient; @Override public List getRMpPartHarmonicDetailIcon(StatisticsBizBaseParam param) { return rMpPartHarmonicDetailDMapper.getRMpPartHarmonicDetailIcon(param); } + + @Override + public List getRMpPartHarmonicDetail(RMpPartHarmonicDetailQueryParam param) { + List rStatLimitRateDPOs = irStatLimitRateDService.lambdaQuery().between(RStatLimitRateDPO::getTime, param.getStartTime()+" 00:00:00", param.getEndTime()+" 23:59:59").list(); + List rMpPartHarmonicDetailDTOS = new ArrayList<>(); + LocalDate date = LocalDate.parse(param.getStartTime()); + YearMonth yearMonth = YearMonth.from(date); + int daysInMonth = yearMonth.lengthOfMonth(); + /*获取稳态统计指标*/ + List steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData(); + rStatLimitRateDPOs.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId)).forEach((k, v) -> { + LineALLInfoDTO lineALLInfoDTO = commLineClient.getLineAllDetail(k); + steadyStatis.forEach(dictData -> { + if(Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())|| + Objects.equals(dictData.getCode(), DicDataEnum.phase_Voltage.getCode())){ + return; + } + RMpPartHarmonicDetailDTO rMpPartHarmonicDetailDTO = new RMpPartHarmonicDetailDTO(); + rMpPartHarmonicDetailDTO.setHarmonicType(dictData.getId()); + List localDates = overLimitCount(dictData, v); + rMpPartHarmonicDetailDTO.setDateList(localDates); + rMpPartHarmonicDetailDTO.setOverLimitrate(Double.parseDouble(localDates.size()+"")/daysInMonth); + rMpPartHarmonicDetailDTO.setMeasurementPointId(k); + rMpPartHarmonicDetailDTO.setMeasurementPointName(lineALLInfoDTO.getLineLineDTO().getLinename()); + rMpPartHarmonicDetailDTO.setBarId(lineALLInfoDTO.getLineBusbarDTO().getBusBarId()); + rMpPartHarmonicDetailDTO.setBarName(lineALLInfoDTO.getLineBusbarDTO().getBusBarName()); + rMpPartHarmonicDetailDTO.setSustationId(lineALLInfoDTO.getLineSubStationDTO().getSubStationId()); + rMpPartHarmonicDetailDTO.setSustationName(lineALLInfoDTO.getLineSubStationDTO().getSubStationName()); + rMpPartHarmonicDetailDTO.setObjName(lineALLInfoDTO.getLineLineDTO().getObjName()); + rMpPartHarmonicDetailDTO.setLoadType(lineALLInfoDTO.getLineLineDTO().getLoadType()); + rMpPartHarmonicDetailDTO.setVoltageLevel(lineALLInfoDTO.getLineLineDTO().getVoltageLevel()); + + +// rMpPartHarmonicDetailDTO.setSustationName(data.getSubName()); + //todo 增加母线信息 + rMpPartHarmonicDetailDTOS.add(rMpPartHarmonicDetailDTO); + + }); + }); + + List result = rMpPartHarmonicDetailDTOS.stream(). + filter(temp -> CollectionUtil.isEmpty(param.getHarmonicTypes()) ||param.getHarmonicTypes().contains(temp.getHarmonicType())). + filter(temp -> temp.getOverLimitrate() > param.getRate()).collect(Collectors.toList()); + + return result; + } + + + private List overLimitCount(DictData temp,List rStatLimitRateDPOs ) { + List localDetails = new ArrayList<>(); + + if (Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode())) { + + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getVoltageDevOvertime() > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + } else if ( Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode())) { + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getFlickerOvertime() > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + + } else if ( Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode())) { + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getUbalanceOvertime() > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + } else if (Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())){ + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getUaberranceOvertime() > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + }else if ( Objects.equals(temp.getCode(), DicDataEnum.HARMONIC_VOLTAGE.getCode())) { + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> + rStatLimitRateDPO.getUharm2Overtime()+ + rStatLimitRateDPO.getUharm3Overtime()+ + rStatLimitRateDPO.getUharm4Overtime()+ + rStatLimitRateDPO.getUharm5Overtime()+ + rStatLimitRateDPO.getUharm6Overtime()+ + rStatLimitRateDPO.getUharm7Overtime()+ + rStatLimitRateDPO.getUharm8Overtime()+ + rStatLimitRateDPO.getUharm9Overtime()+ + rStatLimitRateDPO.getUharm10Overtime()+ + rStatLimitRateDPO.getUharm11Overtime()+ + rStatLimitRateDPO.getUharm12Overtime()+ + rStatLimitRateDPO.getUharm13Overtime()+ + rStatLimitRateDPO.getUharm14Overtime()+ + rStatLimitRateDPO.getUharm15Overtime()+ + rStatLimitRateDPO.getUharm16Overtime()+ + rStatLimitRateDPO.getUharm17Overtime()+ + rStatLimitRateDPO.getUharm18Overtime()+ + rStatLimitRateDPO.getUharm19Overtime()+ + rStatLimitRateDPO.getUharm20Overtime()+ + rStatLimitRateDPO.getUharm21Overtime()+ + rStatLimitRateDPO.getUharm22Overtime()+ + rStatLimitRateDPO.getUharm23Overtime()+ + rStatLimitRateDPO.getUharm24Overtime()+ + rStatLimitRateDPO.getUharm25Overtime() > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + + } else if ( Objects.equals(temp.getCode(), DicDataEnum.HARMONIC_CURRENT.getCode())) { + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> + rStatLimitRateDPO.getIharm2Overtime()+ + rStatLimitRateDPO.getIharm4Overtime()+ + rStatLimitRateDPO.getIharm5Overtime()+ + rStatLimitRateDPO.getIharm6Overtime()+ + rStatLimitRateDPO.getIharm7Overtime()+ + rStatLimitRateDPO.getIharm8Overtime()+ + rStatLimitRateDPO.getIharm9Overtime()+ + rStatLimitRateDPO.getIharm10Overtime()+ + rStatLimitRateDPO.getIharm11Overtime()+ + rStatLimitRateDPO.getIharm12Overtime()+ + rStatLimitRateDPO.getIharm13Overtime()+ + rStatLimitRateDPO.getIharm14Overtime()+ + rStatLimitRateDPO.getIharm15Overtime()+ + rStatLimitRateDPO.getIharm16Overtime()+ + rStatLimitRateDPO.getIharm17Overtime()+ + rStatLimitRateDPO.getIharm18Overtime()+ + rStatLimitRateDPO.getIharm19Overtime()+ + rStatLimitRateDPO.getIharm20Overtime()+ + rStatLimitRateDPO.getIharm21Overtime()+ + rStatLimitRateDPO.getIharm22Overtime()+ + rStatLimitRateDPO.getIharm23Overtime()+ + rStatLimitRateDPO.getIharm24Overtime()+ + rStatLimitRateDPO.getIharm25Overtime() + > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + + + } else if (Objects.equals(temp.getCode(), DicDataEnum.INTERHARMONIC_VOLTAGE.getCode())){ + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> + rStatLimitRateDPO.getInuharm1Overtime()+ + rStatLimitRateDPO.getInuharm2Overtime()+ + rStatLimitRateDPO.getInuharm3Overtime()+ + rStatLimitRateDPO.getInuharm4Overtime()+ + rStatLimitRateDPO.getInuharm5Overtime()+ + rStatLimitRateDPO.getInuharm6Overtime()+ + rStatLimitRateDPO.getInuharm7Overtime()+ + rStatLimitRateDPO.getInuharm8Overtime()+ + rStatLimitRateDPO.getInuharm9Overtime()+ + rStatLimitRateDPO.getInuharm10Overtime()+ + rStatLimitRateDPO.getInuharm11Overtime()+ + rStatLimitRateDPO.getInuharm12Overtime()+ + rStatLimitRateDPO.getInuharm13Overtime()+ + rStatLimitRateDPO.getInuharm14Overtime()+ + rStatLimitRateDPO.getInuharm15Overtime()+ + rStatLimitRateDPO.getInuharm16Overtime() + > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + + }else if ( Objects.equals(temp.getCode(), DicDataEnum.FREQUENCY_DEV.getCode())) { + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getFreqDevOvertime() > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + + } else if (Objects.equals(temp.getCode(), DicDataEnum.NEG_CURRENT.getCode())){ + localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getINegOvertime() > 0) + .map(RStatLimitRateDPO::getTime).collect(Collectors.toList()); + } + return localDetails.stream().distinct().collect(Collectors.toList()); + } }