diff --git a/pqs-common/common-web/src/main/java/com/njcn/web/enums/GWSendEnum.java b/pqs-common/common-web/src/main/java/com/njcn/web/enums/GWSendEnum.java index 13cb87e8a..d5b66ab4a 100644 --- a/pqs-common/common-web/src/main/java/com/njcn/web/enums/GWSendEnum.java +++ b/pqs-common/common-web/src/main/java/com/njcn/web/enums/GWSendEnum.java @@ -35,8 +35,12 @@ public enum GWSendEnum { SUBSTATION_MONITOR("pqSubstationMonitorCreate", "/WMCenter/powerQuality/substationMonitor/create"), //接收其他干扰用户台账数据接口 OTHER_USER_CREATE("pqArchivalInformationOtherUserCreate", "/WMCenter/powerQuality/archivalInformation/otherUserCreate"), - - + //2.4.1.16接收电能质量主配网监测点统计数据接口 + POINT_STATISTICAL_DATA("pqPointStatisticalDataCreate","/WMCenter/powerQuality/converterMonitor/indexCreate"), + //2.4.1.19接收电能质量变电站监测统计数据接口 + SUBSTATION_STATISTICAL_DATA("pqSubstationStatisticalDataCreate","/WMCenter/powerQuality/substationMonitor/create"), + //2.4.1.8接收电能质量基准水平评估数据接口 + EVALUATION_DATA("pqEvaluationData","/WMCenter/powerQuality/evaluation/create"), ; diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/MonitorStatisticalDTO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/MonitorStatisticalDTO.java deleted file mode 100644 index 2e1d91b04..000000000 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/MonitorStatisticalDTO.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.njcn.harmonic.pojo.dto; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * 类的介绍:上送国网-接收电能质量主配网监测点统计数据接口list实体 - * - * @author xuyang - * @version 1.0.0 - * @createTime 2023/12/7 8:52 - */ -@Data -public class MonitorStatisticalDTO { - - private String id; - - private String provinceId; - - private String provinceName; - - private String cityId; - - private String cityName; - - private String countyId; - - private String countyName; - - private Integer runTerminalNum; - - private Integer onlineMonitorNum; - - private Integer runMonitorNum; - - private BigDecimal onlineMonitorRate; - - private Integer expectCollectNum; - - private Integer actualCollectNum; - - private BigDecimal dataFullRate; - - private String stationType; - - private Integer stationMonitorNum; - - private String statisticalDate; - - private String statisticalLevel; - - private String statisticalType; - - private String distributionFlag; - -} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/MonitorStatisticalDTO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/MonitorStatisticalDTO.java new file mode 100644 index 000000000..f68961f1d --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/MonitorStatisticalDTO.java @@ -0,0 +1,114 @@ +package com.njcn.harmonic.pojo.dto.upload; + +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/14 14:05 + */ +@Data +public class MonitorStatisticalDTO { + + /** + * uuid + */ + private String id; + + /** + * 省级单位id + */ + private String provinceId; + + /** + * 省级单位名称 + */ + private String provinceName; + + /** + * 市级单位id + */ + private String cityId; + + /** + * 市级单位名称 + */ + private String cityName; + + /** + * 县级单位id + */ + private String countyId; + + /** + * 县级单位名称 + */ + private String countyName; + + /** + * 在运监测终端数量 + */ + private Integer runTerminalNum; + + /** + * 在线监测点个数 + */ + private Integer onlineMonitorNum; + + /** + * 在运监测点个数 + */ + private Integer runMonitorNum; + + /** + * 监测点在线率 + */ + private Double onlineMonitorRate; + + /** + * 数据应收数 + */ + private Integer expectCollectNum; + + /** + * 数据实收数 + */ + private Integer actualCollectNum; + + /** + * 完整率 + */ + private Double dataFullRate; + + /** + * 所属站别 + */ + private String stationType; + + /** + * 所属站别下的监测点个数 + */ + private Integer stationMonitorNum; + + /** + * 统计日期 + */ + private String statisticalDate; + + /** + * 统计层级 + */ + private String statisticalLevel; + + /** + * 统计类型 + */ + private String statisticalType; + + /** + * 主配网标识 + */ + private String distributionFlag; +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/PqEvaluationCreateDTO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/PqEvaluationCreateDTO.java new file mode 100644 index 000000000..640f2a884 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/PqEvaluationCreateDTO.java @@ -0,0 +1,110 @@ +package com.njcn.harmonic.pojo.dto.upload; + +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/14 15:46 + */ +@Data +public class PqEvaluationCreateDTO { + + /** + * uuid + */ + private String id; + + /** + * 省级单位id + */ + private String provinceId; + + /** + * 省级单位名称 + */ + private String provinceName; + + /** + * 市级单位id + */ + private String cityId; + + /** + * 市级单位名称 + */ + private String cityName; + + /** + * 县级单位id + */ + private String countyId; + + /** + * 县级单位名称 + */ + private String countyName; + + /** + * 谐波次数(次数应取2-50) + */ + private Integer harmonicNum; + + /** + * 指标类型(01:电压 02:长时间闪变 03:三相电压不平衡 04:电压总谐波畸变率 05:各次谐波电压 06:负序电流) + */ + private String indexType; + + /** + * 数据来源(01:仅在线监测 02:在线监测与现场测试) + */ + private String dataSources; + + /** + * 监测母线数量 + */ + private Integer monitorBusNum = 0; + + /** + * 母线监测率(%) + */ + private Double monitorBusRate = 0.0d; + + /** + * 在运母线数量 + */ + private Integer onlineBusNum = 0; + + /** + * 均值 + */ + private Double avgValue; + + /** + * 标准差 + */ + private Double standardDeviation; + + /** + * 统计日期 + */ + private String statisticalDate; + + /** + * 统计层级(3:省 4:市 5:县) + */ + private String statisticalLevel; + + /** + * 统计类型(01:年 02:月 03:日) + */ + private String statisticalType; + + /** + * 电压等级 + */ + private String voltageLevel; + +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/SubstationQualityStatisticsDTO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/SubstationQualityStatisticsDTO.java new file mode 100644 index 000000000..0f942b464 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/dto/upload/SubstationQualityStatisticsDTO.java @@ -0,0 +1,94 @@ +package com.njcn.harmonic.pojo.dto.upload; + +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/14 15:35 + */ +@Data +public class SubstationQualityStatisticsDTO { + + /** + * uuid + */ + private String id; + + /** + * 省级单位id + */ + private String provinceId; + + /** + * 省级单位名称 + */ + private String provinceName; + + /** + * 市级单位id + */ + private String cityId; + + /** + * 市级单位名称 + */ + private String cityName; + + /** + * 县级单位id + */ + private String countyId; + + /** + * 县级单位名称 + */ + private String countyName; + + /** + * 变电站总数量 + */ + private Integer substationCount; + + /** + * 测试变电站数量 + */ + private Integer testSubstaionNum; + + /** + * 在运变电站数量 + */ + private Integer runSubstationNum; + + /** + * 监测变电站数量 + */ + private Integer monitorSubstaionNum; + + /** + * 在线监测点数 + */ + private Integer onlineMonitorNum; + + /** + * 覆盖率 + */ + private Double coverageRate; + + /** + * 监测率 + */ + private Double monitoringRate; + + /** + * 统计时间 + */ + private String statisticalDate; + + /** + * 统计类型(01:年 02:月 03:日) + */ + private String statisticalType; +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/UploadParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/UploadParam.java new file mode 100644 index 000000000..e3e108659 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/UploadParam.java @@ -0,0 +1,25 @@ +package com.njcn.harmonic.pojo.param; + +import com.njcn.web.pojo.param.BaseParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; + +/** + * 类的介绍:国网数据查询参数实体 + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/14 9:30 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class UploadParam extends BaseParam { + + @ApiModelProperty("单位id") + @NotBlank(message = "单位id不可为空") + private String orgId; + +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadEvaluationDataD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadEvaluationDataD.java index 167be9b36..da1d7de9a 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadEvaluationDataD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadEvaluationDataD.java @@ -123,5 +123,10 @@ public class RUploadEvaluationDataD { @MppMultiId private String voltageLevel; + /** + * 上送状态(0:未上送 1:已上送) + */ + private Integer uploadStatus; + } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java index 879d02903..5100e6627 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java @@ -125,5 +125,8 @@ public class RUploadPointStatisticalDataD { @MppMultiId private String distributionFlag; - + /** + * 上送状态(0:未上送 1:已上送) + */ + private Integer uploadStatus; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadSubstationStatisticalDataD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadSubstationStatisticalDataD.java index f7751cef7..5b01a50d0 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadSubstationStatisticalDataD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadSubstationStatisticalDataD.java @@ -98,7 +98,7 @@ public class RUploadSubstationStatisticalDataD { private Double monitoringRate; /** - * 统计月份 + * 统计时间 */ @MppMultiId private String statisticalDate; @@ -109,5 +109,8 @@ public class RUploadSubstationStatisticalDataD { @MppMultiId private String statisticalType; - + /** + * 上送状态(0:未上送 1:已上送) + */ + private Integer uploadStatus; } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadEvaluationDataVo.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadEvaluationDataVo.java new file mode 100644 index 000000000..6eb1f762f --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadEvaluationDataVo.java @@ -0,0 +1,66 @@ +package com.njcn.harmonic.pojo.vo.upload; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/14 11:03 + */ +@Data +public class UploadEvaluationDataVo { + + @ApiModelProperty("id") + private String id; + + @ApiModelProperty("省级单位id") + private String provinceId; + + @ApiModelProperty("省级单位名称") + private String provinceName; + + @ApiModelProperty("市级单位id") + private String cityId; + + @ApiModelProperty("市级单位名称") + private String cityName; + + @ApiModelProperty("县级单位id") + private String countyId; + + @ApiModelProperty("县级单位名称") + private String countyName; + + @ApiModelProperty("谐波次数(次数应取2-50) 没有次数的则为0") + private Integer harmonicNum; + + @ApiModelProperty("指标类型(01:电压 02:长时间闪变 03:三相电压不平衡 04:电压总谐波畸变率 05:各次谐波电压 06:负序电流)") + private String indexType; + + @ApiModelProperty("监测母线数量") + private Integer monitorBusNum = 0; + + @ApiModelProperty("母线监测率(%)") + private Double monitorBusRate = 0.0d; + + @ApiModelProperty("在运母线数量") + private Integer onlineBusNum = 0; + + @ApiModelProperty("均值 3.1415926处理为暂未数据") + private Double avgValue; + + @ApiModelProperty("标准差 3.1415926处理为暂未数据") + private Double standardDeviation; + + @ApiModelProperty("电压等级 前端根据字典转换对应中文") + private String voltageLevel; + + @ApiModelProperty("统计日期") + private String statisticalDate; + + @ApiModelProperty("上送状态(0:未上送 1:已上送)") + private Integer uploadStatus; +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadPointStatisticalDataVo.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadPointStatisticalDataVo.java new file mode 100644 index 000000000..2ef931716 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadPointStatisticalDataVo.java @@ -0,0 +1,70 @@ +package com.njcn.harmonic.pojo.vo.upload; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/14 11:03 + */ +@Data +public class UploadPointStatisticalDataVo { + + @ApiModelProperty("id") + private String id; + + @ApiModelProperty("省级单位id") + private String provinceId; + + @ApiModelProperty("省级单位名称") + private String provinceName; + + @ApiModelProperty("市级单位id") + private String cityId; + + @ApiModelProperty("市级单位名称") + private String cityName; + + @ApiModelProperty("县级单位id") + private String countyId; + + @ApiModelProperty("县级单位名称") + private String countyName; + + @ApiModelProperty("在运监测终端数量") + private Integer runTerminalNum; + + @ApiModelProperty("在线监测点个数") + private Integer onlineMonitorNum; + + @ApiModelProperty("在运监测点个数") + private Integer runMonitorNum; + + @ApiModelProperty("监测点在线率%") + private Double onlineMonitorRate; + + @ApiModelProperty("数据应收数") + private Integer expectCollectNum; + + @ApiModelProperty("数据实收数") + private Integer actualCollectNum; + + @ApiModelProperty("完整率%") + private Double dataFullRate; + + @ApiModelProperty("所属站别") + private String stationType; + + @ApiModelProperty("所属站别下的监测点个数") + private Integer stationMonitorNum; + + @ApiModelProperty("统计日期") + private String statisticalDate; + + @ApiModelProperty("上送状态(0:未上送 1:已上送)") + private Integer uploadStatus; + +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadSubstationStatisticalDataVo.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadSubstationStatisticalDataVo.java new file mode 100644 index 000000000..b62330b41 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/upload/UploadSubstationStatisticalDataVo.java @@ -0,0 +1,64 @@ +package com.njcn.harmonic.pojo.vo.upload; + +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/14 11:26 + */ +@Data +public class UploadSubstationStatisticalDataVo { + + @ApiModelProperty("id") + private String id; + + @ApiModelProperty("省级单位id") + private String provinceId; + + @ApiModelProperty("省级单位名称") + private String provinceName; + + @ApiModelProperty("市级单位id") + private String cityId; + + @ApiModelProperty("市级单位名称") + private String cityName; + + @ApiModelProperty("县级单位id") + private String countyId; + + @ApiModelProperty("县级单位名称") + private String countyName; + + @ApiModelProperty("变电站总数量") + private Integer substationCount; + + @ApiModelProperty("测试变电站数量") + private Integer testSubstaionNum; + + @ApiModelProperty("在运变电站数量") + private Integer runSubstationNum; + + @ApiModelProperty("监测变电站数量") + private Integer monitorSubstaionNum; + + @ApiModelProperty("在线监测点数") + private Integer onlineMonitorNum; + + @ApiModelProperty("覆盖率%") + private Double coverageRate; + + @ApiModelProperty("监测率%") + private Double monitoringRate; + + @ApiModelProperty("统计日期") + private String statisticalDate; + + @ApiModelProperty("上送状态(0:未上送 1:已上送)") + private Integer uploadStatus; +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/EvaluationDataController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/EvaluationDataController.java new file mode 100644 index 000000000..d435b0bfe --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/EvaluationDataController.java @@ -0,0 +1,60 @@ +package com.njcn.harmonic.controller.upload; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.common.utils.LogUtil; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.vo.upload.UploadEvaluationDataVo; +import com.njcn.harmonic.service.upload.IEvaluationDataService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 类的介绍:国网指标数据上送 + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/7 9:05 + */ +@Validated +@Slf4j +@RestController +@RequestMapping("/upload") +@Api(tags = "国网指标数据上送") +@AllArgsConstructor +public class EvaluationDataController extends BaseController { + private final IEvaluationDataService evaluationDataService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getEvaluationData") + @ApiOperation("查询母线基准水平评估数据") + @ApiImplicitParam(name = "param", value = "实体参数", required = true) + public HttpResult> getEvaluationData(@RequestBody UploadParam param) { + String methodDescribe = getMethodDescribe("getEvaluationData"); + LogUtil.njcnDebug(log, "{},实体参数:{}", methodDescribe, param); + Page list = evaluationDataService.getEvaluationData(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/uploadEvaluationData") + @ApiOperation("国网上送-母线基准水平评估数据") + @ApiImplicitParam(name = "time", value = "时间", required = true) + public HttpResult uploadEvaluationData(@RequestParam("time") String time) { + String methodDescribe = getMethodDescribe("uploadEvaluationData"); + LogUtil.njcnDebug(log, "{},时间:{}", methodDescribe, time); + String result = evaluationDataService.uploadEvaluationData(time); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/PointStatisticalDataController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/PointStatisticalDataController.java index c3ff8a9c9..48369740f 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/PointStatisticalDataController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/PointStatisticalDataController.java @@ -1,12 +1,15 @@ package com.njcn.harmonic.controller.upload; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.common.utils.LogUtil; -import com.njcn.harmonic.service.upload.PointStatisticalDataService; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.vo.upload.UploadPointStatisticalDataVo; +import com.njcn.harmonic.service.upload.IPointStatisticalDataService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -14,10 +17,7 @@ import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; -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 org.springframework.web.bind.annotation.*; /** * 类的介绍:国网指标数据上送 @@ -34,18 +34,28 @@ import org.springframework.web.bind.annotation.RestController; @AllArgsConstructor public class PointStatisticalDataController extends BaseController { - private final PointStatisticalDataService pointStatisticalDataService; + private final IPointStatisticalDataService pointStatisticalDataService; @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/statisticalCreate") - @ApiOperation("主配网监测点统计数据(2.4.1.17)") + @PostMapping("/getPointStatisticalData") + @ApiOperation("查询主配网监测点统计数据") @ApiImplicitParam(name = "param", value = "实体参数", required = true) - public HttpResult statisticalCreate(@RequestBody Object param) { - String methodDescribe = getMethodDescribe("statisticalCreate"); + public HttpResult> getPointStatisticalData(@RequestBody UploadParam param) { + String methodDescribe = getMethodDescribe("getPointStatisticalData"); LogUtil.njcnDebug(log, "{},实体参数:{}", methodDescribe, param); - pointStatisticalDataService.getPointStatisticalData(param); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + Page list = pointStatisticalDataService.getPointStatisticalData(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/uploadPointStatisticalData") + @ApiOperation("国网上送-主配网监测点统计数据") + @ApiImplicitParam(name = "time", value = "时间", required = true) + public HttpResult uploadPointStatisticalData(@RequestParam("time") String time) { + String methodDescribe = getMethodDescribe("uploadPointStatisticalData"); + LogUtil.njcnDebug(log, "{},时间:{}", methodDescribe, time); + String result = pointStatisticalDataService.uploadPointStatisticalData(time); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/SubstationStatisticalDataController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/SubstationStatisticalDataController.java new file mode 100644 index 000000000..745948c31 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/upload/SubstationStatisticalDataController.java @@ -0,0 +1,60 @@ +package com.njcn.harmonic.controller.upload; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.common.utils.LogUtil; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.vo.upload.UploadSubstationStatisticalDataVo; +import com.njcn.harmonic.service.upload.ISubstationStatisticalDataService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 类的介绍:国网指标数据上送 + * + * @author xuyang + * @version 1.0.0 + * @createTime 2023/12/7 9:05 + */ +@Validated +@Slf4j +@RestController +@RequestMapping("/upload") +@Api(tags = "国网指标数据上送") +@AllArgsConstructor +public class SubstationStatisticalDataController extends BaseController { + + private final ISubstationStatisticalDataService substationStatisticalDataService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getSubstationStatisticalData") + @ApiOperation("查询变电站监测统计数据") + @ApiImplicitParam(name = "param", value = "实体参数", required = true) + public HttpResult> getSubstationStatisticalData(@RequestBody UploadParam param) { + String methodDescribe = getMethodDescribe("getSubstationStatisticalData"); + LogUtil.njcnDebug(log, "{},实体参数:{}", methodDescribe, param); + Page list = substationStatisticalDataService.getSubstationStatisticalData(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/uploadSubstationStatisticalData") + @ApiOperation("国网上送-变电站监测统计数据") + @ApiImplicitParam(name = "time", value = "时间", required = true) + public HttpResult uploadSubstationStatisticalData(@RequestParam("time") String time) { + String methodDescribe = getMethodDescribe("uploadSubstationStatisticalData"); + LogUtil.njcnDebug(log, "{},时间:{}", methodDescribe, time); + String result = substationStatisticalDataService.uploadSubstationStatisticalData(time); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadEvaluationDataDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadEvaluationDataDMapper.java new file mode 100644 index 000000000..15c879f28 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadEvaluationDataDMapper.java @@ -0,0 +1,16 @@ +package com.njcn.harmonic.mapper.upload; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.upload.RUploadEvaluationDataD; + +/** + *

+ * 电能质量基准水平评估数据-日表 Mapper 接口 + *

+ * + * @author xuyang + * @since 2023-12-12 + */ +public interface RUploadEvaluationDataDMapper extends BaseMapper { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadPointStatisticalDataDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadPointStatisticalDataDMapper.java new file mode 100644 index 000000000..73f3ae87d --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadPointStatisticalDataDMapper.java @@ -0,0 +1,16 @@ +package com.njcn.harmonic.mapper.upload; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.upload.RUploadPointStatisticalDataD; + +/** + *

+ * 主配网监测点统计数据-日表 Mapper 接口 + *

+ * + * @author xuyang + * @since 2023-12-07 + */ +public interface RUploadPointStatisticalDataDMapper extends BaseMapper { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadSubstationStatisticalDataDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadSubstationStatisticalDataDMapper.java new file mode 100644 index 000000000..e722b7223 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/upload/RUploadSubstationStatisticalDataDMapper.java @@ -0,0 +1,16 @@ +package com.njcn.harmonic.mapper.upload; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.harmonic.pojo.po.upload.RUploadSubstationStatisticalDataD; + +/** + *

+ * 主配网变电站监测统计数据-日表 Mapper 接口 + *

+ * + * @author xuyang + * @since 2023-12-08 + */ +public interface RUploadSubstationStatisticalDataDMapper extends BaseMapper { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IEvaluationDataService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IEvaluationDataService.java new file mode 100644 index 000000000..7ac520c43 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IEvaluationDataService.java @@ -0,0 +1,31 @@ +package com.njcn.harmonic.service.upload; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.po.upload.RUploadEvaluationDataD; +import com.njcn.harmonic.pojo.vo.upload.UploadEvaluationDataVo; + +/** + *

+ * 电能质量基准水平评估数据-日表 服务类 + *

+ * + * @author xuyang + * @since 2023-12-12 + */ +public interface IEvaluationDataService extends IService { + + /** + * 2.4.1.8接收电能质量基准水平评估数据接口 + * @param param + */ + Page getEvaluationData(UploadParam param); + + /** + * 数据上送接口 + * @param time + */ + String uploadEvaluationData(String time); + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IPointStatisticalDataService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IPointStatisticalDataService.java new file mode 100644 index 000000000..610db9c33 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/IPointStatisticalDataService.java @@ -0,0 +1,26 @@ +package com.njcn.harmonic.service.upload; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.po.upload.RUploadPointStatisticalDataD; +import com.njcn.harmonic.pojo.vo.upload.UploadPointStatisticalDataVo; + +/** + * @author xuyang + */ +public interface IPointStatisticalDataService extends IService { + + /** + * 2.4.1.17接收电能质量主配网监测点统计数据接口 + * @param param + */ + Page getPointStatisticalData(UploadParam param); + + /** + * 数据上送接口 + * @param time + */ + String uploadPointStatisticalData(String time); + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/ISubstationStatisticalDataService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/ISubstationStatisticalDataService.java new file mode 100644 index 000000000..82252be3a --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/ISubstationStatisticalDataService.java @@ -0,0 +1,30 @@ +package com.njcn.harmonic.service.upload; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.po.upload.RUploadSubstationStatisticalDataD; +import com.njcn.harmonic.pojo.vo.upload.UploadSubstationStatisticalDataVo; + +/** + *

+ * 主配网变电站监测统计数据-日表 服务类 + *

+ * + * @author xuyang + * @since 2023-12-08 + */ +public interface ISubstationStatisticalDataService extends IService { + + /** + * 2.4.1.19接收电能质量变电站监测统计数据接口 + * @param param + */ + Page getSubstationStatisticalData(UploadParam param); + + /** + * 数据上送接口 + * @param time + */ + String uploadSubstationStatisticalData(String time); +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/PointStatisticalDataService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/PointStatisticalDataService.java deleted file mode 100644 index 5d19a1df5..000000000 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/PointStatisticalDataService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.njcn.harmonic.service.upload; - -/** - * @author xuyang - */ -public interface PointStatisticalDataService { - - /** - * 2.4.1.17接收电能质量主配网监测点统计数据接口 - * @param param - */ - void getPointStatisticalData(Object param); - -} 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 b4a6da39c..93e36728e 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 @@ -1,21 +1,167 @@ package com.njcn.harmonic.service.upload.impl; -import com.njcn.harmonic.service.upload.PointStatisticalDataService; +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.harmonic.mapper.upload.RUploadPointStatisticalDataDMapper; +import com.njcn.harmonic.pojo.dto.upload.MonitorStatisticalDTO; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.po.upload.RUploadPointStatisticalDataD; +import com.njcn.harmonic.pojo.vo.upload.UploadPointStatisticalDataVo; +import com.njcn.harmonic.service.upload.IPointStatisticalDataService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import com.njcn.web.enums.GWSendEnum; +import com.njcn.web.factory.PageFactory; +import com.njcn.web.pojo.param.SendParam; +import com.njcn.web.utils.GwSendUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + /** * @author xuyang */ @Service @RequiredArgsConstructor @Slf4j -public class PointStatisticalDataServiceImpl implements PointStatisticalDataService { +public class PointStatisticalDataServiceImpl extends ServiceImpl implements IPointStatisticalDataService { + + private final DeptFeignClient deptFeignClient; @Override - public void getPointStatisticalData(Object param) { + public Page getPointStatisticalData(UploadParam param) { + LambdaQueryWrapper lambdaQueryWrapper = getDeptLevel(param); + //默认按照省名称排序 + lambdaQueryWrapper.orderByDesc(RUploadPointStatisticalDataD::getProvinceName); + Page page = this.page(new Page<>(PageFactory.getPageNum(param), PageFactory.getPageSize(param)), lambdaQueryWrapper); + List voList = BeanUtil.copyToList(page.getRecords(), UploadPointStatisticalDataVo.class); + Page pageVo = new Page<>(); + pageVo.setTotal(page.getTotal()); + pageVo.setPages(page.getPages()); + pageVo.setSize(page.getSize()); + pageVo.setRecords(voList); + return pageVo; + } + + @Override + public String uploadPointStatisticalData(String time) { + List list = this.lambdaQuery() + .eq(RUploadPointStatisticalDataD::getStatisticalDate,time) + .eq(RUploadPointStatisticalDataD::getUploadStatus,0).list(); + List dtoList = BeanUtil.copyToList(list, MonitorStatisticalDTO.class); + //以尺寸100分片 + List> pendingIds = ListUtils.partition(dtoList, 100); + //分片上传 + for (int i = 0; i < pendingIds.size(); i++) { + SendParam param = new SendParam(); + param.setStats(pendingIds.get(i)); + param.setStatisticalDate(time); + //上送数据 + Map send = GwSendUtil.send(param, GWSendEnum.POINT_STATISTICAL_DATA); + //获取返回结果 + List l = pendingIds.get(i).stream().map(MonitorStatisticalDTO::getId).collect(Collectors.toList()); + returnInformation(i,l,send); + } + return "上送成功:成功数据" + list.size() + "条"; + } + + + /** + * 获取当前单位的层级 + */ + public LambdaQueryWrapper getDeptLevel(UploadParam param) { + Dept dept = deptFeignClient.getDeptByCode(param.getOrgId()).getData(); + List list = Arrays.stream(dept.getPids().split(",")).map(String::trim).collect(Collectors.toList()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + + switch (list.size()) { + //国、省 + case 1: + List l1 = deptFeignClient.getDirectSonSelf(dept.getId()).getData(); + String orgId = l1.stream().filter(o->!Objects.equals(o.getId(),dept.getId())).findFirst().orElse(null).getCode(); + lambdaQueryWrapper.eq(RUploadPointStatisticalDataD::getProvinceId,orgId) + .between(RUploadPointStatisticalDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadPointStatisticalDataD::getUploadStatus,param.getSearchState()); + break; + case 2: + lambdaQueryWrapper.eq(RUploadPointStatisticalDataD::getProvinceId,param.getOrgId()) + .between(RUploadPointStatisticalDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadPointStatisticalDataD::getUploadStatus,param.getSearchState()); + break; + //市 + case 3: + lambdaQueryWrapper.eq(RUploadPointStatisticalDataD::getCityId, param.getOrgId()) + .between(RUploadPointStatisticalDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadPointStatisticalDataD::getUploadStatus,param.getSearchState()); + break; + //县 + case 4: + lambdaQueryWrapper.eq(RUploadPointStatisticalDataD::getCountyId, param.getOrgId()) + .between(RUploadPointStatisticalDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadPointStatisticalDataD::getUploadStatus,param.getSearchState()); + break; + default: + break; + } + return lambdaQueryWrapper; + } + + + /** + * 国网上送返回信息 + * + * @param step 分片上传当前阶段 + * @param ids 分片数据 + * @param send 上送结果 + * @return + */ + private void returnInformation(Integer step, List ids, Map send) { + if (send.containsKey("succeed")) { + String succeed = send.get("succeed"); + if (succeed.contains("\\\"")) { + succeed = succeed.replace("\\\"", "\""); + } + Map mapData = JSON.parseObject(succeed, Map.class); + String status = mapData.get("status").toString(); + if ("000000".equals(status)) { + //修改数据上送状态 + updateState(ids); + String result = mapData.get("result").toString(); + Map mapCount = JSON.parseObject(result, Map.class); + String count = mapCount.get("count").toString(); + } else { + String errors = mapData.get("errors").toString(); + int start = step * 100; + int end = (step+1) * 100; + throw new BusinessException("上送"+start+"条至"+end+"条数据,上送失败:" + status + "_" + errors); + } + } else { + throw new BusinessException("当前时间段国网上送请求过多,请稍后再试"); + } + } + + /** + * 修改上送信息状态 + * @param ids id集合 + */ + private void updateState(List ids) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.in(RUploadPointStatisticalDataD::getId, ids) + .set(RUploadPointStatisticalDataD::getUploadStatus, 1); + this.update(lambdaUpdateWrapper); } } 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 new file mode 100644 index 000000000..989334af1 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/REvaluationDataServiceImpl.java @@ -0,0 +1,182 @@ +package com.njcn.harmonic.service.upload.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.harmonic.mapper.upload.RUploadEvaluationDataDMapper; +import com.njcn.harmonic.pojo.dto.upload.PqEvaluationCreateDTO; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.po.upload.RUploadEvaluationDataD; +import com.njcn.harmonic.pojo.vo.upload.UploadEvaluationDataVo; +import com.njcn.harmonic.service.upload.IEvaluationDataService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import com.njcn.web.enums.GWSendEnum; +import com.njcn.web.factory.PageFactory; +import com.njcn.web.pojo.param.SendParam; +import com.njcn.web.utils.GwSendUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 电能质量基准水平评估数据-日表 服务实现类 + *

+ * + * @author xuyang + * @since 2023-12-12 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class REvaluationDataServiceImpl extends ServiceImpl implements IEvaluationDataService { + + private final DeptFeignClient deptFeignClient; + + @Override + public Page getEvaluationData(UploadParam param) { + LambdaQueryWrapper lambdaQueryWrapper = getDeptLevel(param); + //默认按照省名称排序 + lambdaQueryWrapper.orderByDesc(RUploadEvaluationDataD::getProvinceName); + Page page = this.page(new Page<>(PageFactory.getPageNum(param), PageFactory.getPageSize(param)), lambdaQueryWrapper); + List voList = BeanUtil.copyToList(page.getRecords(), UploadEvaluationDataVo.class); + + Page pageVo = new Page<>(); + pageVo.setTotal(page.getTotal()); + pageVo.setPages(page.getPages()); + pageVo.setSize(page.getSize()); + pageVo.setRecords(voList); + return pageVo; + } + + @Override + public String uploadEvaluationData(String time) { + List list = this.lambdaQuery() + .eq(RUploadEvaluationDataD::getStatisticalDate,time) + .eq(RUploadEvaluationDataD::getUploadStatus,0).list(); + List dtoList = BeanUtil.copyToList(list, PqEvaluationCreateDTO.class); + //以尺寸100分片 + List> pendingIds = ListUtils.partition(dtoList, 100); + //分片上传 + for (int i = 0; i < pendingIds.size(); i++) { + //处理数据 + List l1 = pendingIds.get(i).stream().map(item->{ + if (Objects.equals(item.getAvgValue(),3.1415926)){ + item.setAvgValue(0d); + } + if (Objects.equals(item.getStandardDeviation(),3.1415926)){ + item.setStandardDeviation(0d); + } + return item; + }).collect(Collectors.toList()); + //组装数据 + SendParam param = new SendParam(); + param.setStats(l1); + param.setStatisticalDate(time); + //上送数据 + Map send = GwSendUtil.send(param, GWSendEnum.EVALUATION_DATA); + //获取返回结果 + List l = pendingIds.get(i).stream().map(PqEvaluationCreateDTO::getId).collect(Collectors.toList()); + returnInformation(i,l,send); + } + return "上送成功:成功数据" + list.size() + "条"; + } + + + /** + * 获取当前单位的层级 + */ + public LambdaQueryWrapper getDeptLevel(UploadParam param) { + Dept dept = deptFeignClient.getDeptByCode(param.getOrgId()).getData(); + List list = Arrays.stream(dept.getPids().split(",")).map(String::trim).collect(Collectors.toList()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + + switch (list.size()) { + //国、省 + case 1: + List l1 = deptFeignClient.getDirectSonSelf(dept.getId()).getData(); + String orgId = l1.stream().filter(o->!Objects.equals(o.getId(),dept.getId())).findFirst().orElse(null).getCode(); + lambdaQueryWrapper.eq(RUploadEvaluationDataD::getProvinceId,orgId) + .between(RUploadEvaluationDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadEvaluationDataD::getUploadStatus,param.getSearchState()); + break; + case 2: + lambdaQueryWrapper.eq(RUploadEvaluationDataD::getProvinceId,param.getOrgId()) + .between(RUploadEvaluationDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadEvaluationDataD::getUploadStatus,param.getSearchState()); + break; + //市 + case 3: + lambdaQueryWrapper.eq(RUploadEvaluationDataD::getCityId, param.getOrgId()) + .between(RUploadEvaluationDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadEvaluationDataD::getUploadStatus,param.getSearchState()); + break; + //县 + case 4: + lambdaQueryWrapper.eq(RUploadEvaluationDataD::getCountyId, param.getOrgId()) + .between(RUploadEvaluationDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadEvaluationDataD::getUploadStatus,param.getSearchState()); + break; + default: + break; + } + return lambdaQueryWrapper; + } + + /** + * 国网上送返回信息 + * + * @param step 分片上传当前阶段 + * @param ids 分片数据 + * @param send 上送结果 + * @return + */ + private void returnInformation(Integer step, List ids, Map send) { + if (send.containsKey("succeed")) { + String succeed = send.get("succeed"); + if (succeed.contains("\\\"")) { + succeed = succeed.replace("\\\"", "\""); + } + Map mapData = JSON.parseObject(succeed, Map.class); + String status = mapData.get("status").toString(); + if ("000000".equals(status)) { + //修改数据上送状态 + updateState(ids); + String result = mapData.get("result").toString(); + Map mapCount = JSON.parseObject(result, Map.class); + String count = mapCount.get("count").toString(); + } else { + String errors = mapData.get("errors").toString(); + int start = step * 100; + int end = (step+1) * 100; + throw new BusinessException("上送"+start+"条至"+end+"条数据,上送失败:" + status + "_" + errors); + } + } else { + throw new BusinessException("当前时间段国网上送请求过多,请稍后再试"); + } + } + + /** + * 修改上送信息状态 + * @param ids id集合 + */ + private void updateState(List ids) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.in(RUploadEvaluationDataD::getId, ids) + .set(RUploadEvaluationDataD::getUploadStatus, 1); + this.update(lambdaUpdateWrapper); + } + +} 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 new file mode 100644 index 000000000..b73c0b175 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/RSubstationStatisticalDataServiceImpl.java @@ -0,0 +1,171 @@ +package com.njcn.harmonic.service.upload.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.harmonic.mapper.upload.RUploadSubstationStatisticalDataDMapper; +import com.njcn.harmonic.pojo.dto.upload.MonitorStatisticalDTO; +import com.njcn.harmonic.pojo.dto.upload.SubstationQualityStatisticsDTO; +import com.njcn.harmonic.pojo.param.UploadParam; +import com.njcn.harmonic.pojo.po.upload.RUploadPointStatisticalDataD; +import com.njcn.harmonic.pojo.po.upload.RUploadSubstationStatisticalDataD; +import com.njcn.harmonic.pojo.vo.upload.UploadPointStatisticalDataVo; +import com.njcn.harmonic.pojo.vo.upload.UploadSubstationStatisticalDataVo; +import com.njcn.harmonic.service.upload.ISubstationStatisticalDataService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import com.njcn.web.enums.GWSendEnum; +import com.njcn.web.factory.PageFactory; +import com.njcn.web.pojo.param.SendParam; +import com.njcn.web.utils.GwSendUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 主配网变电站监测统计数据-日表 服务实现类 + *

+ * + * @author xuyang + * @since 2023-12-08 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class RSubstationStatisticalDataServiceImpl extends ServiceImpl implements ISubstationStatisticalDataService { + + private final DeptFeignClient deptFeignClient; + @Override + public Page getSubstationStatisticalData(UploadParam param) { + LambdaQueryWrapper lambdaQueryWrapper = getDeptLevel(param); + //默认按照省名称排序 + lambdaQueryWrapper.orderByDesc(RUploadSubstationStatisticalDataD::getProvinceName); + Page page = this.page(new Page<>(PageFactory.getPageNum(param), PageFactory.getPageSize(param)), lambdaQueryWrapper); + List voList = BeanUtil.copyToList(page.getRecords(), UploadSubstationStatisticalDataVo.class); + + Page pageVo = new Page<>(); + pageVo.setTotal(page.getTotal()); + pageVo.setPages(page.getPages()); + pageVo.setSize(page.getSize()); + pageVo.setRecords(voList); + return pageVo; + } + + @Override + public String uploadSubstationStatisticalData(String time) { + List list = this.lambdaQuery() + .eq(RUploadSubstationStatisticalDataD::getStatisticalDate,time) + .eq(RUploadSubstationStatisticalDataD::getUploadStatus,0).list(); + List dtoList = BeanUtil.copyToList(list, SubstationQualityStatisticsDTO.class); + //以尺寸100分片 + List> pendingIds = ListUtils.partition(dtoList, 100); + //分片上传 + for (int i = 0; i < pendingIds.size(); i++) { + SendParam param = new SendParam(); + param.setStats(pendingIds.get(i)); + param.setStatisticalDate(time); + //上送数据 + Map send = GwSendUtil.send(param, GWSendEnum.SUBSTATION_STATISTICAL_DATA); + //获取返回结果 + List l = pendingIds.get(i).stream().map(SubstationQualityStatisticsDTO::getId).collect(Collectors.toList()); + returnInformation(i,l,send); + } + return "上送成功:成功数据" + list.size() + "条"; + } + + /** + * 获取当前单位的层级 + */ + public LambdaQueryWrapper getDeptLevel(UploadParam param) { + Dept dept = deptFeignClient.getDeptByCode(param.getOrgId()).getData(); + List list = Arrays.stream(dept.getPids().split(",")).map(String::trim).collect(Collectors.toList()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + + switch (list.size()) { + //国、省 + case 1: + List l1 = deptFeignClient.getDirectSonSelf(dept.getId()).getData(); + String orgId = l1.stream().filter(o->!Objects.equals(o.getId(),dept.getId())).findFirst().orElse(null).getCode(); + lambdaQueryWrapper.eq(RUploadSubstationStatisticalDataD::getProvinceId,orgId) + .between(RUploadSubstationStatisticalDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadSubstationStatisticalDataD::getUploadStatus,param.getSearchState()); + break; + case 2: + lambdaQueryWrapper.eq(RUploadSubstationStatisticalDataD::getProvinceId,param.getOrgId()) + .between(RUploadSubstationStatisticalDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadSubstationStatisticalDataD::getUploadStatus,param.getSearchState()); + break; + //市 + case 3: + lambdaQueryWrapper.eq(RUploadSubstationStatisticalDataD::getCityId, param.getOrgId()) + .between(RUploadSubstationStatisticalDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadSubstationStatisticalDataD::getUploadStatus,param.getSearchState()); + break; + //县 + case 4: + lambdaQueryWrapper.eq(RUploadSubstationStatisticalDataD::getCountyId, param.getOrgId()) + .between(RUploadSubstationStatisticalDataD::getStatisticalDate,param.getSearchBeginTime(),param.getSearchEndTime()) + .eq(!Objects.isNull(param.getSearchState()),RUploadSubstationStatisticalDataD::getUploadStatus,param.getSearchState()); + break; + default: + break; + } + return lambdaQueryWrapper; + } + + /** + * 国网上送返回信息 + * + * @param step 分片上传当前阶段 + * @param ids 分片数据 + * @param send 上送结果 + * @return + */ + private void returnInformation(Integer step, List ids, Map send) { + if (send.containsKey("succeed")) { + String succeed = send.get("succeed"); + if (succeed.contains("\\\"")) { + succeed = succeed.replace("\\\"", "\""); + } + Map mapData = JSON.parseObject(succeed, Map.class); + String status = mapData.get("status").toString(); + if ("000000".equals(status)) { + //修改数据上送状态 + updateState(ids); + String result = mapData.get("result").toString(); + Map mapCount = JSON.parseObject(result, Map.class); + String count = mapCount.get("count").toString(); + } else { + String errors = mapData.get("errors").toString(); + int start = step * 100; + int end = (step+1) * 100; + throw new BusinessException("上送"+start+"条至"+end+"条数据,上送失败:" + status + "_" + errors); + } + } else { + throw new BusinessException("当前时间段国网上送请求过多,请稍后再试"); + } + } + + /** + * 修改上送信息状态 + * @param ids id集合 + */ + private void updateState(List ids) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.in(RUploadSubstationStatisticalDataD::getId, ids) + .set(RUploadSubstationStatisticalDataD::getUploadStatus, 1); + this.update(lambdaUpdateWrapper); + } +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/enums/UploadEnum.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/enums/UploadEnum.java index bab0035d7..8ffd90d54 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/enums/UploadEnum.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/enums/UploadEnum.java @@ -53,6 +53,12 @@ public enum UploadEnum { DATA_SOURCES_01("01","仅在线监测"), DATA_SOURCES_02("02","在线监测与现场测试"), + /** + * 上送状态(0:未上送 1:已上送) + */ + UPLOAD_STATUS_0("0","未上送"), + UPLOAD_STATUS_1("1","已上送"), + ; private final String code; 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 96d0aff1c..9e989667c 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 @@ -96,6 +96,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl> map2 = list3.stream().collect(Collectors.groupingBy(GeneratrixWire::getScale)); map2.forEach((k1,v1)->{ BusBarDto.VoltageChild voltageChild = new BusBarDto.VoltageChild(); - voltageChild.setVoltageLevel(getVoltage(k1)); + voltageChild.setVoltageLevel(k1); voltageChild.setMonitorBusNum(v1.size()); List list4 = v1.stream().filter(o->online.contains(o.getId())).collect(Collectors.toList()); voltageChild.setOnlineBusNum(list4.size()); @@ -246,7 +247,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl list = dto2.getVoltageChild(); if (CollectionUtil.isNotEmpty(list)){ list.forEach(item->{ - if (Objects.equals(item.getVoltageLevel(),this.getVoltage(voltage))){ + if (Objects.equals(item.getVoltageLevel(),voltage)){ dto.setMonitorBusNum(item.getMonitorBusNum()); dto.setOnlineBusNum(item.getOnlineBusNum()); dto.setMonitorBusRate(item.getMonitorRate()); @@ -294,7 +295,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl