From 12cfecac7e5c3e4c90f7a0fcfa13ecbcedc4f67a Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Sat, 13 Dec 2025 20:33:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=8F=E6=84=9F=E7=94=A8=E6=88=B7=E6=B1=A1?= =?UTF-8?q?=E6=9F=93=E5=80=BC=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/pollution/PowerFlagPollution.java | 6 ++ .../excel/pollution/SubstationPollution.java | 4 + .../param/StatSubstationBizBaseParam.java | 6 ++ .../PollutionSubstationController.java | 13 +++ .../service/PollutionSubstationService.java | 4 +- .../impl/PollutionSubstationServiceImpl.java | 82 +++++++++++++++++-- .../api/UserReportManageFeignClient.java | 28 +++++++ .../UserReportFeignClientFallbackFactory.java | 38 +++++++++ .../pojo/param/SensitiveUserParam.java | 30 +++++++ .../user/UserReportManageController.java | 12 +++ .../service/user/UserReportPOService.java | 4 + .../user/impl/UserReportPOServiceImpl.java | 17 ++++ 12 files changed, 235 insertions(+), 9 deletions(-) create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportManageFeignClient.java create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportFeignClientFallbackFactory.java create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/SensitiveUserParam.java diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/excel/pollution/PowerFlagPollution.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/excel/pollution/PowerFlagPollution.java index 800a1da62..a71438cad 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/excel/pollution/PowerFlagPollution.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/excel/pollution/PowerFlagPollution.java @@ -9,6 +9,12 @@ import java.io.Serializable; @Data public class PowerFlagPollution implements Serializable { + /** + * 变电站名称 + */ + @Excel(name = "变电站名称", width = 35, replace = "/_null") + @ApiModelProperty("变电站名称") + private String subName; /** * 监测点名称 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/excel/pollution/SubstationPollution.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/excel/pollution/SubstationPollution.java index 25e002d28..832cf33d2 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/excel/pollution/SubstationPollution.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/excel/pollution/SubstationPollution.java @@ -38,6 +38,10 @@ public class SubstationPollution implements Serializable { @ApiModelProperty("电站谐波污染值") private String subVStationValue; + @Excel(name = "项目名称", width = 25, needMerge = true) + @ApiModelProperty("项目名称") + private String projectName; + /** * 电网侧&非电网侧 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/StatSubstationBizBaseParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/StatSubstationBizBaseParam.java index 588f16845..9cc913c6d 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/StatSubstationBizBaseParam.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/StatSubstationBizBaseParam.java @@ -36,4 +36,10 @@ public class StatSubstationBizBaseParam extends StatisticsBizBaseParam { @ApiModelProperty("电网侧标识") @Range(min = 0, max = 2, message = "电网侧标识" + ValidMessage.PARAM_FORMAT_ERROR) private Integer powerFlag; + + @ApiModelProperty("部门id") + private String deptId; + + @ApiModelProperty("搜索值") + private String searchValue; } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java index 095fe99ec..d7b6d9913 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/PollutionSubstationController.java @@ -185,4 +185,17 @@ public class PollutionSubstationController extends BaseController { List areaPollution = pollutionSubstationService.getAreaPollution(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, areaPollution, methodDescribe); } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation(value ="敏感用户谐波污染值列表") + @PostMapping(value ="/downPollutionSensitiveUser") + public HttpResult> downPollutionSensitiveUser(@RequestBody StatSubstationBizBaseParam param) { + String methodDescribe = getMethodDescribe("downPollutionSensitiveUser"); + param.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString()); + param.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString()); + List linePollutions = pollutionSubstationService.downPollutionSensitiveUser(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, linePollutions, methodDescribe); + } + + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java index 488263921..ec4813752 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/PollutionSubstationService.java @@ -2,8 +2,8 @@ package com.njcn.harmonic.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.njcn.device.pq.pojo.dto.PollutionGridDiagramDTO; import com.njcn.device.biz.pojo.dto.PollutionLineDTO; +import com.njcn.device.pq.pojo.dto.PollutionGridDiagramDTO; import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; import com.njcn.device.pq.pojo.param.GridDiagramParam; import com.njcn.device.pq.pojo.param.OnlineRateParam; @@ -131,4 +131,6 @@ public interface PollutionSubstationService extends IService getAreaPollution(StatSubstationBizBaseParam param); + + List downPollutionSensitiveUser(StatSubstationBizBaseParam param); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java index 57e253f25..72e980ed0 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.constant.BizParamConstant; import com.njcn.common.pojo.dto.SimpleDTO; +import com.njcn.common.pojo.enums.common.ServerEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.utils.PubUtils; @@ -57,12 +58,14 @@ import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.vo.PollutionSubstationVO; import com.njcn.harmonic.pojo.vo.PollutionVO; import com.njcn.harmonic.pojo.vo.SubstationVo; -import com.njcn.harmonic.pojo.vo.hebeinorth.AssessVo; import com.njcn.harmonic.rstatlimitrate.mapper.RStatLimitRateDMapper; import com.njcn.harmonic.service.PollutionSubstationService; import com.njcn.poi.excel.ExcelUtil; import com.njcn.supervision.api.UserLedgerFeignClient; +import com.njcn.supervision.api.UserReportManageFeignClient; +import com.njcn.supervision.pojo.param.SensitiveUserParam; import com.njcn.supervision.pojo.param.user.UserReportParam; +import com.njcn.supervision.pojo.po.user.UserReportPO; import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataEnum; @@ -70,6 +73,12 @@ import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.user.pojo.po.Dept; import com.njcn.web.utils.RequestUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; @@ -79,13 +88,6 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - /** * Description: @@ -131,6 +133,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl downPollutionSensitiveUser(StatSubstationBizBaseParam param) { + List result = new ArrayList<>(); + DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); + deptGetLineParam.setDeptId(param.getDeptId()); + deptGetLineParam.setLineRunFlag(0); + deptGetLineParam.setServerName(ServerEnum.HARMONIC.getName()); + List list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); + List lineList = list.stream() + .flatMap(dto -> dto.getLineBaseList().stream().map(LineDevGetDTO::getPointId)) + .distinct() + .collect(Collectors.toList()); + //全部监测点污染值 + List finalLinePollutionList = pollutionCalcList(param,lineList); + //根据变电站分组 + Map> linePollutionMap = finalLinePollutionList.stream().collect(Collectors.groupingBy(LinePollution::getSubStationName)); + //获取部门id + SensitiveUserParam sensitiveUserParam = new SensitiveUserParam(); + sensitiveUserParam.setDeptId(param.getDeptId()); + sensitiveUserParam.setProjectName(param.getSearchValue()); + List userReportPOList = userReportManageFeignClient.getSensitiveUserByDept(sensitiveUserParam).getData(); + + if (CollectionUtil.isNotEmpty(userReportPOList)) { + userReportPOList.forEach(item -> { + if (ObjectUtil.isNotNull(item.getSubstation()) && !Objects.equals(item.getSubstation(), "")) { + + List value = new ArrayList<>(); + List ll = new ArrayList<>(); + String[] parts = item.getSubstation().split("、"); + for (String part : parts) { + // 移除数字+kV和"变电站" + String name = part.replaceAll("\\d+kV", "").replace("变电站", ""); + //根据变电站名称获取污染值 + for (Map.Entry> entry : linePollutionMap.entrySet()) { + if (entry.getKey().contains(name)) { + BigDecimal v = BigDecimal.valueOf(entry.getValue().stream().mapToDouble(LinePollution::getHarmonicValue).average().getAsDouble()); + value.add(v); + for (LinePollution pojo : entry.getValue()) { + PowerFlagPollution lineItemPollution = new PowerFlagPollution(); + BeanUtil.copyProperties(pojo, lineItemPollution, true); + lineItemPollution.setVHarmonicValue(pojo.getHarmonicValue()); + ll.add(lineItemPollution); + } + } + } + } + SubstationPollution linePollution = new SubstationPollution(); + linePollution.setGdName(item.getCity()); + linePollution.setSubStationName(item.getSubstation()); + linePollution.setProjectName(item.getProjectName()); + linePollution.setSubVStationValue(String.valueOf(BigDecimal.valueOf(value.stream() + .mapToDouble(BigDecimal::doubleValue) + .average() + .orElse(0.0)).setScale(2, RoundingMode.HALF_UP).doubleValue())); + result.add(linePollution); + linePollution.setPowerFlagPollutionList(ll); + } + }); + } + return result; + } + private List addList(List pollLinelist, List notNum) { List info = new ArrayList<>(); diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportManageFeignClient.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportManageFeignClient.java new file mode 100644 index 000000000..d93980a2c --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportManageFeignClient.java @@ -0,0 +1,28 @@ +package com.njcn.supervision.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.supervision.api.fallback.UserReportFeignClientFallbackFactory; +import com.njcn.supervision.pojo.param.SensitiveUserParam; +import com.njcn.supervision.pojo.po.user.UserReportPO; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + + +/** + * + * @author 徐扬 + */ +@FeignClient(value = ServerInfo.SUPERVISION, path = "/userReport", fallbackFactory = UserReportFeignClientFallbackFactory.class) +public interface UserReportManageFeignClient { + + + @PostMapping("/getSensitiveUserByDept") + @ApiOperation("根据部门获取敏感用户信息") + HttpResult> getSensitiveUserByDept(@RequestBody @Validated SensitiveUserParam param) ; +} diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportFeignClientFallbackFactory.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportFeignClientFallbackFactory.java new file mode 100644 index 000000000..baa66be57 --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportFeignClientFallbackFactory.java @@ -0,0 +1,38 @@ +package com.njcn.supervision.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.supervision.api.UserReportManageFeignClient; +import com.njcn.supervision.pojo.param.SensitiveUserParam; +import com.njcn.supervision.pojo.po.user.UserReportPO; +import com.njcn.supervision.utils.SupervisionEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.List; + + +@Slf4j +@Component +public class UserReportFeignClientFallbackFactory implements FallbackFactory { + @Override + public UserReportManageFeignClient create(Throwable throwable) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) throwable.getCause(); + exceptionEnum = SupervisionEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new UserReportManageFeignClient() { + + @Override + public HttpResult> getSensitiveUserByDept(SensitiveUserParam param) { + log.error("{}异常,降级处理,异常为:{}", "根据部门获取敏感用户信息异常", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/SensitiveUserParam.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/SensitiveUserParam.java new file mode 100644 index 000000000..e6e594b82 --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/pojo/param/SensitiveUserParam.java @@ -0,0 +1,30 @@ +package com.njcn.supervision.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Set; + + +/** + * @author xy + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SensitiveUserParam implements Serializable { + + + @ApiModelProperty("部门id") + private String deptId; + + + @ApiModelProperty("项目名称") + private String projectName; + + + +} \ No newline at end of file diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java index f115a0e43..2470f2068 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java @@ -8,7 +8,9 @@ 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.supervision.pojo.param.SensitiveUserParam; import com.njcn.supervision.pojo.param.user.UserReportParam; +import com.njcn.supervision.pojo.po.user.UserReportPO; import com.njcn.supervision.pojo.vo.user.NewUserReportVO; import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import com.njcn.supervision.pojo.vo.user.UserReportVO; @@ -291,5 +293,15 @@ public class UserReportManageController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, userReportByIds, methodDescribe); } + //根据部门查询敏感用户信息 + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getSensitiveUserByDept") + @ApiOperation("根据部门获取敏感用户信息") + @ApiImplicitParam(name = "userReportQueryParam", value = "参数", required = true) + public HttpResult> getSensitiveUserByDept(@RequestBody @Validated SensitiveUserParam param) { + String methodDescribe = getMethodDescribe("getSensitiveUserByDept"); + List list = userReportPOService.getSensitiveUserByDept(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java index c60106933..4a0b8b8c7 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java @@ -3,6 +3,7 @@ package com.njcn.supervision.service.user; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam; import com.njcn.bpm.service.IBpmService; +import com.njcn.supervision.pojo.param.SensitiveUserParam; import com.njcn.supervision.pojo.param.user.UserReportParam; import com.njcn.supervision.pojo.po.user.UserReportPO; import com.njcn.supervision.pojo.vo.user.UserLedgerVO; @@ -69,4 +70,7 @@ public interface UserReportPOService extends IBpmService { Page getUserLedgerPage(UserReportParam.UserReportQueryParam userReportQueryParam); + + List getSensitiveUserByDept(SensitiveUserParam param); + } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java index fdf907f3a..1e74a5ea5 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java @@ -41,6 +41,7 @@ import com.njcn.supervision.mapper.user.UserReportNormalMapper; import com.njcn.supervision.mapper.user.UserReportPOMapper; import com.njcn.supervision.pojo.dto.SensitiveReportExcel; import com.njcn.supervision.pojo.dto.SensitiveUserSExcel; +import com.njcn.supervision.pojo.param.SensitiveUserParam; import com.njcn.supervision.pojo.param.user.UserReportParam; import com.njcn.supervision.pojo.po.device.SupervisionTempLineReport; import com.njcn.supervision.pojo.po.user.*; @@ -1282,6 +1283,22 @@ public class UserReportPOServiceImpl extends ServiceImpl getSensitiveUserByDept(SensitiveUserParam param) { + QueryWrapper userReportVOQueryWrapper = new QueryWrapper<>(); + List data = deptFeignClient.getDepSonIdtByDeptId(param.getDeptId()).getData(); + //此处仅查询敏感及重要用户 + userReportVOQueryWrapper.and(wrapper -> + wrapper.in("supervision_user_report.org_id", data) + ) + .eq("supervision_user_report.state", DataStateEnum.ENABLE.getCode()) + .eq("supervision_user_report.user_type", UserNatureEnum.SENSITIVE_USER.getCode()) + .in("supervision_user_report.status", Arrays.asList(FlowStatusEnum.AUDIT.getCode(), FlowStatusEnum.APPROVE.getCode())); + userReportVOQueryWrapper.like(StringUtils.isNotBlank(param.getProjectName()), "supervision_user_report.project_name", param.getProjectName()); + userReportVOQueryWrapper.orderByDesc("supervision_user_report.create_time"); + return this.baseMapper.selectList(userReportVOQueryWrapper); + } + public Map getTreeString(String name, List treeVOS) { Map info = new LinkedHashMap<>(); for (SysDicTreePO sysMenuDtoChild : treeVOS) {