From 38be9f6839ebc413b03cdc31c531c26307cf6aba Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Wed, 10 Jun 2026 20:15:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(ledger):=20=E6=B7=BB=E5=8A=A0=E7=BC=BA?= =?UTF-8?q?=E5=A4=B1=E5=8F=B0=E8=B4=A6=E4=BF=A1=E6=81=AF=E7=9A=84=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/CsCommTerminalFeignClient.java | 6 +- .../njcn/csdevice/api/CsLineFeignClient.java | 7 +- ...ommTerminalFeignClientFallbackFactory.java | 7 + .../fallback/CsLineClientFallbackFactory.java | 3 +- .../pojo/dto/CsEquipmentDeliveryDTO.java | 15 ++ .../njcn/csdevice/pojo/dto/DevDetailDTO.java | 12 ++ .../pojo/po/CsEquipmentDeliveryPO.java | 6 - .../com/njcn/csdevice/pojo/po/CsLinePO.java | 7 - .../pojo/vo/CsEquipmentDeliveryVO.java | 9 + .../pojo/vo/PqSensitiveUserLineVO.java | 12 +- .../ledger/CsCommTerminalController.java | 24 +-- .../controller/ledger/CsLedgerController.java | 16 +- .../controller/line/CslineController.java | 11 +- .../service/CsCommTerminalService.java | 3 + .../csdevice/service/CsLinePOService.java | 3 +- .../csdevice/service/ICsLedgerService.java | 2 +- .../impl/CsCommTerminalServiceImpl.java | 101 ++++++++++- .../service/impl/CsGroupServiceImpl.java | 6 +- .../service/impl/CsLedgerServiceImpl.java | 164 +++++++++--------- .../service/impl/CsLinePOServiceImpl.java | 79 ++++----- .../csharmonic/pojo/vo/LimitExtentVO.java | 24 ++- .../vo/MainLineStatLimitRateDetailsVO.java | 6 + .../njcn/csharmonic/pojo/vo/MainLineVO.java | 8 + .../vo/TotalLimitStatisticsDetailsVO.java | 12 ++ .../pojo/vo/TotalLimitStatisticsVO.java | 9 +- .../pojo/vo/event/EventStatisticVO.java | 12 ++ .../csharmonic/pojo/vo/event/F47Curve.java | 9 + .../controller/PqSensitiveUserController.java | 14 +- .../service/impl/CustomReportServiceImpl.java | 41 +++-- .../impl/PqSensitiveUserServiceImpl.java | 46 +++-- .../impl/RStatLimitRateDServiceImpl.java | 57 ++++-- .../RStatLimitRateDetailDServiceImpl.java | 150 ++++++++++------ .../impl/event/EventOverviewServiceImpl.java | 15 +- 33 files changed, 595 insertions(+), 301 deletions(-) diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsCommTerminalFeignClient.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsCommTerminalFeignClient.java index 5db2f2a..8819aa4 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsCommTerminalFeignClient.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsCommTerminalFeignClient.java @@ -3,8 +3,7 @@ package com.njcn.csdevice.api; import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.response.HttpResult; import com.njcn.csdevice.api.fallback.CsCommTerminalFeignClientFallbackFactory; -import com.njcn.csdevice.api.fallback.CsDeviceUserClientFallbackFactory; -import com.njcn.csdevice.pojo.po.CsDeviceUserPO; +import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; @@ -31,4 +30,7 @@ public interface CsCommTerminalFeignClient { @GetMapping("getPqUserIdsByUser") HttpResult> getPqUserIdsByUser(@RequestParam("userId") String userId); + + @PostMapping("/getLedgerByLineId") + HttpResult> getLedgerByLineId(@RequestBody List list); } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsLineFeignClient.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsLineFeignClient.java index 1d3ee3b..a5ce578 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsLineFeignClient.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/CsLineFeignClient.java @@ -5,6 +5,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.csdevice.api.fallback.CsLineClientFallbackFactory; import com.njcn.csdevice.pojo.dto.CsLineDTO; import com.njcn.csdevice.pojo.param.CsLineParam; +import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.vo.LineDetailDataVO; import com.njcn.device.biz.pojo.po.Overlimit; @@ -71,9 +72,9 @@ public interface CsLineFeignClient { @PostMapping("/getOverLimitDataByIds") HttpResult> getOverLimitData(@RequestBody List ids); - @PostMapping("/getLineBySensitiveUser") - @ApiOperation("根据敏感用户查询监测点") - HttpResult> getLineBySensitiveUser(@RequestBody List list); + @PostMapping("/getDevBySensitiveUser") + @ApiOperation("根据敏感用户查询装置") + HttpResult> getDevBySensitiveUser(@RequestBody List list); @PostMapping("/list") HttpResult> list(@RequestBody CsLinePO param); diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsCommTerminalFeignClientFallbackFactory.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsCommTerminalFeignClientFallbackFactory.java index 4e16dca..5bd4f5c 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsCommTerminalFeignClientFallbackFactory.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsCommTerminalFeignClientFallbackFactory.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.csdevice.api.CsCommTerminalFeignClient; +import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; @@ -51,6 +52,12 @@ public class CsCommTerminalFeignClientFallbackFactory implements FallbackFactory log.error("{}异常,降级处理,异常为:{}","根据登录用户id获取电能质量用户id集合",cause.toString()); throw new BusinessException(finalExceptionEnum); } + + @Override + public HttpResult> getLedgerByLineId(List list) { + log.error("{}异常,降级处理,异常为:{}","根据监测点id集合获取所有台账信息异常",cause.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsLineClientFallbackFactory.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsLineClientFallbackFactory.java index 591e978..0a9c9f2 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsLineClientFallbackFactory.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/api/fallback/CsLineClientFallbackFactory.java @@ -6,6 +6,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.pojo.dto.CsLineDTO; import com.njcn.csdevice.pojo.param.CsLineParam; +import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.vo.LineDetailDataVO; import com.njcn.device.biz.pojo.po.Overlimit; @@ -117,7 +118,7 @@ public class CsLineClientFallbackFactory implements FallbackFactory> getLineBySensitiveUser(List list) { + public HttpResult> getDevBySensitiveUser(List list) { log.error("{}异常,降级处理,异常为:{}","根据敏感用户查询监测点异常",cause.toString()); throw new BusinessException(finalExceptionEnum); } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/CsEquipmentDeliveryDTO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/CsEquipmentDeliveryDTO.java index 0ff068b..34cbb59 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/CsEquipmentDeliveryDTO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/CsEquipmentDeliveryDTO.java @@ -120,4 +120,19 @@ public class CsEquipmentDeliveryDTO { * 设备软件信息id */ private String softinfoId; + + /** + * 治理方法 + */ + private String governMethod; + + /** + * 敏感用户id + */ + private String monitorUser; + + /** + * 治理类型(稳态:harmonic 暂态:event) + */ + private String governType; } \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/DevDetailDTO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/DevDetailDTO.java index 96d1786..860a8e8 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/DevDetailDTO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/DevDetailDTO.java @@ -34,6 +34,12 @@ public class DevDetailDTO { @ApiModelProperty(value = "设备名称") private String equipmentName; + @ApiModelProperty(value = "监测点id") + private String lineId; + + @ApiModelProperty(value = "监测点名称") + private String lineName; + @ApiModelProperty(value = "设备通讯状态") private Integer runStatus; @@ -43,6 +49,12 @@ public class DevDetailDTO { @ApiModelProperty(value = "nDid") private String nDid; + @ApiModelProperty(value = "监测对象") + private String objType; + + @ApiModelProperty(value = "设备治理方案") + private String governType; + @ApiModelProperty(value = "监测点id集合") private List lineList; } diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java index 77fa813..9a488d1 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java @@ -176,10 +176,4 @@ public class CsEquipmentDeliveryPO extends BaseEntity { */ @TableField(value = "govern_type") private String governType; - - /** - * 治理报告文件路径 - */ - @TableField(value = "report_file_path") - private String reportFilePath; } \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java index 4adda16..6c3366b 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java @@ -127,14 +127,7 @@ public class CsLinePO extends BaseEntity { */ @TableField(value = "monitor_obj") private String monitorObj; - /** - * 是否治理(0:未治理 1:已治理) - */ - @TableField(value = "is_govern") - private Integer govern; - @TableField(value = "monitor_user") - private String monitorUser; /** * 短路容量 diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java index 8f7d88f..ad8551d 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/CsEquipmentDeliveryVO.java @@ -106,4 +106,13 @@ public class CsEquipmentDeliveryVO extends BaseEntity { @ApiModelProperty(value="所属项目名称") private String associatedProjectName; + @ApiModelProperty(value="治理方法") + private String governMethod; + + @ApiModelProperty(value="敏感用户id") + private String monitorUser; + + @ApiModelProperty(value="治理类型(稳态:harmonic 暂态:event)") + private String governType; + } \ No newline at end of file diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/PqSensitiveUserLineVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/PqSensitiveUserLineVO.java index ef78486..1aebcff 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/PqSensitiveUserLineVO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/PqSensitiveUserLineVO.java @@ -8,17 +8,25 @@ import java.time.LocalDateTime; @Data public class PqSensitiveUserLineVO { + @ApiModelProperty("工程名称") + private String engineeringName; + @ApiModelProperty("项目名称") + private String projectName; + @ApiModelProperty("设备id") + private String devId; + @ApiModelProperty("设备名称") + private String devName; @ApiModelProperty("治理对象") private String sensitiveUser; @ApiModelProperty("监测点ID") private String lineId; @ApiModelProperty("测点名称") private String lineName; - @ApiModelProperty("是否治理") + @ApiModelProperty("治理方案") private String govern; @ApiModelProperty("电压等级") private double volGrade; - @ApiModelProperty("监测类型") + @ApiModelProperty("监测位置") private String position; @ApiModelProperty("运行状态") private String runStatus; diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/CsCommTerminalController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/CsCommTerminalController.java index f4b6704..549aafa 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/CsCommTerminalController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/CsCommTerminalController.java @@ -6,6 +6,7 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.service.CsCommTerminalService; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; import com.njcn.web.controller.BaseController; @@ -14,10 +15,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -94,11 +92,17 @@ public class CsCommTerminalController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pqsDeviceUnit, methodDescribe); } - - - - - - + /** + * 根据监测点id集合,获取所有台账信息 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getLedgerByLineId") + @ApiOperation("根据监测点id集合获取所有台账信息") + @ApiImplicitParam(name = "list", value = "实体", required = true) + public HttpResult> getLedgerByLineId(@RequestBody List list) { + String methodDescribe = getMethodDescribe("getLedgerByLineId"); + List result = commTerminalService.getLedgerByLineId(list); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/CsLedgerController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/CsLedgerController.java index 8770cf4..2c22c51 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/CsLedgerController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/CsLedgerController.java @@ -90,14 +90,14 @@ public class CsLedgerController extends BaseController { } - @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/objTree") - @ApiOperation("三层对象用户树") - public HttpResult> objTree(){ - String methodDescribe = getMethodDescribe("getProjectTree"); - List list = csLedgerService.objTree(); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); - } +// @OperateInfo(info = LogEnum.BUSINESS_COMMON) +// @PostMapping("/objTree") +// @ApiOperation("三层对象用户树") +// public HttpResult> objTree(){ +// String methodDescribe = getMethodDescribe("getProjectTree"); +// List list = csLedgerService.objTree(); +// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); +// } @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/add") diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java index e9a8cc8..8cd4e04 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/line/CslineController.java @@ -9,6 +9,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.csdevice.pojo.dto.CsLineDTO; import com.njcn.csdevice.pojo.param.CsLineParam; +import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.vo.LineDetailDataVO; import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO; @@ -295,11 +296,11 @@ public class CslineController extends BaseController { } @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/getLineBySensitiveUser") - @ApiOperation("根据敏感用户查询监测点") - public HttpResult> getLineBySensitiveUser(@RequestBody List list) { - String methodDescribe = getMethodDescribe("getLineBySensitiveUser"); - List result = csLinePOService.getLineBySensitiveUser(list); + @PostMapping("/getDevBySensitiveUser") + @ApiOperation("根据敏感用户查询装置") + public HttpResult> getDevBySensitiveUser(@RequestBody List list) { + String methodDescribe = getMethodDescribe("getDevBySensitiveUser"); + List result = csLinePOService.getDevBySensitiveUser(list); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsCommTerminalService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsCommTerminalService.java index eb47881..de2c7c2 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsCommTerminalService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsCommTerminalService.java @@ -1,6 +1,7 @@ package com.njcn.csdevice.service; +import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; import java.util.List; @@ -14,4 +15,6 @@ public interface CsCommTerminalService { PqsDeviceUnit lineUnitDetail(String lineId); List commGetDevIds(String userId); + + List getLedgerByLineId(List id); } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLinePOService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLinePOService.java index 1e3b6dc..108de92 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLinePOService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLinePOService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.csdevice.pojo.dto.CsLineDTO; import com.njcn.csdevice.pojo.param.CsLineParam; +import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.vo.LineDetailDataVO; import com.njcn.csdevice.pojo.vo.PqSensitiveUserLineVO; @@ -86,7 +87,7 @@ public interface CsLinePOService extends IService{ List getSimpleLine(); - List getLineBySensitiveUser(List list); + List getDevBySensitiveUser(List list); Page getSensitiveUserLineList(BaseParam param); boolean uploadReport(MultipartFile file, String lineId); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsLedgerService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsLedgerService.java index 7e86830..4dc80ba 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsLedgerService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsLedgerService.java @@ -80,7 +80,7 @@ public interface ICsLedgerService extends IService { List getztProjectTree(); - List objTree(); +// List objTree(); /** * 根据设备集合获取项目和工程 diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsCommTerminalServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsCommTerminalServiceImpl.java index 9ef9c55..d8a9111 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsCommTerminalServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsCommTerminalServiceImpl.java @@ -8,6 +8,7 @@ import com.njcn.csdevice.mapper.PqsDeviceUnitMapper; import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.pojo.po.CsDeviceUserPO; import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; +import com.njcn.csdevice.pojo.po.CsLedger; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.vo.CsMarketDataVO; import com.njcn.csdevice.pojo.vo.CsTouristDataParmVO; @@ -21,9 +22,7 @@ import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -70,12 +69,9 @@ public class CsCommTerminalServiceImpl implements CsCommTerminalService { if (CollUtil.isEmpty(devIds)) { return result; } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select(CsLinePO::getLineId, CsLinePO::getMonitorUser).in(CsLinePO::getDeviceId, devIds) - .eq(CsLinePO::getStatus, DataStateEnum.ENABLE.getCode()); - List poList =csLinePOMapper.selectList(lambdaQueryWrapper); - if (CollUtil.isNotEmpty(poList)) { - result = poList.stream().map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList()); + List po = csEquipmentDeliveryService.listByIds(devIds); + if (CollUtil.isEmpty(po)) { + result = po.stream().map(CsEquipmentDeliveryPO::getMonitorUser).distinct().collect(Collectors.toList()); } return result; } @@ -126,4 +122,91 @@ public class CsCommTerminalServiceImpl implements CsCommTerminalService { } return devIds; } + + @Override + public List getLedgerByLineId(List id) { + List result = new ArrayList<>(); + List lineLedgers = csLedgerService.listByIds(id); + Set equipmentIds = new HashSet<>(); + Set projectIds = new HashSet<>(); + Set engineeringIds = new HashSet<>(); + + if (CollUtil.isEmpty(lineLedgers)) { + return result; + } + for (CsLedger item : lineLedgers) { + String pids = item.getPids(); + if (pids == null) { + continue; + } + String[] pidArr = pids.split(","); + if (pidArr.length < 4) { + continue; + } + engineeringIds.add(pidArr[1]); + projectIds.add(pidArr[2]); + equipmentIds.add(pidArr[3]); + } + + Map csLinePoMap = csLinePOMapper.selectBatchIds(id) + .stream().collect(Collectors.toMap(CsLinePO::getLineId, item -> item)); + Map equipmentLedgerMap = csLedgerService.listByIds(equipmentIds) + .stream().collect(Collectors.toMap(CsLedger::getId, item -> item)); + Map equipmentDeliveryMap = csEquipmentDeliveryService.listByIds(equipmentIds) + .stream().collect(Collectors.toMap(CsEquipmentDeliveryPO::getId, item -> item)); + Map projectLedgerMap = csLedgerService.listByIds(projectIds) + .stream().collect(Collectors.toMap(CsLedger::getId, item -> item)); + Map engineeringLedgerMap = csLedgerService.listByIds(engineeringIds) + .stream().collect(Collectors.toMap(CsLedger::getId, item -> item)); + + for (CsLedger item : lineLedgers) { + String pids = item.getPids(); + if (pids == null) { + continue; + } + String[] pidArr = pids.split(","); + if (pidArr.length < 4) { + continue; + } + + String engineeringId = pidArr[1]; + String projectId = pidArr[2]; + String equipmentId = pidArr[3]; + + CsLedger engineeringLedger = engineeringLedgerMap.get(engineeringId); + CsLedger projectLedger = projectLedgerMap.get(projectId); + CsLedger equipmentLedger = equipmentLedgerMap.get(equipmentId); + if (engineeringLedger == null || projectLedger == null || equipmentLedger == null) { + continue; + } + DevDetailDTO dto = new DevDetailDTO(); + dto.setEngineeringid(engineeringId); + dto.setEngineeringName(engineeringLedger.getName()); + dto.setProjectId(projectId); + dto.setProjectName(projectLedger.getName()); + dto.setEquipmentId(equipmentId); + dto.setEquipmentName(equipmentLedger.getName()); + dto.setLineId(item.getId()); + dto.setLineName(item.getName()); + + if (Objects.isNull(csLinePoMap.get(item.getId()).getRunStatus())) { + CsEquipmentDeliveryPO delivery = equipmentDeliveryMap.get(equipmentId); + if (delivery != null) { + Integer runStatus = delivery.getRunStatus(); + if (runStatus == 1) { + dto.setRunStatus(2); + } else if (runStatus == 2) { + dto.setRunStatus(0); + } + } + } else { + dto.setRunStatus(csLinePoMap.get(item.getId()).getRunStatus()); + } + dto.setObjType(csLinePoMap.get(item.getId()).getMonitorObj()); + dto.setGovernType(equipmentDeliveryMap.get(equipmentId).getGovernType()); + result.add(dto); + } + return result; + } + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java index 07a9904..139ac13 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java @@ -1337,10 +1337,12 @@ public class CsGroupServiceImpl extends ServiceImpl impl result.put("before", new ArrayList<>()); result.put("after", new ArrayList<>()); String sensitiveUserId = param.getSensitiveUserId(); - List linePOList = csLineFeignClient.getLineBySensitiveUser(Collections.singletonList(sensitiveUserId)).getData(); - if (CollUtil.isEmpty(linePOList)) { + List devList = csLineFeignClient.getDevBySensitiveUser(Collections.singletonList(sensitiveUserId)).getData(); + if (CollUtil.isEmpty(devList)) { return result; } + List devIds = devList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList()); + List linePOList = csLineFeignClient.getLinesByDevList(devIds).getData(); DictData loadSideDictData = dicDataFeignClient.getDicDataByCode(LOAD_SIDE_DICT_CODE).getData(); DictData gridSideDictData = dicDataFeignClient.getDicDataByCode(GRID_SIDE_DICT_CODE).getData(); CsLinePO gridSideLine = linePOList.stream().filter(linePO -> linePO.getPosition().equals(gridSideDictData.getId())).findFirst().orElse(null); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLedgerServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLedgerServiceImpl.java index ac4b4cb..d7317a5 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLedgerServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLedgerServiceImpl.java @@ -1057,88 +1057,88 @@ public class CsLedgerServiceImpl extends ServiceImpl i } - @Override - public List objTree() { - List result = new ArrayList<>(); - String userId = RequestUtil.getUserIndex(); - UserVO userVO = userFeignClient.getUserById(userId).getData(); - List devIds; - if (userVO.getType().equals(UserType.SUPER_ADMINISTRATOR) || userVO.getType().equals(UserType.ADMINISTRATOR)) { - devIds = csEquipmentDeliveryMapper.selectList(null).stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList()); - } else { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select(CsDeviceUserPO::getDeviceId) - .and(w -> w.eq(CsDeviceUserPO::getPrimaryUserId, userId).or().eq(CsDeviceUserPO::getSubUserId, userId)) - .eq(CsDeviceUserPO::getStatus, DataStateEnum.ENABLE.getCode()); - List devList = csDeviceUserPOMapper.selectList(lambdaQueryWrapper); - devIds = devList.stream().map(CsDeviceUserPO::getDeviceId).distinct().collect(Collectors.toList()); - } - if (CollUtil.isEmpty(devIds)) { - return result; - } - List poList = csLinePOService.lambdaQuery().in(CsLinePO::getDeviceId, devIds) - .eq(CsLinePO::getStatus, DataStateEnum.ENABLE.getCode()).ne(CsLinePO::getMonitorUser,"").isNotNull(CsLinePO::getMonitorUser).list(); - if (CollUtil.isEmpty(poList)) { - return result; - } - List objIds = poList.stream().map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList()); - List lineIds = poList.stream().map(CsLinePO::getLineId).distinct().collect(Collectors.toList()); - - List pqSensitiveUserList = pqSensitiveUserFeignClient.getListByIds(objIds).getData(); - if (CollUtil.isEmpty(pqSensitiveUserList)) { - return result; - } - Map objMap = pqSensitiveUserList.stream().collect(Collectors.toMap(PqSensitiveUser::getId, PqSensitiveUser::getName)); - - List csLineList = this.baseMapper.selectList(new LambdaQueryWrapper().in(CsLedger::getId, lineIds)); - Map> lineMap = csLineList.stream().collect(Collectors.groupingBy(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.PROJECT_LEVEL.getCode()+1],Collectors.mapping(CsLedger::getId,Collectors.toList()))); - - List projectIds = csLineList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.PROJECT_LEVEL.getCode()+1]).distinct().collect(Collectors.toList()); - List projectList = this.baseMapper.selectList(new LambdaQueryWrapper().in(CsLedger::getId, projectIds)); - - List realProjectList = new ArrayList<>(); - projectList.forEach(pro->{ - CsLedgerVO csLedgerVO = new CsLedgerVO(); - csLedgerVO.setId(pro.getId()); - csLedgerVO.setPid(pro.getPid()); - csLedgerVO.setLevel(pro.getLevel()); - csLedgerVO.setName(pro.getName()); - - List temObjList = new ArrayList<>(); - if(lineMap.containsKey(pro.getId())){ - List ids = lineMap.get(pro.getId()); - List objTemIds = poList.stream().filter(it->ids.contains(it.getLineId())).map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList()); - if(CollUtil.isNotEmpty(objTemIds)){ - objTemIds.forEach(it->{ - CsLedgerVO inner = new CsLedgerVO(); - inner.setName(objMap.getOrDefault(it,"未知异常用户")); - inner.setId(it); - inner.setLevel(2); - temObjList.add(inner); - }); - } - } - csLedgerVO.setChildren(temObjList); - realProjectList.add(csLedgerVO); - }); - - List gcIds = projectList.stream().map(CsLedger::getPid).collect(Collectors.toList()); - List gcList = this.baseMapper.selectList(new LambdaQueryWrapper().in(CsLedger::getId, gcIds)); - - List realGcList = new ArrayList<>(); - gcList.forEach(gc->{ - CsLedgerVO csLedgerVO = new CsLedgerVO(); - csLedgerVO.setId(gc.getId()); - csLedgerVO.setPid(gc.getPid()); - csLedgerVO.setLevel(gc.getLevel()); - csLedgerVO.setName(gc.getName()); - - List proList = realProjectList.stream().filter(it->gc.getId().equals(it.getPid())).collect(Collectors.toList()); - csLedgerVO.setChildren(proList); - realGcList.add(csLedgerVO); - }); - return realGcList; - } +// @Override +// public List objTree() { +// List result = new ArrayList<>(); +// String userId = RequestUtil.getUserIndex(); +// UserVO userVO = userFeignClient.getUserById(userId).getData(); +// List devIds; +// if (userVO.getType().equals(UserType.SUPER_ADMINISTRATOR) || userVO.getType().equals(UserType.ADMINISTRATOR)) { +// devIds = csEquipmentDeliveryMapper.selectList(null).stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList()); +// } else { +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// lambdaQueryWrapper.select(CsDeviceUserPO::getDeviceId) +// .and(w -> w.eq(CsDeviceUserPO::getPrimaryUserId, userId).or().eq(CsDeviceUserPO::getSubUserId, userId)) +// .eq(CsDeviceUserPO::getStatus, DataStateEnum.ENABLE.getCode()); +// List devList = csDeviceUserPOMapper.selectList(lambdaQueryWrapper); +// devIds = devList.stream().map(CsDeviceUserPO::getDeviceId).distinct().collect(Collectors.toList()); +// } +// if (CollUtil.isEmpty(devIds)) { +// return result; +// } +// List poList = csLinePOService.lambdaQuery().in(CsLinePO::getDeviceId, devIds) +// .eq(CsLinePO::getStatus, DataStateEnum.ENABLE.getCode()).ne(CsLinePO::getMonitorUser,"").isNotNull(CsLinePO::getMonitorUser).list(); +// if (CollUtil.isEmpty(poList)) { +// return result; +// } +// List objIds = poList.stream().map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList()); +// List lineIds = poList.stream().map(CsLinePO::getLineId).distinct().collect(Collectors.toList()); +// +// List pqSensitiveUserList = pqSensitiveUserFeignClient.getListByIds(objIds).getData(); +// if (CollUtil.isEmpty(pqSensitiveUserList)) { +// return result; +// } +// Map objMap = pqSensitiveUserList.stream().collect(Collectors.toMap(PqSensitiveUser::getId, PqSensitiveUser::getName)); +// +// List csLineList = this.baseMapper.selectList(new LambdaQueryWrapper().in(CsLedger::getId, lineIds)); +// Map> lineMap = csLineList.stream().collect(Collectors.groupingBy(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.PROJECT_LEVEL.getCode()+1],Collectors.mapping(CsLedger::getId,Collectors.toList()))); +// +// List projectIds = csLineList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.PROJECT_LEVEL.getCode()+1]).distinct().collect(Collectors.toList()); +// List projectList = this.baseMapper.selectList(new LambdaQueryWrapper().in(CsLedger::getId, projectIds)); +// +// List realProjectList = new ArrayList<>(); +// projectList.forEach(pro->{ +// CsLedgerVO csLedgerVO = new CsLedgerVO(); +// csLedgerVO.setId(pro.getId()); +// csLedgerVO.setPid(pro.getPid()); +// csLedgerVO.setLevel(pro.getLevel()); +// csLedgerVO.setName(pro.getName()); +// +// List temObjList = new ArrayList<>(); +// if(lineMap.containsKey(pro.getId())){ +// List ids = lineMap.get(pro.getId()); +// List objTemIds = poList.stream().filter(it->ids.contains(it.getLineId())).map(CsLinePO::getMonitorUser).distinct().collect(Collectors.toList()); +// if(CollUtil.isNotEmpty(objTemIds)){ +// objTemIds.forEach(it->{ +// CsLedgerVO inner = new CsLedgerVO(); +// inner.setName(objMap.getOrDefault(it,"未知异常用户")); +// inner.setId(it); +// inner.setLevel(2); +// temObjList.add(inner); +// }); +// } +// } +// csLedgerVO.setChildren(temObjList); +// realProjectList.add(csLedgerVO); +// }); +// +// List gcIds = projectList.stream().map(CsLedger::getPid).collect(Collectors.toList()); +// List gcList = this.baseMapper.selectList(new LambdaQueryWrapper().in(CsLedger::getId, gcIds)); +// +// List realGcList = new ArrayList<>(); +// gcList.forEach(gc->{ +// CsLedgerVO csLedgerVO = new CsLedgerVO(); +// csLedgerVO.setId(gc.getId()); +// csLedgerVO.setPid(gc.getPid()); +// csLedgerVO.setLevel(gc.getLevel()); +// csLedgerVO.setName(gc.getName()); +// +// List proList = realProjectList.stream().filter(it->gc.getId().equals(it.getPid())).collect(Collectors.toList()); +// csLedgerVO.setChildren(proList); +// realGcList.add(csLedgerVO); +// }); +// return realGcList; +// } @Override public List getProAndEngineer(List id) { diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java index 4b8dcd8..74cdbb6 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsLinePOServiceImpl.java @@ -10,12 +10,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.access.api.CsLineLatestDataFeignClient; +import com.njcn.access.pojo.po.CsLineLatestData; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; +import com.njcn.csdevice.api.CsCommTerminalFeignClient; import com.njcn.csdevice.enums.LineBaseEnum; import com.njcn.csdevice.mapper.*; import com.njcn.csdevice.pojo.dto.CsLineDTO; +import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.pojo.param.CsLineParam; import com.njcn.csdevice.pojo.po.*; import com.njcn.csdevice.pojo.vo.LineDetailDataVO; @@ -76,6 +80,8 @@ public class CsLinePOServiceImpl extends ServiceImpl i private final DictTreeFeignClient dictTreeFeignClient; private final CsHarmonicPlanFeignClient csHarmonicPlanFeignClient; private final CsHarmonicPlanLineFeignClient csHarmonicPlanLineFeignClient; + private final CsLineLatestDataFeignClient csLineLatestDataFeignClient; + private final CsCommTerminalFeignClient csCommTerminal; @Override @@ -220,9 +226,7 @@ public class CsLinePOServiceImpl extends ServiceImpl i .set(CsLinePO::getShortCircuitCapacity,param.getShortCircuitCapacity()) .set(CsLinePO::getMonitorObj,param.getMonitorObj()) .set(CsLinePO::getMonitorObj,param.getMonitorObj()) - .set(CsLinePO::getGovern,param.getGovern()) .set(CsLinePO::getPosition,param.getPosition()) - .set(CsLinePO::getMonitorUser,param.getMonitorUser()) .set(CsLinePO::getLineLogLevel,param.getLineLogLevel()) .set(CsLinePO::getIsImportant,param.getIsImportant()); this.update(lambdaUpdateWrapper); @@ -322,11 +326,11 @@ public class CsLinePOServiceImpl extends ServiceImpl i } @Override - public List getLineBySensitiveUser(List list) { - return this.lambdaQuery() - .in(CsLinePO::getMonitorUser,list) - .eq(CsLinePO::getStatus, 1) - .list(); + public List getDevBySensitiveUser(List list) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(CsEquipmentDeliveryPO::getMonitorUser,list) + .ne(CsEquipmentDeliveryPO::getRunStatus, DataStateEnum.DELETED.getCode()); + return csEquipmentDeliveryMapper.selectList(lambdaQueryWrapper); } @Override @@ -339,10 +343,7 @@ public class CsLinePOServiceImpl extends ServiceImpl i List poList = getSimpleLine(); // 构建基础查询条件 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() - .eq(CsLinePO::getStatus, 1) - // 关联敏感用户 - //.isNotNull(CsLinePO::getMonitorUser) - .orderByAsc(CsLinePO::getMonitorUser); + .eq(CsLinePO::getStatus, 1); // 只有当lineList不为空时才添加in条件 if (CollUtil.isNotEmpty(poList)) { List lineList = poList.stream().map(CsLinePO::getLineId).collect(Collectors.toList()); @@ -357,6 +358,9 @@ public class CsLinePOServiceImpl extends ServiceImpl i if (CollUtil.isEmpty(records)) { return result; } + List devIds = records.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList()); + List devList = csEquipmentDeliveryMapper.selectBatchIds(devIds); + Map devMap = devList.stream().collect(Collectors.toMap(CsEquipmentDeliveryPO::getId, item -> item)); List list = new ArrayList<>(); List sensitiveUserIds = list.stream().map(PqSensitiveUserLineVO::getSensitiveUser).distinct().collect(Collectors.toList()); @@ -366,23 +370,32 @@ public class CsLinePOServiceImpl extends ServiceImpl i if (CollUtil.isNotEmpty(pqSensitiveUserList)) { sensitiveUserNameMap = pqSensitiveUserList.stream().collect(Collectors.toMap(PqSensitiveUser::getId, PqSensitiveUser::getName)); } + // 最新数据时间 + List lineLatestDataList = csLineLatestDataFeignClient.listData().getData(); + Map lineLatestDataMap = new HashMap<>(); + if (CollUtil.isNotEmpty(lineLatestDataList)) { + lineLatestDataMap = lineLatestDataList.stream().collect(Collectors.toMap(CsLineLatestData::getLineId, item -> item)); + } + PqSensitiveUserLineVO sensitiveUserLineVO; + + List lineIds = records.stream().map(CsLinePO::getLineId).distinct().collect(Collectors.toList()); + List devDetailDTOList = csCommTerminal.getLedgerByLineId(lineIds).getData(); + Map devDetailDTOMap = devDetailDTOList.stream().collect(Collectors.toMap(DevDetailDTO::getLineId, item -> item)); + for (CsLinePO record : records) { sensitiveUserLineVO = new PqSensitiveUserLineVO(); + sensitiveUserLineVO.setEngineeringName(devDetailDTOMap.get(record.getLineId()).getEngineeringName()); + sensitiveUserLineVO.setProjectName(devDetailDTOMap.get(record.getLineId()).getProjectName()); + sensitiveUserLineVO.setDevName(devDetailDTOMap.get(record.getLineId()).getEquipmentName()); // 治理对象 - sensitiveUserLineVO.setSensitiveUser(sensitiveUserNameMap.getOrDefault(record.getMonitorUser(), null)); + sensitiveUserLineVO.setSensitiveUser(sensitiveUserNameMap.getOrDefault(devMap.get(record.getDeviceId()).getMonitorUser(), null)); // 测点名称 sensitiveUserLineVO.setLineId(record.getLineId()); sensitiveUserLineVO.setLineName(record.getName()); // 是否治理 - if (ObjectUtil.isNotEmpty(record.getGovern())) { - if (record.getGovern().equals(0)) { - sensitiveUserLineVO.setGovern("未治理"); - } - if (record.getGovern().equals(1)) { - sensitiveUserLineVO.setGovern("已治理"); - } - } + String governMethod = devMap.get(record.getDeviceId()).getGovernMethod(); + sensitiveUserLineVO.setGovern(Objects.isNull(governMethod) ? "未治理" : governMethod); // 监测类型 if (ObjectUtil.isNotNull(record.getPosition())) { sensitiveUserLineVO.setPosition(record.getPosition()); @@ -396,22 +409,11 @@ public class CsLinePOServiceImpl extends ServiceImpl i sensitiveUserLineVO.setVolGrade(record.getVolGrade()); } // 运行状态 - if (ObjectUtil.isNotNull(record.getRunStatus())) { - //获取设备状态 - int devRunStatus = csEquipmentDeliveryMapper.selectById(record.getDeviceId()).getRunStatus(); - sensitiveUserLineVO.setRunStatus(getRunStatusDescription(devRunStatus)); - } + sensitiveUserLineVO.setRunStatus(String.valueOf(devDetailDTOMap.get(record.getLineId()).getRunStatus())); // 报告文件 sensitiveUserLineVO.setReportFilePath(record.getReportFilePath()); - // 最新数据时间 -// List lineLatestDataList = csLineLatestDataFeignClient.listData().getData(); -// if (CollUtil.isNotEmpty(lineLatestDataList)) { -// sensitiveUserLineVO.setLatestTime(lineLatestDataList.stream() -// .filter(item -> item.getLineId().equals(record.getLineId())) -// .map(CsLineLatestData::getTimeId) -// .max(LocalDateTime::compareTo) -// .orElse(null)); -// } + //最新数据时间 + sensitiveUserLineVO.setLatestTime(Objects.isNull(lineLatestDataMap.get(record.getLineId()))? null : lineLatestDataMap.get(record.getLineId()).getTimeId()); list.add(sensitiveUserLineVO); } result.setRecords(list); @@ -459,15 +461,6 @@ public class CsLinePOServiceImpl extends ServiceImpl i lineDetailDataVO.setBdName(csLedgerMapper.selectById(csLedger.getPids().split(StrUtil.COMMA)[LineBaseEnum.PROJECT_LEVEL.getCode()+1]).getName()); } lineDetailDataVO.setLineName(csLinePO.getName()); - //Device device = deviceMapper.selectById(devId); - //lineDetailDataVO.setComFlag(PubUtils.comFlag(device.getComFlag())); - //lineDetailDataVO.setRunFlag(PubUtils.lineRunFlag(lineDetail.getRunFlag())); - //lineDetailDataVO.setIp(device.getIp()); - //lineDetailDataVO.setLoginTime(device.getLoginTime()); - //lineDetailDataVO.setDevId(device.getId()); - //lineDetailDataVO.setBusinessType(dicDataFeignClient.getDicDataById(lineDetail.getBusinessType()).getData().getName()); - //lineDetailDataVO.setLoadType(dicDataFeignClient.getDicDataById(lineDetail.getLoadType()).getData().getName()); - lineDetailDataVO.setObjName(csLinePO.getMonitorUser()); lineDetailDataVO.setLineId(csLinePO.getLineId()); lineDetailDataVO.setPtType(PubUtils.ptType(csLinePO.getConType())); lineDetailDataVO.setPt(csLinePO.getPtRatio() + "/" + (Objects.isNull(csLinePO.getPt2Ratio())?1.0:csLinePO.getPt2Ratio())); diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/LimitExtentVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/LimitExtentVO.java index 62c4c3d..7969dce 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/LimitExtentVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/LimitExtentVO.java @@ -15,13 +15,13 @@ public class LimitExtentVO { private String name; @ApiModelProperty("越限最大值") - private float maxValue; + private Float maxValue; @ApiModelProperty("国际限值") - private float internationalValue; + private Float internationalValue; @ApiModelProperty("越限程度") - private float extent; + private Float extent; @ApiModelProperty("发生日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @@ -32,8 +32,24 @@ public class LimitExtentVO { @ApiModelProperty("监测点名称") private String lineName; + @ApiModelProperty("工程名称") + private String engineeringName; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("设备id") + private String devId; + + @ApiModelProperty("设备名称") + private String devName; + + + public Float getExtent() { + if (internationalValue == null || maxValue == null) { + return null; + } - public float getExtent() { if (internationalValue == 0) { return 0.00F; } diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/MainLineStatLimitRateDetailsVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/MainLineStatLimitRateDetailsVO.java index c1d544b..332ade4 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/MainLineStatLimitRateDetailsVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/MainLineStatLimitRateDetailsVO.java @@ -6,6 +6,12 @@ import lombok.Data; @Data public class MainLineStatLimitRateDetailsVO extends RStatLimitRateDPO { + @ApiModelProperty("工程名称") + private String engineeringName; + @ApiModelProperty("项目名称") + private String projectName; + @ApiModelProperty("设备名称") + private String devName; @ApiModelProperty("监测点名称") private String lineName; } diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/MainLineVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/MainLineVO.java index 00d81d2..e535386 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/MainLineVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/MainLineVO.java @@ -8,6 +8,14 @@ import java.io.Serializable; @Data public class MainLineVO implements Serializable { + @ApiModelProperty("工程名称") + private String engineeringName; + @ApiModelProperty("项目名称") + private String projectName; + @ApiModelProperty("设备id") + private String devId; + @ApiModelProperty("设备名称") + private String devName; @ApiModelProperty("监测点ID") private String lineId; @ApiModelProperty("监测点名称") diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/TotalLimitStatisticsDetailsVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/TotalLimitStatisticsDetailsVO.java index a520504..7e9f59e 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/TotalLimitStatisticsDetailsVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/TotalLimitStatisticsDetailsVO.java @@ -8,6 +8,18 @@ import java.time.LocalDate; @Data public class TotalLimitStatisticsDetailsVO { + @ApiModelProperty("工程名称") + private String engineeringName; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("设备id") + private String devId; + + @ApiModelProperty("设备名称") + private String devName; + @ApiModelProperty("监测点名称") private String lineName; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/TotalLimitStatisticsVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/TotalLimitStatisticsVO.java index 25f3eef..2e90dc1 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/TotalLimitStatisticsVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/TotalLimitStatisticsVO.java @@ -7,7 +7,14 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) @Data public class TotalLimitStatisticsVO extends TotalLimitTotalStatisticsVO { - + @ApiModelProperty("工程名称") + private String engineeringName; + @ApiModelProperty("项目名称") + private String projectName; + @ApiModelProperty("设备id") + private String devId; + @ApiModelProperty("设备名称") + private String devName; @ApiModelProperty("监测点ID") private String lineId; @ApiModelProperty("监测点名称") diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/EventStatisticVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/EventStatisticVO.java index 77691d3..66aa414 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/EventStatisticVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/EventStatisticVO.java @@ -17,6 +17,18 @@ public class EventStatisticVO { private String id; + @ApiModelProperty("工程名称") + private String engineeringName; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("设备id") + private String devId; + + @ApiModelProperty("设备名称") + private String devName; + @ApiModelProperty(value = "名称") private String name; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/F47Curve.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/F47Curve.java index 1865c65..427b997 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/F47Curve.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/F47Curve.java @@ -15,6 +15,15 @@ import java.time.LocalDateTime; @Data public class F47Curve { + @ApiModelProperty(value = "工程名称") + private String engineeringName; + + @ApiModelProperty(value = "项目名称") + private String projectName; + + @ApiModelProperty(value = "设备名称") + private String equipmentName; + @ApiModelProperty(name = "eventId", value = "暂降id") private String eventId; diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/PqSensitiveUserController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/PqSensitiveUserController.java index 7840574..53208ba 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/PqSensitiveUserController.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/PqSensitiveUserController.java @@ -10,15 +10,18 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.csdevice.api.CsCommTerminalFeignClient; import com.njcn.csdevice.api.CsLineFeignClient; +import com.njcn.csdevice.api.EquipmentFeignClient; +import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO; import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; -import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csharmonic.pojo.param.PqSensitiveUserParam; import com.njcn.csharmonic.pojo.vo.PqSensitiveUserVo; import com.njcn.csharmonic.service.IPqSensitiveUserService; import com.njcn.device.biz.pojo.po.PqSensitiveUser; import com.njcn.web.controller.BaseController; import com.njcn.web.pojo.param.BaseParam; +import com.njcn.web.utils.RequestUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -50,6 +53,8 @@ public class PqSensitiveUserController extends BaseController { private final IPqSensitiveUserService pqSensitiveUserService; private final CsLineFeignClient csLineFeignClient; + private final CsCommTerminalFeignClient csCommTerminalFeignClient; + private final EquipmentFeignClient equipmentFeignClient; @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getList") @@ -81,9 +86,10 @@ public class PqSensitiveUserController extends BaseController { List list; //获取用户监测点 List keywordsLineIds = new ArrayList<>(); - List poList = csLineFeignClient.getSimpleLine().getData(); - if (CollUtil.isNotEmpty(poList)) { - keywordsLineIds = poList.stream().map(CsLinePO::getMonitorUser).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + List devIds = csCommTerminalFeignClient.getDevIdsByUser(RequestUtil.getUserIndex()).getData(); + if (CollUtil.isNotEmpty(devIds)) { + List devList = equipmentFeignClient.queryDeviceById(devIds).getData(); + keywordsLineIds = devList.stream().map(CsEquipmentDeliveryDTO::getMonitorUser).filter(Objects::nonNull).distinct().collect(Collectors.toList()); } if (CollUtil.isEmpty(keywordsLineIds)) { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java index d3b3b05..85fdff3 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java @@ -279,9 +279,8 @@ public class CustomReportServiceImpl implements CustomReportService { @Override public void getSensitiveUserReport(SensitiveUserReportQueryParam queryParam, HttpServletResponse response) { - - String sensitiveUserId = queryParam.getSensitiveUserId(); - List linePOList = csLineFeignClient.getLineBySensitiveUser(Collections.singletonList(sensitiveUserId)).getData(); + String devId = queryParam.getSensitiveUserId(); + List linePOList = csLineFeignClient.getLinesByDevList(Collections.singletonList(devId)).getData(); DictData loadSideDictData = dicDataFeignClient.getDicDataByCode(LOAD_SIDE_DICT_CODE).getData(); DictData gridSideDictData = dicDataFeignClient.getDicDataByCode(GRID_SIDE_DICT_CODE).getData(); CsLinePO gridSideLine = linePOList.stream().filter(linePO -> linePO.getPosition().equals(gridSideDictData.getId())).findFirst().orElse(null); @@ -332,17 +331,16 @@ public class CustomReportServiceImpl implements CustomReportService { indexDataList = new LinkedHashSet<>(indexDataList).stream().sorted(Comparator.comparing(ReportTemplateDataVO::getItemName)).collect(Collectors.toList()); Map> classMap = indexDataList.stream().collect(Collectors.groupingBy(ReportTemplateDataVO::getResourceId)); //定义存放指标的map - if (gridSideLine != null) { - lineName2 = gridSideLine.getName(); - List afterDataList = fetchDataList(gridSideLine, classMap, queryParam); - afterFinalDataList.addAll(afterDataList); - } - if (loadSideLine != null) { lineName1 = loadSideLine.getName(); List beforeDataList = fetchDataList(loadSideLine, classMap, queryParam); beforeFinalDataList.addAll(beforeDataList); } + if (gridSideLine != null) { + lineName2 = gridSideLine.getName(); + List afterDataList = fetchDataList(gridSideLine, classMap, queryParam); + afterFinalDataList.addAll(afterDataList); + } } //进行反向赋值到模板 //1、根据itemName分组 @@ -2241,18 +2239,19 @@ public class CustomReportServiceImpl implements CustomReportService { //根据接线方式获取模板id int conType = po.getConType(); DictData dicData; - //角型 - if (conType == 1) { - dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR_TRIANGLE.getCode()).getData(); - } - //v型 - else if (conType == 2){ - dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.OPEN_DELTA.getCode()).getData(); - } - //星型 或 其他 - else { - dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR.getCode()).getData(); - } + dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR.getCode()).getData(); +// //角型 +// if (conType == 1) { +// dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR_TRIANGLE.getCode()).getData(); +// } +// //v型 +// else if (conType == 2){ +// dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.OPEN_DELTA.getCode()).getData(); +// } +// //星型 或 其他 +// else { +// dicData = dicDataFeignClient.getDicDataByCode(DicDataEnum.STAR.getCode()).getData(); +// } String tempId; Optional vo = result.stream().filter(item -> Objects.equals(dicData.getId(),item.getWiringMethod())).findFirst(); if (vo.isPresent()) { diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/PqSensitiveUserServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/PqSensitiveUserServiceImpl.java index b6102f5..b1ebacc 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/PqSensitiveUserServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/PqSensitiveUserServiceImpl.java @@ -10,10 +10,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.csdevice.api.CsCommTerminalFeignClient; import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.api.EquipmentFeignClient; +import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO; import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; -import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csharmonic.pojo.param.PqSensitiveUserParam; import com.njcn.csharmonic.pojo.vo.PqSensitiveUserVo; import com.njcn.csharmonic.service.IPqSensitiveUserService; @@ -22,6 +23,7 @@ import com.njcn.device.biz.pojo.po.PqSensitiveUser; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.pojo.po.DictData; import com.njcn.web.pojo.param.BaseParam; +import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -46,6 +48,7 @@ public class PqSensitiveUserServiceImpl extends ServiceImpl getList(BaseParam param) { @@ -58,21 +61,28 @@ public class PqSensitiveUserServiceImpl extends ServiceImpl page = this.page(new Page<>(param.getPageNum(),param.getPageSize()),lambdaQueryWrapper); if(CollUtil.isNotEmpty(page.getRecords())){ List dataGroupEventVOList = new ArrayList<>(); - Map> map = new HashMap<>(); + Map> map = new HashMap<>(); //获取绑定敏感用户的监测点信息 List sensitiveUserIds = page.getRecords().stream().map(PqSensitiveUser::getId).collect(Collectors.toList()); - List csLinePOList = csLineFeignClient.getLineBySensitiveUser(sensitiveUserIds).getData(); - if (CollUtil.isNotEmpty(csLinePOList)) { - map = csLinePOList.stream().collect(Collectors.groupingBy(CsLinePO::getMonitorUser)); + List devList = csLineFeignClient.getDevBySensitiveUser(sensitiveUserIds).getData(); + if (CollUtil.isNotEmpty(devList)) { + map = devList.stream() + .filter(po -> po.getMonitorUser() != null) + .sorted(Comparator.comparing(CsEquipmentDeliveryPO::getMonitorUser)) + .collect(Collectors.groupingBy( + CsEquipmentDeliveryPO::getMonitorUser, + LinkedHashMap::new, + Collectors.toList() + )); } - Map> finalMap = map; + Map> finalMap = map; page.getRecords().forEach(item->{ PqSensitiveUserVo vo = new PqSensitiveUserVo(); BeanUtil.copyProperties(item,vo); if (finalMap.containsKey(item.getId())) { vo.setIsMonitor("是"); - List list = finalMap.get(item.getId()); - boolean hasGoverned = list.stream().anyMatch(item2 -> item2.getGovern() == 1); + List list = finalMap.get(item.getId()); + boolean hasGoverned = list.stream().anyMatch(item2 -> !Objects.isNull(item2.getGovernMethod())); vo.setIsGovern(hasGoverned ? "是" : "否"); } else { vo.setIsMonitor("否"); @@ -92,11 +102,15 @@ public class PqSensitiveUserServiceImpl extends ServiceImpl getListByUser(BaseParam param) { List result = new ArrayList<>(); - //现根据用户获取监测点 - List poList = csLineFeignClient.getSimpleLine().getData(); + //现根据用户获取设备 + List devIds = csCommTerminalFeignClient.getDevIdsByUser(RequestUtil.getUserIndex()).getData(); + if (CollUtil.isEmpty(devIds)) { + return result; + } + List devList = equipmentFeignClient.queryDeviceById(devIds).getData(); //获取敏感用户集合 - List monitorUsers = poList.stream() - .map(CsLinePO::getMonitorUser) + List monitorUsers = devList.stream() + .map(CsEquipmentDeliveryDTO::getMonitorUser) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); @@ -104,9 +118,9 @@ public class PqSensitiveUserServiceImpl extends ServiceImpl> map = poList.stream() + Map> map = devList.stream() .filter(po -> po.getMonitorUser() != null) - .collect(Collectors.groupingBy(CsLinePO::getMonitorUser)); + .collect(Collectors.groupingBy(CsEquipmentDeliveryDTO::getMonitorUser)); //查询敏感用户信息集合 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(PqSensitiveUser::getId,monitorUsers).orderByAsc(PqSensitiveUser::getSort); @@ -119,8 +133,8 @@ public class PqSensitiveUserServiceImpl extends ServiceImpl list = map.get(item.getId()); - boolean hasGoverned = list.stream().anyMatch(item2 -> item2.getGovern() == 1); + List list = map.get(item.getId()); + boolean hasGoverned = list.stream().anyMatch(item2 -> !Objects.isNull(item2.getGovernMethod())); vo.setIsGovern(hasGoverned ? "是" : "否"); } else { vo.setIsMonitor("否"); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDServiceImpl.java index 189fe5e..86dde74 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDServiceImpl.java @@ -12,7 +12,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.response.HttpResult; +import com.njcn.csdevice.api.CsCommTerminalFeignClient; import com.njcn.csdevice.api.CsLineFeignClient; +import com.njcn.csdevice.api.EquipmentFeignClient; +import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csharmonic.mapper.RStatLimitRateDMapper; import com.njcn.csharmonic.pojo.param.MainLineQueryParam; @@ -48,9 +51,11 @@ public class RStatLimitRateDServiceImpl extends ServiceImpl monitorIdsGetLimitRateInfo(String date, List monitorIds) { @@ -185,27 +190,22 @@ public class RStatLimitRateDServiceImpl extends ServiceImpl list = new ArrayList<>(); MainLineVO mainLineVO; + List devDetailDTOList = csCommTerminalFeignClient.getLedgerByLineId(keywordsLineIds).getData(); + Map devDetailDTOMap = devDetailDTOList.stream().collect(Collectors.toMap(DevDetailDTO::getLineId, item -> item)); for (RStatLimitRateDPO record : records) { String lineId = record.getLineId(); - CsLinePO linePO = csLineFeignClient.getById(lineId).getData(); mainLineVO = new MainLineVO(); mainLineVO.setLineId(lineId); - if (linePO != null) { - mainLineVO.setLineName(linePO.getName()); - if (ObjectUtil.isNotNull(linePO.getGovern())) { - if (linePO.getGovern().equals(0)) { - mainLineVO.setGovern("未治理"); - } - if (linePO.getGovern().equals(1)) { - mainLineVO.setGovern("已治理"); - } - } - mainLineVO.setObjType(linePO.getMonitorObj()); - if (ObjectUtil.isNotNull(linePO.getMonitorObj())) { - DictData dictData = dicDataFeignClient.getDicDataById(linePO.getMonitorObj()).getData(); - if (dictData != null) { - mainLineVO.setObjType(dictData.getName()); - } + mainLineVO.setEngineeringName(devDetailDTOMap.get(lineId).getEngineeringName()); + mainLineVO.setProjectName(devDetailDTOMap.get(lineId).getProjectName()); + mainLineVO.setDevName(devDetailDTOMap.get(lineId).getEquipmentName()); + mainLineVO.setLineName(devDetailDTOMap.get(lineId).getLineName()); + mainLineVO.setGovern(Objects.isNull(devDetailDTOMap.get(lineId).getGovernType()) ? "未治理" : devDetailDTOMap.get(lineId).getGovernType()); + mainLineVO.setObjType(devDetailDTOMap.get(lineId).getObjType()); + if (ObjectUtil.isNotNull(devDetailDTOMap.get(lineId).getObjType())) { + DictData dictData = dicDataFeignClient.getDicDataById(devDetailDTOMap.get(lineId).getObjType()).getData(); + if (dictData != null) { + mainLineVO.setObjType(dictData.getName()); } } MainLineStatLimitRateDetailsQueryParam detailsQueryParam = new MainLineStatLimitRateDetailsQueryParam(); @@ -363,9 +363,16 @@ public class RStatLimitRateDServiceImpl extends ServiceImpl devDetailDTOList = csCommTerminal.getLedgerByLineId(keywordsLineIds).getData(); + Map devDetailDTOMap = devDetailDTOList.stream().collect(Collectors.toMap(DevDetailDTO::getLineId, item -> item)); + TotalLimitStatisticsVO statisticsVO; for (CsLinePO linePO : linePOList) { statisticsVO = new TotalLimitStatisticsVO(); + statisticsVO.setEngineeringName(devDetailDTOMap.get(linePO.getLineId()).getEngineeringName()); + statisticsVO.setProjectName(devDetailDTOMap.get(linePO.getLineId()).getProjectName()); + statisticsVO.setDevName(devDetailDTOMap.get(linePO.getLineId()).getEquipmentName() ); statisticsVO.setLineId(linePO.getLineId()); statisticsVO.setLineName(linePO.getName()); List lineRateList = lineMap.get(linePO.getLineId()); @@ -433,8 +440,15 @@ public class RStatLimitRateDServiceImpl extends ServiceImpl devDetailDTOList = csCommTerminal.getLedgerByLineId(Collections.singletonList(param.getLineId())).getData(); + Map devDetailDTOMap = devDetailDTOList.stream().collect(Collectors.toMap(DevDetailDTO::getLineId, item -> item)); + return list.stream().map(item -> { MainLineStatLimitRateDetailsVO vo = BeanUtil.copyProperties(item, MainLineStatLimitRateDetailsVO.class); + vo.setEngineeringName(devDetailDTOMap.get(param.getLineId()).getEngineeringName()); + vo.setProjectName(devDetailDTOMap.get(param.getLineId()).getProjectName()); + vo.setDevName(devDetailDTOMap.get(param.getLineId()).getEquipmentName()); vo.setLineName(linePO.getName()); Integer allTime = item.getAllTime(); Integer flickerTime = item.getFlickerAllTime(); @@ -549,8 +563,15 @@ public class RStatLimitRateDServiceImpl extends ServiceImpl devDetailDTOList = csCommTerminal.getLedgerByLineId(lineIds).getData(); + Map devDetailDTOMap = devDetailDTOList.stream().collect(Collectors.toMap(DevDetailDTO::getLineId, item -> item)); + for (CsLinePO linePO : lineList) { statisticsVO = new TotalLimitStatisticsVO(); + statisticsVO.setEngineeringName(devDetailDTOMap.get(linePO.getLineId()).getEngineeringName()); + statisticsVO.setProjectName(devDetailDTOMap.get(linePO.getLineId()).getProjectName()); + statisticsVO.setDevName(devDetailDTOMap.get(linePO.getLineId()).getEquipmentName()); statisticsVO.setLineId(linePO.getLineId()); statisticsVO.setLineName(linePO.getName()); List lineRateList = lineMap.get(linePO.getLineId()); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDetailDServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDetailDServiceImpl.java index d7c9871..964527d 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDetailDServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/RStatLimitRateDetailDServiceImpl.java @@ -12,8 +12,10 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.csdevice.api.CsCommTerminalFeignClient; import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.api.CsOverLimitClient; +import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csharmonic.mapper.RStatLimitRateDetailDMapper; import com.njcn.csharmonic.pojo.param.LimitCalendarQueryParam; @@ -28,8 +30,10 @@ import com.njcn.csharmonic.pojo.vo.LimitTimeProbabilityVO; import com.njcn.csharmonic.service.IRStatLimitRateDetailDService; import com.njcn.device.biz.pojo.po.Overlimit; import lombok.RequiredArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import java.lang.reflect.Method; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; @@ -45,7 +49,7 @@ public class RStatLimitRateDetailDServiceImpl extends ServiceImpl indexMap = new HashMap<>(); @@ -109,59 +113,37 @@ public class RStatLimitRateDetailDServiceImpl extends ServiceImpl lineIds = detailList.stream().map(RStatLimitRateDetailDPO::getLineId).distinct().collect(Collectors.toList()); List overlimitList = overLimitClient.getOverLimitByLineIds(lineIds).getData(); + Map overLimitMap = overlimitList.stream().collect(Collectors.toMap(Overlimit::getId, item -> item)); + + List devDetailDTOList = csCommTerminal.getLedgerByLineId(lineIds).getData(); + Map devDetailDTOMap = devDetailDTOList.stream().collect(Collectors.toMap(DevDetailDTO::getLineId, item -> item)); Map> findResult = findMaxValueHandle(detailList); // 闪变 Pair flickerResult = findResult.get(flicker.getCode()); - setLimitExtentInfo(flicker, flickerResult); + setLimitExtentInfo(flicker, flickerResult, devDetailDTOMap); // 电压偏差 Pair voltageDevResult = findResult.get(voltageDev.getCode()); - setLimitExtentInfo(voltageDev, voltageDevResult); + setLimitExtentInfo(voltageDev, voltageDevResult, devDetailDTOMap); // 谐波电压 String uharmKey = findResult.keySet().stream().filter(code -> code.startsWith("uharm")).findFirst().orElse("uharm"); Pair uharmResult = findResult.get(uharmKey); - setLimitExtentInfo(uharm, uharmResult); + setLimitExtentInfo(uharm, uharmResult, devDetailDTOMap); uharm.setCode(uharmKey); String iharmKey = findResult.keySet().stream().filter(code -> code.startsWith("iharm")).findFirst().orElse("iharm"); // 谐波电流 Pair iharmResult = findResult.get(iharmKey); - setLimitExtentInfo(iharm, iharmResult); + setLimitExtentInfo(iharm, iharmResult, devDetailDTOMap); iharm.setCode(iharmKey); // 电压三相不平衡 Pair ubalanceResult = findResult.get(ubalance.getCode()); - setLimitExtentInfo(ubalance, ubalanceResult); + setLimitExtentInfo(ubalance, ubalanceResult, devDetailDTOMap); - if (CollUtil.isNotEmpty(overlimitList)) { - // 取所有监测点中的最大闪变限值,作为闪变国际限值 - float flickerMaxOverlimit = (float) overlimitList.stream().mapToDouble(Overlimit::getFlicker).max().orElse(0.0F); - float voltageDevMaxOverlimit = (float) overlimitList.stream().mapToDouble(Overlimit::getVoltageDev).max().orElse(0.0F); - float ubalanceMaxOverlimit = (float) overlimitList.stream().mapToDouble(Overlimit::getUbalance).max().orElse(0.0F); - float iharmMaxOverlimit = 0.0F; - float uharmMaxOverlimit = 0.0F; - for (Overlimit overlimit : overlimitList) { - JSONObject entries = JSONUtil.parseObj(overlimit); - for (Map.Entry entry : entries.entrySet()) { - String key = entry.getKey(); - if (key.startsWith("uharm")) { - Object value = entry.getValue(); - if (value instanceof Number) { - uharmMaxOverlimit = Math.max(uharmMaxOverlimit, ((Number) value).floatValue()); - } - } else if (key.startsWith("iharm")) { - Object value = entry.getValue(); - if (value instanceof Number) { - iharmMaxOverlimit = Math.max(iharmMaxOverlimit, ((Number) value).floatValue()); - } - } - - } - } - flicker.setInternationalValue(flickerMaxOverlimit); - voltageDev.setInternationalValue(voltageDevMaxOverlimit); - ubalance.setInternationalValue(ubalanceMaxOverlimit); - iharm.setInternationalValue(iharmMaxOverlimit); - uharm.setInternationalValue(uharmMaxOverlimit); - } + setInternationalValue(flicker, flicker.getLineId(), null, overLimitMap, "getFlicker"); + setInternationalValue(uharm, uharm.getLineId(), uharm.getCode(), overLimitMap, null); + setInternationalValue(iharm, iharm.getLineId(), iharm.getCode(), overLimitMap, null); + setInternationalValue(voltageDev, voltageDev.getLineId(), null, overLimitMap, "getVoltageDev"); + setInternationalValue(ubalance, ubalance.getLineId(), null, overLimitMap, "getUbalance"); } result.add(flicker); result.add(uharm); @@ -171,6 +153,63 @@ public class RStatLimitRateDetailDServiceImpl extends ServiceImpl overLimitMap, String fixedGetter) { + if (Objects.isNull(lineId)) { + // 通过反射统一处理实体的setter + invokeSetter(entity, "setMaxValue", null); + invokeSetter(entity, "setInternationalValue", null); + return; + } + + Object mapValue = overLimitMap.get(lineId); + if (mapValue == null) return; + + try { + Object result; + if (StringUtils.isNotBlank(code)) { + // 1. 动态反射模式:根据 code 截取前缀并拼接 Getter + String propertyName = StringUtils.substringBefore(code, "Overtime"); + String methodName = "get" + StringUtils.capitalize(propertyName); + Method method = mapValue.getClass().getMethod(methodName); + result = method.invoke(mapValue); + } else { + // 2. 固定 Getter 模式:直接调用传入的固定方法名 + Method method = mapValue.getClass().getMethod(fixedGetter); + result = method.invoke(mapValue); + } + + // 将获取到的值设置到实体中 + invokeSetter(entity, "setInternationalValue", result); + + } catch (Exception e) { + log.error("反射获取或设置属性失败"); + } + } + + private void invokeSetter(Object target, String methodName, Object value) { + try { + Class[] paramTypes = (value != null) ? new Class[]{value.getClass()} : new Class[0]; + // 如果 value 是 Float,可能需要匹配 float.class 或包装类,这里简化处理 + for (Method m : target.getClass().getMethods()) { + if (m.getName().equals(methodName) && m.getParameterCount() == 1) { + m.invoke(target, value); + break; + } + } + } catch (Exception e) { + log.error("调用 setter 失败"); + } + } + @Override public JSONArray limitExtentDayData(LimitExtentDayQueryParam param) { List records = this.page(new Page<>(1, 1), @@ -245,7 +284,7 @@ public class RStatLimitRateDetailDServiceImpl extends ServiceImpl result) { + private void setLimitExtentInfo(LimitExtentVO limitExtentVO, Pair result, Map devDetailDTOMap) { float maxValue = result.getKey(); limitExtentVO.setMaxValue(maxValue); RStatLimitRateDetailDPO maxDetail = result.getValue(); if (maxDetail != null) { limitExtentVO.setTime(maxDetail.getTime()); - CsLinePO maxLinePO = csLineFeignClient.getById(maxDetail.getLineId()).getData(); - if (maxLinePO != null) { - limitExtentVO.setLineName(maxLinePO.getName()); - limitExtentVO.setLineId(maxLinePO.getLineId()); - } + limitExtentVO.setEngineeringName(devDetailDTOMap.get(maxDetail.getLineId()).getEngineeringName()); + limitExtentVO.setProjectName(devDetailDTOMap.get(maxDetail.getLineId()).getProjectName()); + limitExtentVO.setDevName(devDetailDTOMap.get(maxDetail.getLineId()).getEquipmentName()); + limitExtentVO.setLineName(devDetailDTOMap.get(maxDetail.getLineId()).getLineName()); + limitExtentVO.setLineId(devDetailDTOMap.get(maxDetail.getLineId()).getLineId()); } } @@ -589,35 +628,35 @@ public class RStatLimitRateDetailDServiceImpl extends ServiceImpl flickerMaxValue) { flickerMaxValue = dayFlickerMaxValue; flickerMaxDetail = po; } } if (StrUtil.isNotBlank(voltageDevOvertime)) { - float dayVoltageDevMaxValue = parseMaxValueFromJsonArray(voltageDevOvertime); + float dayVoltageDevMaxValue = parseMaxValueFromJsonArray(voltageDevOvertime,-20.0,20.0); if (dayVoltageDevMaxValue > voltageDevMaxValue) { voltageDevMaxValue = dayVoltageDevMaxValue; voltageDevMaxDetail = po; } } if (StrUtil.isNotBlank(ubalanceOvertime)) { - float dayUbalanceMaxValue = parseMaxValueFromJsonArray(ubalanceOvertime); + float dayUbalanceMaxValue = parseMaxValueFromJsonArray(ubalanceOvertime,0.0,40.0); if (dayUbalanceMaxValue > ubalanceMaxValue) { ubalanceMaxValue = dayUbalanceMaxValue; ubalanceMaxDetail = po; } } if (StrUtil.isNotBlank(uaberranceOvertime)) { - float dayuaberranceMaxValue = parseMaxValueFromJsonArray(uaberranceOvertime); + float dayuaberranceMaxValue = parseMaxValueFromJsonArray(uaberranceOvertime,0.0,30.0); if (dayuaberranceMaxValue > uaberranceMaxValue) { uaberranceMaxValue = dayuaberranceMaxValue; uaberranceMaxDetail = po; } } if (StrUtil.isNotBlank(freqDevOvertime)) { - float dayFreqDevMaxValue = parseMaxValueFromJsonArray(freqDevOvertime); + float dayFreqDevMaxValue = parseMaxValueFromJsonArray(freqDevOvertime,-7.5,7.5); if (dayFreqDevMaxValue > freqDevMaxValue) { freqDevMaxValue = dayFreqDevMaxValue; freqDevMaxDetail = po; @@ -640,7 +679,7 @@ public class RStatLimitRateDetailDServiceImpl extends ServiceImpl + (minRange == null || f >= minRange) && + (maxRange == null || f <= maxRange) + ) .max() .orElse(0.0000F); + maxValue = Math.max(maxValue, currentValue); } - return maxValue; } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventOverviewServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventOverviewServiceImpl.java index ece81c8..3ecc5c1 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventOverviewServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventOverviewServiceImpl.java @@ -12,6 +12,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.csdevice.api.CsCommTerminalFeignClient; import com.njcn.csdevice.api.CsLineFeignClient; +import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csharmonic.enums.CsEventEnum; import com.njcn.csharmonic.pojo.param.EventStatisticParam; @@ -31,7 +32,6 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.IntStream; import java.util.stream.Stream; import static com.njcn.csharmonic.enums.CsTransientEnum.*; @@ -54,6 +54,7 @@ public class EventOverviewServiceImpl implements EventOverviewService { private final CsLineFeignClient csLineFeignClient; private final CsCommTerminalFeignClient csCommTerminalFeignClient; private final WlRmpEventDetailMapper wlRmpEventDetailMapper; + private final CsCommTerminalFeignClient csCommTerminal; @Override public EventStatisticVO netEventEcharts(EventStatisticParam baseParam) { @@ -134,9 +135,15 @@ public class EventOverviewServiceImpl implements EventOverviewService { ) )); + List devDetailDTOList = csCommTerminal.getLedgerByLineId(lineIds).getData(); + Map devDetailDTOMap = devDetailDTOList.stream().collect(Collectors.toMap(DevDetailDTO::getLineId, item -> item)); + return csLinePOList.stream() .map(line -> { EventStatisticVO vo = new EventStatisticVO(); + vo.setEngineeringName(devDetailDTOMap.get(line.getLineId()).getEngineeringName()); + vo.setProjectName(devDetailDTOMap.get(line.getLineId()).getProjectName()); + vo.setDevName(devDetailDTOMap.get(line.getLineId()).getEquipmentName()); vo.setName(line.getName()); vo.setId(line.getLineId()); Map lineEvents = eventCountByLineAndTag.getOrDefault(line.getLineId(), Collections.emptyMap()); @@ -174,7 +181,8 @@ public class EventOverviewServiceImpl implements EventOverviewService { List csLinePOList = csLineFeignClient.queryLineById(monitorIds).getData(); Map nameMap = csLinePOList.stream().collect(Collectors.toMap(CsLinePO::getLineId, CsLinePO::getName)); - + List devDetailDTOList = csCommTerminalFeignClient.getLedgerByLineId(monitorIds).getData(); + Map devDetailDTOMap = devDetailDTOList.stream().collect(Collectors.toMap(DevDetailDTO::getLineId, item -> item)); List f47CurveList = csEventPOList.stream().map(item->{ F47Curve f47Curve = new F47Curve(); f47Curve.setEventId(item.getId()); @@ -182,6 +190,9 @@ public class EventOverviewServiceImpl implements EventOverviewService { f47Curve.setTag(item.getTag()); f47Curve.setPersistTime(BigDecimal.valueOf(item.getPersistTime()).setScale(3, RoundingMode.HALF_UP)); f47Curve.setEventValue(BigDecimal.valueOf(item.getAmplitude())); + f47Curve.setEngineeringName(devDetailDTOMap.get(item.getLineId()).getEngineeringName()); + f47Curve.setProjectName(devDetailDTOMap.get(item.getLineId()).getProjectName()); + f47Curve.setEquipmentName(devDetailDTOMap.get(item.getLineId()).getEquipmentName()); f47Curve.setLineName(nameMap.getOrDefault(item.getLineId(),"异常测点")); return f47Curve; }).collect(Collectors.toList());