diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpTargetWarnDPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpTargetWarnDPO.java index 2b86d1be1..f4fe17228 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpTargetWarnDPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpTargetWarnDPO.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import lombok.Data; +import java.time.LocalDate; import java.util.Date; /** @@ -29,7 +30,7 @@ public class RMpTargetWarnDPO { * 生成数据的时间,每日统计一次 */ @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; /** * 是否是有效接入监测点(0:否 1:是) diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpVThd.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpVThd.java index b69f27cca..8adb1ac9f 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpVThd.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpVThd.java @@ -8,8 +8,10 @@ import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import net.sf.cglib.core.Local; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -53,7 +55,7 @@ public class RMpVThd implements Serializable { @TableField(value = "data_date") @ApiModelProperty(value="时间") @MppMultiId - private Date dataDate; + private LocalDate dataDate; /** * 谐波畸变率 diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/line/RMpTargetDiffDPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/line/RMpTargetDiffDPO.java index 7fc5b1840..27ed195f4 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/line/RMpTargetDiffDPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/line/RMpTargetDiffDPO.java @@ -7,6 +7,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import lombok.Data; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -21,8 +22,8 @@ import java.util.Date; public class RMpTargetDiffDPO implements Serializable { @MppMultiId(value = "time") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date time; + @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") + private LocalDate time; @MppMultiId(value = "line_id") private String lineId; diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java index e46aab347..fa63721c5 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java @@ -83,7 +83,7 @@ public class ExecutionCenter extends BaseController { throw new BusinessException(PrepareResponseEnum.NO_EXECUTOR_NODE); } - if (baseParam.isRepair() && StrUtil.isAllNotEmpty(baseParam.getBeginTime(), baseParam.getEndTime())) { + if (baseParam.isRepair() && StrUtil.isAllEmpty(baseParam.getBeginTime(), baseParam.getEndTime())) { throw new BusinessException(PrepareResponseEnum.NO_REPAIR_DATE); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java index 0efaa373a..952f52bdb 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java @@ -1,10 +1,8 @@ package com.njcn.prepare.executor; import com.njcn.prepare.bo.CalculatedParam; -import com.njcn.prepare.harmonic.service.mysql.line.DayDataService; -import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService; -import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailService; -import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService; +import com.njcn.prepare.harmonic.service.mysql.area.IRMpMonitorAlarmCountMService; +import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService; import com.njcn.prepare.harmonic.service.mysql.line.*; import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.annotation.LiteflowMethod; @@ -13,6 +11,8 @@ import com.yomahub.liteflow.enums.LiteFlowMethodEnum; import com.yomahub.liteflow.enums.NodeTypeEnum; import lombok.RequiredArgsConstructor; +import java.util.Objects; + /** * @author hongawen @@ -31,12 +31,19 @@ public class MeasurementExecutor extends BaseExecutor { private final ROperatingMonitorService rOperatingMonitorService; private final ROperatingMonitorMService rOperatingMonitorMService; private final IntegrityService integrityService; - private final RMpPassRateDService rMpPassRateDService; - private final LimitRateService limitRateService; private final LimitTargetService limitTargetService; + private final IRMpPartHarmonicDetailDService mpPartHarmonicDetailDService; + private final IRMpSurplusHarmonicDetailDService mpSurplusHarmonicDetailDService; + private final IRMpPartHarmonicDetailMService mpPartHarmonicDetailMService; + private final IRMpSurplusHarmonicDetailMService mpSurplusHarmonicDetailMService; + private final IRMpVThdService mpVThdService; + private final AlarmDetailService alarmDetailService; + private final RMpTargetWarnDService rMpTargetWarnDService; + private final IRMpMonitorAlarmCountMService rMpMonitorAlarmCountMService; + /** * 算法名: 3.3.1.1-----监测点评价 @@ -158,7 +165,7 @@ public class MeasurementExecutor extends BaseExecutor { /********************************************算法负责人:xy***********************************************************/ /** - * 算法名: 3.4.1.1-----监测点报表_日表((r_stat_data_*_d)) + * 算法名: 3.4.1.1-----监测点报表_日表(r_stat_data_*_d) * * @author xuyang * @date 2023年11月09日 10:08 @@ -217,7 +224,103 @@ public class MeasurementExecutor extends BaseExecutor { limitTargetService.limitTargetData(bindCmp.getRequestData()); } + /** + * 算法名: 3.4.1.3.1-----监测点稳态指标超标明细日表1(r_mp_part_harmonic_detail_d) + * 3.4.1.4.1-----监测点稳态指标超标明细日表1(r_mp_part_harmonic_detail_m) + * @author xuyang + * @date 2023年11月13日 16:18 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "partHarmonicDetail", nodeType = NodeTypeEnum.COMMON) + public boolean partHarmonicDetailAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "partHarmonicDetail", nodeType = NodeTypeEnum.COMMON) + public void partHarmonicDetailProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + if (Objects.equals(tag,"r_mp_part_harmonic_detail_d")){ + //日表 + mpPartHarmonicDetailDService.insertHarmonicDetailDayOne(bindCmp.getRequestData()); + } else if (Objects.equals(tag,"r_mp_part_harmonic_detail_m")) { + //月表 + mpPartHarmonicDetailMService.insertHarmonicDetailMonthOne(bindCmp.getRequestData()); + } + } + /** + * 算法名: 3.4.1.3.2-----监测点稳态指标超标明细日表2(r_mp_surplus_harmonic_detail_d) + * 3.4.1.4.2-----监测点稳态指标超标明细日表2(r_mp_surplus_harmonic_detail_m) + * + * @author xuyang + * @date 2023年11月13日 16:18 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "surplusHarmonicDetail", nodeType = NodeTypeEnum.COMMON) + public boolean surplusHarmonicDetailAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "surplusHarmonicDetail", nodeType = NodeTypeEnum.COMMON) + public void surplusHarmonicDetailProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + if (Objects.equals(tag,"r_mp_surplus_harmonic_detail_d")){ + //日表 + mpSurplusHarmonicDetailDService.insertHarmonicDetailDayTwo(bindCmp.getRequestData()); + } else if (Objects.equals(tag,"r_mp_surplus_harmonic_detail_m")) { + //月表 + mpSurplusHarmonicDetailMService.insertHarmonicDetailMonthTwo(bindCmp.getRequestData()); + } + } + + /** + * 算法名: 3.4.1.6.1-----监测点谐波畸变率_日表(r_mp_v_thd) + * + * @author xuyang + * @date 2023年11月13日 19:34 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rMpVThd", nodeType = NodeTypeEnum.COMMON) + public boolean rMpVThdAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rMpVThd", nodeType = NodeTypeEnum.COMMON) + public void rMpVThdProcess(NodeComponent bindCmp) { + mpVThdService.insertHarmonicVThdDay(bindCmp.getRequestData()); + } + + /** + * 算法名: 3.4.1.7.1-----监测点稳态指标差值日统计(r_mp_target_diff_d) + * + * @author xuyang + * @date 2023年11月13日 19:34 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rMpTargetDiff", nodeType = NodeTypeEnum.COMMON) + public boolean rMpTargetDiffAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rMpTargetDiff", nodeType = NodeTypeEnum.COMMON) + public void rMpTargetDiffProcess(NodeComponent bindCmp) { + alarmDetailService.targetDiff(bindCmp.getRequestData()); + } + + /** + * 算法名: 3.4.1.7.2-----监测点指标告警日统计(r_mp_target_warn_d) + * 算法名: 3.4.1.7.3-----监测点指标告警月统计(r_mp_target_warn_m) + * + * @author xuyang + * @date 2023年11月14日 08:54 + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rMpTargetWarn", nodeType = NodeTypeEnum.COMMON) + public boolean rMpTargetWarnAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rMpTargetWarn", nodeType = NodeTypeEnum.COMMON) + public void rMpTargetWarnProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + if (Objects.equals(tag,"r_mp_target_warn_d")){ + //日表 + rMpTargetWarnDService.alarmDay(bindCmp.getRequestData()); + } else if (Objects.equals(tag,"r_mp_target_warn_m")) { + //月表 + rMpMonitorAlarmCountMService.alarmMonth(bindCmp.getRequestData()); + } + } /********************************************算法负责人:xy结束***********************************************************/ diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/AlarmDetailController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/AlarmDetailController.java index 413b8df9f..b8ff79d29 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/AlarmDetailController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/AlarmDetailController.java @@ -60,7 +60,7 @@ public class AlarmDetailController extends BaseController { @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) public HttpResult targetDiff(@RequestBody @Validated LineParam lineParam) { String methodDescribe = getMethodDescribe("targetDiff"); - alarmDetailService.targetDiff(lineParam); +// alarmDetailService.targetDiff(lineParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } @@ -70,7 +70,7 @@ public class AlarmDetailController extends BaseController { @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) public HttpResult alarmDay(@RequestBody @Validated LineParam lineParam) { String methodDescribe = getMethodDescribe("alarmDay"); - rMpTargetWarnDService.alarmDay(lineParam); +// rMpTargetWarnDService.alarmDay(lineParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } @@ -80,7 +80,7 @@ public class AlarmDetailController extends BaseController { @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) public HttpResult alarmMonth(@RequestBody @Validated LineParam lineParam) { String methodDescribe = getMethodDescribe("alarmMonth"); - rMpMonitorAlarmCountMService.alarmMonth(lineParam); +// rMpMonitorAlarmCountMService.alarmMonth(lineParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/HarmonicOverLimitController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/HarmonicOverLimitController.java index eac80da55..34aeaac91 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/HarmonicOverLimitController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/HarmonicOverLimitController.java @@ -51,7 +51,7 @@ public class HarmonicOverLimitController extends BaseController { @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) public HttpResult harmonicDetailDay1(@RequestBody @Validated LineParam lineParam) { String methodDescribe = getMethodDescribe("harmonicDetailDay1"); - mpPartHarmonicDetailDService.insertHarmonicDetailDayOne(lineParam); +// mpPartHarmonicDetailDService.insertHarmonicDetailDayOne(lineParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } @@ -61,7 +61,7 @@ public class HarmonicOverLimitController extends BaseController { @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) public HttpResult harmonicDetailDay2(@RequestBody @Validated LineParam lineParam) { String methodDescribe = getMethodDescribe("harmonicDetailDay2"); - mpSurplusHarmonicDetailDService.insertHarmonicDetailDayTwo(lineParam); +// mpSurplusHarmonicDetailDService.insertHarmonicDetailDayTwo(lineParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } @@ -71,7 +71,7 @@ public class HarmonicOverLimitController extends BaseController { @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) public HttpResult harmonicDetailMonth1(@RequestBody @Validated LineParam lineParam) { String methodDescribe = getMethodDescribe("harmonicDetailMonth1"); - mpPartHarmonicDetailMService.insertHarmonicDetailMonthOne(lineParam); +// mpPartHarmonicDetailMService.insertHarmonicDetailMonthOne(lineParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } @@ -81,7 +81,7 @@ public class HarmonicOverLimitController extends BaseController { @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) public HttpResult harmonicDetailMonth2(@RequestBody @Validated LineParam lineParam) { String methodDescribe = getMethodDescribe("harmonicDetailMonth2"); - mpSurplusHarmonicDetailMService.insertHarmonicDetailMonthTwo(lineParam); +// mpSurplusHarmonicDetailMService.insertHarmonicDetailMonthTwo(lineParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } @@ -91,7 +91,7 @@ public class HarmonicOverLimitController extends BaseController { @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) public HttpResult harmonicThdDay(@RequestBody @Validated LineParam lineParam) { String methodDescribe = getMethodDescribe("harmonicThdDay"); - mpVThdService.insertHarmonicVThdDay(lineParam); +// mpVThdService.insertHarmonicVThdDay(lineParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RMpTargetWarnDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RMpTargetWarnDMapper.java index c42420eb7..2176ef5bb 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RMpTargetWarnDMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RMpTargetWarnDMapper.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.mapper.mysql.area; +import cn.hutool.core.date.DateTime; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO; import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; @@ -21,7 +22,7 @@ import java.util.Map; @Mapper public interface RMpTargetWarnDMapper extends MppBaseMapper { - List getDate(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("list") List list); + List getDate(@Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime, @Param("list") List list); Map getSumDate(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List lineIds); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/RMpTargetWarnDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/RMpTargetWarnDMapper.xml index 3a2f6d227..18610f159 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/RMpTargetWarnDMapper.xml +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/RMpTargetWarnDMapper.xml @@ -50,14 +50,12 @@ r_mp_target_warn_d where data_date between #{startTime} and #{endTime} - - - and measurement_point_id in - - #{item} - - - + + and measurement_point_id in + + #{item} + + group by measurement_point_id order by harmonicTypeGradeTotal desc,eventTypeGradeTotal desc diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/mapping/RStatDataVDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/mapping/RStatDataVDMapper.xml index 96a74bbaf..3a4487afe 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/mapping/RStatDataVDMapper.xml +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/mapping/RStatDataVDMapper.xml @@ -186,7 +186,7 @@ on t0.lineId = t3.lineId - A.lineId in + t0.lineId in #{item} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpPartHarmonicDetailMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpPartHarmonicDetailMMapper.java index 86cd23178..9f13f8e19 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpPartHarmonicDetailMMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpPartHarmonicDetailMMapper.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.mapper.mysql.line; +import cn.hutool.core.date.DateTime; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM; import org.apache.ibatis.annotations.Param; @@ -16,7 +17,7 @@ import java.util.Map; */ public interface RMpPartHarmonicDetailMMapper extends MppBaseMapper { - List getHarmonicDetailMonthOne(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("lineList") List lineList); + List getHarmonicDetailMonthOne(@Param("dataDate") String dataDate, @Param("startTime") DateTime startTime, @Param("endTime")DateTime endTime, @Param("lineList") List lineList); Map getPartSum(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List lineIds); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpSurplusHarmonicDetailMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpSurplusHarmonicDetailMMapper.java index c9ebdb1ad..38cb883ca 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpSurplusHarmonicDetailMMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RMpSurplusHarmonicDetailMMapper.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.mapper.mysql.line; +import cn.hutool.core.date.DateTime; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM; import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM; @@ -17,7 +18,7 @@ import java.util.Map; */ public interface RMpSurplusHarmonicDetailMMapper extends MppBaseMapper { - List getHarmonicDetailMonthTwo(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("lineList") List lineList); + List getHarmonicDetailMonthTwo(@Param("dataDate") String dataDate, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime, @Param("lineList") List lineList); Map getSurplusSum(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List lineIds); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RMpPartHarmonicDetailMMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RMpPartHarmonicDetailMMapper.xml index c00e3f6d8..1ebf076f8 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RMpPartHarmonicDetailMMapper.xml +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RMpPartHarmonicDetailMMapper.xml @@ -4,6 +4,7 @@ select + #{dataDate} dataDate, measurement_point_id measurementPointId, sum(is_flicker) flickerOverDay, sum(is_inuharm) inuharmOverDay, diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RMpMonitorAlarmCountMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RMpMonitorAlarmCountMServiceImpl.java index 631d5f067..294099017 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RMpMonitorAlarmCountMServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RMpMonitorAlarmCountMServiceImpl.java @@ -1,17 +1,27 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO; import com.njcn.harmonic.pojo.po.RMpMonitorAlarmCountMPO; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.area.RMpMonitorAlarmCountMMapper; -import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper; import com.njcn.prepare.harmonic.service.mysql.area.IRMpMonitorAlarmCountMService; import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.springframework.beans.BeanUtils; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -26,65 +36,137 @@ import java.util.stream.Collectors; */ @Service @AllArgsConstructor +@Slf4j public class RMpMonitorAlarmCountMServiceImpl extends MppServiceImpl implements IRMpMonitorAlarmCountMService { private final RMpTargetWarnDService rMpTargetWarnDService; + private final RMpTargetWarnDMapper rMpTargetWarnDMapper; + +// @Override +// public void alarmMonth(LineParam lineParam) { +// List monthList = rMpTargetWarnDService.getDate(lineParam); +// if (!CollectionUtils.isEmpty(monthList)){ +// List result = new ArrayList<>(); +// List harmonicList = new ArrayList<>(),eventList = new ArrayList<>(); +// //判断稳态指标评级结果-根据稳态指标严重度之和排序(去除严重度为0的数据在作比较) +// List list1 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()>0).collect(Collectors.toList()); +// List list2 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()<=0).collect(Collectors.toList()); +// if (!CollectionUtils.isEmpty(list1)){ +// for (int i = 0; i < list1.size(); i++) { +// if (i < list1.size()*0.3){ +// list1.get(i).setHarmonicTypeGrade(0); +// } else if (i >= list1.size()*0.3 && i < list1.size()*0.7){ +// list1.get(i).setHarmonicTypeGrade(1); +// } else { +// list1.get(i).setHarmonicTypeGrade(2); +// } +// harmonicList.add(list1.get(i)); +// } +// } +// if (!CollectionUtils.isEmpty(list2)){ +// list2.forEach(item->{ +// item.setHarmonicTypeGrade(2); +// harmonicList.add(item); +// }); +// } +// //判断暂态指标评级结果-根据暂态指标严重度之和排序(去除严重度为0的数据在作比较) +// List list3 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()>0).collect(Collectors.toList()); +// List list4 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()<=0).collect(Collectors.toList()); +// if (!CollectionUtils.isEmpty(list3)){ +// for (int i = 0; i < list3.size(); i++) { +// if (i < list3.size()*0.3){ +// list3.get(i).setEventTypeGrade(0); +// } else if (i >= list3.size()*0.3 && i < list3.size()*0.7){ +// list3.get(i).setEventTypeGrade(1); +// } else { +// list3.get(i).setEventTypeGrade(2); +// } +// eventList.add(list3.get(i)); +// } +// } +// if (!CollectionUtils.isEmpty(list4)){ +// list4.forEach(item->{ +// item.setEventTypeGrade(2); +// eventList.add(item); +// }); +// } +// if (!CollectionUtils.isEmpty(eventList)){ +// eventList.forEach(item->{ +// RMpMonitorAlarmCountMPO rMpMonitorAlarmCountMpo = new RMpMonitorAlarmCountMPO(); +// BeanUtils.copyProperties(item,rMpMonitorAlarmCountMpo); +// result.add(rMpMonitorAlarmCountMpo); +// }); +// this.saveOrUpdateBatchByMultiId(result,50); +// } +// } +// } + @Override - public void alarmMonth(LineParam lineParam) { - List monthList = rMpTargetWarnDService.getDate(lineParam); - if (!CollectionUtils.isEmpty(monthList)){ - List result = new ArrayList<>(); - List harmonicList = new ArrayList<>(),eventList = new ArrayList<>(); - //判断稳态指标评级结果-根据稳态指标严重度之和排序(去除严重度为0的数据在作比较) - List list1 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()>0).collect(Collectors.toList()); - List list2 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()<=0).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(list1)){ - for (int i = 0; i < list1.size(); i++) { - if (i < list1.size()*0.3){ - list1.get(i).setHarmonicTypeGrade(0); - } else if (i >= list1.size()*0.3 && i < list1.size()*0.7){ - list1.get(i).setHarmonicTypeGrade(1); - } else { - list1.get(i).setHarmonicTypeGrade(2); + @Transactional(rollbackFor = {Exception.class}) + @Async("asyncExecutor") + public void alarmMonth(CalculatedParam calculatedParam) { + log.info(LocalDateTime.now()+"===>监测点指标告警月统计算法开始"); + List lineIds = calculatedParam.getIdList(); + DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + //以尺寸100分片,查询数据 + List> pendingIds = ListUtils.partition(lineIds,100); + for (List pendingId : pendingIds) { + List monthList = rMpTargetWarnDMapper.getDate(beginMonth,endMonth,pendingId); + if (!CollectionUtils.isEmpty(monthList)){ + List result = new ArrayList<>(); + List harmonicList = new ArrayList<>(),eventList = new ArrayList<>(); + //判断稳态指标评级结果-根据稳态指标严重度之和排序(去除严重度为0的数据在作比较) + List list1 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()>0).collect(Collectors.toList()); + List list2 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()<=0).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(list1)){ + for (int i = 0; i < list1.size(); i++) { + if (i < list1.size()*0.3){ + list1.get(i).setHarmonicTypeGrade(0); + } else if (i >= list1.size()*0.3 && i < list1.size()*0.7){ + list1.get(i).setHarmonicTypeGrade(1); + } else { + list1.get(i).setHarmonicTypeGrade(2); + } + harmonicList.add(list1.get(i)); } - harmonicList.add(list1.get(i)); } - } - if (!CollectionUtils.isEmpty(list2)){ - list2.forEach(item->{ - item.setHarmonicTypeGrade(2); - harmonicList.add(item); - }); - } - //判断暂态指标评级结果-根据暂态指标严重度之和排序(去除严重度为0的数据在作比较) - List list3 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()>0).collect(Collectors.toList()); - List list4 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()<=0).collect(Collectors.toList()); - if (!CollectionUtils.isEmpty(list3)){ - for (int i = 0; i < list3.size(); i++) { - if (i < list3.size()*0.3){ - list3.get(i).setEventTypeGrade(0); - } else if (i >= list3.size()*0.3 && i < list3.size()*0.7){ - list3.get(i).setEventTypeGrade(1); - } else { - list3.get(i).setEventTypeGrade(2); + if (!CollectionUtils.isEmpty(list2)){ + list2.forEach(item->{ + item.setHarmonicTypeGrade(2); + harmonicList.add(item); + }); + } + //判断暂态指标评级结果-根据暂态指标严重度之和排序(去除严重度为0的数据在作比较) + List list3 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()>0).collect(Collectors.toList()); + List list4 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()<=0).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(list3)){ + for (int i = 0; i < list3.size(); i++) { + if (i < list3.size()*0.3){ + list3.get(i).setEventTypeGrade(0); + } else if (i >= list3.size()*0.3 && i < list3.size()*0.7){ + list3.get(i).setEventTypeGrade(1); + } else { + list3.get(i).setEventTypeGrade(2); + } + eventList.add(list3.get(i)); } - eventList.add(list3.get(i)); } - } - if (!CollectionUtils.isEmpty(list4)){ - list4.forEach(item->{ - item.setEventTypeGrade(2); - eventList.add(item); - }); - } - if (!CollectionUtils.isEmpty(eventList)){ - eventList.forEach(item->{ - RMpMonitorAlarmCountMPO rMpMonitorAlarmCountMpo = new RMpMonitorAlarmCountMPO(); - BeanUtils.copyProperties(item,rMpMonitorAlarmCountMpo); - result.add(rMpMonitorAlarmCountMpo); - }); - this.saveOrUpdateBatchByMultiId(result,50); + if (!CollectionUtils.isEmpty(list4)){ + list4.forEach(item->{ + item.setEventTypeGrade(2); + eventList.add(item); + }); + } + if (!CollectionUtils.isEmpty(eventList)){ + eventList.forEach(item->{ + RMpMonitorAlarmCountMPO rMpMonitorAlarmCountMpo = new RMpMonitorAlarmCountMPO(); + BeanUtils.copyProperties(item,rMpMonitorAlarmCountMpo); + result.add(rMpMonitorAlarmCountMpo); + }); + this.saveOrUpdateBatchByMultiId(result); + } } } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RMpTargetWarnDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RMpTargetWarnDServiceImpl.java index 7d6dc2b0c..f746913c1 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RMpTargetWarnDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RMpTargetWarnDServiceImpl.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; @@ -7,6 +8,8 @@ import com.njcn.common.utils.NjcnDateUtils; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO; import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; +import com.njcn.harmonic.pojo.po.RMpVThd; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper; import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper; import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO; @@ -17,10 +20,14 @@ import com.njcn.prepare.harmonic.service.mysql.line.AlarmDetailService; import com.njcn.prepare.harmonic.utils.PublicUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -73,33 +80,21 @@ public class RMpTargetWarnDServiceImpl extends MppServiceImpl list = new ArrayList<>(); - //月处理 - if (Objects.equals(true,lineParam.getRepairFlag())){ - - List dayList = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); - for (String item : dayList) { - log.info(item+"-->开始执行"); - List day = getData(item,lineParam.getLineIds()); - if (!CollectionUtils.isEmpty(day)){ - list.addAll(day); - } + @Transactional(rollbackFor = {Exception.class}) + @Async("asyncExecutor") + public void alarmDay(CalculatedParam calculatedParam) { + log.info(LocalDateTime.now()+"===>监测点指标告警日统计算法开始"); + List lineIds = calculatedParam.getIdList(); + //以尺寸100分片,查询数据 + List> pendingIds = ListUtils.partition(lineIds,100); + for (List pendingId : pendingIds) { + List list = getData(calculatedParam.getDataDate(),pendingId); + if (CollectionUtil.isNotEmpty(list)){ + this.saveOrUpdateBatchByMultiId(list); } } - //日处理 - else { - list = getData(lineParam.getDataDate(),lineParam.getLineIds()); - } - if (!CollectionUtils.isEmpty(list)){ - this.saveOrUpdateBatchByMultiId(list,50); - } - } - - @Override - public List getDate(LineParam lineParam) { - return this.baseMapper.getDate(lineParam.getBeginTime(),lineParam.getEndTime(),lineParam.getLineIds()); } public List getData(String time, List list){ @@ -107,10 +102,10 @@ public class RMpTargetWarnDServiceImpl extends MppServiceImpl rlList = new ArrayList<>(),uclList = new ArrayList<>(); //基础数据 String yesterday = PublicUtil.getYesterday(time); - List todayList = rStatDataVDMapper.getTargetWarnD(time + " 00:00:00",list); - List yesterdayList = rStatDataVDMapper.getTargetWarnD(yesterday + " 00:00:00",list); - List theDayBeforeYesterday = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(yesterday) + " 00:00:00",list); - List threeDaysAgo = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(PublicUtil.getYesterday(yesterday)) + " 00:00:00",list); + List todayList = rStatDataVDMapper.getTargetWarnD(time,list); + List yesterdayList = rStatDataVDMapper.getTargetWarnD(yesterday,list); + List theDayBeforeYesterday = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(yesterday),list); + List threeDaysAgo = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(PublicUtil.getYesterday(yesterday)),list); if (!CollectionUtils.isEmpty(todayList)){ Map> map2 = new HashMap<>(),map3 = new HashMap<>(),map4 = new HashMap<>(); //本年的rm值 @@ -256,4 +251,38 @@ public class RMpTargetWarnDServiceImpl extends MppServiceImpl list = new ArrayList<>(); +// //月处理 +// if (Objects.equals(true,lineParam.getRepairFlag())){ +// +// List dayList = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); +// for (String item : dayList) { +// log.info(item+"-->开始执行"); +// List day = getData(item,lineParam.getLineIds()); +// if (!CollectionUtils.isEmpty(day)){ +// list.addAll(day); +// } +// } +// } +// //日处理 +// else { +// list = getData(lineParam.getDataDate(),lineParam.getLineIds()); +// } +// if (!CollectionUtils.isEmpty(list)){ +// this.saveOrUpdateBatchByMultiId(list,50); +// } +// } + +// @Override +// public List getDate(LineParam lineParam) { +// return this.baseMapper.getDate(lineParam.getBeginTime(),lineParam.getEndTime(),lineParam.getLineIds()); +// } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/AlarmDetailServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/AlarmDetailServiceImpl.java index 73dc7e3f5..950cb9463 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/AlarmDetailServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/AlarmDetailServiceImpl.java @@ -1,32 +1,27 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; -import com.njcn.common.utils.NjcnDateUtils; import com.njcn.device.pms.api.DistributionMonitorClient; import com.njcn.device.pms.api.MonitorClient; -import com.njcn.device.pms.pojo.po.DistributionMonitor; -import com.njcn.device.pms.pojo.po.Monitor; -import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper; import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.*; import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO; import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO; -import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.service.mysql.line.AlarmDetailService; import com.njcn.prepare.harmonic.utils.PublicUtil; import com.njcn.system.api.DicDataFeignClient; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -63,96 +58,58 @@ public class AlarmDetailServiceImpl extends MppServiceImpl lineIds = lineParam.getLineIds(); - Integer type = lineParam.getType(); - - //获取监测点数据,进行业务操作 - if (CollUtil.isEmpty(lineIds)){ - //先获取主网的监测点信息,再获取配网的监测点信息 - List monitorList = monitorClient.getMonitorList(lineIds).getData(); - for (Monitor monitor : monitorList) { - processVoltageDeviationAlarm(date,type, monitor.getLineId()); - processFrequencyDeviationAlarm(date,type, monitor.getLineId()); - processUnbalance95Alarm(date,type, monitor.getLineId()); - processVoltageHarmonicThd95Alarm(date,type, monitor.getLineId()); - processFlashingAlarm(date,type, monitor.getLineId()); - processSagTimesAlarm(date,type, monitor.getLineId()); - processInterruptTimesAlarm(date,type, monitor.getLineId()); - } - List distributionMonitorList = distributionMonitorClient.distributionMonitorList(lineIds).getData(); - for (DistributionMonitor distributionMonitor : distributionMonitorList) { - processVoltageDeviationAlarm(date,type, distributionMonitor.getMonitorId()); - processFrequencyDeviationAlarm(date,type, distributionMonitor.getMonitorId()); - processUnbalance95Alarm(date,type, distributionMonitor.getMonitorId()); - processVoltageHarmonicThd95Alarm(date,type, distributionMonitor.getMonitorId()); - processFlashingAlarm(date,type, distributionMonitor.getMonitorId()); - processSagTimesAlarm(date,type, distributionMonitor.getMonitorId()); - processInterruptTimesAlarm(date,type, distributionMonitor.getMonitorId()); - } - } else { - //根据监测点类型取数据 - for (String lineId : lineIds) { - processVoltageDeviationAlarm(date,type, lineId); - processFrequencyDeviationAlarm(date,type, lineId); - processUnbalance95Alarm(date,type, lineId); - processVoltageHarmonicThd95Alarm(date,type, lineId); - processFlashingAlarm(date,type, lineId); - processSagTimesAlarm(date,type, lineId); - processInterruptTimesAlarm(date,type, lineId); - } - } - }*/ +// @Override +// @Transactional(rollbackFor = {Exception.class}) +// @Async("asyncExecutor") +// public void targetDiff(LineParam lineParam) { +// String startTime,endTime; +// //月处理 +// if (Objects.equals(true,lineParam.getRepairFlag())){ +// List rangeDate = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); +// for (String item : rangeDate) { +// log.info(item+"-->开始执行"); +// startTime = item + " 00:00:00"; +// endTime = PublicUtil.getYesterday(item) + " 00:00:00"; +// diffData(startTime,endTime,lineParam.getLineIds()); +// } +// } +// //日处理 +// else { +// startTime = lineParam.getBeginTime(); +// endTime = PublicUtil.getYesterday(lineParam.getDataDate()) + " 00:00:00"; +// diffData(startTime,endTime,lineParam.getLineIds()); +// } +// } + /*******************************************新算法***********************************************************************/ @Override @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") - public void targetDiff(LineParam lineParam) { - String startTime,endTime; - //月处理 - if (Objects.equals(true,lineParam.getRepairFlag())){ - List rangeDate = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); - for (String item : rangeDate) { - log.info(item+"-->开始执行"); - startTime = item + " 00:00:00"; - endTime = PublicUtil.getYesterday(item) + " 00:00:00"; - diffData(startTime,endTime,lineParam.getLineIds()); + public void targetDiff(CalculatedParam calculatedParam) { + log.info(LocalDateTime.now()+"===>监测点稳态指标差值日表开始执行"); + List lineIds = calculatedParam.getIdList(); + String nowDay = calculatedParam.getDataDate(); + String yesterday = PublicUtil.getYesterday(nowDay); + //以尺寸100分片,查询数据 + List> pendingIds = ListUtils.partition(lineIds,100); + for (List pendingId : pendingIds) { + List intersectionList = diffData(nowDay,yesterday,pendingId); + if (!CollectionUtils.isEmpty(intersectionList)){ + this.saveOrUpdateBatchByMultiId(intersectionList); } } - //日处理 - else { - startTime = lineParam.getBeginTime(); - endTime = PublicUtil.getYesterday(lineParam.getDataDate()) + " 00:00:00"; - diffData(startTime,endTime,lineParam.getLineIds()); - } - } - - @Override - public List getAvgDiffData(String time,List list) { - String endTime = PublicUtil.getLastYearDay(time); - //计算本年的rm值 - return this.baseMapper.getAvgDiffData(endTime,time,list); } /** * 生成指标差值日统计 */ - public void diffData(String startTime, String endTime, List list) { + public List diffData(String startTime, String endTime, List list) { + List intersectionList = new ArrayList<>(); List localData = rStatDataVDMapper.getDayData(startTime,list); List yesterdayData = rStatDataVDMapper.getDayData(endTime,list); if (!CollectionUtils.isEmpty(localData) && !CollectionUtils.isEmpty(yesterdayData)){ //取两个集合的交集,做算法处理取绝对值 - List intersectionList = localData.stream().map(map->yesterdayData.stream().filter(m->Objects.equals(m.getLineId(),map.getLineId())).findFirst().map(m->{ + intersectionList = localData.stream().map(map->yesterdayData.stream().filter(m->Objects.equals(m.getLineId(),map.getLineId())).findFirst().map(m->{ map.setVlDev(Math.abs(map.getVlDev()-m.getVlDev())); map.setFreqDev(Math.abs(map.getFreqDev()-m.getFreqDev())); map.setVUnbalance(Math.abs(map.getVUnbalance()-m.getVUnbalance())); @@ -162,326 +119,333 @@ public class AlarmDetailServiceImpl extends MppServiceImpl getAvgDiffData(String time,List list) { + String endTime = PublicUtil.getLastYearDay(time); + //计算本年的rm值 + return this.baseMapper.getAvgDiffData(endTime,time,list); } - /** - * 处理数据(电压偏差告警日统计) - * @author qijian - * @date 2022/12/28 - */ - private void processVoltageDeviationAlarm(String date, Integer type, String lineId) { - //日期条件(取前天、昨天、今天) - LocalDate localDate = LocalDate.parse(date); - LocalDate yesterday = localDate.plusDays(-1); - LocalDate beforeYesterday = yesterday.plusDays(-1); - double localMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, localDate); - double yesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, yesterday); - double beforeYesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, beforeYesterday); +// /** +// * 处理数据(电压偏差告警日统计) +// * @author qijian +// * @date 2022/12/28 +// */ +// private void processVoltageDeviationAlarm(String date, Integer type, String lineId) { +// //日期条件(取前天、昨天、今天) +// LocalDate localDate = LocalDate.parse(date); +// LocalDate yesterday = localDate.plusDays(-1); +// LocalDate beforeYesterday = yesterday.plusDays(-1); +// double localMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, localDate); +// double yesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, yesterday); +// double beforeYesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, beforeYesterday); +// +// //计算RM和CL值 +// double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; +// double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// +// //计算RL和UCL值 +// double rl = rm * 3.3; +// double ucl = cl + rm * 3; +// +// //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 +// if (localMax > ucl && localMax > yesterdayMax){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsVDevWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// +// //如果本日>昨日>前日,且前日的值超过RL值,则告警 +// if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsVDevWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// } - //计算RM和CL值 - double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; - double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// /** +// * 处理数据(频率偏差告警日统计) +// * @author qijian +// * @date 2022/12/29 +// */ +// private void processFrequencyDeviationAlarm(String date, Integer type, String lineId) { +// //日期条件(取前天、昨天、今天) +// LocalDate localDate = LocalDate.parse(date); +// LocalDate yesterday = localDate.plusDays(-1); +// LocalDate beforeYesterday = yesterday.plusDays(-1); +// double localMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, localDate); +// double yesterdayMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, yesterday); +// double beforeYesterdayMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, beforeYesterday); +// +// //计算RM和CL值 +// double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; +// double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// +// //计算RL和UCL值 +// double rl = rm * 3.3; +// double ucl = cl + rm * 3; +// +// //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 +// if (localMax > ucl && localMax > yesterdayMax){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsFreqWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// +// //如果本日>昨日>前日,且前日的值超过RL值,则告警 +// if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsFreqWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// } - //计算RL和UCL值 - double rl = rm * 3.3; - double ucl = cl + rm * 3; +// /** +// * 处理数据(三相电压不平衡告警日统计) +// * @author qijian +// * @date 2022/12/29 +// */ +// private void processUnbalance95Alarm(String date, Integer type, String lineId) { +// //日期条件(取前天、昨天、今天) +// LocalDate localDate = LocalDate.parse(date); +// LocalDate yesterday = localDate.plusDays(-1); +// LocalDate beforeYesterday = yesterday.plusDays(-1); +// double localMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, localDate); +// double yesterdayMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, yesterday); +// double beforeYesterdayMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, beforeYesterday); +// +// //计算RM和CL值 +// double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; +// double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// +// //计算RL和UCL值 +// double rl = rm * 3.3; +// double ucl = cl + rm * 3; +// +// //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 +// if (localMax > ucl && localMax > yesterdayMax){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsUnbalanceWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// +// //如果本日>昨日>前日,且前日的值超过RL值,则告警 +// if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsUnbalanceWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// } - //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 - if (localMax > ucl && localMax > yesterdayMax){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsVDevWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } +// /** +// * 处理数据(谐波电压告警日统计) +// * @author qijian +// * @date 2022/12/29 +// */ +// private void processVoltageHarmonicThd95Alarm(String date, Integer type, String lineId) { +// //日期条件(取前天、昨天、今天) +// LocalDate localDate = LocalDate.parse(date); +// LocalDate yesterday = localDate.plusDays(-1); +// LocalDate beforeYesterday = yesterday.plusDays(-1); +// double localMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, localDate); +// double yesterdayMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, yesterday); +// double beforeYesterdayMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, beforeYesterday); +// +// //计算RM和CL值 +// double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; +// double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// +// //计算RL和UCL值 +// double rl = rm * 3.3; +// double ucl = cl + rm * 3; +// +// //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 +// if (localMax > ucl && localMax > yesterdayMax){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsVWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// +// //如果本日>昨日>前日,且前日的值超过RL值,则告警 +// if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsVWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// } - //如果本日>昨日>前日,且前日的值超过RL值,则告警 - if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsVDevWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - } +// /** +// * 处理数据(长时电压闪变告警日统计) +// * @author qijian +// * @date 2022/12/30 +// */ +// private void processFlashingAlarm(String date, Integer type, String lineId) { +// //日期条件(取前天、昨天、今天) +// LocalDate localDate = LocalDate.parse(date); +// LocalDate yesterday = localDate.plusDays(-1); +// LocalDate beforeYesterday = yesterday.plusDays(-1); +// double localMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, localDate); +// double yesterdayMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, yesterday); +// double beforeYesterdayMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, beforeYesterday); +// +// //计算RM和CL值 +// double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; +// double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// +// //计算RL和UCL值 +// double rl = rm * 3.3; +// double ucl = cl + rm * 3; +// +// //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 +// if (localMax > ucl && localMax > yesterdayMax){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsFlickerWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// +// //如果本日>昨日>前日,且前日的值超过RL值,则告警 +// if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsFlickerWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// } - /** - * 处理数据(频率偏差告警日统计) - * @author qijian - * @date 2022/12/29 - */ - private void processFrequencyDeviationAlarm(String date, Integer type, String lineId) { - //日期条件(取前天、昨天、今天) - LocalDate localDate = LocalDate.parse(date); - LocalDate yesterday = localDate.plusDays(-1); - LocalDate beforeYesterday = yesterday.plusDays(-1); - double localMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, localDate); - double yesterdayMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, yesterday); - double beforeYesterdayMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, beforeYesterday); +// /** +// * 处理数据(电压暂降告警日统计) +// * @author qijian +// * @date 2022/12/29 +// */ +// private void processSagTimesAlarm(String date, Integer type, String lineId) { +// //日期条件(取前天、昨天、今天) +// LocalDate localDate = LocalDate.parse(date); +// LocalDate yesterday = localDate.plusDays(-1); +// LocalDate beforeYesterday = yesterday.plusDays(-1); +// int localMax = rMpEventDetailDMapper.getSagTimes(lineId, localDate); +// int yesterdayMax = rMpEventDetailDMapper.getSagTimes(lineId, yesterday); +// int beforeYesterdayMax = rMpEventDetailDMapper.getSagTimes(lineId, beforeYesterday); +// +// //计算RM和CL值 +// double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; +// double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// +// //计算RL和UCL值 +// double rl = rm * 3.3; +// double ucl = cl + rm * 3; +// +// //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 +// if (localMax > ucl && localMax > yesterdayMax){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsSagWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// +// //如果本日>昨日>前日,且前日的值超过RL值,则告警 +// if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsSagWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// } - //计算RM和CL值 - double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; - double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// /** +// * 处理数据(电压短时中断告警日统计) +// * @author qijian +// * @date 2022/12/29 +// */ +// private void processInterruptTimesAlarm(String date, Integer type, String lineId) { +// //日期条件(取前天、昨天、今天) +// LocalDate localDate = LocalDate.parse(date); +// LocalDate yesterday = localDate.plusDays(-1); +// LocalDate beforeYesterday = yesterday.plusDays(-1); +// int localMax = rMpEventDetailDMapper.getInterruptTimes(lineId, localDate); +// int yesterdayMax = rMpEventDetailDMapper.getInterruptTimes(lineId, yesterday); +// int beforeYesterdayMax = rMpEventDetailDMapper.getInterruptTimes(lineId, beforeYesterday); +// +// //计算RM和CL值 +// double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; +// double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; +// +// //计算RL和UCL值 +// double rl = rm * 3.3; +// double ucl = cl + rm * 3; +// +// //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 +// if (localMax > ucl && localMax > yesterdayMax){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsInterruptWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// +// //如果本日>昨日>前日,且前日的值超过RL值,则告警 +// if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ +// RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); +// rMpTargetWarnD.setMeasurementPointId(lineId); +// rMpTargetWarnD.setDataDate(DateUtil.parse(date)); +// rMpTargetWarnD.setIsInterruptWarn(1); +// addAlarmData(rMpTargetWarnD); +// return; +// } +// } - //计算RL和UCL值 - double rl = rm * 3.3; - double ucl = cl + rm * 3; - - //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 - if (localMax > ucl && localMax > yesterdayMax){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsFreqWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - - //如果本日>昨日>前日,且前日的值超过RL值,则告警 - if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsFreqWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - } - - /** - * 处理数据(三相电压不平衡告警日统计) - * @author qijian - * @date 2022/12/29 - */ - private void processUnbalance95Alarm(String date, Integer type, String lineId) { - //日期条件(取前天、昨天、今天) - LocalDate localDate = LocalDate.parse(date); - LocalDate yesterday = localDate.plusDays(-1); - LocalDate beforeYesterday = yesterday.plusDays(-1); - double localMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, localDate); - double yesterdayMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, yesterday); - double beforeYesterdayMax = rMpMeasureReportDPOMapper.getMaxUnbalance95(lineId, beforeYesterday); - - //计算RM和CL值 - double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; - double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; - - //计算RL和UCL值 - double rl = rm * 3.3; - double ucl = cl + rm * 3; - - //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 - if (localMax > ucl && localMax > yesterdayMax){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsUnbalanceWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - - //如果本日>昨日>前日,且前日的值超过RL值,则告警 - if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsUnbalanceWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - } - - /** - * 处理数据(谐波电压告警日统计) - * @author qijian - * @date 2022/12/29 - */ - private void processVoltageHarmonicThd95Alarm(String date, Integer type, String lineId) { - //日期条件(取前天、昨天、今天) - LocalDate localDate = LocalDate.parse(date); - LocalDate yesterday = localDate.plusDays(-1); - LocalDate beforeYesterday = yesterday.plusDays(-1); - double localMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, localDate); - double yesterdayMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, yesterday); - double beforeYesterdayMax = rMpHarmonicVRateReportDPOMapper.getMaxVoltageHarmonicThd95(lineId, beforeYesterday); - - //计算RM和CL值 - double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; - double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; - - //计算RL和UCL值 - double rl = rm * 3.3; - double ucl = cl + rm * 3; - - //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 - if (localMax > ucl && localMax > yesterdayMax){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsVWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - - //如果本日>昨日>前日,且前日的值超过RL值,则告警 - if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsVWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - } - - /** - * 处理数据(长时电压闪变告警日统计) - * @author qijian - * @date 2022/12/30 - */ - private void processFlashingAlarm(String date, Integer type, String lineId) { - //日期条件(取前天、昨天、今天) - LocalDate localDate = LocalDate.parse(date); - LocalDate yesterday = localDate.plusDays(-1); - LocalDate beforeYesterday = yesterday.plusDays(-1); - double localMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, localDate); - double yesterdayMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, yesterday); - double beforeYesterdayMax = rMpPltReportDPOMapper.getMaxFlashing(lineId, beforeYesterday); - - //计算RM和CL值 - double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; - double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; - - //计算RL和UCL值 - double rl = rm * 3.3; - double ucl = cl + rm * 3; - - //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 - if (localMax > ucl && localMax > yesterdayMax){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsFlickerWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - - //如果本日>昨日>前日,且前日的值超过RL值,则告警 - if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsFlickerWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - } - - /** - * 处理数据(电压暂降告警日统计) - * @author qijian - * @date 2022/12/29 - */ - private void processSagTimesAlarm(String date, Integer type, String lineId) { - //日期条件(取前天、昨天、今天) - LocalDate localDate = LocalDate.parse(date); - LocalDate yesterday = localDate.plusDays(-1); - LocalDate beforeYesterday = yesterday.plusDays(-1); - int localMax = rMpEventDetailDMapper.getSagTimes(lineId, localDate); - int yesterdayMax = rMpEventDetailDMapper.getSagTimes(lineId, yesterday); - int beforeYesterdayMax = rMpEventDetailDMapper.getSagTimes(lineId, beforeYesterday); - - //计算RM和CL值 - double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; - double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; - - //计算RL和UCL值 - double rl = rm * 3.3; - double ucl = cl + rm * 3; - - //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 - if (localMax > ucl && localMax > yesterdayMax){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsSagWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - - //如果本日>昨日>前日,且前日的值超过RL值,则告警 - if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsSagWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - } - - /** - * 处理数据(电压短时中断告警日统计) - * @author qijian - * @date 2022/12/29 - */ - private void processInterruptTimesAlarm(String date, Integer type, String lineId) { - //日期条件(取前天、昨天、今天) - LocalDate localDate = LocalDate.parse(date); - LocalDate yesterday = localDate.plusDays(-1); - LocalDate beforeYesterday = yesterday.plusDays(-1); - int localMax = rMpEventDetailDMapper.getInterruptTimes(lineId, localDate); - int yesterdayMax = rMpEventDetailDMapper.getInterruptTimes(lineId, yesterday); - int beforeYesterdayMax = rMpEventDetailDMapper.getInterruptTimes(lineId, beforeYesterday); - - //计算RM和CL值 - double rm = ((localMax - yesterdayMax) + (yesterdayMax - beforeYesterdayMax)) / 2; - double cl = (localMax + yesterdayMax + beforeYesterdayMax) / 3; - - //计算RL和UCL值 - double rl = rm * 3.3; - double ucl = cl + rm * 3; - - //如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 - if (localMax > ucl && localMax > yesterdayMax){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsInterruptWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - - //如果本日>昨日>前日,且前日的值超过RL值,则告警 - if (localMax > yesterdayMax && yesterdayMax > beforeYesterdayMax && beforeYesterdayMax > rl){ - RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); - rMpTargetWarnD.setMeasurementPointId(lineId); - rMpTargetWarnD.setDataDate(DateUtil.parse(date)); - rMpTargetWarnD.setIsInterruptWarn(1); - addAlarmData(rMpTargetWarnD); - return; - } - } - - /** - * 存入数据库 - * @author qijian - * @date 2022/12/28 - */ - private void addAlarmData(RMpTargetWarnDPO rMpTargetWarnD) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(RMpTargetWarnDPO::getMeasurementPointId, rMpTargetWarnD.getMeasurementPointId()).eq(RMpTargetWarnDPO::getDataDate, rMpTargetWarnD.getDataDate()); - RMpTargetWarnDPO rMpTargetWarnDOne = rMpTargetWarnDMapper.selectOne(lambdaQueryWrapper); - if (Objects.nonNull(rMpTargetWarnDOne)) { - rMpTargetWarnDMapper.update(rMpTargetWarnD, lambdaQueryWrapper); - } else { - rMpTargetWarnDMapper.insert(rMpTargetWarnD); - } - } +// /** +// * 存入数据库 +// * @author qijian +// * @date 2022/12/28 +// */ +// private void addAlarmData(RMpTargetWarnDPO rMpTargetWarnD) { +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// lambdaQueryWrapper.eq(RMpTargetWarnDPO::getMeasurementPointId, rMpTargetWarnD.getMeasurementPointId()).eq(RMpTargetWarnDPO::getDataDate, rMpTargetWarnD.getDataDate()); +// RMpTargetWarnDPO rMpTargetWarnDOne = rMpTargetWarnDMapper.selectOne(lambdaQueryWrapper); +// if (Objects.nonNull(rMpTargetWarnDOne)) { +// rMpTargetWarnDMapper.update(rMpTargetWarnD, lambdaQueryWrapper); +// } else { +// rMpTargetWarnDMapper.insert(rMpTargetWarnD); +// } +// } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/IntegrityServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/IntegrityServiceImpl.java index 1f599fad9..40be83d32 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/IntegrityServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/IntegrityServiceImpl.java @@ -23,6 +23,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitTargetServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitTargetServiceImpl.java index fe2e6ce6f..55fc46aee 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitTargetServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/LimitTargetServiceImpl.java @@ -25,6 +25,7 @@ import org.influxdb.dto.QueryResult; import org.influxdb.impl.InfluxDBResultMapper; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDate; @@ -96,6 +97,7 @@ public class LimitTargetServiceImpl extends MppServiceImpl list = new ArrayList<>(); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPartHarmonicDetailDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPartHarmonicDetailDServiceImpl.java index 8c121dcd4..ae4e80976 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPartHarmonicDetailDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPartHarmonicDetailDServiceImpl.java @@ -1,14 +1,17 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; +import cn.hutool.core.collection.CollectionUtil; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.common.pojo.constant.PatternRegex; import com.njcn.common.utils.NjcnDateUtils; import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper; import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.service.mysql.line.IRMpPartHarmonicDetailDService; import com.njcn.prepare.harmonic.utils.PublicUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,24 +33,21 @@ import java.util.Objects; @Service public class RMpPartHarmonicDetailDServiceImpl extends MppServiceImpl implements IRMpPartHarmonicDetailDService { + /***********************************************新算法********************************************************************/ @Override @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") - public void insertHarmonicDetailDayOne(LineParam lineParam) { + public void insertHarmonicDetailDayOne(CalculatedParam calculatedParam) { log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细日表1开始执行"); - List result = new ArrayList<>(); - if (Objects.equals(lineParam.getType(),5)){ - - System.out.println(lineParam.getLineIds()); - result = getData(lineParam.getBeginTime(),lineParam.getLineIds()); - } else if (Objects.equals(lineParam.getType(),3)){ - //补招 - List rangeDate = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); - for (String item : rangeDate) { - result.addAll(getData(item,lineParam.getLineIds())); + List lineIds = calculatedParam.getIdList(); + //以尺寸100分片,查询数据 + List> pendingIds = ListUtils.partition(lineIds,100); + for (List pendingId : pendingIds) { + List list = getData(calculatedParam.getDataDate(),pendingId); + if (CollectionUtil.isNotEmpty(list)){ + this.saveOrUpdateBatchByMultiId(list); } } - this.saveOrUpdateBatchByMultiId(result,50); } public List getData(String time,List lineList) { @@ -63,4 +63,6 @@ public class RMpPartHarmonicDetailDServiceImpl extends MppServiceImpl监测点稳态指标超标明细月表1开始执行"); - - List list = this.baseMapper.getHarmonicDetailMonthOne(lineParam.getBeginTime(),lineParam.getEndTime(),lineParam.getLineIds()); - if (!CollectionUtils.isEmpty(list)){ - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDate date = LocalDate.parse(lineParam.getBeginTime(), df); - list.forEach(item->{ - item.setDataDate(date); - }); - this.saveOrUpdateBatchByMultiId(list,50); + DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + List lineIds = calculatedParam.getIdList(); + List> pendingIds = ListUtils.partition(lineIds, 100); + for (List pendingId : pendingIds) { + List list = this.baseMapper.getHarmonicDetailMonthOne(DateUtil.format(beginMonth, DatePattern.NORM_DATE_PATTERN),beginMonth,endMonth,pendingId); + if (CollectionUtil.isNotEmpty(list)){ + this.saveOrUpdateBatchByMultiId(list); + } } } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpSurplusHarmonicDetailDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpSurplusHarmonicDetailDServiceImpl.java index c9e25febf..2c47817bb 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpSurplusHarmonicDetailDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpSurplusHarmonicDetailDServiceImpl.java @@ -1,25 +1,19 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; +import cn.hutool.core.collection.CollectionUtil; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; -import com.njcn.common.utils.NjcnDateUtils; -import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD; import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD; -import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailDMapper; -import com.njcn.prepare.harmonic.pojo.param.LineParam; -import com.njcn.prepare.harmonic.service.mysql.line.IRMpPartHarmonicDetailDService; import com.njcn.prepare.harmonic.service.mysql.line.IRMpSurplusHarmonicDetailDService; -import com.njcn.prepare.harmonic.utils.PublicUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; -import java.util.ArrayList; import java.util.List; -import java.util.Objects; /** * 类的介绍: @@ -35,17 +29,17 @@ public class RMpSurplusHarmonicDetailDServiceImpl extends MppServiceImpl监测点稳态指标超标明细日表2开始执行"); - List result = new ArrayList<>(); - if (Objects.equals(lineParam.getType(),5)){ - result = this.baseMapper.getHarmonicDetailDayTwo(lineParam.getBeginTime(),lineParam.getLineIds()); - } else if (lineParam.getRepairFlag()){ - List rangeDate = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); - for (String item : rangeDate) { - result.addAll(this.baseMapper.getHarmonicDetailDayTwo(item,lineParam.getLineIds())); + List lineIds = calculatedParam.getIdList(); + //以尺寸100分片,查询数据 + List> pendingIds = ListUtils.partition(lineIds,100); + for (List pendingId : pendingIds) { + List result = this.baseMapper.getHarmonicDetailDayTwo(calculatedParam.getDataDate(),pendingId); + if (CollectionUtil.isNotEmpty(result)){ + this.saveOrUpdateBatchByMultiId(result); } } - this.saveOrUpdateBatchByMultiId(result,50); } + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpSurplusHarmonicDetailMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpSurplusHarmonicDetailMServiceImpl.java index 9c60a467f..e0d762211 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpSurplusHarmonicDetailMServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpSurplusHarmonicDetailMServiceImpl.java @@ -1,25 +1,22 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; -import com.alibaba.nacos.client.naming.utils.CollectionUtils; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; -import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM; -import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD; import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailMMapper; -import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.service.mysql.line.IRMpSurplusHarmonicDetailMService; -import com.njcn.prepare.harmonic.utils.PublicUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; import java.util.List; -import java.util.Objects; /** * 类的介绍: @@ -35,20 +32,17 @@ public class RMpSurplusHarmonicDetailMServiceImpl extends MppServiceImpl监测点稳态指标超标明细月表2开始执行"); - //int year = Integer.parseInt(lineParam.getDataDate().split("-")[0]); - //int month = Integer.parseInt(lineParam.getDataDate().split("-")[1]); - //String startTime = PublicUtil.getFisrtDayOfMonth(year,month); - //String endTime = PublicUtil.getLastDayOfMonth(year,month); - List list = this.baseMapper.getHarmonicDetailMonthTwo(lineParam.getBeginTime(),lineParam.getEndTime(),lineParam.getLineIds()); - if (!CollectionUtils.isEmpty(list)){ - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - LocalDate date = LocalDate.parse(lineParam.getBeginTime(), df); - list.forEach(item->{ - item.setDataDate(date); - }); - this.saveOrUpdateBatchByMultiId(list,50); + DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + List lineIds = calculatedParam.getIdList(); + List> pendingIds = ListUtils.partition(lineIds, 100); + for (List pendingId : pendingIds) { + List list = this.baseMapper.getHarmonicDetailMonthTwo(DateUtil.format(beginMonth, DatePattern.NORM_DATE_PATTERN),beginMonth,endMonth,pendingId); + if (CollectionUtil.isNotEmpty(list)){ + this.saveOrUpdateBatchByMultiId(list); + } } } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpVThdServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpVThdServiceImpl.java index f8cc9fb6c..a291e604d 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpVThdServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpVThdServiceImpl.java @@ -1,23 +1,20 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; +import cn.hutool.core.collection.CollectionUtil; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; -import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD; import com.njcn.harmonic.pojo.po.RMpVThd; - +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpVThdMapper; -import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.service.mysql.line.IRMpVThdService; -import com.njcn.prepare.harmonic.utils.PublicUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; -import java.util.ArrayList; import java.util.List; -import java.util.Objects; /** * 类的介绍: @@ -33,19 +30,16 @@ public class RMpVThdServiceImpl extends MppServiceImpl i @Override @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") - public void insertHarmonicVThdDay(LineParam lineParam) { + public void insertHarmonicVThdDay(CalculatedParam calculatedParam) { log.info(LocalDateTime.now()+"===>监测点谐波畸变率开始执行"); - List result = new ArrayList<>(); - if (Objects.equals(lineParam.getType(),5)){ - result = this.baseMapper.getVThdData(lineParam.getDataDate(),lineParam.getLineIds()); - } else if (Objects.equals(lineParam.getType(),3)){ - int year = Integer.parseInt(lineParam.getDataDate().split("-")[0]); - int month = Integer.parseInt(lineParam.getDataDate().split("-")[1]); - List dayList = PublicUtil.getDayByMonth(year,month); - for (String item : dayList) { - result.addAll(this.baseMapper.getVThdData(item,lineParam.getLineIds())); + List lineIds = calculatedParam.getIdList(); + //以尺寸100分片,查询数据 + List> pendingIds = ListUtils.partition(lineIds,100); + for (List pendingId : pendingIds) { + List result = this.baseMapper.getVThdData(calculatedParam.getDataDate(),pendingId); + if (CollectionUtil.isNotEmpty(result)){ + this.saveOrUpdateBatchByMultiId(result); } } - this.saveOrUpdateBatchByMultiId(result,50); } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/IRMpMonitorAlarmCountMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/IRMpMonitorAlarmCountMService.java index 34eaefd64..9abfa8cfc 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/IRMpMonitorAlarmCountMService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/IRMpMonitorAlarmCountMService.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.area; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.param.LineParam; /** @@ -12,10 +13,16 @@ import com.njcn.prepare.harmonic.pojo.param.LineParam; */ public interface IRMpMonitorAlarmCountMService { +// /** +// * @Description: 监测点指标告警月统计 +// * @author: xuyang +// */ +// void alarmMonth(LineParam lineParam); + /** * @Description: 监测点指标告警月统计 * @author: xuyang */ - void alarmMonth(LineParam lineParam); + void alarmMonth(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/RMpTargetWarnDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/RMpTargetWarnDService.java index d3508dfc8..f5956fa2a 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/RMpTargetWarnDService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/area/RMpTargetWarnDService.java @@ -3,6 +3,7 @@ package com.njcn.prepare.harmonic.service.mysql.area; import com.github.jeffreyning.mybatisplus.service.IMppService; import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO; import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.param.LineParam; import java.util.List; @@ -27,15 +28,21 @@ public interface RMpTargetWarnDService extends IMppService { */ Integer queryHarmonicMeasurementAccrued(List monitorIdList, String dataDate); +// /** +// * @Description: 监测点指标告警日统计 +// * @author: xuyang +// */ +// void alarmDay(LineParam lineParam); + /** * @Description: 监测点指标告警日统计 * @author: xuyang */ - void alarmDay(LineParam lineParam); + void alarmDay(CalculatedParam calculatedParam); - /** - * @Description: 监测点指标告警月统计 - * @author: xuyang - */ - List getDate(LineParam lineParam); +// /** +// * @Description: 监测点指标告警月统计 +// * @author: xuyang +// */ +// List getDate(LineParam lineParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/AlarmDetailService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/AlarmDetailService.java index 765dcb705..07732f43b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/AlarmDetailService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/AlarmDetailService.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.line; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO; import com.njcn.prepare.harmonic.pojo.param.LineParam; @@ -14,15 +15,17 @@ import java.util.List; */ public interface AlarmDetailService { - /** - * 监测点指标告警日统计 - * @author qijian - * @date 2022/12/28 - * @return - */ //void alarmDetailAlarm(LineParam lineParam); - void targetDiff(LineParam lineParam); +// void targetDiff(LineParam lineParam); + + /** + * 监测点指标告警日统计 + * @author xuyang + * @date 2023/11/13 + * @return + */ + void targetDiff(CalculatedParam calculatedParam); List getAvgDiffData(String time,List list); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpPartHarmonicDetailDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpPartHarmonicDetailDService.java index 7084af5b7..448f1de42 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpPartHarmonicDetailDService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpPartHarmonicDetailDService.java @@ -1,6 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.line; -import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.bo.CalculatedParam; /** * @author xy @@ -9,9 +9,8 @@ public interface IRMpPartHarmonicDetailDService { /** * 计算监测点稳态指标超标明细日表1数据 - * @param lineParam + * @param calculatedParam */ - void insertHarmonicDetailDayOne(LineParam lineParam); - + void insertHarmonicDetailDayOne(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpPartHarmonicDetailMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpPartHarmonicDetailMService.java index 4bba33010..6dbf37002 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpPartHarmonicDetailMService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpPartHarmonicDetailMService.java @@ -1,13 +1,13 @@ package com.njcn.prepare.harmonic.service.mysql.line; -import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.bo.CalculatedParam; public interface IRMpPartHarmonicDetailMService { /** * 计算监测点稳态指标超标明细月表1数据 - * @param lineParam + * @param calculatedParam */ - void insertHarmonicDetailMonthOne(LineParam lineParam); + void insertHarmonicDetailMonthOne(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpSurplusHarmonicDetailDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpSurplusHarmonicDetailDService.java index 6453e4ebd..8676d9496 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpSurplusHarmonicDetailDService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpSurplusHarmonicDetailDService.java @@ -1,6 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.line; -import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.bo.CalculatedParam; /** * @author xy @@ -9,8 +9,8 @@ public interface IRMpSurplusHarmonicDetailDService { /** * 计算监测点稳态指标超标明细日表2数据 - * @param lineParam + * @param calculatedParam */ - void insertHarmonicDetailDayTwo(LineParam lineParam); + void insertHarmonicDetailDayTwo(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpSurplusHarmonicDetailMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpSurplusHarmonicDetailMService.java index 4d49a4363..b447aec8a 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpSurplusHarmonicDetailMService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpSurplusHarmonicDetailMService.java @@ -1,12 +1,12 @@ package com.njcn.prepare.harmonic.service.mysql.line; -import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.bo.CalculatedParam; public interface IRMpSurplusHarmonicDetailMService { /** * 计算监测点稳态指标超标明细月表2数据 - * @param lineParam + * @param calculatedParam */ - void insertHarmonicDetailMonthTwo(LineParam lineParam); + void insertHarmonicDetailMonthTwo(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpVThdService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpVThdService.java index cff6ae6a7..214490cb1 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpVThdService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpVThdService.java @@ -1,8 +1,13 @@ package com.njcn.prepare.harmonic.service.mysql.line; -import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.bo.CalculatedParam; public interface IRMpVThdService { - void insertHarmonicVThdDay(LineParam lineParam); + /** + * 计算谐波畸变率表 + * @param calculatedParam + */ + void insertHarmonicVThdDay(CalculatedParam calculatedParam); + }