From 48486ce04ded3c0c14263d0918a01cda731ebae5 Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Tue, 28 May 2024 16:09:55 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=85=B8=E5=9E=8B=E6=BA=90=E8=8D=B7=EF=BC=8C?= =?UTF-8?q?=E5=9B=BD=E7=BD=91=E4=B8=8B=E7=A9=BF=E6=8E=A5=E5=8F=A3=E7=BC=96?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pms/api/LineIntegrityDataClient.java | 33 ++ .../njcn/device/pms/api/MonitorClient.java | 11 +- .../LineIntegrityDataFallbackFactory.java | 44 +++ .../MonitorClientFallbackFactory.java | 8 + .../pms/pojo/param/gw/TypicalSourceParam.java | 5 +- .../pms/pojo/vo/gw/TypicalOverIndex.java | 158 ++++++++ .../pms/pojo/vo/gw/TypicalOverStation.java | 153 ++++++++ .../vo/gw/TypicalSourceEffectiveLine.java | 3 +- .../pms/pojo/vo/gw/TypicalSourceOnLine.java | 11 +- .../ledgerManger/PmsMonitorController.java | 13 +- .../LineIntegrityDataController.java | 25 +- .../gwPush/impl/MonitorSendServiceImpl.java | 7 +- .../TypicalSourceLoadDownServiceImpl.java | 333 ----------------- .../service/majornetwork/IMonitorService.java | 10 + .../majornetwork/impl/MonitorServiceImpl.java | 209 ++++++++++- .../harmonic/api/RStatLimitRateDClient.java | 2 +- .../TypicalSourceLoadDownController.java | 35 +- .../mapper/RStatLimitTargetDMapper.java | 2 +- .../impl/RStatLimitTargetDServiceImpl.java | 7 +- .../upload}/TypicalSourceLoadDownService.java | 12 +- .../TypicalSourceLoadDownServiceImpl.java | 342 ++++++++++++++++++ 21 files changed, 1046 insertions(+), 377 deletions(-) create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/LineIntegrityDataClient.java create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/LineIntegrityDataFallbackFactory.java create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalOverIndex.java create mode 100644 pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalOverStation.java delete mode 100644 pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/TypicalSourceLoadDownServiceImpl.java rename {pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush => pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload}/TypicalSourceLoadDownController.java (63%) rename {pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush => pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload}/TypicalSourceLoadDownService.java (72%) create mode 100644 pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/TypicalSourceLoadDownServiceImpl.java diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/LineIntegrityDataClient.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/LineIntegrityDataClient.java new file mode 100644 index 000000000..f91fb1e8f --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/LineIntegrityDataClient.java @@ -0,0 +1,33 @@ +package com.njcn.device.pms.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.device.pms.api.fallback.LineIntegrityDataFallbackFactory; +import com.njcn.device.pms.pojo.param.DataQualityDetailsParam; +import com.njcn.device.pq.pojo.po.RStatIntegrityD; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * @author yzh + * @date 2022/10/18 + */ +@FeignClient( + value = ServerInfo.DEVICE, + path = "/monitorIntegrity", + contextId = "monitorIntegrity", + fallbackFactory = LineIntegrityDataFallbackFactory.class) +public interface LineIntegrityDataClient { + + /** + * 获取监测点数据完整率 + * @param param + * @return + */ + @PostMapping("/getIntegrityData") + HttpResult> getIntegrityData(@RequestBody DataQualityDetailsParam param); + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/MonitorClient.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/MonitorClient.java index 4e9d235d9..1171746dc 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/MonitorClient.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/MonitorClient.java @@ -10,9 +10,11 @@ import com.njcn.device.pms.pojo.param.MonitorTerminalParam; import com.njcn.device.pms.pojo.param.PmsMonitorInfoParam; import com.njcn.device.pms.pojo.param.PmsMonitorParam; import com.njcn.device.pms.pojo.param.TerminalQueryParam; +import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.vo.MonitorVO; import com.njcn.device.biz.pojo.po.Overlimit; +import com.njcn.device.pms.pojo.vo.gw.TypicalSourceOnLine; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -69,7 +71,6 @@ public interface MonitorClient { @PostMapping("getMonitorList") HttpResult> getMonitorList(@RequestBody List monitorIds); - @PostMapping("getMonitorPage") HttpResult> getMonitorPage(@RequestBody TerminalQueryParam baseParam); @@ -83,4 +84,12 @@ public interface MonitorClient { */ @PostMapping("getMonitorTerminal") HttpResult getMonitorTerminal(@RequestBody MonitorTerminalParam param); + + /** + * @Description: 典型源荷下穿监测点信息接口 + * @Author: wr + * @Date: 2024/5/27 14:00 + */ + @PostMapping("/monitorTypicalList") + HttpResult> monitorTypicalList(@RequestBody TypicalSourceParam param); } diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/LineIntegrityDataFallbackFactory.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/LineIntegrityDataFallbackFactory.java new file mode 100644 index 000000000..0ac928fae --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/LineIntegrityDataFallbackFactory.java @@ -0,0 +1,44 @@ +package com.njcn.device.pms.api.fallback; + +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.pms.api.LineIntegrityDataClient; +import com.njcn.device.pms.pojo.param.*; +import com.njcn.device.pms.utils.PmsDeviceEnumUtil; +import com.njcn.device.pq.pojo.po.RStatIntegrityD; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @Author: wr + * @Date: 2024/5/28 9:41 + */ +@Slf4j +@Component +public class LineIntegrityDataFallbackFactory implements FallbackFactory { + + @Override + public LineIntegrityDataClient create(Throwable throwable) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) throwable.getCause(); + exceptionEnum = PmsDeviceEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new LineIntegrityDataClient() + { + @Override + public HttpResult> getIntegrityData(DataQualityDetailsParam param) { + log.error("{}异常,降级处理,异常为:{}", "获取监测点数据完整率", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + + + }; + } +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/MonitorClientFallbackFactory.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/MonitorClientFallbackFactory.java index 3498ed38d..62cd84a2e 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/MonitorClientFallbackFactory.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/api/fallback/MonitorClientFallbackFactory.java @@ -11,8 +11,10 @@ import com.njcn.device.pms.pojo.param.MonitorTerminalParam; import com.njcn.device.pms.pojo.param.PmsMonitorInfoParam; import com.njcn.device.pms.pojo.param.PmsMonitorParam; import com.njcn.device.pms.pojo.param.TerminalQueryParam; +import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.vo.MonitorVO; +import com.njcn.device.pms.pojo.vo.gw.TypicalSourceOnLine; import com.njcn.device.pms.utils.PmsDeviceEnumUtil; import com.njcn.device.biz.pojo.po.Overlimit; import feign.hystrix.FallbackFactory; @@ -75,6 +77,12 @@ public class MonitorClientFallbackFactory implements FallbackFactory> monitorTypicalList(TypicalSourceParam param) { + log.error("{}异常,降级处理,异常为:{}", "典型源荷下穿监测点信息接口 ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/TypicalSourceParam.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/TypicalSourceParam.java index 9d454b0d1..d513ce78f 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/TypicalSourceParam.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/gw/TypicalSourceParam.java @@ -3,6 +3,8 @@ package com.njcn.device.pms.pojo.param.gw; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** * @author wr * @description @@ -11,7 +13,6 @@ import lombok.Data; @Data public class TypicalSourceParam { - @ApiModelProperty("详情类型") private String detailType; @@ -66,4 +67,6 @@ public class TypicalSourceParam { @ApiModelProperty("统计时间,日数据:yyyy-mm-dd,月数据:yyyy-mm,年数据:yyyy") private String statDate; + @ApiModelProperty("监测点id集合->自定义不是国网下穿入参") + List monitorIds; } diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalOverIndex.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalOverIndex.java new file mode 100644 index 000000000..4037538e8 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalOverIndex.java @@ -0,0 +1,158 @@ +package com.njcn.device.pms.pojo.vo.gw; + +import cn.hutool.core.date.DateUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wr + * @description 超标指标数据表下穿详细信息 + * @date 2024/5/27 10:03 + */ +@Data +public class TypicalOverIndex { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("副备电站id") + private String auxiliarySubstationId; + + @ApiModelProperty("副备电站名称") + private String auxiliarySubstationName; + + @ApiModelProperty("副备电站电压等级") + private String auxiliaryVoltageLevel; + + @ApiModelProperty("副备电站电压等级名称") + private String auxiliaryVoltageLevelName; + + @ApiModelProperty("日平均值") + private String avgValue; + + @ApiModelProperty("母线id") + private String busId; + + @ApiModelProperty("母线名称") + private String busName; + + @ApiModelProperty("母线电压等级") + private String busVoltageLevel; + + @ApiModelProperty("母线电压等级名称") + private String busVoltageLevelName; + + @ApiModelProperty("协议容量") + private String capacity; + + @ApiModelProperty("所属单位id") + private String cityOrg; + + @ApiModelProperty("所属单位名称") + private String cityOrgName; + + @ApiModelProperty("有效监测点数量") + private Integer effectMonitorNum; + + @ApiModelProperty("谐波次数") + private String harmonicNum; + + @ApiModelProperty("主键") + private String id; + + @ApiModelProperty("主备电站id") + private String mainSubstationId; + + @ApiModelProperty("主备电站名称") + private String mainSubstationName; + + @ApiModelProperty("主备电站电压等级") + private String mainVoltageLevel; + + @ApiModelProperty("主备电站电压等级名称") + private String mainVoltageLevelName; + + @ApiModelProperty("运维单位id") + private String maintOrg; + + @ApiModelProperty("运维单位名称") + private String maintOrgName; + + @ApiModelProperty("日最大值") + private String maxValue; + + @ApiModelProperty("日最小值") + private String minValue; + + @ApiModelProperty("监测日期") + private String monitorDate; + + @ApiModelProperty("监测点编号") + private String monitorId; + + @ApiModelProperty("场站属性") + private String monitorObjectType; + + @ApiModelProperty("场站属性名称") + private String monitorObjectTypeName; + + @ApiModelProperty("各站点名称,如:牵引站对应牵引站名称") + private String name; + + @ApiModelProperty("日95值") + private String nfValue; + + @ApiModelProperty("一般限值") + private String normalLimit; + + @ApiModelProperty("铁路名称") + private String railWayName; + + @ApiModelProperty("铁路编号") + private String railWayNumber; + + @ApiModelProperty("铁路类型") + private String railWayType; + + @ApiModelProperty("铁路类型名称") + private String railWayTypeName; + + @ApiModelProperty("运行状态") + private String runStatus; + + @ApiModelProperty("运行状态名称") + private String runStatusName; + + @ApiModelProperty("相别") + private String seq; + + @ApiModelProperty("短时限值") + private String shortLimit; + + @ApiModelProperty("关联变电站id") + private String stationId; + + @ApiModelProperty("关联变电站名称") + private String stationName; + + @ApiModelProperty("变电站类型") + private String stationType; + + @ApiModelProperty("关联变电站电压等级") + private String stationVoltageLevel; + + @ApiModelProperty("关联变电站电压等级名称") + private String stationVoltageLevelName; + + @ApiModelProperty("行业分类") + private String tradeCode; + + @ApiModelProperty("行业分类名称") + private String tradeCodeName; + + @ApiModelProperty("接入电压等级") + private String voltageLevel; + + @ApiModelProperty("接入电压等级名称") + private String voltageLevelName; + + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalOverStation.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalOverStation.java new file mode 100644 index 000000000..1fbf0f275 --- /dev/null +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalOverStation.java @@ -0,0 +1,153 @@ +package com.njcn.device.pms.pojo.vo.gw; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wr + * @description + * @date 2024/5/27 9:49 + */ +@Data +public class TypicalOverStation { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("副备电站id") + private String auxiliarySubstationId; + + @ApiModelProperty("副备电站名称") + private String auxiliarySubstationName; + + @ApiModelProperty("副备电站电压等级") + private String auxiliaryVoltageLevel; + + @ApiModelProperty("副备电站电压等级名称") + private String auxiliaryVoltageLevelName; + + @ApiModelProperty("母线电压等级") + private String busVoltageLevel; + + @ApiModelProperty("母线电压等级名称") + private String busVoltageLevelName; + + @ApiModelProperty("协议容量") + private String capacity; + + @ApiModelProperty("所属单位id") + private String cityOrg; + + @ApiModelProperty("所属单位名称") + private String cityOrgName; + + @ApiModelProperty("有效监测点数量") + private Integer effectMonitorNum; + + @ApiModelProperty("闪变超标天数") + private Integer flicker; + + @ApiModelProperty("谐波电流超标天数") + private Integer gi; + + @ApiModelProperty("谐波电压超标天数") + private Integer gv; + + @ApiModelProperty("三相不平衡超标天数") + private Integer unban; + + @ApiModelProperty("负序电流超标数") + private Integer inseq; + + @ApiModelProperty("主键") + private String id; + + @ApiModelProperty("闪变是否超标") + private String isFlicker; + + @ApiModelProperty("谐波电流是否超标") + private String isGi; + + @ApiModelProperty("谐波电压是否超标") + private String isGv; + + @ApiModelProperty("负序电流是否超标") + private String isInseq; + + @ApiModelProperty("三相不平衡是否超标") + private String isUnban; + + @ApiModelProperty("主备电站id") + private String mainSubstationId; + + @ApiModelProperty("主备电站名称") + private String mainSubstationName; + + @ApiModelProperty("主备电站电压等级") + private String mainVoltageLevel; + + @ApiModelProperty("主备电站电压等级名称") + private String mainVoltageLevelName; + + @ApiModelProperty("运维单位id") + private String maintOrg; + + @ApiModelProperty("运维单位名称") + private String maintOrgName; + + @ApiModelProperty("监测日期") + private String monitorDate; + + @ApiModelProperty("场站属性") + private String monitorObjectType; + + @ApiModelProperty("场站属性名称") + private String monitorObjectTypeName; + + @ApiModelProperty("各站点名称,如:牵引站对应牵引站名称") + private String name; + + @ApiModelProperty("铁路名称") + private String railWayName; + + @ApiModelProperty("铁路编号") + private String railWayNumber; + + @ApiModelProperty("铁路类型") + private String railWayType; + + @ApiModelProperty("铁路类型名称") + private String railWayTypeName; + + @ApiModelProperty("运行状态") + private String runStatus; + + @ApiModelProperty("运行状态名称") + private String runStatusName; + + @ApiModelProperty("关联变电站id") + private String stationId; + + @ApiModelProperty("关联变电站名称") + private String stationName; + + @ApiModelProperty("变电站类型") + private String stationType; + + @ApiModelProperty("关联变电站电压等级") + private String stationVoltageLevel; + + @ApiModelProperty("关联变电站电压等级名称") + private String stationVoltageLevelName; + + @ApiModelProperty("行业分类") + private String tradeCode; + + @ApiModelProperty("行业分类名称") + private String tradeCodeName; + + @ApiModelProperty("接入电压等级") + private String voltageLevel; + + @ApiModelProperty("接入电压等级名称") + private String voltageLevelName; + +} diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalSourceEffectiveLine.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalSourceEffectiveLine.java index d1cc2fc88..04e98541a 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalSourceEffectiveLine.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalSourceEffectiveLine.java @@ -5,14 +5,13 @@ import lombok.Data; /** * @author wr - * @description + * @description 有效监测点列表下穿详细信息 * @date 2024/5/16 15:41 */ @Data public class TypicalSourceEffectiveLine { private static final long serialVersionUID = 1L; - @ApiModelProperty("实收数") private Integer actualCollectNum; diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalSourceOnLine.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalSourceOnLine.java index b10cfa7a1..e05a7535a 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalSourceOnLine.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/gw/TypicalSourceOnLine.java @@ -5,7 +5,7 @@ import lombok.Data; /** * @author wr - * @description + * @description 在线干扰源用户下穿实体类 * @date 2024/5/16 9:36 */ @Data @@ -24,6 +24,15 @@ public class TypicalSourceOnLine { @ApiModelProperty("副备电站电压等级名称") private String auxiliaryVoltageLevelName; + @ApiModelProperty("母线主键->自定义信息国网上送信息") + private String busId; + + @ApiModelProperty("母线名称->自定义信息国网上送信息") + private String busName; + + @ApiModelProperty("监测点编码->自定义信息国网上送信息") + private String monitorId; + @ApiModelProperty("母线电压等级") private String busVoltageLevel; diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsMonitorController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsMonitorController.java index cd40f7119..b60677c37 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsMonitorController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PmsMonitorController.java @@ -13,9 +13,11 @@ import com.njcn.device.pms.annotation.TerminalOperationLogDesc; import com.njcn.device.pms.pojo.dto.PmsMonitorDTO; import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO; import com.njcn.device.pms.pojo.param.*; +import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.vo.MonitorVO; import com.njcn.device.pms.pojo.vo.PmsMonitorVO; +import com.njcn.device.pms.pojo.vo.gw.TypicalSourceOnLine; import com.njcn.device.pms.service.majornetwork.IMonitorService; import com.njcn.device.biz.pojo.po.Overlimit; @@ -338,9 +340,14 @@ public class PmsMonitorController extends BaseController { }*/ } - - - + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/monitorTypicalList") + @ApiOperation("典型源荷下穿监测点信息接口") + public HttpResult> monitorTypicalList(@RequestBody TypicalSourceParam param) { + String methodDescribe = getMethodDescribe("monitorTypicalList"); + Page monitorPage = monitorService.monitorTypicalList(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, monitorPage, methodDescribe); + } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/majornetwork/LineIntegrityDataController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/majornetwork/LineIntegrityDataController.java index bc33b00d5..3d3d25003 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/majornetwork/LineIntegrityDataController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/majornetwork/LineIntegrityDataController.java @@ -1,6 +1,7 @@ package com.njcn.device.pms.controller.majornetwork; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; @@ -8,9 +9,11 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.pms.pojo.dto.MonitorIntegrityDataDTO; +import com.njcn.device.pms.pojo.param.DataQualityDetailsParam; import com.njcn.device.pms.service.majornetwork.IRStatIntegrityDService; import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.LineIntegrityDataParam; +import com.njcn.device.pq.pojo.po.RStatIntegrityD; import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO; import com.njcn.harmonic.pojo.vo.IntegrityIconVO; import com.njcn.web.controller.BaseController; @@ -36,8 +39,6 @@ import java.util.List; @RequiredArgsConstructor public class LineIntegrityDataController extends BaseController { - - private final IRStatIntegrityDService irStatIntegrityDService; @@ -54,8 +55,20 @@ public class LineIntegrityDataController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,monitorIntegrityDataDTOList,methodDescribe); } - - - - + /** + * 监测点数据完整性 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getIntegrityData") + @ApiOperation("监测点数据完整性") + @ApiImplicitParam(name = "param", value = "参数实体", required = true) + public HttpResult> getIntegrityData(@RequestBody DataQualityDetailsParam param) { + String methodDescribe = getMethodDescribe("getIntegrityData"); + List integrityDS = irStatIntegrityDService.list(new LambdaQueryWrapper() + .in(RStatIntegrityD::getLineIndex, param.getCheckRules()) + .ge(RStatIntegrityD::getTimeId,param.getStartTime()) + .le(RStatIntegrityD::getTimeId, param.getEndTime()) + ); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,integrityDS,methodDescribe); + } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorSendServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorSendServiceImpl.java index 08022d51c..8f2993dbd 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorSendServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/MonitorSendServiceImpl.java @@ -78,8 +78,11 @@ public class MonitorSendServiceImpl implements MonitorSendService { //特殊处理 List sysDicTreePOList = dictTreeFeignClient.queryAll().getData(); - List typicDic =sysDicTreePOList.stream().filter(item-> Objects.equals(DicTreeEnum.Power_Station.getCode(),item.getCode())||Objects.equals(DicTreeEnum.Ele_Railways.getCode(),item.getCode())|| - Objects.equals(DicTreeEnum.Wind_Farms.getCode(),item.getCode())||Objects.equals(DicTreeEnum.Imp_Users.getCode(),item.getCode())).collect(Collectors.toList()); + List typicDic =sysDicTreePOList.stream().filter(item-> + Objects.equals(DicTreeEnum.Power_Station.getCode(),item.getCode())|| + Objects.equals(DicTreeEnum.Ele_Railways.getCode(),item.getCode())|| + Objects.equals(DicTreeEnum.Wind_Farms.getCode(),item.getCode())|| + Objects.equals(DicTreeEnum.Imp_Users.getCode(),item.getCode())).collect(Collectors.toList()); for(SysDicTreePO sysDicTreePO : typicDic){ List temList = dictTreeFeignClient.query(sysDicTreePO.getId()).getData(); diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/TypicalSourceLoadDownServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/TypicalSourceLoadDownServiceImpl.java deleted file mode 100644 index 9d61fba93..000000000 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/impl/TypicalSourceLoadDownServiceImpl.java +++ /dev/null @@ -1,333 +0,0 @@ -package com.njcn.device.pms.service.gwPush.impl; - - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.ListUtil; -import cn.hutool.core.text.StrBuilder; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.njcn.common.pojo.exception.BusinessException; -import com.njcn.device.pms.mapper.majornetwork.PmsGeneratrixWireMapper; -import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; -import com.njcn.device.pms.pojo.po.GeneratrixWire; -import com.njcn.device.pms.pojo.po.Monitor; -import com.njcn.device.pms.pojo.po.StatationStat; -import com.njcn.device.pms.pojo.po.TractionStation; -import com.njcn.device.pms.pojo.vo.gw.*; -import com.njcn.device.pms.service.gwPush.TypicalSourceLoadDownService; -import com.njcn.device.pms.service.majornetwork.*; -import com.njcn.device.pq.pojo.po.Line; -import com.njcn.system.api.DicDataFeignClient; -import com.njcn.system.api.DictTreeFeignClient; -import com.njcn.system.enums.DicDataTypeEnum; -import com.njcn.system.enums.DicTreeEnum; -import com.njcn.system.pojo.po.DictData; -import com.njcn.system.pojo.po.SysDicTreePO; -import com.njcn.system.pojo.vo.DictTreeVO; -import com.njcn.user.api.DeptFeignClient; -import com.njcn.web.enums.GWSendEnum; -import com.njcn.web.pojo.dto.PmsPage; -import com.njcn.web.pojo.param.SendParam; -import com.njcn.web.utils.GwSendUtil; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.function.Function; -import java.util.stream.Collectors; - -@Service -@RequiredArgsConstructor -public class TypicalSourceLoadDownServiceImpl implements TypicalSourceLoadDownService { - - private final IMonitorService monitorService; - private final DicDataFeignClient dicDataFeignClient; - private final DeptFeignClient deptFeignClient; - private final DictTreeFeignClient dictTreeFeignClient; - private final IStatationStatService stationStatService; - private final IGeneratrixWireService iGeneratrixWireService; - private final ITractionStationService tractionStationService; - - @Override - public PmsPage getOnlineDetail(TypicalSourceParam param) { - Page monitorList = monitorList(param); - List info = new ArrayList<>(); - TypicalSourceOnLine typicalSourceOnLine; - //线路变电站 - List lineIds = monitorList.getRecords().stream().map(Monitor::getLineId).distinct().collect(Collectors.toList()); - List powerIds = monitorList.getRecords().stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList()); - List wiresList = iGeneratrixWireService.listByIds(lineIds); - Map wireMap = wiresList.stream().collect(Collectors - .toMap(GeneratrixWire::getId, Function.identity())); - List stationStats = stationStatService.listByIds(powerIds); - Map powerMap = stationStats.stream().collect(Collectors - .toMap(StatationStat::getPowerId, Function.identity())); - //电压等级 - List voltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); - Map mapVoltage = voltage.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); - //运行状态 - List lineState = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); - Map mapLineState = lineState.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); - //分类行业 - List industryType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INDUSTRY_TYPE.getCode()).getData(); - Map mapIndustryType = industryType.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); - //获取已存在牵引站的信息 - List tractionIds = monitorList.getRecords().stream().map(Monitor::getTractionId).collect(Collectors.toList()); - List tractionStationList = tractionStationService.list(new LambdaQueryWrapper() - .in(TractionStation::getId, tractionIds)); - Map tractionMap = tractionStationList.stream().collect(Collectors.toMap(TractionStation::getId, Function.identity())); - TractionStation traction; - for (Monitor monitor : monitorList.getRecords()) { - typicalSourceOnLine = new TypicalSourceOnLine(); - typicalSourceOnLine.setId(monitor.getId()); - typicalSourceOnLine.setName(monitor.getName()); - //母线的电压等级 - if (wireMap.containsKey(monitor.getLineId())) { - GeneratrixWire generatrixWire = wireMap.get(monitor.getLineId()); - if (mapVoltage.containsKey(generatrixWire.getScale())) { - typicalSourceOnLine.setBusVoltageLevel(String.format("%02d", mapVoltage.get(generatrixWire.getScale()).getAlgoDescribe())); - typicalSourceOnLine.setBusVoltageLevelName(mapVoltage.get(generatrixWire.getScale()).getName()); - } - } - typicalSourceOnLine.setCapacity(monitor.getUserAgreementCapacity().toString()); - typicalSourceOnLine.setCityOrg(monitor.getOrgId()); - typicalSourceOnLine.setCityOrgName(monitor.getOrgName()); - typicalSourceOnLine.setEffectMonitorNum(1); - typicalSourceOnLine.setMaintOrg(monitor.getOperationId()); - typicalSourceOnLine.setMaintOrgName(monitor.getOperationName()); - typicalSourceOnLine.setMonitorObjectType(monitor.getFieldStation()); - typicalSourceOnLine.setMonitorObjectTypeName(monitorObjectTypeName(monitor.getFieldStation())); - //运行状态 - if (mapLineState.containsKey(monitor.getMonitorState())) { - typicalSourceOnLine.setRunStatus(mapLineState.get(monitor.getMonitorState()).getValue()); - typicalSourceOnLine.setRunStatusName(mapLineState.get(monitor.getMonitorState()).getName()); - } - //变电站 - if (powerMap.containsKey(monitor.getPowerrId())) { - StatationStat statationStat = powerMap.get(monitor.getPowerrId()); - typicalSourceOnLine.setStationId(statationStat.getMidStationId()); - typicalSourceOnLine.setStationName(statationStat.getPowerName()); - typicalSourceOnLine.setMainSubstationId(statationStat.getMidStationId()); - typicalSourceOnLine.setMainSubstationName(statationStat.getPowerName()); - if (mapVoltage.containsKey(statationStat.getVoltageLevel())) { - typicalSourceOnLine.setStationVoltageLevel(String.format("%02d", mapVoltage.get(statationStat.getVoltageLevel()).getAlgoDescribe())); - typicalSourceOnLine.setStationVoltageLevelName(mapVoltage.get(statationStat.getVoltageLevel()).getName()); - } - //牵引站的主备变电站 - if (StrUtil.isNotBlank(monitor.getTractionId())) { - typicalSourceOnLine.setMainVoltageLevel(String.format("%02d", mapVoltage.get(statationStat.getVoltageLevel()).getAlgoDescribe())); - typicalSourceOnLine.setMainVoltageLevelName(mapVoltage.get(statationStat.getVoltageLevel()).getName()); - } - } -// typicalSourceOnLine.setStationType(); - //行业分类 - if (mapIndustryType.containsKey(monitor.getTradeCode())) { - typicalSourceOnLine.setTradeCode(mapIndustryType.get(monitor.getTradeCode()).getValue()); - typicalSourceOnLine.setTradeCodeName(mapIndustryType.get(monitor.getTradeCode()).getName()); - } - //电压等级 - if (mapVoltage.containsKey(monitor.getVoltageLevel())) { - typicalSourceOnLine.setVoltageLevel(String.format("%02d", mapVoltage.get(monitor.getVoltageLevel()).getAlgoDescribe())); - typicalSourceOnLine.setVoltageLevelName(mapVoltage.get(monitor.getVoltageLevel()).getName()); - } - //根据是否存在牵引站id来判断是否存在牵引站 - if (StrUtil.isNotBlank(monitor.getTractionId())) { - if (tractionMap.containsKey(monitor.getTractionId())) { - traction = tractionMap.get(monitor.getTractionId()); - typicalSourceOnLine.setName(traction.getName()); - //牵引站的主备变电站 - if (mapVoltage.containsKey(traction.getVoltageLevel())) { - typicalSourceOnLine.setMainVoltageLevel(String.format("%02d", mapVoltage.get(traction.getVoltageLevel()).getAlgoDescribe())); - typicalSourceOnLine.setMainVoltageLevelName(mapVoltage.get(traction.getVoltageLevel()).getName()); - } - typicalSourceOnLine.setRailWayName(traction.getRailwayLineName()); - typicalSourceOnLine.setRailWayNumber(traction.getRailwayLineId()); - typicalSourceOnLine.setRailWayType(traction.getRailwayType()); - typicalSourceOnLine.setRailWayTypeName(railWayTypeName(traction.getRailwayType())); - - } -// typicalSourceOnLine.setAuxiliarySubstationId(); -// typicalSourceOnLine.setAuxiliarySubstationName(); -// typicalSourceOnLine.setAuxiliaryVoltageLevel(); -// typicalSourceOnLine.setAuxiliaryVoltageLevelName(); - - } - info.add(typicalSourceOnLine); - } - PmsPage pmsPage = BeanUtil.copyProperties(monitorList, PmsPage.class); - pmsPage.setList(info); - return pmsPage; - - } - private Page monitorList(TypicalSourceParam param) { - List objTypeIds = new ArrayList<>(); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - if (StrUtil.isNotBlank(param.getOrgId())) { - List data = deptFeignClient.getDepSonSelfCodetByCode(param.getOrgId()).getData(); - lambdaQueryWrapper.in(Monitor::getOrgId, data); - } - - if (StrUtil.isBlank(param.getStatisticsType())) { - //特殊处理 - List sysDicTreePOList = dictTreeFeignClient.queryAll().getData(); - List typicDic = sysDicTreePOList.stream() - .filter(item -> Objects.equals(DicTreeEnum.Power_Station.getCode(), item.getCode()) || - Objects.equals(DicTreeEnum.Ele_Railways.getCode(), item.getCode()) || - Objects.equals(DicTreeEnum.Wind_Farms.getCode(), item.getCode()) || - Objects.equals(DicTreeEnum.Imp_Users.getCode(), item.getCode())) - .collect(Collectors.toList()); - - for (SysDicTreePO sysDicTreePO : typicDic) { - List temList = dictTreeFeignClient.query(sysDicTreePO.getId()).getData(); - List ids = temList.stream().map(DictTreeVO::getId).collect(Collectors.toList()); - objTypeIds.addAll(ids); - objTypeIds.add(sysDicTreePO.getId()); - } - lambdaQueryWrapper.notIn(Monitor::getObjType, objTypeIds); - } else { - //01-牵引站,02-风电场,03-光伏电站,04-其他干扰用户 - String code; - switch (param.getStatisticsType()) { - case "01": - code = DicTreeEnum.Ele_Railways.getCode(); - break; - case "02": - code = DicTreeEnum.Wind_Farms.getCode(); - break; - case "03": - code = DicTreeEnum.Power_Station.getCode(); - break; - case "04": - code = DicTreeEnum.Imp_Users.getCode(); - break; - default: - return new Page<>(param.getPageNum(), param.getPageSize()); - } - String id = dictTreeFeignClient.queryByCode(code).getData().getId(); - List objType = dictTreeFeignClient.query(id).getData(); - objTypeIds.add(id); - if (CollUtil.isNotEmpty(objType)) { - objTypeIds.addAll(objType.stream().map(DictTreeVO::getId).collect(Collectors.toList())); - } - lambdaQueryWrapper.in(Monitor::getObjType, objTypeIds); - } - - //获取监测点信息 - lambdaQueryWrapper.eq(Monitor::getIsUpToGrid, 1); - return monitorService.page(new Page<>(param.getPageNum(), param.getPageSize()), lambdaQueryWrapper); - } - - private String monitorObjectTypeName(String name) { - if(StrUtil.isNotBlank(name)){ - switch (name) { - case "01": - return "在运站"; - case "02": - return "新(改、扩)建站"; - } - } - return null; - } - - private String railWayTypeName(String name) { - if(StrUtil.isNotBlank(name)){ - switch (name) { - case "1": - return "高铁"; - case "2": - return "普铁"; - } - } - return null; - } - - @Override - public PmsPage getMonitorDetail(TypicalSourceParam param) { - return null; - } - - @Override - public PmsPage getValidMonitorList(TypicalSourceParam param) { - List info = new ArrayList<>(); - Page monitorList = monitorList(param); - List monitorIds = monitorList.getRecords().stream().map(Monitor::getId).collect(Collectors.toList()); - if(CollUtil.isNotEmpty(monitorIds)) { - //线路变电站 - List lineIds = monitorList.getRecords().stream().map(Monitor::getLineId).distinct().collect(Collectors.toList()); - List powerIds = monitorList.getRecords().stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList()); - List wiresList = iGeneratrixWireService.listByIds(lineIds); - Map wireMap = wiresList.stream().collect(Collectors - .toMap(GeneratrixWire::getId, Function.identity())); - List stationStats = stationStatService.listByIds(powerIds); - Map powerMap = stationStats.stream().collect(Collectors - .toMap(StatationStat::getPowerId, Function.identity())); - //电压等级 - List voltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); - Map mapVoltage = voltage.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); - //运行状态 - List lineState = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); - Map mapLineState = lineState.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); - - TypicalSourceEffectiveLine line ; - for (Monitor monitor : monitorList.getRecords()) { - line = new TypicalSourceEffectiveLine(); - //母线信息 - if (wireMap.containsKey(monitor.getLineId())) { - GeneratrixWire generatrixWire = wireMap.get(monitor.getLineId()); - if (mapVoltage.containsKey(generatrixWire.getScale())) { - line.setBusId(generatrixWire.getMidBusId()); - line.setBusName(generatrixWire.getName()); - line.setBusVoltageLevel(String.format("%02d", mapVoltage.get(generatrixWire.getScale()).getAlgoDescribe())); - line.setBusVoltageLevelName(mapVoltage.get(generatrixWire.getScale()).getName()); - } - } - line.setCityOrg(monitor.getOrgId()); - line.setCityOrgName(monitor.getOrgName()); - line.setId(monitor.getId()); - line.setMaintOrg(monitor.getOperationId()); - line.setMaintOrgName(monitor.getOperationName()); - line.setMonitorId(monitor.getMonitorId()); - line.setMonitorName(monitor.getName()); - //运行状态 - if (mapLineState.containsKey(monitor.getMonitorState())) { - line.setStatus(mapLineState.get(monitor.getMonitorState()).getValue()); - line.setStatusName(mapLineState.get(monitor.getMonitorState()).getName()); - } - //变电站 - if (powerMap.containsKey(monitor.getPowerrId())) { - StatationStat statationStat = powerMap.get(monitor.getPowerrId()); - line.setStationId(statationStat.getMidStationId()); - line.setStationName(statationStat.getPowerName()); - } -// line.setWhetherOptimal(); -// line.setWhetherOptimalName(); -// line.setStatDate(); -// line.setActualCollectNum(); -// line.setDataFullRate(); -// line.setExpectCollectNum(); - - - info.add(line); - } - } - PmsPage pmsPage = BeanUtil.copyProperties(monitorList, PmsPage.class); - pmsPage.setList(info); - return pmsPage; - } - - @Override - public PmsPage getOverStationList(TypicalSourceParam param) { - return null; - } - - @Override - public PmsPage getOverIndexList(TypicalSourceParam param) { - return null; - } -} 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 e41a510a1..b774b7b97 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 @@ -11,10 +11,12 @@ import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO; import com.njcn.device.pms.pojo.dto.PmsMonitorDTO; import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO; import com.njcn.device.pms.pojo.param.*; +import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.vo.MonitorVO; import com.njcn.device.pms.pojo.vo.PmsMonitorVO; import com.njcn.device.biz.pojo.po.Overlimit; +import com.njcn.device.pms.pojo.vo.gw.TypicalSourceOnLine; import com.njcn.user.pojo.po.Dept; import org.springframework.web.multipart.MultipartFile; @@ -203,4 +205,12 @@ public interface IMonitorService extends IService { List existMonitorDeptTree(); LineALLInfoDTO getLineAllDetail(String id); + + + /** + * @Description: 典型源荷下穿信息接口 + * @Author: wr + * @Date: 2024/5/27 13:54 + */ + Page monitorTypicalList(TypicalSourceParam param); } 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 e77278081..b267fa347 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 @@ -3,6 +3,7 @@ package com.njcn.device.pms.service.majornetwork.impl; import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; @@ -32,11 +33,12 @@ import com.njcn.device.pms.pojo.dto.PmsMonitorDTO; import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO; import com.njcn.device.pms.pojo.excel.PmsLedgerExcel; import com.njcn.device.pms.pojo.param.*; +import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; import com.njcn.device.pms.pojo.po.*; import com.njcn.device.pms.pojo.vo.MonitorVO; import com.njcn.device.pms.pojo.vo.PmsMonitorVO; -import com.njcn.device.pms.service.majornetwork.IDistributionMonitorService; -import com.njcn.device.pms.service.majornetwork.IMonitorService; +import com.njcn.device.pms.pojo.vo.gw.TypicalSourceOnLine; +import com.njcn.device.pms.service.majornetwork.*; import com.njcn.device.pq.pojo.bo.excel.OracleTerminalExcel; import com.njcn.device.pq.pojo.po.LineBak; import com.njcn.poi.excel.ExcelUtil; @@ -55,6 +57,7 @@ import com.njcn.system.pojo.po.DictData; import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.user.pojo.po.Dept; import com.njcn.web.factory.PageFactory; +import com.njcn.web.pojo.dto.PmsPage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -105,8 +108,7 @@ public class MonitorServiceImpl extends ServiceImpl impl private final DeviceBakMapper deviceBakMapper; private final DictTreeFeignClient dictTreeFeignClient; - - + private final ITractionStationService tractionStationService; @Override public List getMonitorByCondition(List deptIdList, PmsDeviceInfoParam pmsDeviceInfoParam) { @@ -660,6 +662,205 @@ public class MonitorServiceImpl extends ServiceImpl impl return lineALLInfoDTO; } + @Override + public Page monitorTypicalList(TypicalSourceParam param) { + List info = new ArrayList<>(); + TypicalSourceOnLine typicalSourceOnLine; + List objTypeIds = new ArrayList<>(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(param.getOrgId())) { + List data = deptFeignClient.getDepSonSelfCodetByCode(param.getOrgId()).getData(); + lambdaQueryWrapper.in(Monitor::getOrgId, data); + } + if (StrUtil.isBlank(param.getStatisticsType())) { + //特殊处理 + List sysDicTreePOList = dictTreeFeignClient.queryAll().getData(); + List typicDic = sysDicTreePOList.stream() + .filter(item -> Objects.equals(DicTreeEnum.Power_Station.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Ele_Railways.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Wind_Farms.getCode(), item.getCode()) || + Objects.equals(DicTreeEnum.Imp_Users.getCode(), item.getCode())) + .collect(Collectors.toList()); + + for (SysDicTreePO sysDicTreePO : typicDic) { + List temList = dictTreeFeignClient.query(sysDicTreePO.getId()).getData(); + List ids = temList.stream().map(DictTreeVO::getId).collect(Collectors.toList()); + objTypeIds.addAll(ids); + objTypeIds.add(sysDicTreePO.getId()); + } + lambdaQueryWrapper.notIn(Monitor::getObjType, objTypeIds); + } else { + //01-牵引站,02-风电场,03-光伏电站,04-其他干扰用户 + String code; + switch (param.getStatisticsType()) { + case "01": + code = DicTreeEnum.Ele_Railways.getCode(); + break; + case "02": + code = DicTreeEnum.Wind_Farms.getCode(); + break; + case "03": + code = DicTreeEnum.Power_Station.getCode(); + break; + case "04": + code = DicTreeEnum.Imp_Users.getCode(); + break; + default: + return new Page<>(param.getPageNum(), param.getPageSize()); + } + String id = dictTreeFeignClient.queryByCode(code).getData().getId(); + List objType = dictTreeFeignClient.query(id).getData(); + objTypeIds.add(id); + if (CollUtil.isNotEmpty(objType)) { + objTypeIds.addAll(objType.stream().map(DictTreeVO::getId).collect(Collectors.toList())); + } + lambdaQueryWrapper.in(Monitor::getObjType, objTypeIds); + } + + //获取监测点信息 + lambdaQueryWrapper.eq(Monitor::getIsUpToGrid, 1); + lambdaQueryWrapper.in(CollUtil.isNotEmpty(param.getMonitorIds()),Monitor::getId,param.getMonitorIds()); + Page monitorList = this.page(new Page<>(param.getPageNum(), param.getPageSize()), lambdaQueryWrapper); + //线路变电站 + List lineIds = monitorList.getRecords().stream().map(Monitor::getLineId).distinct().collect(Collectors.toList()); + List powerIds = monitorList.getRecords().stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList()); + List wiresList =new ArrayList<>(); + List stationStats=new ArrayList<>(); + if(CollUtil.isNotEmpty(lineIds)){ + wiresList.addAll(generatrixWireMapper.selectBatchIds(lineIds)); + } + if(CollUtil.isNotEmpty(powerIds)){ + stationStats.addAll(statationStatMapper.selectBatchIds(powerIds)); + } + Map wireMap = wiresList.stream().collect(Collectors + .toMap(GeneratrixWire::getId, Function.identity())); + Map powerMap = stationStats.stream().collect(Collectors + .toMap(StatationStat::getPowerId, Function.identity())); + //电压等级 + List voltage = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); + Map mapVoltage = voltage.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + //运行状态 + List lineState = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); + Map mapLineState = lineState.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + //分类行业 + List industryType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INDUSTRY_TYPE.getCode()).getData(); + Map mapIndustryType = industryType.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); + //获取已存在牵引站的信息 + List tractionIds = monitorList.getRecords().stream().map(Monitor::getTractionId).collect(Collectors.toList()); + List tractionStationList =new ArrayList<>(); + if(CollUtil.isNotEmpty(powerIds)){ + tractionStationList.addAll(tractionStationService.list(new LambdaQueryWrapper() + .in(TractionStation::getId, tractionIds))); + } + Map tractionMap = tractionStationList.stream().collect(Collectors.toMap(TractionStation::getId, Function.identity())); + TractionStation traction; + for (Monitor monitor : monitorList.getRecords()) { + typicalSourceOnLine = new TypicalSourceOnLine(); + typicalSourceOnLine.setId(monitor.getId()); + typicalSourceOnLine.setMonitorId(monitor.getMonitorId()); + typicalSourceOnLine.setName(monitor.getName()); + //母线的电压等级 + if (wireMap.containsKey(monitor.getLineId())) { + GeneratrixWire generatrixWire = wireMap.get(monitor.getLineId()); + typicalSourceOnLine.setBusId(generatrixWire.getMidBusId()); + typicalSourceOnLine.setBusName(generatrixWire.getName()); + if (mapVoltage.containsKey(generatrixWire.getScale())) { + typicalSourceOnLine.setBusVoltageLevel(String.format("%02d", mapVoltage.get(generatrixWire.getScale()).getAlgoDescribe())); + typicalSourceOnLine.setBusVoltageLevelName(mapVoltage.get(generatrixWire.getScale()).getName()); + } + } + typicalSourceOnLine.setCapacity(monitor.getUserAgreementCapacity().toString()); + typicalSourceOnLine.setCityOrg(monitor.getOrgId()); + typicalSourceOnLine.setCityOrgName(monitor.getOrgName()); + typicalSourceOnLine.setEffectMonitorNum(1); + typicalSourceOnLine.setMaintOrg(monitor.getOperationId()); + typicalSourceOnLine.setMaintOrgName(monitor.getOperationName()); + typicalSourceOnLine.setMonitorObjectType(monitor.getFieldStation()); + typicalSourceOnLine.setMonitorObjectTypeName(monitorObjectTypeName(monitor.getFieldStation())); + //运行状态 + if (mapLineState.containsKey(monitor.getMonitorState())) { + typicalSourceOnLine.setRunStatus(mapLineState.get(monitor.getMonitorState()).getValue()); + typicalSourceOnLine.setRunStatusName(mapLineState.get(monitor.getMonitorState()).getName()); + } + //变电站 + if (powerMap.containsKey(monitor.getPowerrId())) { + StatationStat statationStat = powerMap.get(monitor.getPowerrId()); + typicalSourceOnLine.setStationId(statationStat.getMidStationId()); + typicalSourceOnLine.setStationName(statationStat.getPowerName()); + typicalSourceOnLine.setMainSubstationId(statationStat.getMidStationId()); + typicalSourceOnLine.setMainSubstationName(statationStat.getPowerName()); + if (mapVoltage.containsKey(statationStat.getVoltageLevel())) { + typicalSourceOnLine.setStationVoltageLevel(String.format("%02d", mapVoltage.get(statationStat.getVoltageLevel()).getAlgoDescribe())); + typicalSourceOnLine.setStationVoltageLevelName(mapVoltage.get(statationStat.getVoltageLevel()).getName()); + } + //牵引站的主备变电站 + if (StrUtil.isNotBlank(monitor.getTractionId())) { + typicalSourceOnLine.setMainVoltageLevel(String.format("%02d", mapVoltage.get(statationStat.getVoltageLevel()).getAlgoDescribe())); + typicalSourceOnLine.setMainVoltageLevelName(mapVoltage.get(statationStat.getVoltageLevel()).getName()); + } + } +// typicalSourceOnLine.setStationType(); + //行业分类 + if (mapIndustryType.containsKey(monitor.getTradeCode())) { + typicalSourceOnLine.setTradeCode(mapIndustryType.get(monitor.getTradeCode()).getValue()); + typicalSourceOnLine.setTradeCodeName(mapIndustryType.get(monitor.getTradeCode()).getName()); + } + //电压等级 + if (mapVoltage.containsKey(monitor.getVoltageLevel())) { + typicalSourceOnLine.setVoltageLevel(String.format("%02d", mapVoltage.get(monitor.getVoltageLevel()).getAlgoDescribe())); + typicalSourceOnLine.setVoltageLevelName(mapVoltage.get(monitor.getVoltageLevel()).getName()); + } + //根据是否存在牵引站id来判断是否存在牵引站 + if (StrUtil.isNotBlank(monitor.getTractionId())) { + if (tractionMap.containsKey(monitor.getTractionId())) { + traction = tractionMap.get(monitor.getTractionId()); + typicalSourceOnLine.setName(traction.getName()); + //牵引站的主备变电站 + if (mapVoltage.containsKey(traction.getVoltageLevel())) { + typicalSourceOnLine.setMainVoltageLevel(String.format("%02d", mapVoltage.get(traction.getVoltageLevel()).getAlgoDescribe())); + typicalSourceOnLine.setMainVoltageLevelName(mapVoltage.get(traction.getVoltageLevel()).getName()); + } + typicalSourceOnLine.setRailWayName(traction.getRailwayLineName()); + typicalSourceOnLine.setRailWayNumber(traction.getRailwayLineId()); + typicalSourceOnLine.setRailWayType(traction.getRailwayType()); + typicalSourceOnLine.setRailWayTypeName(railWayTypeName(traction.getRailwayType())); + + } +// typicalSourceOnLine.setAuxiliarySubstationId(); +// typicalSourceOnLine.setAuxiliarySubstationName(); +// typicalSourceOnLine.setAuxiliaryVoltageLevel(); +// typicalSourceOnLine.setAuxiliaryVoltageLevelName(); + + } + info.add(typicalSourceOnLine); + } + Page pmsPage = BeanUtil.copyProperties(monitorList, Page.class); + pmsPage.setRecords(info); + return pmsPage; + } + private String monitorObjectTypeName(String name) { + if(StrUtil.isNotBlank(name)){ + switch (name) { + case "01": + return "在运站"; + case "02": + return "新(改、扩)建站"; + } + } + return null; + } + + private String railWayTypeName(String name) { + if(StrUtil.isNotBlank(name)){ + switch (name) { + case "1": + return "高铁"; + case "2": + return "普铁"; + } + } + return null; + } private String dealDataBatchUpdate(List pmsLedgerExcelList) { List oracleTerminalExcelMsg = new ArrayList<>(); diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java index cc23c53ca..896c30a50 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/api/RStatLimitRateDClient.java @@ -31,4 +31,4 @@ public interface RStatLimitRateDClient { @PostMapping("/monitorIdsGetLimitTargetInfo") HttpResult> monitorIdsGetLimitTargetInfo(@RequestBody RStatLimitQueryParam rStatLimitQueryParam); - } +} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/TypicalSourceLoadDownController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/TypicalSourceLoadDownController.java similarity index 63% rename from pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/TypicalSourceLoadDownController.java rename to pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/TypicalSourceLoadDownController.java index 86d7c41f4..da9bda27e 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/gwPush/TypicalSourceLoadDownController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/TypicalSourceLoadDownController.java @@ -1,11 +1,13 @@ -package com.njcn.device.pms.controller.gwPush; +package com.njcn.harmonic.controller.upload; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; +import com.njcn.device.pms.pojo.vo.gw.TypicalOverIndex; +import com.njcn.device.pms.pojo.vo.gw.TypicalOverStation; import com.njcn.device.pms.pojo.vo.gw.TypicalSourceEffectiveLine; import com.njcn.device.pms.pojo.vo.gw.TypicalSourceOnLine; -import com.njcn.device.pms.service.gwPush.TypicalSourceLoadDownService; +import com.njcn.harmonic.service.upload.TypicalSourceLoadDownService; import com.njcn.web.pojo.dto.PmsHttpResult; import com.njcn.web.pojo.dto.PmsPage; import io.swagger.annotations.Api; @@ -13,7 +15,10 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; +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; /** * @author wr @@ -31,7 +36,7 @@ public class TypicalSourceLoadDownController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getOnlineDetail") - @ApiOperation("国网上送-接收总部典型源荷分析查询在线干扰源用户下穿接口") + @ApiOperation("查询在线干扰源用户下穿接口") @ApiImplicitParam(name = "param", value = "实体参数", required = true) public PmsHttpResult> getOnlineDetail(@RequestBody TypicalSourceParam param) { PmsPage PmsPage = typicalSourceLoadDownService.getOnlineDetail(param); @@ -40,39 +45,37 @@ public class TypicalSourceLoadDownController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getMonitorDetail") - @ApiOperation("国网上送-接收总部典型源荷分析查询监测有效干扰源用户下穿接口") + @ApiOperation("查询监测有效干扰源用户下穿接口") @ApiImplicitParam(name = "param", value = "实体参数", required = true) - public PmsHttpResult> getMonitorDetail(@RequestBody TypicalSourceParam param) { - PmsPage PmsPage = typicalSourceLoadDownService.getMonitorDetail(param); + public PmsHttpResult> getMonitorDetail(@RequestBody TypicalSourceParam param) { + PmsPage PmsPage = typicalSourceLoadDownService.getMonitorDetail(param); return new PmsHttpResult<>(0, PmsPage); } @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getValidMonitorList") - @ApiOperation("国网上送-接收总部典型源荷分析获取有效监测点列表下穿接口") + @ApiOperation("获取有效监测点列表下穿接口") @ApiImplicitParam(name = "param", value = "实体参数", required = true) public PmsHttpResult> getValidMonitorList(@RequestBody TypicalSourceParam param) { PmsPage PmsPage = typicalSourceLoadDownService.getValidMonitorList(param); return new PmsHttpResult<>(0, PmsPage); } - @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getOverStationList") - @ApiOperation("国网上送-接收总部典型源荷分析获取超标电站数据列表下穿接口") + @ApiOperation("获取超标电站数据列表下穿接口") @ApiImplicitParam(name = "param", value = "实体参数", required = true) - public PmsHttpResult> getOverStationList(@RequestBody TypicalSourceParam param) { - PmsPage PmsPage = typicalSourceLoadDownService.getOverStationList(param); + public PmsHttpResult> getOverStationList(@RequestBody TypicalSourceParam param) { + PmsPage PmsPage = typicalSourceLoadDownService.getOverStationList(param); return new PmsHttpResult<>(0, PmsPage); } - @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getOverIndexList") - @ApiOperation("国网上送-接收总部典型源荷分析获取超标指标数据表下穿接口") + @ApiOperation("获取超标指标数据表下穿接口") @ApiImplicitParam(name = "param", value = "实体参数", required = true) - public PmsHttpResult> getOverIndexList(@RequestBody TypicalSourceParam param) { - PmsPage PmsPage = typicalSourceLoadDownService.getOverIndexList(param); + public PmsHttpResult> getOverIndexList(@RequestBody TypicalSourceParam param) { + PmsPage PmsPage = typicalSourceLoadDownService.getOverIndexList(param); return new PmsHttpResult<>(0, PmsPage); } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java index b48c18eae..95294a9cd 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitTargetDMapper.java @@ -61,7 +61,7 @@ public interface RStatLimitTargetDMapper extends BaseMapper @Param("startTime") String startTime, @Param("endTime") String endTime); - RStatLimitTargetVO getSumTargetDetails(@Param("ids") List ids, + List getSumTargetDetails(@Param("ids") List ids, @Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java index 8d9f31f4a..be7a8fee5 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/RStatLimitTargetDServiceImpl.java @@ -1,5 +1,6 @@ package com.njcn.harmonic.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.param.StatisticsBizBaseParam; @@ -31,8 +32,12 @@ public class RStatLimitTargetDServiceImpl extends ServiceImpl sumTargetDetails = this.baseMapper.getSumTargetDetails(Arrays.asList(param.getId()), DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString(), DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString()); + if(CollUtil.isNotEmpty(sumTargetDetails)){ + return sumTargetDetails.get(0); + } + return new RStatLimitTargetVO() ; } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/TypicalSourceLoadDownService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/TypicalSourceLoadDownService.java similarity index 72% rename from pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/TypicalSourceLoadDownService.java rename to pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/TypicalSourceLoadDownService.java index 2d06b95a6..edde7a07d 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/gwPush/TypicalSourceLoadDownService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/TypicalSourceLoadDownService.java @@ -1,6 +1,8 @@ -package com.njcn.device.pms.service.gwPush; +package com.njcn.harmonic.service.upload; import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; +import com.njcn.device.pms.pojo.vo.gw.TypicalOverIndex; +import com.njcn.device.pms.pojo.vo.gw.TypicalOverStation; import com.njcn.device.pms.pojo.vo.gw.TypicalSourceEffectiveLine; import com.njcn.device.pms.pojo.vo.gw.TypicalSourceOnLine; import com.njcn.web.pojo.dto.PmsPage; @@ -17,11 +19,11 @@ public interface TypicalSourceLoadDownService { PmsPage getOnlineDetail(TypicalSourceParam param); /** - * @Description: 接收总部典型源荷分析获取有效监测点列表下穿接口 + * @Description: 接收总部典型源荷分析获取有效监测点列表下穿接口(和在线干扰源用户下穿接口实体类一样) * @param param * @Date: 2024/5/16 10:22 */ - PmsPage getMonitorDetail(TypicalSourceParam param); + PmsPage getMonitorDetail(TypicalSourceParam param); /** * @Description: 接收总部典型源荷分析获取有效监测点列表下穿接口 @@ -35,14 +37,14 @@ public interface TypicalSourceLoadDownService { * @param param * @Date: 2024/5/16 10:22 */ - PmsPage getOverStationList(TypicalSourceParam param); + PmsPage getOverStationList(TypicalSourceParam param); /** * @Description: 接收总部典型源荷分析获取超标指标数据表下穿接口 * @param param * @Date: 2024/5/16 10:22 */ - PmsPage getOverIndexList(TypicalSourceParam param); + PmsPage getOverIndexList(TypicalSourceParam param); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/TypicalSourceLoadDownServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/TypicalSourceLoadDownServiceImpl.java new file mode 100644 index 000000000..5024684ea --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/TypicalSourceLoadDownServiceImpl.java @@ -0,0 +1,342 @@ +package com.njcn.harmonic.service.upload.impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.device.pms.api.LineIntegrityDataClient; +import com.njcn.device.pms.api.MonitorClient; +import com.njcn.device.pms.pojo.param.DataQualityDetailsParam; +import com.njcn.device.pms.pojo.param.gw.TypicalSourceParam; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.device.pms.pojo.vo.gw.TypicalOverIndex; +import com.njcn.device.pms.pojo.vo.gw.TypicalOverStation; +import com.njcn.device.pms.pojo.vo.gw.TypicalSourceEffectiveLine; +import com.njcn.device.pms.pojo.vo.gw.TypicalSourceOnLine; +import com.njcn.device.pq.pojo.po.RStatIntegrityD; +import com.njcn.harmonic.mapper.RStatLimitRateDMapper; +import com.njcn.harmonic.mapper.RStatLimitTargetDMapper; +import com.njcn.harmonic.mapper.upload.PmsRunStatisticDMapper; +import com.njcn.harmonic.mapper.upload.PmsRunStatisticMMapper; +import com.njcn.harmonic.mapper.upload.PmsRunStatisticYMapper; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticD; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticM; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticY; +import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; +import com.njcn.harmonic.service.upload.TypicalSourceLoadDownService; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.web.pojo.dto.PmsPage; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class TypicalSourceLoadDownServiceImpl implements TypicalSourceLoadDownService { + + private final MonitorClient monitorClient; + private final RStatLimitTargetDMapper rStatLimitTargetDMapper; + private final RStatLimitRateDMapper rStatLimitRateDMapper; + private final LineIntegrityDataClient integrityDataClient; + private final PmsRunStatisticDMapper pmsRunStatisticDMapper; + private final PmsRunStatisticMMapper pmsRunStatisticMMapper; + private final PmsRunStatisticYMapper pmsRunStatisticYMapper; + + + @Override + public PmsPage getOnlineDetail(TypicalSourceParam param) { + setMonitorIds(param); + Page typicalSourceOnLinePage = monitorClient.monitorTypicalList(param).getData(); + PmsPage pmsPage = BeanUtil.copyProperties(typicalSourceOnLinePage, PmsPage.class); + pmsPage.setList(typicalSourceOnLinePage.getRecords()); + return pmsPage; + + } + @Override + public PmsPage getMonitorDetail(TypicalSourceParam param) { + setMonitorIds(param); + DataQualityDetailsParam integrityParam=new DataQualityDetailsParam(); + integrityParam.setStartTime(param.getStartTime()); + integrityParam.setEndTime(param.getEndTime()); + integrityParam.setCheckRules(param.getMonitorIds()); + List integrityDS = integrityDataClient.getIntegrityData(integrityParam).getData(); + Map> integrityMap = integrityDS.stream().collect(Collectors.groupingBy(RStatIntegrityD::getLineIndex)); + List ids = new ArrayList<>(); + integrityMap.forEach((paramKey, paramValue) -> { + int realTime = paramValue.stream().mapToInt(RStatIntegrityD::getRealTime).sum(); + int dueTime = paramValue.stream().mapToInt(RStatIntegrityD::getDueTime).sum(); + float v = NumberUtil.round(realTime * 100.0 / dueTime, 2).floatValue(); + if(v>95.0){ + ids.add(paramKey); + } + }); + param.setMonitorIds(ids); + Page typicalSourceOnLinePage = monitorClient.monitorTypicalList(param).getData(); + PmsPage pmsPage = BeanUtil.copyProperties(typicalSourceOnLinePage, PmsPage.class); + pmsPage.setList(typicalSourceOnLinePage.getRecords()); + return pmsPage; + } + + @Override + public PmsPage getValidMonitorList(TypicalSourceParam param) { + setMonitorIds(param); + List info = new ArrayList<>(); + Page monitorList = monitorClient.monitorTypicalList(param).getData(); + List monitorIds = monitorList.getRecords().stream().map(TypicalSourceOnLine::getId).collect(Collectors.toList()); + if(CollUtil.isNotEmpty(monitorIds)) { + DataQualityDetailsParam integrityParam=new DataQualityDetailsParam(); + integrityParam.setStartTime(param.getStartTime()); + integrityParam.setEndTime(param.getEndTime()); + integrityParam.setCheckRules(monitorIds); + List integrityDS = integrityDataClient.getIntegrityData(integrityParam).getData(); + Map> integritDMap = new HashMap<>(); + if(CollUtil.isNotEmpty(integrityDS)){ + integritDMap.putAll(integrityDS.stream().collect(Collectors.groupingBy(RStatIntegrityD::getLineIndex))); + } + TypicalSourceEffectiveLine line ; + for (TypicalSourceOnLine monitor : monitorList.getRecords()) { + line = new TypicalSourceEffectiveLine(); + //母线信息 + line.setBusId(monitor.getBusId()); + line.setBusName(monitor.getName()); + line.setBusVoltageLevel(monitor.getBusVoltageLevel()); + line.setBusVoltageLevelName(monitor.getBusVoltageLevelName()); + line.setCityOrg(monitor.getCityOrg()); + line.setCityOrgName(monitor.getCityOrgName()); + line.setId(monitor.getId()); + line.setMaintOrg(monitor.getMaintOrg()); + line.setMaintOrgName(monitor.getMaintOrgName()); + line.setMonitorId(monitor.getMonitorId()); + line.setMonitorName(monitor.getName()); + //运行状态 + line.setStatus(monitor.getRunStatus()); + line.setStatusName(monitor.getRunStatusName()); + line.setStationId(monitor.getStationId()); + line.setStationName(monitor.getStationName()); + line.setStatDate(param.getStatDate()); + if(integritDMap.containsKey(monitor.getId())){ + List integrityDSList = integritDMap.get(monitor.getId()); + line.setActualCollectNum(integrityDSList.stream().mapToInt(RStatIntegrityD::getRealTime).sum()); + line.setExpectCollectNum(integrityDSList.stream().mapToInt(RStatIntegrityD::getDueTime).sum()); + line.setDataFullRate(NumberUtil.round(line.getActualCollectNum()*100.0/ line.getExpectCollectNum(), 2).floatValue()); + }else { + line.setActualCollectNum(0); + line.setExpectCollectNum(0); + line.setDataFullRate(0.0f); + } +// line.setWhetherOptimal(); +// line.setWhetherOptimalName(); + info.add(line); + } + } + PmsPage pmsPage = BeanUtil.copyProperties(monitorList, PmsPage.class); + pmsPage.setList(info); + return pmsPage; + } + + @Override + public PmsPage getOverStationList(TypicalSourceParam param) { + setMonitorIds(param); + List info=new ArrayList<>(); + //获取监测点信息的信息 + Page monitorList = monitorClient.monitorTypicalList(param).getData(); + //根据监测点id集合获取超标监测信息 + List monitorIds = monitorList.getRecords().stream().map(TypicalSourceOnLine::getId).distinct().collect(Collectors.toList()); + //获取超标监测点天数 + List sumTargetDetails = rStatLimitTargetDMapper.getSumTargetDetails(monitorIds, + param.getStartTime(), + param.getEndTime()); + Map targetDetailMap = sumTargetDetails.stream() + .collect(Collectors.toMap(RStatLimitTargetVO::getLineId, Function.identity())); + TypicalOverStation overStation; + for (TypicalSourceOnLine record : monitorList.getRecords()) { + overStation = new TypicalOverStation(); + overStation.setAuxiliarySubstationId(record.getAuxiliarySubstationId()); + overStation.setAuxiliarySubstationName(record.getAuxiliarySubstationName()); + overStation.setAuxiliaryVoltageLevel(record.getAuxiliaryVoltageLevel()); + overStation.setAuxiliaryVoltageLevelName(record.getAuxiliaryVoltageLevelName()); + overStation.setBusVoltageLevel(record.getBusVoltageLevel()); + overStation.setBusVoltageLevelName(record.getBusVoltageLevelName()); + overStation.setCapacity(record.getCapacity()); + overStation.setCityOrg(record.getCityOrg()); + overStation.setCityOrgName(record.getCityOrgName()); + overStation.setEffectMonitorNum(record.getEffectMonitorNum()); + overStation.setId(record.getId()); + overStation.setMainSubstationId(record.getMainSubstationId()); + overStation.setMainSubstationName(record.getMainSubstationName()); + overStation.setMainVoltageLevel(record.getMainVoltageLevel()); + overStation.setMainVoltageLevelName(record.getMainVoltageLevelName()); + overStation.setMaintOrg(record.getMaintOrg()); + overStation.setMaintOrgName(record.getMaintOrgName()); + overStation.setMonitorObjectType(record.getMonitorObjectType()); + overStation.setMonitorObjectTypeName(record.getMonitorObjectTypeName()); + overStation.setName(record.getName()); + overStation.setRailWayName(record.getRailWayName()); + overStation.setRailWayNumber(record.getRailWayNumber()); + overStation.setRailWayType(record.getRailWayType()); + overStation.setRailWayTypeName(record.getRailWayTypeName()); + overStation.setRunStatus(record.getRunStatus()); + overStation.setRunStatusName(record.getRunStatusName()); + overStation.setStationId(record.getStationId()); + overStation.setStationName(record.getStationName()); + overStation.setStationType(record.getStationType()); + overStation.setStationVoltageLevel(record.getStationVoltageLevel()); + overStation.setStationVoltageLevelName(record.getStationVoltageLevelName()); + overStation.setTradeCode(record.getTradeCode()); + overStation.setTradeCodeName(record.getTradeCodeName()); + overStation.setVoltageLevel(record.getVoltageLevel()); + overStation.setVoltageLevelName(record.getVoltageLevelName()); + + overStation.setMonitorDate(param.getStatDate()); + if (targetDetailMap.containsKey(record.getId())) { + RStatLimitTargetVO rStatLimitTargetVO = targetDetailMap.get(record.getId()); + overStation.setFlicker(rStatLimitTargetVO.getFlickerOvertime()); + overStation.setGi(rStatLimitTargetVO.getIharmOvertime()); + overStation.setGv(rStatLimitTargetVO.getUharmOvertime()); + overStation.setUnban(rStatLimitTargetVO.getUbalanceOvertime()); + overStation.setInseq(rStatLimitTargetVO.getINegOvertime()); + overStation.setIsFlicker(overStation.getFlicker()>0?"是":"否"); + overStation.setIsGi(overStation.getGi()>0?"是":"否"); + overStation.setIsGv(overStation.getGv()>0?"是":"否"); + overStation.setIsInseq(overStation.getInseq()>0?"是":"否"); + overStation.setIsUnban(overStation.getUnban()>0?"是":"否"); + }else{ + overStation.setFlicker(0); + overStation.setGi(0); + overStation.setGv(0); + overStation.setUnban(0); + overStation.setInseq(0); + overStation.setIsFlicker("否"); + overStation.setIsGi("否"); + overStation.setIsGv("否"); + overStation.setIsInseq("否"); + overStation.setIsUnban("否"); + } + info.add(overStation); + } + PmsPage pmsPage = BeanUtil.copyProperties(monitorList, PmsPage.class); + pmsPage.setList(info); + return pmsPage; + } + + @Override + public PmsPage getOverIndexList(TypicalSourceParam param) { + setMonitorIds(param); + List info=new ArrayList<>(); + //获取监测点信息的信息 + Page monitorList = monitorClient.monitorTypicalList(param).getData(); + //根据监测点id集合获取超标监测信息 + List monitorIds = monitorList.getRecords().stream().map(TypicalSourceOnLine::getId).distinct().collect(Collectors.toList()); + + //TODO 缺少信息,获取监测点信息,rStatLimitRateDMapper + + TypicalOverIndex overIndex; + for (TypicalSourceOnLine record : monitorList.getRecords()) { + overIndex = new TypicalOverIndex(); + overIndex.setAuxiliarySubstationId(record.getAuxiliarySubstationId()); + overIndex.setAuxiliarySubstationName(record.getAuxiliarySubstationName()); + overIndex.setAuxiliaryVoltageLevel(record.getAuxiliaryVoltageLevel()); + overIndex.setAuxiliaryVoltageLevelName(record.getAuxiliaryVoltageLevelName()); + overIndex.setBusId(record.getBusId()); + overIndex.setBusName(record.getBusName()); + overIndex.setBusVoltageLevel(record.getBusVoltageLevel()); + overIndex.setBusVoltageLevelName(record.getBusVoltageLevelName()); + overIndex.setCapacity(record.getCapacity()); + overIndex.setCityOrg(record.getCityOrg()); + overIndex.setCityOrgName(record.getCityOrgName()); + overIndex.setEffectMonitorNum(record.getEffectMonitorNum()); + overIndex.setId(record.getId()); + overIndex.setMainSubstationId(record.getMainSubstationId()); + overIndex.setMainSubstationName(record.getMainSubstationName()); + overIndex.setMainVoltageLevel(record.getMainVoltageLevel()); + overIndex.setMainVoltageLevelName(record.getMainVoltageLevelName()); + overIndex.setMaintOrg(record.getMaintOrg()); + overIndex.setMaintOrgName(record.getMaintOrgName()); + overIndex.setMonitorId(record.getMonitorId()); + overIndex.setMonitorObjectType(record.getMonitorObjectType()); + overIndex.setMonitorObjectTypeName(record.getMonitorObjectTypeName()); + overIndex.setName(record.getName()); + overIndex.setRailWayName(record.getRailWayName()); + overIndex.setRailWayNumber(record.getRailWayNumber()); + overIndex.setRailWayType(record.getRailWayType()); + overIndex.setRailWayTypeName(record.getRailWayTypeName()); + overIndex.setRunStatus(record.getRunStatus()); + overIndex.setRunStatusName(record.getRunStatusName()); + overIndex.setStationId(record.getStationId()); + overIndex.setStationName(record.getStationName()); + overIndex.setStationType(record.getStationType()); + overIndex.setStationVoltageLevel(record.getStationVoltageLevel()); + overIndex.setStationVoltageLevelName(record.getStationVoltageLevelName()); + overIndex.setTradeCode(record.getTradeCode()); + overIndex.setTradeCodeName(record.getTradeCodeName()); + overIndex.setVoltageLevel(record.getVoltageLevel()); + overIndex.setVoltageLevelName(record.getVoltageLevelName()); + + + overIndex.setMonitorDate(param.getStatDate()); + /* + //日平均值 + overIndex.setAvgValue(); + //谐波次数 + overIndex.setHarmonicNum(); + //日最大值 + overIndex.setMaxValue(); + //日最小值 + overIndex.setMinValue(); + //日95值 + overIndex.setNfValue(); + //一般限值 + overIndex.setNormalLimit(); + //相别 + overIndex.setSeq(); + //短时限值 + overIndex.setShortLimit(); + */ + + info.add(overIndex); + } + PmsPage pmsPage = BeanUtil.copyProperties(monitorList, PmsPage.class); + pmsPage.setList(info); + return pmsPage; + } + + + private void setMonitorIds(TypicalSourceParam param){ + List temBusIds = new ArrayList<>(); + LocalDate begin = LocalDate.parse(param.getStartTime()); + String statisticType = param.getStatType(); + QueryWrapper dayLam = new QueryWrapper<>(); + dayLam.eq("statistic_date", begin).eq("dept_id", param.getNodeId()); + Object pmsRunStatistic = null; + if (DicDataEnum.STATISTICAL_TYPE_D.getCode().equals(statisticType)) { + pmsRunStatistic = pmsRunStatisticDMapper.selectOne((QueryWrapper) dayLam); + } else if (DicDataEnum.STATISTICAL_TYPE_M.getCode().equals(statisticType)) { + pmsRunStatistic = pmsRunStatisticMMapper.selectOne((QueryWrapper) dayLam); + } else if (DicDataEnum.STATISTICAL_TYPE_Y.getCode().equals(statisticType)) { + pmsRunStatistic = pmsRunStatisticYMapper.selectOne((QueryWrapper) dayLam); + } + + if (Objects.nonNull(pmsRunStatistic)) { + String onlineBusMidIds; + if (pmsRunStatistic instanceof PmsRunStatisticD) { + onlineBusMidIds = ((PmsRunStatisticD) pmsRunStatistic).getTypicalOnlineIds(); + } else if (pmsRunStatistic instanceof PmsRunStatisticM) { + onlineBusMidIds = ((PmsRunStatisticM) pmsRunStatistic).getTypicalOnlineIds(); + } else { + onlineBusMidIds = ((PmsRunStatisticY) pmsRunStatistic).getTypicalOnlineIds(); + } + if (onlineBusMidIds != null) { + temBusIds.addAll(Arrays.asList(onlineBusMidIds.split(StrUtil.COMMA))); + } + } + param.setMonitorIds(temBusIds); + } +}