From ea1d016dff758272635859a8f55e06de5bf48439 Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Fri, 13 Oct 2023 16:19:00 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=9B=91=E6=B5=8B=E6=8C=87=E6=A0=87=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=B4=A8=E9=87=8F=E9=97=AE=E9=A2=98=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=92=8C=E4=B8=93=E9=A1=B9=E5=88=86=E6=9E=90?= =?UTF-8?q?-=E5=8F=B0=E8=B4=A6=E7=BB=9F=E8=AE=A1=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commApi/CommTerminalGeneralClient.java | 17 ++ ...mTerminalGeneralClientFallbackFactory.java | 7 + .../biz/pojo/dto/StatisticsMonitor.java | 64 ++++++++ .../ledgerManger/CommTerminalController.java | 14 +- .../mapper/majornetwork/MonitorMapper.java | 10 ++ .../majornetwork/mapping/MonitorMapper.xml | 22 +++ .../ledgerManger/CommTerminalService.java | 3 + .../impl/CommTerminalServiceImpl.java | 145 +++++++++++++++++- .../pq/controller/CommTerminalController.java | 11 +- .../handler/RQualityParameterMJob.java | 50 ++++++ ...msStatisticsSpecialMonitorFeignClient.java | 22 +++ .../RQualityParameterMFeignClient.java | 22 +++ ...cialMonitorFeignClientFallbackFactory.java | 35 +++++ ...yParameterMFeignClientFallbackFactory.java | 34 ++++ .../mysql/PmsStatisticsSpecialMonitor.java | 136 ++++++++++++++++ ...PmsStatisticsSpecialMonitorController.java | 54 +++++++ .../PmsStatisticsSpecialMonitorMapper.java | 16 ++ .../PmsStatisticsSpecialMonitorMapper.xml | 5 + .../IPmsStatisticsSpecialMonitorService.java | 24 +++ ...msStatisticsSpecialMonitorServiceImpl.java | 73 +++++++++ .../impl/RQualityParameterMServiceImpl.java | 3 +- 21 files changed, 754 insertions(+), 13 deletions(-) create mode 100644 pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/StatisticsMonitor.java create mode 100644 pqs-job/job-executor/src/main/java/com/njcn/executor/handler/RQualityParameterMJob.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/PmsStatisticsSpecialMonitorFeignClient.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RQualityParameterMFeignClient.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/PmsStatisticsSpecialMonitorFeignClientFallbackFactory.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/RQualityParameterMFeignClientFallbackFactory.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/PmsStatisticsSpecialMonitor.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/PmsStatisticsSpecialMonitorController.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/PmsStatisticsSpecialMonitorMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/PmsStatisticsSpecialMonitorMapper.xml create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/IPmsStatisticsSpecialMonitorService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/PmsStatisticsSpecialMonitorServiceImpl.java diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommTerminalGeneralClient.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommTerminalGeneralClient.java index 733816a45..41afaca5c 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommTerminalGeneralClient.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/CommTerminalGeneralClient.java @@ -1,12 +1,17 @@ package com.njcn.device.biz.commApi; +import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.biz.commApi.fallback.CommTerminalGeneralClientFallbackFactory; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -155,6 +160,18 @@ public interface CommTerminalGeneralClient { @GetMapping("/getMonitorDetail") HttpResult getMonitorDetail(@RequestParam("lineId") String lineId); + + /** + * @Description: 专项分析台账统计 + * @param param + * @Author: wr + * @Date: 2023/10/13 14:05 + */ + @PostMapping("/getStatisticsMonitor") + HttpResult> getStatisticsMonitor(@RequestBody StatisticsBizBaseParam param); + + + /** * 用于返回pq 还是pms系统 * diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommTerminalGeneralClientFallbackFactory.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommTerminalGeneralClientFallbackFactory.java index 3c1611edb..00c310bb3 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommTerminalGeneralClientFallbackFactory.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/commApi/fallback/CommTerminalGeneralClientFallbackFactory.java @@ -2,6 +2,7 @@ package com.njcn.device.biz.commApi.fallback; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.dto.*; @@ -130,6 +131,12 @@ public class CommTerminalGeneralClientFallbackFactory implements FallbackFactory throw new BusinessException(finalExceptionEnum); } + @Override + public HttpResult> getStatisticsMonitor(StatisticsBizBaseParam param) { + log.error("{}异常,降级处理,异常为:{}", "获取专项分析台账统计", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + @Override public HttpResult isPqOrPms() { log.error("{}异常,降级处理,异常为:{}", "返回pq还是pms系统", throwable.toString()); diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/StatisticsMonitor.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/StatisticsMonitor.java new file mode 100644 index 000000000..ca758fc65 --- /dev/null +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/StatisticsMonitor.java @@ -0,0 +1,64 @@ +package com.njcn.device.biz.pojo.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author wr + * @description + * @date 2023/10/13 9:54 + */ +@Data +public class StatisticsMonitor { + + + @ApiModelProperty("组织机构ID(外键)") + private String orgId; + + @ApiModelProperty("电压等级(字典)") + private String voltageLevel; + + @ApiModelProperty("母线数量") + private Integer generatrixSum; + + @ApiModelProperty("线路总数") + private Integer lineNum; + + @ApiModelProperty("接入分布式光伏的线路总数") + private Integer photovoltaicLineNum; + + @ApiModelProperty("台区总数") + private Integer platformNum; + + @ApiModelProperty("光伏台区总数") + private Integer photovoltaicCourtsNum; + + @ApiModelProperty("光伏容量超过台区容量25%的台区总数") + private Integer exceedCourtscapNum; + + @ApiModelProperty("风电用户总数") + private Integer windPowerNum; + + @ApiModelProperty("光伏用户总数") + private Integer pvNum; + + @ApiModelProperty("冶炼负荷用户总数") + private Integer smeltingLoadNum; + + @ApiModelProperty("电气化铁路总数") + private Integer electricTrackNum; + + @ApiModelProperty("风电总装机容量") + private Double windPowerCapacity; + + @ApiModelProperty("光伏总装机容量") + private Double pvCapacity; + + @ApiModelProperty("冶炼负荷总装机容量") + private Double smeltingLoadCapacity; + + @ApiModelProperty("电气化铁路总装机容量") + private Double electricTrackCapacity; +} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java index d3acd55cb..58cbc136e 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/CommTerminalController.java @@ -4,14 +4,14 @@ import cn.hutool.core.date.TimeInterval; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; -import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.biz.pojo.dto.StatisticsMonitor; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.device.biz.pojo.po.PqsDeviceUnit; -import com.njcn.device.pms.pojo.po.DistributionMonitor; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.service.ledgerManger.CommTerminalService; import com.njcn.device.pms.service.majornetwork.IDistributionMonitorService; @@ -29,7 +29,6 @@ import springfox.documentation.annotations.ApiIgnore; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Objects; /** * @author wr @@ -326,6 +325,15 @@ public class CommTerminalController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, lineDevGetDTO, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getStatisticsMonitor") + @ApiOperation("专项分析台账统计") + @ApiImplicitParam(name = "param", value = "实体", required = true) + public HttpResult> getStatisticsMonitor(@RequestBody StatisticsBizBaseParam param) { + String methodDescribe = getMethodDescribe("getStatisticsMonitor"); + List statisticsMonitor = commTerminalService.getStatisticsMonitor(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, statisticsMonitor, methodDescribe); + } /** diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/MonitorMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/MonitorMapper.java index 715fc44fe..66c2facd0 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/MonitorMapper.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/MonitorMapper.java @@ -2,6 +2,7 @@ package com.njcn.device.pms.mapper.majornetwork; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.njcn.common.pojo.dto.SimpleDTO; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.device.biz.pojo.dto.LineDTO; import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO; import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO; @@ -85,4 +86,13 @@ public interface MonitorMapper extends BaseMapper { * @Date: 2023/9/22 10:20 */ LineDTO selectLineDetail(@Param("id")String id); + + /** + * @Description: + * @param param + * @return: java.util.List + * @Author: wr + * @Date: 2023/10/13 11:23 + */ + List selectMonitorList(@Param("param") StatisticsBizBaseParam param); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml index 323d11ec3..6d0330c76 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/MonitorMapper.xml @@ -172,5 +172,27 @@ WHERE pm.id = #{id} + diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/CommTerminalService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/CommTerminalService.java index e11153fb7..650842645 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/CommTerminalService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/CommTerminalService.java @@ -1,5 +1,7 @@ package com.njcn.device.pms.service.ledgerManger; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import com.njcn.device.biz.pojo.dto.StatisticsMonitor; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; @@ -92,4 +94,5 @@ public interface CommTerminalService { LineDevGetDTO getMonitorDetail(String monitorId); + List getStatisticsMonitor(StatisticsBizBaseParam param); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java index ed66cc39d..e74521583 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java @@ -1,16 +1,15 @@ package com.njcn.device.pms.service.ledgerManger.impl; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.njcn.common.pojo.enums.common.DataStateEnum; 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.pojo.param.StatisticsBizBaseParam; import com.njcn.common.utils.EnumUtils; -import com.njcn.common.utils.HttpResultUtil; +import com.njcn.device.biz.pojo.dto.StatisticsMonitor; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; @@ -23,7 +22,7 @@ import com.njcn.device.pms.pojo.param.PmsStatationStatInfoParam; import com.njcn.device.pms.pojo.po.*; import com.njcn.device.pms.service.ledgerManger.DeptLineService; import com.njcn.device.pms.service.ledgerManger.CommTerminalService; -import com.njcn.redis.utils.RedisUtil; +import com.njcn.device.pms.service.majornetwork.IPowerDistributionareaService; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataTypeEnum; @@ -69,8 +68,6 @@ public class CommTerminalServiceImpl implements CommTerminalService { private final DicDataFeignClient dicDataFeignClient; - private final RedisUtil redisUtil; - private final OverlimitMapper overlimitMapper; private final PowerDistributionareaMapper powerDistributionareaMapper; @@ -78,6 +75,7 @@ public class CommTerminalServiceImpl implements CommTerminalService { private final PowerClientMapper powerClientMapper; private final PowerGenerationUserMapper powerGenerationUserMapper; + private final IPowerDistributionareaService iPowerDistributionareaService; /** @@ -601,4 +599,137 @@ public class CommTerminalServiceImpl implements CommTerminalService { return null; } + @Override + public List getStatisticsMonitor(StatisticsBizBaseParam param) { + List info=new ArrayList<>(); + //部门信息 + List deptInfos = deptFeignClient.getDeptDescendantIndexes(param.getId(), Stream.of(0, 1).collect(Collectors.toList())).getData(); + List voltageList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); + List monitors = monitorMapper.selectMonitorList(param); + + List distributionList = iPowerDistributionareaService.list(new LambdaQueryWrapper() + .select(PowerDistributionarea::getId, + PowerDistributionarea::getOrgId, + PowerDistributionarea::getVoltageLevel, + PowerDistributionarea::getApLoadType, + PowerDistributionarea::getPhotovoltaicCapacity + ) + .eq(PowerDistributionarea::getStatus, 1) + .ge(StrUtil.isNotBlank(param.getStartTime()), PowerDistributionarea::getCreateTime, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime()))) + .le(StrUtil.isNotBlank(param.getEndTime()), PowerDistributionarea::getCreateTime, DateUtil.endOfDay(DateUtil.parse(param.getEndTime()))) + ); + List dictDatas = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData(); + Map map=new HashMap<>(); + for (DictData dictDatum : dictDatas) { + if(DicDataEnum.ONSHORE_WIND.getCode().equals(dictDatum.getCode())){ + map.put("fd",dictDatum.getId()); + } + if(DicDataEnum.POWER_STATION.getCode().equals(dictDatum.getCode())){ + map.put("gfdz",dictDatum.getId()); + } + if(DicDataEnum.ELECTRIFIED_RAILWAYS.getCode().equals(dictDatum.getCode())){ + map.put("dq",dictDatum.getId()); + } + if(DicDataEnum.SMELT_LOAD.getCode().equals(dictDatum.getCode())){ + map.put("yl",dictDatum.getId()); + } + if(DicDataEnum.DISTRIBUTED_PHOTOVOLTAICS.getCode().equals(dictDatum.getCode())){ + map.put("gf",dictDatum.getId()); + } + } + // 过滤出传入id的子单位id + List directDeptInfos = deptInfos.stream() + .filter(deptDTO -> deptDTO.getPid().equals(param.getId())) + .collect(Collectors.toList()); + List monitorsNew ; + List distributionNew; + if (CollectionUtil.isEmpty(directDeptInfos)) { + //没有直接子部门,获取当前部门所有信息 + List dept = deptInfos.stream() + .filter(deptDTO -> deptDTO.getId().equals(param.getId())) + .collect(Collectors.toList()); + + monitorsNew = monitors.stream().filter(x -> x.getOrgId().equals(dept.get(0).getCode())).collect(Collectors.toList()); + distributionNew = distributionList.stream().filter(x -> x.getOrgId().equals(dept.get(0).getCode())).collect(Collectors.toList()); + statisticsMonitorAdd(Arrays.asList(dept.get(0).getCode()),voltageList,monitorsNew,distributionNew,map,info); + } else { + // 遍历子单位id + for (DeptDTO deptDTO : directDeptInfos) { + // 与全部单位id比较,取出上级为子单位id的集合 + List descendantDeptDTO = deptInfos.stream() + .filter(d -> d.getPids().contains(deptDTO.getId())) + .collect(Collectors.toList()); + //形成需要查询监测点的部门索引 + List deptIdList = descendantDeptDTO.stream() + .map(DeptDTO::getCode) + .distinct() + .collect(Collectors.toList()); + deptIdList.add(deptDTO.getCode()); + monitorsNew = monitors.stream().filter(x->deptIdList.contains(x.getOrgId())).collect(Collectors.toList()); + distributionNew = distributionList.stream().filter(x -> deptIdList.contains(x.getOrgId())).collect(Collectors.toList()); + statisticsMonitorAdd(deptIdList,voltageList,monitorsNew,distributionNew,map,info); + } + } + return info; + } + + public List statisticsMonitorAdd(List deptIdList,List voltageList ,List monitorsNew,List list,Map map,List info){ + + Map> monitorMap = monitorsNew.stream().collect(Collectors.groupingBy(x -> x.getOrgId() + "_" + x.getVoltageLevel())); + Map> distributionMap = list.stream().collect(Collectors.groupingBy(x -> x.getOrgId() + "_" + x.getVoltageLevel())); + + for (String s : deptIdList) { + for (DictData dictData : voltageList) { + StatisticsMonitor monitor=new StatisticsMonitor(); + monitor.setOrgId(s ); + monitor.setVoltageLevel(dictData.getId()); + monitor.setGeneratrixSum(0); + String key = s + "_" + dictData.getId(); + if(monitorMap.containsKey(key)){ + List monitors = monitorMap.get(s + "_" + dictData.getId()); + monitor.setLineNum(Math.toIntExact(monitors.stream().map(Monitor::getLineId).distinct().count())); + monitor.setPhotovoltaicLineNum(Math.toIntExact(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("gf"))).map(Monitor::getLineId).distinct().count())); + monitor.setWindPowerNum(Math.toIntExact(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("fd"))).map(Monitor::getId).distinct().count())); + monitor.setPvNum(Math.toIntExact(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("gfdz"))).map(Monitor::getId).distinct().count())); + monitor.setSmeltingLoadNum(Math.toIntExact(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("yl"))).map(Monitor::getId).distinct().count())); + monitor.setElectricTrackNum(Math.toIntExact(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("dq"))).map(Monitor::getId).distinct().count())); + monitor.setWindPowerCapacity(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("fd"))).mapToDouble(Monitor::getStandShortCapacity).sum()); + monitor.setPvCapacity(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("fd"))).mapToDouble(Monitor::getStandShortCapacity).sum()); + monitor.setSmeltingLoadCapacity(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("fd"))).mapToDouble(Monitor::getStandShortCapacity).sum()); + monitor.setElectricTrackCapacity(monitors.stream().filter(x->x.getMonitorTag().equals(map.get("fd"))).mapToDouble(Monitor::getStandShortCapacity).sum()); + + }else{ + monitor.setLineNum(0); + monitor.setPhotovoltaicLineNum(0); + monitor.setWindPowerNum(0); + monitor.setPvNum(0); + monitor.setSmeltingLoadNum(0); + monitor.setElectricTrackNum(0); + monitor.setWindPowerCapacity(0.0); + monitor.setPvCapacity(00.0); + monitor.setSmeltingLoadCapacity(0.0); + monitor.setElectricTrackCapacity(0.0); + + } + if(distributionMap.containsKey(key)){ + List distributionAreaList= distributionMap.get(key); + int size = distributionAreaList.size(); + monitor.setPlatformNum(size); + monitor.setPhotovoltaicCourtsNum(distributionAreaList.stream().filter(x->x.getApLoadType().equals(map.get("gf"))).map(PowerDistributionarea::getId).distinct().collect(Collectors.toList()).size()); + //获取分布式光伏总容量 + double sum = distributionAreaList.stream().mapToDouble(PowerDistributionarea::getPhotovoltaicCapacity).sum(); + double v = sum / size * 0.25; + monitor.setExceedCourtscapNum(distributionAreaList.stream().filter(x->x.getPhotovoltaicCapacity()>v).distinct().collect(Collectors.toList()).size()); + }else{ + monitor.setPlatformNum(0); + monitor.setPhotovoltaicCourtsNum(0); + monitor.setExceedCourtscapNum(0); + } + info.add(monitor); + } + } + return info; + } + + } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/CommTerminalController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/CommTerminalController.java index ff4d0f98e..a51e135ed 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/CommTerminalController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/CommTerminalController.java @@ -5,6 +5,7 @@ import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.biz.pojo.dto.*; @@ -26,6 +27,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -312,5 +314,12 @@ public class CommTerminalController extends BaseController { } return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, monitor, methodDescribe); } - + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getStatisticsMonitor") + @ApiOperation("专项分析台账统计") + @ApiImplicitParam(name = "param", value = "实体", required = true) + public HttpResult> getStatisticsMonitor(@RequestBody StatisticsBizBaseParam param) { + String methodDescribe = getMethodDescribe("getStatisticsMonitor"); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, new ArrayList<>(), methodDescribe); + } } diff --git a/pqs-job/job-executor/src/main/java/com/njcn/executor/handler/RQualityParameterMJob.java b/pqs-job/job-executor/src/main/java/com/njcn/executor/handler/RQualityParameterMJob.java new file mode 100644 index 000000000..cda79cef2 --- /dev/null +++ b/pqs-job/job-executor/src/main/java/com/njcn/executor/handler/RQualityParameterMJob.java @@ -0,0 +1,50 @@ +package com.njcn.executor.handler; + +import com.njcn.common.pojo.constant.BizParamConstant; +import com.njcn.executor.utils.CommonExecutorUtils; +import com.njcn.prepare.harmonic.api.newalgorithm.PmsStatisticsSpecialMonitorFeignClient; +import com.njcn.prepare.harmonic.api.newalgorithm.RQualityParameterMFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + + +/** + * @Description: pms算法 + * @Author: wr + * @Date: 2023/10/13 15:02 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class RQualityParameterMJob { + + private final RQualityParameterMFeignClient rQualityParameterMFeignClient; + private final PmsStatisticsSpecialMonitorFeignClient pmsStatisticsSpecialMonitorFeignClient; + + @XxlJob("rQualityParameterM") + public void rQualityParameterM(){ + log.info(LocalDateTime.now()+"监测指标数据质量问题汇总统计调度开始------------------------"); + LineParam lineParam = new LineParam(); + lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_MONTH)); + lineParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_MONTH)); + lineParam.setDataSource(2); + CommonExecutorUtils.commDefineDate(BizParamConstant.STAT_BIZ_MONTH,lineParam); + rQualityParameterMFeignClient.handlerMonitorAbnormal(lineParam); + } + + @XxlJob("pmsStatisticsSpecialMonitor") + public void pmsStatisticsSpecialMonitorHandler(){ + log.info(LocalDateTime.now()+"专项分析-台账统计调度开始------------------------"); + LineParam lineParam = new LineParam(); + lineParam.setType(Integer.valueOf(BizParamConstant.STAT_BIZ_MONTH)); + lineParam.setDataDate(CommonExecutorUtils.prepareTimeDeal(BizParamConstant.STAT_BIZ_MONTH)); + lineParam.setDataSource(2); + CommonExecutorUtils.commDefineDate(BizParamConstant.STAT_BIZ_MONTH,lineParam); + pmsStatisticsSpecialMonitorFeignClient.pmsStatisticsSpecialMonitorHandler(lineParam); + } +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/PmsStatisticsSpecialMonitorFeignClient.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/PmsStatisticsSpecialMonitorFeignClient.java new file mode 100644 index 000000000..262f267b4 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/PmsStatisticsSpecialMonitorFeignClient.java @@ -0,0 +1,22 @@ +package com.njcn.prepare.harmonic.api.newalgorithm; + + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.api.newalgorithm.fallback.RStatAbnormalFeignClientFallbackFactory; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@org.springframework.cloud.openfeign.FeignClient( + value = ServerInfo.PREPARE_BOOT,//对应模块名 + path = "/pmsStatisticsSpecialMonitor",//对应controller请求类 + fallbackFactory = RStatAbnormalFeignClientFallbackFactory.class//服务降级处理类 +) +public interface PmsStatisticsSpecialMonitorFeignClient { + + @ApiOperation("监测指标数据质量问题汇总统计(r_quality_parameter_m表数据)") + @PostMapping("pmsStatisticsSpecialMonitorHandler") + HttpResult pmsStatisticsSpecialMonitorHandler(@RequestBody LineParam jobParam ); +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RQualityParameterMFeignClient.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RQualityParameterMFeignClient.java new file mode 100644 index 000000000..d6b2e6994 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/RQualityParameterMFeignClient.java @@ -0,0 +1,22 @@ +package com.njcn.prepare.harmonic.api.newalgorithm; + + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.api.newalgorithm.fallback.RStatAbnormalFeignClientFallbackFactory; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@org.springframework.cloud.openfeign.FeignClient( + value = ServerInfo.PREPARE_BOOT,//对应模块名 + path = "/rQualityParameterM",//对应controller请求类 + fallbackFactory = RStatAbnormalFeignClientFallbackFactory.class//服务降级处理类 +) +public interface RQualityParameterMFeignClient { + + @ApiOperation("监测指标数据质量问题汇总统计(r_quality_parameter_m表数据)") + @PostMapping("rQualityParameterMHandler") + HttpResult handlerMonitorAbnormal(@RequestBody LineParam jobParam ); +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/PmsStatisticsSpecialMonitorFeignClientFallbackFactory.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/PmsStatisticsSpecialMonitorFeignClientFallbackFactory.java new file mode 100644 index 000000000..22ed91c91 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/PmsStatisticsSpecialMonitorFeignClientFallbackFactory.java @@ -0,0 +1,35 @@ +package com.njcn.prepare.harmonic.api.newalgorithm.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.prepare.harmonic.api.newalgorithm.PmsStatisticsSpecialMonitorFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.utils.PrepareEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class PmsStatisticsSpecialMonitorFeignClientFallbackFactory implements FallbackFactory { + @Override + public PmsStatisticsSpecialMonitorFeignClient create(Throwable throwable) { + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException)throwable.getCause(); + exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult()); + } + + Enum finalExceptionEnum = exceptionEnum; + return new PmsStatisticsSpecialMonitorFeignClient() { + + @Override + public HttpResult pmsStatisticsSpecialMonitorHandler(LineParam jobParam) { + log.error("{}异常,降级处理,异常为:{}", "专项分析-台账统计(pms_statistics_special_monitor表数据): ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + + }; + } +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/RQualityParameterMFeignClientFallbackFactory.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/RQualityParameterMFeignClientFallbackFactory.java new file mode 100644 index 000000000..7a7b7ea52 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/newalgorithm/fallback/RQualityParameterMFeignClientFallbackFactory.java @@ -0,0 +1,34 @@ +package com.njcn.prepare.harmonic.api.newalgorithm.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.prepare.harmonic.api.newalgorithm.RQualityParameterMFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.utils.PrepareEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class RQualityParameterMFeignClientFallbackFactory implements FallbackFactory { + @Override + public RQualityParameterMFeignClient create(Throwable throwable) { + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException)throwable.getCause(); + exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult()); + } + + Enum finalExceptionEnum = exceptionEnum; + return new RQualityParameterMFeignClient() { + + @Override + public HttpResult handlerMonitorAbnormal(LineParam jobParam) { + log.error("{}异常,降级处理,异常为:{}", "监测指标数据质量问题汇总统计(r_quality_parameter_m表数据): ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/PmsStatisticsSpecialMonitor.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/PmsStatisticsSpecialMonitor.java new file mode 100644 index 000000000..5f60efa84 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/PmsStatisticsSpecialMonitor.java @@ -0,0 +1,136 @@ +package com.njcn.prepare.harmonic.pojo.mysql; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import java.time.LocalDateTime; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author wr + * @since 2023-10-13 + */ +@Getter +@Setter +@TableName("pms_statistics_special_monitor") +@ApiModel(value = "PmsStatisticsSpecialMonitor对象", description = "") +public class PmsStatisticsSpecialMonitor { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织机构名称") + @TableField("Org_Name") + private String orgName; + + @ApiModelProperty("组织机构ID(外键)") + @MppMultiId("Org_Id") + private String orgId; + + @ApiModelProperty("电压等级(字典)") + @MppMultiId("Voltage_Level") + private String voltageLevel; + + @ApiModelProperty("母线数量") + @TableField("Generatrix_Sum") + private Integer generatrixSum; + + @ApiModelProperty("线路总数") + @TableField("Line_Num") + private Integer lineNum; + + @ApiModelProperty("接入分布式光伏的线路总数") + @TableField("Photovoltaic_Line_Num") + private Integer photovoltaicLineNum; + + @ApiModelProperty("台区总数") + @TableField("Platform_Num") + private Integer platformNum; + + @ApiModelProperty("光伏台区总数") + @TableField("Photovoltaic_Courts_Num") + private Integer photovoltaicCourtsNum; + + @ApiModelProperty("光伏容量超过台区容量25%的台区总数") + @TableField("Exceed_Courtscap_Num") + private Integer exceedCourtscapNum; + + @ApiModelProperty("风电用户总数") + @TableField("Wind_Power_Num") + private Integer windPowerNum; + + @ApiModelProperty("光伏用户总数") + @TableField("Pv_Num") + private Integer pvNum; + + @ApiModelProperty("冶炼负荷用户总数") + @TableField("Smelting_Load_Num") + private Integer smeltingLoadNum; + + @ApiModelProperty("电气化铁路总数") + @TableField("Electric_Track_Num") + private Integer electricTrackNum; + + @ApiModelProperty("日期") + @MppMultiId("Data_Date") + private LocalDateTime dataDate; + + @ApiModelProperty("数据状态:0-删除;1-正常; ") + @TableField("Status") + private Integer status; + + @ApiModelProperty("创建用户") + @TableField("Create_By") + private String createBy; + + @ApiModelProperty("创建时间") + @TableField(fill = FieldFill.INSERT) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime createTime; + + @ApiModelProperty("更新用户") + @TableField("Update_By") + private String updateBy; + + @ApiModelProperty("更新时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime updateTime; + + @ApiModelProperty("风电总装机容量") + @TableField("Wind_Power_Capacity") + private Integer windPowerCapacity; + + @ApiModelProperty("光伏总装机容量") + @TableField("Pv_Capacity") + private Integer pvCapacity; + + @ApiModelProperty("冶炼负荷总装机容量") + @TableField("Smelting_Load_Capacity") + private Integer smeltingLoadCapacity; + + @ApiModelProperty("电气化铁路总装机容量") + @TableField("Electric_Track_Capacity") + private Integer electricTrackCapacity; + + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/PmsStatisticsSpecialMonitorController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/PmsStatisticsSpecialMonitorController.java new file mode 100644 index 000000000..056ea67e3 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/PmsStatisticsSpecialMonitorController.java @@ -0,0 +1,54 @@ +package com.njcn.prepare.harmonic.controller.newalgorithm; + + +import com.njcn.common.pojo.annotation.OperateInfo; +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.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IPmsStatisticsSpecialMonitorService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; +import com.njcn.web.controller.BaseController; + +import java.time.LocalDateTime; + +/** + *

+ * 前端控制器 + *

+ * + * @author wr + * @since 2023-10-13 + */ +@RestController +@RequestMapping("/pmsStatisticsSpecialMonitor") +@Api(tags = "专项分析-台账统计") +@Slf4j +@RequiredArgsConstructor +public class PmsStatisticsSpecialMonitorController extends BaseController { + + private final IPmsStatisticsSpecialMonitorService pmsStatisticsSpecialMonitorService; + + @ApiOperation("专项分析-台账统计(pms_statistics_special_monitor表数据)") + @ApiImplicitParam(value = "jobParam", name = "jobParam", required = true) + @PostMapping("pmsStatisticsSpecialMonitorHandler") + @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) + public HttpResult pmsStatisticsSpecialMonitorHandler(@RequestBody LineParam jobParam) { + log.info(LocalDateTime.now() + "pmsStatisticsSpecialMonitorHandler开始执行"); + String methodDescribe = getMethodDescribe("pmsStatisticsSpecialMonitorHandler"); + pmsStatisticsSpecialMonitorService.pmsStatisticsSpecialMonitorHandler(jobParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + + } +} + diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/PmsStatisticsSpecialMonitorMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/PmsStatisticsSpecialMonitorMapper.java new file mode 100644 index 000000000..3cf915313 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/PmsStatisticsSpecialMonitorMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.prepare.harmonic.pojo.mysql.PmsStatisticsSpecialMonitor; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wr + * @since 2023-10-13 + */ +public interface PmsStatisticsSpecialMonitorMapper extends MppBaseMapper { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/PmsStatisticsSpecialMonitorMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/PmsStatisticsSpecialMonitorMapper.xml new file mode 100644 index 000000000..a077170d4 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/PmsStatisticsSpecialMonitorMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/IPmsStatisticsSpecialMonitorService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/IPmsStatisticsSpecialMonitorService.java new file mode 100644 index 000000000..3e04394b8 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/IPmsStatisticsSpecialMonitorService.java @@ -0,0 +1,24 @@ +package com.njcn.prepare.harmonic.service.mysql.newalgorithm; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.mysql.PmsStatisticsSpecialMonitor; +import com.njcn.prepare.harmonic.pojo.param.LineParam; + +/** + *

+ * 服务类 + *

+ * + * @author wr + * @since 2023-10-13 + */ +public interface IPmsStatisticsSpecialMonitorService extends IMppService { + + /** + * @Description: 专项分析-台账统计算法 + * @param jobParam + * @Author: wr + * @Date: 2023/10/13 14:02 + */ + void pmsStatisticsSpecialMonitorHandler(LineParam jobParam); +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/PmsStatisticsSpecialMonitorServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/PmsStatisticsSpecialMonitorServiceImpl.java new file mode 100644 index 000000000..a340d0f18 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/PmsStatisticsSpecialMonitorServiceImpl.java @@ -0,0 +1,73 @@ +package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import com.njcn.common.utils.PubUtils; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.dto.DeptGetBase; +import com.njcn.device.biz.pojo.dto.StatisticsMonitor; +import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.PmsStatisticsSpecialMonitorMapper; +import com.njcn.prepare.harmonic.pojo.mysql.PmsStatisticsSpecialMonitor; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IPmsStatisticsSpecialMonitorService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author wr + * @since 2023-10-13 + */ +@Service +@RequiredArgsConstructor +public class PmsStatisticsSpecialMonitorServiceImpl extends MppServiceImpl implements IPmsStatisticsSpecialMonitorService { + + private final CommTerminalGeneralClient commTerminalGeneralClient; + private final DeptFeignClient deptFeignClient; + @Override + @Async("asyncExecutor") + @Transactional(rollbackFor = {Exception.class}) + public void pmsStatisticsSpecialMonitorHandler(LineParam jobParam) { + List info=new ArrayList<>(); + Dept dept = deptFeignClient.getRootDept().getData(); + StatisticsBizBaseParam param=new StatisticsBizBaseParam(); + param.setId(dept.getId()); + param.setStartTime(jobParam.getBeginTime()); + param.setEndTime(jobParam.getEndTime()); + List data = commTerminalGeneralClient.getStatisticsMonitor(param).getData(); + if(CollUtil.isNotEmpty(data)){ + DeptGetLineParam deptGetLineParam=new DeptGetLineParam(); + deptGetLineParam.setDeptId(dept.getId()); + List deptGetBases = commTerminalGeneralClient.getDeptChildrenByParent(deptGetLineParam).getData(); + Map deptName = deptGetBases.stream().collect(Collectors.toMap(DeptGetBase::getUnitId, DeptGetBase::getUnitName)); + for (StatisticsMonitor datum : data) { + if(deptName.containsKey(datum.getOrgId())){ + PmsStatisticsSpecialMonitor monitor = BeanUtil.copyProperties(datum, PmsStatisticsSpecialMonitor.class); + monitor.setOrgName(deptName.get(datum.getOrgId())); + monitor.setDataDate(PubUtils.localDateTimeFormat(jobParam.getDataDate() + " " + "00:00:00")); + monitor.setStatus(1); + info.add(monitor); + } + } + } + if (CollUtil.isNotEmpty(info)) { + this.saveOrUpdateBatchByMultiId(info, 500); + } + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RQualityParameterMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RQualityParameterMServiceImpl.java index bdd157a54..19da0182d 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RQualityParameterMServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RQualityParameterMServiceImpl.java @@ -133,9 +133,8 @@ public class RQualityParameterMServiceImpl extends MppServiceImpl collect = info.stream().filter(x -> x.getMatchingCount() > 0).collect(Collectors.toList()); if (CollUtil.isNotEmpty(info)) { -// this.saveOrUpdateBatchByMultiId(info, 500); + this.saveOrUpdateBatchByMultiId(info, 500); } } }