From a3772119b43963a870222846abe260777a9729cd Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Fri, 6 Sep 2024 15:52:10 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=8F=98=E7=94=B5=E7=AB=99=E4=B8=8A=E9=80=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9=202.=E6=B7=BB=E5=8A=A0pms?= =?UTF-8?q?=E9=85=8D=E7=BD=91=E7=94=A8=E6=88=B7=E4=BE=A7=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AE=8C=E6=95=B4=E6=80=A7=E6=8E=A5=E5=8F=A3=203.=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0pms=E9=85=8D=E7=BD=91=E7=94=A8=E6=88=B7=E4=BE=A7?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E8=B6=8A=E9=99=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/param/DistributionMonitorParam.java | 4 + .../pms/pojo/param/PowerClientParam.java | 1 - .../pojo/param/pwUser/PwUserMonitorParam.java | 4 + .../pojo/vo/pwUser/PwUserMonitorDataVO.java | 26 ++++++ .../PwUserMonitorDataController.java | 14 +++ .../DistributionMonitorMapper.java | 10 +- .../mapping/DistributionMonitorMapper.xml | 25 +++-- .../PwUserMonitorDataService.java | 3 + .../impl/PwUserMonitorDataServiceImpl.java | 5 + .../impl/DistributionMonitorServiceImpl.java | 32 ++++--- .../impl/TerminalServiceImpl.java | 2 + .../harmonic/pojo/vo/MonitorLimitRateVO.java | 16 +--- .../njcn/harmonic/pojo/vo/PwLimitDataVO.java | 30 ++++++ .../majornetwork/RStatLimitController.java | 10 ++ .../majornetwork/RStatLimitService.java | 3 + .../impl/RStatLimitServiceImpl.java | 91 +++++++++++++++++++ .../PqTypicalSourceCreatePOServiceImpl.java | 61 +++++++++---- .../impl/PointStatisticalDataServiceImpl.java | 8 ++ .../impl/REvaluationDataServiceImpl.java | 7 ++ ...RSubstationStatisticalDataServiceImpl.java | 18 +++- .../RUploadEvaluationDataDServiceImpl.java | 6 +- .../tasks/UploadGwTaskSubstationRunner.java | 6 +- 22 files changed, 320 insertions(+), 62 deletions(-) create mode 100644 pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/PwLimitDataVO.java diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/DistributionMonitorParam.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/DistributionMonitorParam.java index fde3bc084..e9bb2db2a 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/DistributionMonitorParam.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/DistributionMonitorParam.java @@ -1,6 +1,7 @@ package com.njcn.device.pms.pojo.param; import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -49,6 +50,9 @@ public class DistributionMonitorParam { @ApiModelProperty(value = "监测终端接线方式(字典)") private String terminalWiringMethod; + @ApiModelProperty(value = "统计间隔分钟") + private Integer statisticalInterval; + /** * pt变比 diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/PowerClientParam.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/PowerClientParam.java index 4f66a8e75..6aa748ed0 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/PowerClientParam.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/PowerClientParam.java @@ -199,7 +199,6 @@ public class PowerClientParam { * 用户标签 */ @ApiModelProperty(value = "用户标签",required = true) - @NotBlank(message = "用户标签不可为空") private String userTag; /** diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/pwUser/PwUserMonitorParam.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/pwUser/PwUserMonitorParam.java index 79873760e..d03c55a41 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/pwUser/PwUserMonitorParam.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/param/pwUser/PwUserMonitorParam.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @EqualsAndHashCode(callSuper = true) @@ -17,5 +18,8 @@ public class PwUserMonitorParam extends BaseParam { private Double limitValue; + private Integer comFlag; + + private List ids; } diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/pwUser/PwUserMonitorDataVO.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/pwUser/PwUserMonitorDataVO.java index 7cdc85dab..aba68166d 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/pwUser/PwUserMonitorDataVO.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/vo/pwUser/PwUserMonitorDataVO.java @@ -2,21 +2,47 @@ package com.njcn.device.pms.pojo.vo.pwUser; import lombok.Data; +import java.time.LocalDateTime; + @Data public class PwUserMonitorDataVO { private String id; + /** + * 监测点名称 + */ private String name; + /** + * 所属组织 + */ private String orgName; private String operationName; + /** + * 是否敏感用户 + */ private Integer ifSensitiveUser; + /** + * 用户类型 + */ private String userType; + /** + * 电压等级 + */ + private String voltageLevel; + + /** + * 数据完整性 + */ private Float integrityRate; + private LocalDateTime localDateTime; + + private Integer comFlag; + } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PwUserMonitorDataController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PwUserMonitorDataController.java index 5e8dbcc9b..f0eba0903 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PwUserMonitorDataController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/PwUserMonitorDataController.java @@ -47,4 +47,18 @@ public class PwUserMonitorDataController extends BaseController { Page page = pwUserMonitorDataService.pageIntegrityData(pwUserMonitorParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,page,methodDescribe); } + + + /** + * 获取配网用户装置在线率 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("getPwDeviceOnline") + @ApiOperation("获取配网用户侧监测点数据完整性") + @ApiImplicitParam(name = "pwUserMonitorParam",value = "请求头",required = true) + public HttpResult> getPwDeviceOnline(@RequestBody @Validated PwUserMonitorParam pwUserMonitorParam){ + String methodDescribe = getMethodDescribe("getPwDeviceOnline"); + Page page = pwUserMonitorDataService.getPwDeviceOnline(pwUserMonitorParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,page,methodDescribe); + } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java index 267230cce..ccef8eb16 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java @@ -9,6 +9,7 @@ import com.njcn.device.pms.pojo.dto.PmsSimpleDTO; import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO; import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam; import com.njcn.device.pms.pojo.param.TaiZhangParam; +import com.njcn.device.pms.pojo.param.pwUser.PwUserMonitorParam; import com.njcn.device.pms.pojo.po.DistributionMonitor; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.po.PowerDistributionarea; @@ -126,5 +127,12 @@ public interface DistributionMonitorMapper extends MppBaseMapper getDistributionPage(@Param("ew")QueryWrapper ew); + /** + * pms临时处理方式,后续物联平台接口修改开放后修改 + * @param deptIds + * @param param + * @return + */ + //TODO pms临时处理方式,后续物联平台接口修改开放后修改 + List getDistributionList(@Param("deptIds")List deptIds,@Param("param") PwUserMonitorParam param); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml index 7e82647e9..9732aafa8 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml @@ -508,15 +508,28 @@ - + select * from ( SELECT pms_power_client.id,pms_power_client.name,pms_power_client.Org_Name,pms_power_client.Operation_Name, - pms_power_client.If_Sensitive_User,pms_power_client.User_Type + pms_power_client.If_Sensitive_User,pms_power_client.User_Type,pms_power_client.Voltage_Level, + IF(pms_real_data.time_Id IS NULL, 0, IF(TIMESTAMPDIFF(MINUTE, pms_real_data.time_Id, NOW()) > 30, 0, 1)) AS comFlag, + pms_real_data.time_Id updateTime FROM - pms_distribution_monitor, - pms_power_client - WHERE pms_distribution_monitor.Monitor_Id = pms_power_client.id - and ${ew.sqlSegment} + pms_distribution_monitor + inner join pms_power_client on pms_distribution_monitor.Monitor_Id = pms_power_client.id + left join pms_real_data on pms_power_client.id = pms_real_data.line_id and pms_real_data.value_type = "AVG" + WHERE pms_power_client.org_id in + + #{item} + + + and pms_power_client.name like CONCAT('%', #{param.userName}, '%') + + ) t where 1 = 1 + + and comFlag = #{param.comFlag} + diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/PwUserMonitorDataService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/PwUserMonitorDataService.java index 45692d7e0..420d36aea 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/PwUserMonitorDataService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/PwUserMonitorDataService.java @@ -14,4 +14,7 @@ public interface PwUserMonitorDataService { */ Page pageIntegrityData(PwUserMonitorParam pwUserMonitorParam); + Page getPwDeviceOnline(PwUserMonitorParam pwUserMonitorParam); + + } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/PwUserMonitorDataServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/PwUserMonitorDataServiceImpl.java index e766dfaa1..36bdad095 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/PwUserMonitorDataServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/PwUserMonitorDataServiceImpl.java @@ -76,6 +76,11 @@ public class PwUserMonitorDataServiceImpl implements PwUserMonitorDataService { return pageResult; } + @Override + public Page getPwDeviceOnline(PwUserMonitorParam pwUserMonitorParam) { + return null; + } + /** * 超标情况 diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/DistributionMonitorServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/DistributionMonitorServiceImpl.java index c6a7d7486..d34e2fa49 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/DistributionMonitorServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/DistributionMonitorServiceImpl.java @@ -158,10 +158,11 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.eq(DistributionMonitor::getMonitorSort, dictData.getId()); + + String voltageLevel; switch (dictData.getCode()) { case DicDataConstant.TWO_LINE: //二类监测点(台区) @@ -223,6 +227,7 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl getPwUserIds(PwUserMonitorParam pwUserMonitorParam) { List deptIds = deptFeignClient.getDepSonSelfCodetByDeptId(pwUserMonitorParam.getOrgId()).getData(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("pms_power_client.org_id", deptIds); - if (StrUtil.isNotBlank(pwUserMonitorParam.getUserName())) { - queryWrapper.eq("pms_power_client.name", pwUserMonitorParam.getUserName()); - } - List pwUserMonitorDataVOList = this.distributionMonitorMapper.getDistributionPage(queryWrapper); - return pwUserMonitorDataVOList; + return this.distributionMonitorMapper.getDistributionList(deptIds,pwUserMonitorParam); } @@ -499,12 +504,15 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl detailList; + + + @Data + public static class LimitDetail{ + + private Integer limitFlag; + + private String day; + + } + +} + + + + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java index 1b7f9011c..36bc49340 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/majornetwork/RStatLimitController.java @@ -11,6 +11,7 @@ import com.njcn.harmonic.pojo.param.RStatLimitQueryParam; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.vo.MonitorLimitRateVO; +import com.njcn.harmonic.pojo.vo.PwLimitDataVO; import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import com.njcn.harmonic.service.majornetwork.RStatLimitService; import com.njcn.web.controller.BaseController; @@ -92,4 +93,13 @@ public class RStatLimitController extends BaseController { } + @PostMapping("/pwMonitorLimitDataRange") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("获取配网指标超标详情") + public HttpResult> pwMonitorLimitDataRange(@RequestBody @Validated PwUserMonitorParam pwUserMonitorParam){ + String methodDescribe = getMethodDescribe("pwMonitorLimitDataRange"); + List page = rStatLimitService.pwMonitorLimitDataRange(pwUserMonitorParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); + } + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java index 311fe9029..0f785f3d3 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/RStatLimitService.java @@ -7,6 +7,7 @@ import com.njcn.device.pq.pojo.vo.GridDiagramVO; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.vo.MonitorLimitRateVO; +import com.njcn.harmonic.pojo.vo.PwLimitDataVO; import com.njcn.harmonic.pojo.vo.RStatLimitRateDVO; import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import org.springframework.web.bind.annotation.RequestParam; @@ -54,4 +55,6 @@ public interface RStatLimitService { Page pwMonitorLimitData(PwUserMonitorParam pwUserMonitorParam); + List pwMonitorLimitDataRange(PwUserMonitorParam pwUserMonitorParam); + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java index 47dcc3e34..ed69d3051 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/majornetwork/impl/RStatLimitServiceImpl.java @@ -2,7 +2,10 @@ package com.njcn.harmonic.service.majornetwork.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.lang.func.Func; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; @@ -32,6 +35,7 @@ import com.njcn.harmonic.pojo.po.RMpVThd; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; import com.njcn.harmonic.pojo.vo.MonitorLimitRateVO; +import com.njcn.harmonic.pojo.vo.PwLimitDataVO; import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO; import com.njcn.harmonic.service.IRStatLimitTargetDService; import com.njcn.harmonic.service.majornetwork.RStatLimitService; @@ -45,6 +49,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; @@ -472,6 +478,91 @@ public class RStatLimitServiceImpl implements RStatLimitService { pageResult.setRecords(resultList); } return pageResult; + } + + @Override + public List pwMonitorLimitDataRange(PwUserMonitorParam pwUserMonitorParam) { + List result = new ArrayList<>(); + if(CollUtil.isEmpty(pwUserMonitorParam.getIds())){ + return result; + } + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + + LocalDate startDate = LocalDate.parse(pwUserMonitorParam.getSearchBeginTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + LocalDate endDate = LocalDate.parse(pwUserMonitorParam.getSearchEndTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId,RStatLimitTargetDPO::getTime,RStatLimitTargetDPO::getAllTime).in(RStatLimitTargetDPO::getLineId,pwUserMonitorParam.getIds()); + lambdaQueryWrapper.between(RStatLimitTargetDPO::getTime,pwUserMonitorParam.getSearchBeginTime(),pwUserMonitorParam.getSearchEndTime()); + List rStatLimitTargetDPOList = rStatLimitTargetDMapper.selectList(lambdaQueryWrapper); + if(CollUtil.isNotEmpty(rStatLimitTargetDPOList)){ + Map> map = rStatLimitTargetDPOList.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId)); + processDateRange(startDate,endDate,map,result); + } + + + return result; + } + + public void processDateRange(LocalDate startDate, LocalDate endDate,Map> map,List result) { + map.forEach((lineKey,list)->{ + PwLimitDataVO pwLimitDataVO = new PwLimitDataVO(); + pwLimitDataVO.setLineId(lineKey); + pwLimitDataVO.setName(lineKey); + List detailList = new ArrayList<>(); + + if (startDate.getYear() == endDate.getYear() && startDate.getMonth() == endDate.getMonth()) { + Map targetDPOMap = list.stream().collect(Collectors.toMap(RStatLimitTargetDPO::getTime, Function.identity())); + // 如果在同一个月,则遍历每一天 + for (LocalDate date = startDate; !date.isAfter(endDate.minusDays(1)); date = date.plusDays(1)) { + PwLimitDataVO.LimitDetail limitDetail = new PwLimitDataVO.LimitDetail(); + if (targetDPOMap.containsKey(date)) { + limitDetail.setLimitFlag(targetDPOMap.get(date).getAllTime() > 0 ? 2 : 1); + } else { + limitDetail.setLimitFlag(0); + } + limitDetail.setDay(date.getDayOfMonth() +"日"); + detailList.add(limitDetail); + } + + }else { + Map> targetDPOMap = list.stream().collect(Collectors.groupingBy(it->LocalDateTimeUtil.format(it.getTime(),DatePattern.NORM_MONTH_PATTERN))); + // 如果在同一个月,则遍历每一天 + + // 如果不在同一个月,则遍历每个月(这里简化处理,只打印月份和年份) + LocalDate currentDate = startDate; + while (!currentDate.isAfter(endDate)) { + String date = LocalDateTimeUtil.format(currentDate,DatePattern.NORM_MONTH_PATTERN); + + PwLimitDataVO.LimitDetail limitDetail = new PwLimitDataVO.LimitDetail(); + if(targetDPOMap.containsKey(date)){ + boolean res = targetDPOMap.get(date).stream().anyMatch(item->item.getAllTime()>0); + limitDetail.setLimitFlag(res ? 2:1); + }else { + limitDetail.setLimitFlag(0); + } + limitDetail.setDay(currentDate.getMonthValue() +"月"); + detailList.add(limitDetail); + + + + // 跳到下一个月的第一天(注意:这里简化了处理,没有实际遍历这个月的每一天) + currentDate = currentDate.plusMonths(1).withDayOfMonth(1); + + // 如果当前月已经超过了结束月,则退出循环 + if (currentDate.isAfter(endDate)) { + break; + } + } + } + pwLimitDataVO.setDetailList(detailList); + result.add(pwLimitDataVO); + }); + + + + + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/send/impl/PqTypicalSourceCreatePOServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/send/impl/PqTypicalSourceCreatePOServiceImpl.java index 367846c09..71785e4f7 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/send/impl/PqTypicalSourceCreatePOServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/send/impl/PqTypicalSourceCreatePOServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.core.text.StrBuilder; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -162,18 +163,28 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl> partition = ListUtils.partition(list, 100); - partition.forEach(temp->{ - List dtoList = BeanUtil.copyToList(temp, PqTypicalSourceCreateDTO.class); + StrBuilder resultLog = new StrBuilder(); + AtomicBoolean resultFlag = new AtomicBoolean(true); + for (int i = 0; i < partition.size(); i++) { + List dtoList = BeanUtil.copyToList(partition.get(i), PqTypicalSourceCreateDTO.class); SendParam sendParam = new SendParam(); sendParam.setStats(dtoList); - sendParam.setStatisticalDate(temp.get(0).getComputeDate()); - String s = JSONObject.toJSONStringWithDateFormat(sendParam, JSON.DEFFAULT_DATE_FORMAT); + sendParam.setStatisticalDate(partition.get(i).get(0).getComputeDate()); + if(i == 0){ + sendParam.setIsAppend("0"); + }else if(i==partition.size()-1){ + sendParam.setIsAppend("2"); + }else { + sendParam.setIsAppend("1"); + } Map send = GwSendUtil.send(sendParam, GWSendEnum.TYPICAL_SOURCE); List trIds = dtoList.stream().map(PqTypicalSourceCreateDTO::getId).distinct().collect(Collectors.toList()); - returnInformation(1, trIds, send); - }); - - assUploadLog(localDate,new StrBuilder("典型源荷指标统计上送成功"),new AtomicBoolean(true)); + returnInformation(i, trIds, send,resultLog, resultFlag, localDate); + } + if (resultFlag.get()) { + resultLog.append(" 上送" + list.size() + "条数据成功"); + assUploadLog(localDate, resultLog, resultFlag); + } return "成功"; } @@ -192,34 +203,50 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl ids, Map send) { + private void returnInformation(Integer step, List ids, Map send, StrBuilder resultLog, AtomicBoolean resultFlag, LocalDate localDate) { + int start = step * 100; + int end = (step + 1) * 100; if (send.containsKey("succeed")) { String succeed = send.get("succeed"); - if (succeed.indexOf("\\\"") != -1) { + if (succeed.contains("\\\"")) { succeed = succeed.replace("\\\"", "\""); } Map mapData = JSON.parseObject(succeed, Map.class); String status = mapData.get("status").toString(); + if ("000000".equals(status)) { - //修改信息状态 - this.lambdaUpdate().in(PqTypicalSourceCreatePO::getId,ids).set(PqTypicalSourceCreatePO::getIsUploadHead,num).update(); + //修改数据上送状态 + updateState(ids); String result = mapData.get("result").toString(); Map mapCount = JSON.parseObject(result, Map.class); String count = mapCount.get("count").toString(); - return "操作成功:成功数据" + count + "条"; + } else { + resultFlag.set(false); String errors = mapData.get("errors").toString(); - throw new BusinessException("操作失败:" + status + "_" + errors); + String errorMsg = " 上送" + start + "条至" + end + "条数据,上送失败:" + status + "_" + errors + " ;"; + resultLog.append(errorMsg); + assUploadLog(localDate, resultLog, resultFlag); + throw new BusinessException(errorMsg); } } else { -// updateIsUploadHead(num, ids); + resultFlag.set(false); + resultLog.append(" 上送" + start + "条至" + end + "条数据网络异常;"); + assUploadLog(localDate, resultLog, resultFlag); throw new BusinessException("当前时间段国网上送请求过多,请稍后再试"); -// return "当前时间段国网上送请求过多,请稍后再试"; } + + + } + + private void updateState(List ids) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.in(PqTypicalSourceCreatePO::getId, ids) + .set(PqTypicalSourceCreatePO::getIsUploadHead, 1); + this.update(lambdaUpdateWrapper); } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PointStatisticalDataServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PointStatisticalDataServiceImpl.java index c7328e379..c16fdd2cd 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PointStatisticalDataServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PointStatisticalDataServiceImpl.java @@ -108,10 +108,18 @@ public class PointStatisticalDataServiceImpl extends ServiceImpl dtoList = BeanUtil.copyToList(partition.get(i), MonitorStatisticalDTO.class); SendParam sp = new SendParam(); sp.setStats(dtoList); sp.setStatisticalDate(partition.get(i).get(0).getComputeDate()); + if(i == 0){ + sp.setIsAppend("0"); + }else if(i==partition.size()-1){ + sp.setIsAppend("2"); + }else { + sp.setIsAppend("1"); + } //上送数据 Map send = GwSendUtil.send(sp, GWSendEnum.STATISTICAL_CREATE); //获取返回结果 diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java index b8b4796d4..44b142aeb 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java @@ -203,6 +203,13 @@ public class REvaluationDataServiceImpl extends ServiceImpl send = GwSendUtil.send(sp, GWSendEnum.EVALUATION); //获取返回结果 diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java index cb00e4fb3..219e07b45 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java @@ -80,18 +80,21 @@ public class RSubstationStatisticalDataServiceImpl extends ServiceImpl> partition = ListUtils.partition(list, 100); StrBuilder resultLog = new StrBuilder(); @@ -106,6 +109,13 @@ public class RSubstationStatisticalDataServiceImpl extends ServiceImpl send = GwSendUtil.send(sp, GWSendEnum.SUBSTATION_MONITOR); //获取返回结果 diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java index e90807cba..545292b29 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java @@ -124,14 +124,10 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl list = calculatedParam.getIdList(); list.forEach(item -> { - if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()), item.getDeptLevel()) - //县数据 - || Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()),item.getDeptLevel()) - || Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()), item.getDeptLevel())) { + if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()), item.getDeptLevel())) { return; } - BusBarDto busBarDto = allDept.stream().filter(o -> Objects.equals(o.getOrgId(), item.getUnitId())).findFirst().orElse(null); List deptMonitorList = monitorList.stream().filter(t->item.getUnitId().contains(t.getOrgId())).collect(Collectors.toList()); diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskSubstationRunner.java b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskSubstationRunner.java index c72651f48..02b1131e4 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskSubstationRunner.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/timer/tasks/UploadGwTaskSubstationRunner.java @@ -26,12 +26,10 @@ public class UploadGwTaskSubstationRunner implements TimerTaskRunner { public void action(String date) { UploadParam param = new UploadParam(); - param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_MONTH_PATTERN)); + param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_DATE_PATTERN)); uploadGwDataFeignClient.uploadSubstationStatisticalData(param); - //年 - param.setTime(DateUtil.yesterday().toString(DatePattern.NORM_YEAR_PATTERN)); - uploadGwDataFeignClient.uploadSubstationStatisticalData(param); + } }