算法改造

This commit is contained in:
2023-11-14 10:51:33 +08:00
parent decc453006
commit e53b306464
32 changed files with 814 additions and 620 deletions

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data; import lombok.Data;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
/** /**
@@ -29,7 +30,7 @@ public class RMpTargetWarnDPO {
* 生成数据的时间,每日统计一次 * 生成数据的时间,每日统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 是否是有效接入监测点(0:否 1:是) * 是否是有效接入监测点(0:否 1:是)

View File

@@ -8,8 +8,10 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import net.sf.cglib.core.Local;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
/** /**
@@ -53,7 +55,7 @@ public class RMpVThd implements Serializable {
@TableField(value = "data_date") @TableField(value = "data_date")
@ApiModelProperty(value="时间") @ApiModelProperty(value="时间")
@MppMultiId @MppMultiId
private Date dataDate; private LocalDate dataDate;
/** /**
* 谐波畸变率 * 谐波畸变率

View File

@@ -7,6 +7,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
/** /**
@@ -21,8 +22,8 @@ import java.util.Date;
public class RMpTargetDiffDPO implements Serializable { public class RMpTargetDiffDPO implements Serializable {
@MppMultiId(value = "time") @MppMultiId(value = "time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
private Date time; private LocalDate time;
@MppMultiId(value = "line_id") @MppMultiId(value = "line_id")
private String lineId; private String lineId;

View File

@@ -83,7 +83,7 @@ public class ExecutionCenter extends BaseController {
throw new BusinessException(PrepareResponseEnum.NO_EXECUTOR_NODE); 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); throw new BusinessException(PrepareResponseEnum.NO_REPAIR_DATE);
} }

View File

@@ -1,10 +1,8 @@
package com.njcn.prepare.executor; package com.njcn.prepare.executor;
import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.line.DayDataService; import com.njcn.prepare.harmonic.service.mysql.area.IRMpMonitorAlarmCountMService;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService; import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService;
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.line.*; import com.njcn.prepare.harmonic.service.mysql.line.*;
import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.annotation.LiteflowMethod; import com.yomahub.liteflow.annotation.LiteflowMethod;
@@ -13,6 +11,8 @@ import com.yomahub.liteflow.enums.LiteFlowMethodEnum;
import com.yomahub.liteflow.enums.NodeTypeEnum; import com.yomahub.liteflow.enums.NodeTypeEnum;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import java.util.Objects;
/** /**
* @author hongawen * @author hongawen
@@ -31,12 +31,19 @@ public class MeasurementExecutor extends BaseExecutor {
private final ROperatingMonitorService rOperatingMonitorService; private final ROperatingMonitorService rOperatingMonitorService;
private final ROperatingMonitorMService rOperatingMonitorMService; private final ROperatingMonitorMService rOperatingMonitorMService;
private final IntegrityService integrityService; private final IntegrityService integrityService;
private final RMpPassRateDService rMpPassRateDService; private final RMpPassRateDService rMpPassRateDService;
private final LimitRateService limitRateService; private final LimitRateService limitRateService;
private final LimitTargetService limitTargetService; 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-----监测点评价 * 算法名: 3.3.1.1-----监测点评价
@@ -158,7 +165,7 @@ public class MeasurementExecutor extends BaseExecutor {
/********************************************算法负责人:xy***********************************************************/ /********************************************算法负责人:xy***********************************************************/
/** /**
* 算法名: 3.4.1.1-----监测点报表_日表((r_stat_data_*_d)) * 算法名: 3.4.1.1-----监测点报表_日表(r_stat_data_*_d)
* *
* @author xuyang * @author xuyang
* @date 2023年11月09日 10:08 * @date 2023年11月09日 10:08
@@ -217,7 +224,103 @@ public class MeasurementExecutor extends BaseExecutor {
limitTargetService.limitTargetData(bindCmp.getRequestData()); 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结束***********************************************************/ /********************************************算法负责人:xy结束***********************************************************/

View File

@@ -60,7 +60,7 @@ public class AlarmDetailController extends BaseController {
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> targetDiff(@RequestBody @Validated LineParam lineParam) { public HttpResult<Boolean> targetDiff(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("targetDiff"); String methodDescribe = getMethodDescribe("targetDiff");
alarmDetailService.targetDiff(lineParam); // alarmDetailService.targetDiff(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -70,7 +70,7 @@ public class AlarmDetailController extends BaseController {
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> alarmDay(@RequestBody @Validated LineParam lineParam) { public HttpResult<Boolean> alarmDay(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("alarmDay"); String methodDescribe = getMethodDescribe("alarmDay");
rMpTargetWarnDService.alarmDay(lineParam); // rMpTargetWarnDService.alarmDay(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -80,7 +80,7 @@ public class AlarmDetailController extends BaseController {
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> alarmMonth(@RequestBody @Validated LineParam lineParam) { public HttpResult<Boolean> alarmMonth(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("alarmMonth"); String methodDescribe = getMethodDescribe("alarmMonth");
rMpMonitorAlarmCountMService.alarmMonth(lineParam); // rMpMonitorAlarmCountMService.alarmMonth(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
} }

View File

@@ -51,7 +51,7 @@ public class HarmonicOverLimitController extends BaseController {
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> harmonicDetailDay1(@RequestBody @Validated LineParam lineParam) { public HttpResult<Boolean> harmonicDetailDay1(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("harmonicDetailDay1"); String methodDescribe = getMethodDescribe("harmonicDetailDay1");
mpPartHarmonicDetailDService.insertHarmonicDetailDayOne(lineParam); // mpPartHarmonicDetailDService.insertHarmonicDetailDayOne(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -61,7 +61,7 @@ public class HarmonicOverLimitController extends BaseController {
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> harmonicDetailDay2(@RequestBody @Validated LineParam lineParam) { public HttpResult<Boolean> harmonicDetailDay2(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("harmonicDetailDay2"); String methodDescribe = getMethodDescribe("harmonicDetailDay2");
mpSurplusHarmonicDetailDService.insertHarmonicDetailDayTwo(lineParam); // mpSurplusHarmonicDetailDService.insertHarmonicDetailDayTwo(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -71,7 +71,7 @@ public class HarmonicOverLimitController extends BaseController {
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> harmonicDetailMonth1(@RequestBody @Validated LineParam lineParam) { public HttpResult<Boolean> harmonicDetailMonth1(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("harmonicDetailMonth1"); String methodDescribe = getMethodDescribe("harmonicDetailMonth1");
mpPartHarmonicDetailMService.insertHarmonicDetailMonthOne(lineParam); // mpPartHarmonicDetailMService.insertHarmonicDetailMonthOne(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -81,7 +81,7 @@ public class HarmonicOverLimitController extends BaseController {
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> harmonicDetailMonth2(@RequestBody @Validated LineParam lineParam) { public HttpResult<Boolean> harmonicDetailMonth2(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("harmonicDetailMonth2"); String methodDescribe = getMethodDescribe("harmonicDetailMonth2");
mpSurplusHarmonicDetailMService.insertHarmonicDetailMonthTwo(lineParam); // mpSurplusHarmonicDetailMService.insertHarmonicDetailMonthTwo(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }
@@ -91,7 +91,7 @@ public class HarmonicOverLimitController extends BaseController {
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true) @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
public HttpResult<Boolean> harmonicThdDay(@RequestBody @Validated LineParam lineParam) { public HttpResult<Boolean> harmonicThdDay(@RequestBody @Validated LineParam lineParam) {
String methodDescribe = getMethodDescribe("harmonicThdDay"); String methodDescribe = getMethodDescribe("harmonicThdDay");
mpVThdService.insertHarmonicVThdDay(lineParam); // mpVThdService.insertHarmonicVThdDay(lineParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
} }

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.mapper.mysql.area; package com.njcn.prepare.harmonic.mapper.mysql.area;
import cn.hutool.core.date.DateTime;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO; import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
@@ -21,7 +22,7 @@ import java.util.Map;
@Mapper @Mapper
public interface RMpTargetWarnDMapper extends MppBaseMapper<RMpTargetWarnDPO> { public interface RMpTargetWarnDMapper extends MppBaseMapper<RMpTargetWarnDPO> {
List<RMpMonitorAlarmCountMDTO> getDate(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("list") List<String> list); List<RMpMonitorAlarmCountMDTO> getDate(@Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime, @Param("list") List<String> list);
Map<String,Object> getSumDate(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List<String> lineIds); Map<String,Object> getSumDate(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List<String> lineIds);

View File

@@ -50,14 +50,12 @@
r_mp_target_warn_d r_mp_target_warn_d
where where
data_date between #{startTime} and #{endTime} data_date between #{startTime} and #{endTime}
<where> <if test="list != null and list.size() > 0">
<if test="list != null and list.size() > 0"> and measurement_point_id in
and measurement_point_id in <foreach collection="list" item="item" open="(" close=")" separator=",">
<foreach collection="list" item="item" open="(" close=")" separator=","> #{item}
#{item} </foreach>
</foreach> </if>
</if>
</where>
group by measurement_point_id group by measurement_point_id
order by harmonicTypeGradeTotal desc,eventTypeGradeTotal desc order by harmonicTypeGradeTotal desc,eventTypeGradeTotal desc
</select> </select>

View File

@@ -186,7 +186,7 @@
on t0.lineId = t3.lineId on t0.lineId = t3.lineId
<where> <where>
<if test="list != null and list.size() > 0"> <if test="list != null and list.size() > 0">
A.lineId in t0.lineId in
<foreach collection="list" item="item" open="(" close=")" separator=","> <foreach collection="list" item="item" open="(" close=")" separator=",">
#{item} #{item}
</foreach> </foreach>

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.mapper.mysql.line; package com.njcn.prepare.harmonic.mapper.mysql.line;
import cn.hutool.core.date.DateTime;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM; import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -16,7 +17,7 @@ import java.util.Map;
*/ */
public interface RMpPartHarmonicDetailMMapper extends MppBaseMapper<RMpPartHarmonicDetailM> { public interface RMpPartHarmonicDetailMMapper extends MppBaseMapper<RMpPartHarmonicDetailM> {
List<RMpPartHarmonicDetailM> getHarmonicDetailMonthOne(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("lineList") List<String> lineList); List<RMpPartHarmonicDetailM> getHarmonicDetailMonthOne(@Param("dataDate") String dataDate, @Param("startTime") DateTime startTime, @Param("endTime")DateTime endTime, @Param("lineList") List<String> lineList);
Map<String, Object> getPartSum(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List<String> lineIds); Map<String, Object> getPartSum(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List<String> lineIds);

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.mapper.mysql.line; package com.njcn.prepare.harmonic.mapper.mysql.line;
import cn.hutool.core.date.DateTime;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM; import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM;
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM; import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM;
@@ -17,7 +18,7 @@ import java.util.Map;
*/ */
public interface RMpSurplusHarmonicDetailMMapper extends MppBaseMapper<RMpSurplusHarmonicDetailM> { public interface RMpSurplusHarmonicDetailMMapper extends MppBaseMapper<RMpSurplusHarmonicDetailM> {
List<RMpSurplusHarmonicDetailM> getHarmonicDetailMonthTwo(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("lineList") List<String> lineList); List<RMpSurplusHarmonicDetailM> getHarmonicDetailMonthTwo(@Param("dataDate") String dataDate, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime, @Param("lineList") List<String> lineList);
Map<String, Object> getSurplusSum(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List<String> lineIds); Map<String, Object> getSurplusSum(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List<String> lineIds);

View File

@@ -4,6 +4,7 @@
<select id="getHarmonicDetailMonthOne" resultType="com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM"> <select id="getHarmonicDetailMonthOne" resultType="com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM">
select select
#{dataDate} dataDate,
measurement_point_id measurementPointId, measurement_point_id measurementPointId,
sum(is_harmonic) measurementOverDay, sum(is_harmonic) measurementOverDay,
sum(is_freq) freqOverDay, sum(is_freq) freqOverDay,

View File

@@ -4,6 +4,7 @@
<select id="getHarmonicDetailMonthTwo" resultType="com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM"> <select id="getHarmonicDetailMonthTwo" resultType="com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM">
select select
#{dataDate} dataDate,
measurement_point_id measurementPointId, measurement_point_id measurementPointId,
sum(is_flicker) flickerOverDay, sum(is_flicker) flickerOverDay,
sum(is_inuharm) inuharmOverDay, sum(is_inuharm) inuharmOverDay,

View File

@@ -1,17 +1,27 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area; 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.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO; import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO;
import com.njcn.harmonic.pojo.po.RMpMonitorAlarmCountMPO; 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.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.IRMpMonitorAlarmCountMService;
import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService; import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -26,65 +36,137 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@AllArgsConstructor @AllArgsConstructor
@Slf4j
public class RMpMonitorAlarmCountMServiceImpl extends MppServiceImpl<RMpMonitorAlarmCountMMapper, RMpMonitorAlarmCountMPO> implements IRMpMonitorAlarmCountMService { public class RMpMonitorAlarmCountMServiceImpl extends MppServiceImpl<RMpMonitorAlarmCountMMapper, RMpMonitorAlarmCountMPO> implements IRMpMonitorAlarmCountMService {
private final RMpTargetWarnDService rMpTargetWarnDService; private final RMpTargetWarnDService rMpTargetWarnDService;
private final RMpTargetWarnDMapper rMpTargetWarnDMapper;
// @Override
// public void alarmMonth(LineParam lineParam) {
// List<RMpMonitorAlarmCountMDTO> monthList = rMpTargetWarnDService.getDate(lineParam);
// if (!CollectionUtils.isEmpty(monthList)){
// List<RMpMonitorAlarmCountMPO> result = new ArrayList<>();
// List<RMpMonitorAlarmCountMDTO> harmonicList = new ArrayList<>(),eventList = new ArrayList<>();
// //判断稳态指标评级结果-根据稳态指标严重度之和排序(去除严重度为0的数据在作比较)
// List<RMpMonitorAlarmCountMDTO> list1 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()>0).collect(Collectors.toList());
// List<RMpMonitorAlarmCountMDTO> 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<RMpMonitorAlarmCountMDTO> list3 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()>0).collect(Collectors.toList());
// List<RMpMonitorAlarmCountMDTO> 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 @Override
public void alarmMonth(LineParam lineParam) { @Transactional(rollbackFor = {Exception.class})
List<RMpMonitorAlarmCountMDTO> monthList = rMpTargetWarnDService.getDate(lineParam); @Async("asyncExecutor")
if (!CollectionUtils.isEmpty(monthList)){ public void alarmMonth(CalculatedParam calculatedParam) {
List<RMpMonitorAlarmCountMPO> result = new ArrayList<>(); log.info(LocalDateTime.now()+"===>监测点指标告警月统计算法开始");
List<RMpMonitorAlarmCountMDTO> harmonicList = new ArrayList<>(),eventList = new ArrayList<>(); List<String> lineIds = calculatedParam.getIdList();
//判断稳态指标评级结果-根据稳态指标严重度之和排序(去除严重度为0的数据在作比较) DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
List<RMpMonitorAlarmCountMDTO> list1 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()>0).collect(Collectors.toList()); DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
List<RMpMonitorAlarmCountMDTO> list2 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()<=0).collect(Collectors.toList()); //以尺寸100分片,查询数据
if (!CollectionUtils.isEmpty(list1)){ List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
for (int i = 0; i < list1.size(); i++) { for (List<String> pendingId : pendingIds) {
if (i < list1.size()*0.3){ List<RMpMonitorAlarmCountMDTO> monthList = rMpTargetWarnDMapper.getDate(beginMonth,endMonth,pendingId);
list1.get(i).setHarmonicTypeGrade(0); if (!CollectionUtils.isEmpty(monthList)){
} else if (i >= list1.size()*0.3 && i < list1.size()*0.7){ List<RMpMonitorAlarmCountMPO> result = new ArrayList<>();
list1.get(i).setHarmonicTypeGrade(1); List<RMpMonitorAlarmCountMDTO> harmonicList = new ArrayList<>(),eventList = new ArrayList<>();
} else { //判断稳态指标评级结果-根据稳态指标严重度之和排序(去除严重度为0的数据在作比较)
list1.get(i).setHarmonicTypeGrade(2); List<RMpMonitorAlarmCountMDTO> list1 = monthList.stream().filter(item->item.getHarmonicTypeGradeTotal()>0).collect(Collectors.toList());
List<RMpMonitorAlarmCountMDTO> 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)){
if (!CollectionUtils.isEmpty(list2)){ list2.forEach(item->{
list2.forEach(item->{ item.setHarmonicTypeGrade(2);
item.setHarmonicTypeGrade(2); harmonicList.add(item);
harmonicList.add(item); });
}); }
} //判断暂态指标评级结果-根据暂态指标严重度之和排序(去除严重度为0的数据在作比较)
//判断暂态指标评级结果-根据暂态指标严重度之和排序(去除严重度为0的数据在作比较) List<RMpMonitorAlarmCountMDTO> list3 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()>0).collect(Collectors.toList());
List<RMpMonitorAlarmCountMDTO> list3 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()>0).collect(Collectors.toList()); List<RMpMonitorAlarmCountMDTO> list4 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()<=0).collect(Collectors.toList());
List<RMpMonitorAlarmCountMDTO> list4 = harmonicList.stream().filter(item->item.getEventTypeGradeTotal()<=0).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(list3)){
if (!CollectionUtils.isEmpty(list3)){ for (int i = 0; i < list3.size(); i++) {
for (int i = 0; i < list3.size(); i++) { if (i < list3.size()*0.3){
if (i < list3.size()*0.3){ list3.get(i).setEventTypeGrade(0);
list3.get(i).setEventTypeGrade(0); } else if (i >= list3.size()*0.3 && i < list3.size()*0.7){
} else if (i >= list3.size()*0.3 && i < list3.size()*0.7){ list3.get(i).setEventTypeGrade(1);
list3.get(i).setEventTypeGrade(1); } else {
} else { list3.get(i).setEventTypeGrade(2);
list3.get(i).setEventTypeGrade(2); }
eventList.add(list3.get(i));
} }
eventList.add(list3.get(i));
} }
} if (!CollectionUtils.isEmpty(list4)){
if (!CollectionUtils.isEmpty(list4)){ list4.forEach(item->{
list4.forEach(item->{ item.setEventTypeGrade(2);
item.setEventTypeGrade(2); eventList.add(item);
eventList.add(item); });
}); }
} if (!CollectionUtils.isEmpty(eventList)){
if (!CollectionUtils.isEmpty(eventList)){ eventList.forEach(item->{
eventList.forEach(item->{ RMpMonitorAlarmCountMPO rMpMonitorAlarmCountMpo = new RMpMonitorAlarmCountMPO();
RMpMonitorAlarmCountMPO rMpMonitorAlarmCountMpo = new RMpMonitorAlarmCountMPO(); BeanUtils.copyProperties(item,rMpMonitorAlarmCountMpo);
BeanUtils.copyProperties(item,rMpMonitorAlarmCountMpo); result.add(rMpMonitorAlarmCountMpo);
result.add(rMpMonitorAlarmCountMpo); });
}); this.saveOrUpdateBatchByMultiId(result);
this.saveOrUpdateBatchByMultiId(result,50); }
} }
} }
} }

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area; 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.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; 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.device.pq.api.LineFeignClient;
import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO; import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; 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.area.RMpTargetWarnDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper; import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper;
import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO; 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 com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -73,33 +80,21 @@ public class RMpTargetWarnDServiceImpl extends MppServiceImpl<RMpTargetWarnDMapp
return result; return result;
} }
/*******************************************新算法***********************************************************************/
@Override @Override
public void alarmDay(LineParam lineParam) { @Transactional(rollbackFor = {Exception.class})
List<RMpTargetWarnDPO> list = new ArrayList<>(); @Async("asyncExecutor")
//月处理 public void alarmDay(CalculatedParam calculatedParam) {
if (Objects.equals(true,lineParam.getRepairFlag())){ log.info(LocalDateTime.now()+"===>监测点指标告警日统计算法开始");
List<String> lineIds = calculatedParam.getIdList();
List<String> dayList = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); //以尺寸100分片,查询数据
for (String item : dayList) { List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
log.info(item+"-->开始执行"); for (List<String> pendingId : pendingIds) {
List<RMpTargetWarnDPO> day = getData(item,lineParam.getLineIds()); List<RMpTargetWarnDPO> list = getData(calculatedParam.getDataDate(),pendingId);
if (!CollectionUtils.isEmpty(day)){ if (CollectionUtil.isNotEmpty(list)){
list.addAll(day); this.saveOrUpdateBatchByMultiId(list);
}
} }
} }
//日处理
else {
list = getData(lineParam.getDataDate(),lineParam.getLineIds());
}
if (!CollectionUtils.isEmpty(list)){
this.saveOrUpdateBatchByMultiId(list,50);
}
}
@Override
public List<RMpMonitorAlarmCountMDTO> getDate(LineParam lineParam) {
return this.baseMapper.getDate(lineParam.getBeginTime(),lineParam.getEndTime(),lineParam.getLineIds());
} }
public List<RMpTargetWarnDPO> getData(String time, List<String> list){ public List<RMpTargetWarnDPO> getData(String time, List<String> list){
@@ -107,10 +102,10 @@ public class RMpTargetWarnDServiceImpl extends MppServiceImpl<RMpTargetWarnDMapp
List<AlarmDetailDayDTO> rlList = new ArrayList<>(),uclList = new ArrayList<>(); List<AlarmDetailDayDTO> rlList = new ArrayList<>(),uclList = new ArrayList<>();
//基础数据 //基础数据
String yesterday = PublicUtil.getYesterday(time); String yesterday = PublicUtil.getYesterday(time);
List<RMpTargetWarnDDTO> todayList = rStatDataVDMapper.getTargetWarnD(time + " 00:00:00",list); List<RMpTargetWarnDDTO> todayList = rStatDataVDMapper.getTargetWarnD(time,list);
List<RMpTargetWarnDDTO> yesterdayList = rStatDataVDMapper.getTargetWarnD(yesterday + " 00:00:00",list); List<RMpTargetWarnDDTO> yesterdayList = rStatDataVDMapper.getTargetWarnD(yesterday,list);
List<RMpTargetWarnDDTO> theDayBeforeYesterday = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(yesterday) + " 00:00:00",list); List<RMpTargetWarnDDTO> theDayBeforeYesterday = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(yesterday),list);
List<RMpTargetWarnDDTO> threeDaysAgo = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(PublicUtil.getYesterday(yesterday)) + " 00:00:00",list); List<RMpTargetWarnDDTO> threeDaysAgo = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(PublicUtil.getYesterday(yesterday)),list);
if (!CollectionUtils.isEmpty(todayList)){ if (!CollectionUtils.isEmpty(todayList)){
Map<String,List<RMpTargetWarnDDTO>> map2 = new HashMap<>(),map3 = new HashMap<>(),map4 = new HashMap<>(); Map<String,List<RMpTargetWarnDDTO>> map2 = new HashMap<>(),map3 = new HashMap<>(),map4 = new HashMap<>();
//本年的rm值 //本年的rm值
@@ -256,4 +251,38 @@ public class RMpTargetWarnDServiceImpl extends MppServiceImpl<RMpTargetWarnDMapp
} }
return result; return result;
} }
/*******************************************新算法结束***********************************************************************/
// @Override
// public void alarmDay(LineParam lineParam) {
// List<RMpTargetWarnDPO> list = new ArrayList<>();
// //月处理
// if (Objects.equals(true,lineParam.getRepairFlag())){
//
// List<String> dayList = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime());
// for (String item : dayList) {
// log.info(item+"-->开始执行");
// List<RMpTargetWarnDPO> 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<RMpMonitorAlarmCountMDTO> getDate(LineParam lineParam) {
// return this.baseMapper.getDate(lineParam.getBeginTime(),lineParam.getEndTime(),lineParam.getLineIds());
// }
} }

View File

@@ -1,32 +1,27 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; 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.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.utils.NjcnDateUtils;
import com.njcn.device.pms.api.DistributionMonitorClient; import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.MonitorClient; import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.pojo.po.DistributionMonitor; import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper; 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.day.RStatDataVDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.*; import com.njcn.prepare.harmonic.mapper.mysql.line.*;
import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO; import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO; 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.service.mysql.line.AlarmDetailService;
import com.njcn.prepare.harmonic.utils.PublicUtil; import com.njcn.prepare.harmonic.utils.PublicUtil;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDate; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -63,96 +58,58 @@ public class AlarmDetailServiceImpl extends MppServiceImpl<AlarmMapper, RMpTarge
private final RStatDataVDMapper rStatDataVDMapper; private final RStatDataVDMapper rStatDataVDMapper;
/** // @Override
* 电压偏差告警日统计 // @Transactional(rollbackFor = {Exception.class})
* @author qijian // @Async("asyncExecutor")
* @date 2022/12/28 // public void targetDiff(LineParam lineParam) {
* @return // String startTime,endTime;
*/ // //月处理
/* @Override // if (Objects.equals(true,lineParam.getRepairFlag())){
@Async("asyncExecutor") // List<String> rangeDate = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime());
public void alarmDetailAlarm(LineParam lineParam) { // for (String item : rangeDate) {
//初始化 // log.info(item+"-->开始执行");
String date = lineParam.getDataDate(); // startTime = item + " 00:00:00";
List<String> lineIds = lineParam.getLineIds(); // endTime = PublicUtil.getYesterday(item) + " 00:00:00";
Integer type = lineParam.getType(); // diffData(startTime,endTime,lineParam.getLineIds());
// }
//获取监测点数据,进行业务操作 // }
if (CollUtil.isEmpty(lineIds)){ // //日处理
//先获取主网的监测点信息,再获取配网的监测点信息 // else {
List<Monitor> monitorList = monitorClient.getMonitorList(lineIds).getData(); // startTime = lineParam.getBeginTime();
for (Monitor monitor : monitorList) { // endTime = PublicUtil.getYesterday(lineParam.getDataDate()) + " 00:00:00";
processVoltageDeviationAlarm(date,type, monitor.getLineId()); // diffData(startTime,endTime,lineParam.getLineIds());
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<DistributionMonitor> 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 @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
public void targetDiff(LineParam lineParam) { public void targetDiff(CalculatedParam calculatedParam) {
String startTime,endTime; log.info(LocalDateTime.now()+"===>监测点稳态指标差值日表开始执行");
//月处理 List<String> lineIds = calculatedParam.getIdList();
if (Objects.equals(true,lineParam.getRepairFlag())){ String nowDay = calculatedParam.getDataDate();
List<String> rangeDate = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); String yesterday = PublicUtil.getYesterday(nowDay);
for (String item : rangeDate) { //以尺寸100分片,查询数据
log.info(item+"-->开始执行"); List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
startTime = item + " 00:00:00"; for (List<String> pendingId : pendingIds) {
endTime = PublicUtil.getYesterday(item) + " 00:00:00"; List<RMpTargetDiffDPO> intersectionList = diffData(nowDay,yesterday,pendingId);
diffData(startTime,endTime,lineParam.getLineIds()); 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<AlarmDetailDayDTO> getAvgDiffData(String time,List<String> list) {
String endTime = PublicUtil.getLastYearDay(time);
//计算本年的rm值
return this.baseMapper.getAvgDiffData(endTime,time,list);
} }
/** /**
* 生成指标差值日统计 * 生成指标差值日统计
*/ */
public void diffData(String startTime, String endTime, List<String> list) { public List<RMpTargetDiffDPO> diffData(String startTime, String endTime, List<String> list) {
List<RMpTargetDiffDPO> intersectionList = new ArrayList<>();
List<RMpTargetDiffDPO> localData = rStatDataVDMapper.getDayData(startTime,list); List<RMpTargetDiffDPO> localData = rStatDataVDMapper.getDayData(startTime,list);
List<RMpTargetDiffDPO> yesterdayData = rStatDataVDMapper.getDayData(endTime,list); List<RMpTargetDiffDPO> yesterdayData = rStatDataVDMapper.getDayData(endTime,list);
if (!CollectionUtils.isEmpty(localData) && !CollectionUtils.isEmpty(yesterdayData)){ if (!CollectionUtils.isEmpty(localData) && !CollectionUtils.isEmpty(yesterdayData)){
//取两个集合的交集,做算法处理取绝对值 //取两个集合的交集,做算法处理取绝对值
List<RMpTargetDiffDPO> 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.setVlDev(Math.abs(map.getVlDev()-m.getVlDev()));
map.setFreqDev(Math.abs(map.getFreqDev()-m.getFreqDev())); map.setFreqDev(Math.abs(map.getFreqDev()-m.getFreqDev()));
map.setVUnbalance(Math.abs(map.getVUnbalance()-m.getVUnbalance())); map.setVUnbalance(Math.abs(map.getVUnbalance()-m.getVUnbalance()));
@@ -162,326 +119,333 @@ public class AlarmDetailServiceImpl extends MppServiceImpl<AlarmMapper, RMpTarge
map.setInterruptTimes(Math.abs(map.getInterruptTimes()-m.getInterruptTimes())); map.setInterruptTimes(Math.abs(map.getInterruptTimes()-m.getInterruptTimes()));
return map; return map;
}).orElse(null)).filter(Objects::nonNull).collect(Collectors.toList()); }).orElse(null)).filter(Objects::nonNull).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(intersectionList)){
this.saveOrUpdateBatchByMultiId(intersectionList,50);
}
} }
return intersectionList;
}
/*******************************************新算法结束***********************************************************************/
@Override
public List<AlarmDetailDayDTO> getAvgDiffData(String time,List<String> list) {
String endTime = PublicUtil.getLastYearDay(time);
//计算本年的rm值
return this.baseMapper.getAvgDiffData(endTime,time,list);
} }
/** // /**
* 处理数据(电压偏差告警日统计) // * 处理数据(电压偏差告警日统计)
* @author qijian // * @author qijian
* @date 2022/12/28 // * @date 2022/12/28
*/ // */
private void processVoltageDeviationAlarm(String date, Integer type, String lineId) { // private void processVoltageDeviationAlarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天) // //日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date); // LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1); // LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1); // LocalDate beforeYesterday = yesterday.plusDays(-1);
double localMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, localDate); // double localMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, localDate);
double yesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, yesterday); // double yesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, yesterday);
double beforeYesterdayMax = rMpMeasurePhaseReportDPOMapper.getMaxVDeUp(lineId, beforeYesterday); // 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(); // * @author qijian
rMpTargetWarnD.setMeasurementPointId(lineId); // * @date 2022/12/29
rMpTargetWarnD.setDataDate(DateUtil.parse(date)); // */
rMpTargetWarnD.setIsVDevWarn(1); // private void processVoltageHarmonicThd95Alarm(String date, Integer type, String lineId) {
addAlarmData(rMpTargetWarnD); // //日期条件(取前天、昨天、今天)
return; // 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(); // * @author qijian
rMpTargetWarnD.setMeasurementPointId(lineId); // * @date 2022/12/30
rMpTargetWarnD.setDataDate(DateUtil.parse(date)); // */
rMpTargetWarnD.setIsVDevWarn(1); // private void processFlashingAlarm(String date, Integer type, String lineId) {
addAlarmData(rMpTargetWarnD); // //日期条件(取前天、昨天、今天)
return; // 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 // * @author qijian
* @date 2022/12/29 // * @date 2022/12/29
*/ // */
private void processFrequencyDeviationAlarm(String date, Integer type, String lineId) { // private void processSagTimesAlarm(String date, Integer type, String lineId) {
//日期条件(取前天、昨天、今天) // //日期条件(取前天、昨天、今天)
LocalDate localDate = LocalDate.parse(date); // LocalDate localDate = LocalDate.parse(date);
LocalDate yesterday = localDate.plusDays(-1); // LocalDate yesterday = localDate.plusDays(-1);
LocalDate beforeYesterday = yesterday.plusDays(-1); // LocalDate beforeYesterday = yesterday.plusDays(-1);
double localMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, localDate); // int localMax = rMpEventDetailDMapper.getSagTimes(lineId, localDate);
double yesterdayMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, yesterday); // int yesterdayMax = rMpEventDetailDMapper.getSagTimes(lineId, yesterday);
double beforeYesterdayMax = rMpMeasureReportDPOMapper.getMaxFrequencyDeviation(lineId, beforeYesterday); // 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; // * @author qijian
// * @date 2022/12/28
//如果本日最大值>UCL 且 本日最大值>昨日最大值,则告警 // */
if (localMax > ucl && localMax > yesterdayMax){ // private void addAlarmData(RMpTargetWarnDPO rMpTargetWarnD) {
RMpTargetWarnDPO rMpTargetWarnD = new RMpTargetWarnDPO(); // LambdaQueryWrapper<RMpTargetWarnDPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
rMpTargetWarnD.setMeasurementPointId(lineId); // lambdaQueryWrapper.eq(RMpTargetWarnDPO::getMeasurementPointId, rMpTargetWarnD.getMeasurementPointId()).eq(RMpTargetWarnDPO::getDataDate, rMpTargetWarnD.getDataDate());
rMpTargetWarnD.setDataDate(DateUtil.parse(date)); // RMpTargetWarnDPO rMpTargetWarnDOne = rMpTargetWarnDMapper.selectOne(lambdaQueryWrapper);
rMpTargetWarnD.setIsFreqWarn(1); // if (Objects.nonNull(rMpTargetWarnDOne)) {
addAlarmData(rMpTargetWarnD); // rMpTargetWarnDMapper.update(rMpTargetWarnD, lambdaQueryWrapper);
return; // } else {
} // rMpTargetWarnDMapper.insert(rMpTargetWarnD);
// }
//如果本日>昨日>前日且前日的值超过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<RMpTargetWarnDPO> 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);
}
}
} }

View File

@@ -23,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.ListUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -25,6 +25,7 @@ import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper; import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDate; import java.time.LocalDate;
@@ -96,6 +97,7 @@ public class LimitTargetServiceImpl extends MppServiceImpl<RStatLimitTargetDMapp
/***********************************************新算法*******************************************************************/ /***********************************************新算法*******************************************************************/
@Override @Override
@Async("asyncExecutor")
public void limitTargetData(CalculatedParam calculatedParam) { public void limitTargetData(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"r_stat_limit_target_d开始执行=======》"); log.info(LocalDateTime.now()+"r_stat_limit_target_d开始执行=======》");
List<RStatLimitTargetDPO> list = new ArrayList<>(); List<RStatLimitTargetDPO> list = new ArrayList<>();

View File

@@ -1,14 +1,17 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollectionUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.pojo.constant.PatternRegex; import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.common.utils.NjcnDateUtils; import com.njcn.common.utils.NjcnDateUtils;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD; 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.mapper.mysql.line.RMpPartHarmonicDetailDMapper;
import com.njcn.prepare.harmonic.pojo.param.LineParam; 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.IRMpPartHarmonicDetailDService;
import com.njcn.prepare.harmonic.utils.PublicUtil; import com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -30,24 +33,21 @@ import java.util.Objects;
@Service @Service
public class RMpPartHarmonicDetailDServiceImpl extends MppServiceImpl<RMpPartHarmonicDetailDMapper, RMpPartHarmonicDetailD> implements IRMpPartHarmonicDetailDService { public class RMpPartHarmonicDetailDServiceImpl extends MppServiceImpl<RMpPartHarmonicDetailDMapper, RMpPartHarmonicDetailD> implements IRMpPartHarmonicDetailDService {
/***********************************************新算法********************************************************************/
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
public void insertHarmonicDetailDayOne(LineParam lineParam) { public void insertHarmonicDetailDayOne(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细日表1开始执行"); log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细日表1开始执行");
List<RMpPartHarmonicDetailD> result = new ArrayList<>(); List<String> lineIds = calculatedParam.getIdList();
if (Objects.equals(lineParam.getType(),5)){ //以尺寸100分片,查询数据
List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
System.out.println(lineParam.getLineIds()); for (List<String> pendingId : pendingIds) {
result = getData(lineParam.getBeginTime(),lineParam.getLineIds()); List<RMpPartHarmonicDetailD> list = getData(calculatedParam.getDataDate(),pendingId);
} else if (Objects.equals(lineParam.getType(),3)){ if (CollectionUtil.isNotEmpty(list)){
//补招 this.saveOrUpdateBatchByMultiId(list);
List<String> rangeDate = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime());
for (String item : rangeDate) {
result.addAll(getData(item,lineParam.getLineIds()));
} }
} }
this.saveOrUpdateBatchByMultiId(result,50);
} }
public List<RMpPartHarmonicDetailD> getData(String time,List<String> lineList) { public List<RMpPartHarmonicDetailD> getData(String time,List<String> lineList) {
@@ -63,4 +63,6 @@ public class RMpPartHarmonicDetailDServiceImpl extends MppServiceImpl<RMpPartHar
} }
return list; return list;
} }
/***********************************************新算法结束********************************************************************/
} }

View File

@@ -1,20 +1,21 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; 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.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM; import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailMMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailMMapper;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.IRMpPartHarmonicDetailMService; import com.njcn.prepare.harmonic.service.mysql.line.IRMpPartHarmonicDetailMService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
/** /**
@@ -31,17 +32,17 @@ public class RMpPartHarmonicDetailMServiceImpl extends MppServiceImpl<RMpPartHar
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
public void insertHarmonicDetailMonthOne(LineParam lineParam) { public void insertHarmonicDetailMonthOne(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细月表1开始执行"); log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细月表1开始执行");
DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
List<RMpPartHarmonicDetailM> list = this.baseMapper.getHarmonicDetailMonthOne(lineParam.getBeginTime(),lineParam.getEndTime(),lineParam.getLineIds()); DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
if (!CollectionUtils.isEmpty(list)){ List<String> lineIds = calculatedParam.getIdList();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); List<List<String>> pendingIds = ListUtils.partition(lineIds, 100);
LocalDate date = LocalDate.parse(lineParam.getBeginTime(), df); for (List<String> pendingId : pendingIds) {
list.forEach(item->{ List<RMpPartHarmonicDetailM> list = this.baseMapper.getHarmonicDetailMonthOne(DateUtil.format(beginMonth, DatePattern.NORM_DATE_PATTERN),beginMonth,endMonth,pendingId);
item.setDataDate(date); if (CollectionUtil.isNotEmpty(list)){
}); this.saveOrUpdateBatchByMultiId(list);
this.saveOrUpdateBatchByMultiId(list,50); }
} }
} }
} }

View File

@@ -1,25 +1,19 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollectionUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; 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.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.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.service.mysql.line.IRMpSurplusHarmonicDetailDService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 类的介绍: * 类的介绍:
@@ -35,17 +29,17 @@ public class RMpSurplusHarmonicDetailDServiceImpl extends MppServiceImpl<RMpSurp
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
public void insertHarmonicDetailDayTwo(LineParam lineParam) { public void insertHarmonicDetailDayTwo(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细日表2开始执行"); log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细日表2开始执行");
List<RMpSurplusHarmonicDetailD> result = new ArrayList<>(); List<String> lineIds = calculatedParam.getIdList();
if (Objects.equals(lineParam.getType(),5)){ //以尺寸100分片,查询数据
result = this.baseMapper.getHarmonicDetailDayTwo(lineParam.getBeginTime(),lineParam.getLineIds()); List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
} else if (lineParam.getRepairFlag()){ for (List<String> pendingId : pendingIds) {
List<String> rangeDate = NjcnDateUtils.findEveryDay(lineParam.getBeginTime(),lineParam.getEndTime()); List<RMpSurplusHarmonicDetailD> result = this.baseMapper.getHarmonicDetailDayTwo(calculatedParam.getDataDate(),pendingId);
for (String item : rangeDate) { if (CollectionUtil.isNotEmpty(result)){
result.addAll(this.baseMapper.getHarmonicDetailDayTwo(item,lineParam.getLineIds())); this.saveOrUpdateBatchByMultiId(result);
} }
} }
this.saveOrUpdateBatchByMultiId(result,50);
} }
} }

View File

@@ -1,25 +1,22 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; 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.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.harmonic.pojo.po.RMpSurplusHarmonicDetailM;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailMMapper; 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.service.mysql.line.IRMpSurplusHarmonicDetailMService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 类的介绍: * 类的介绍:
@@ -35,20 +32,17 @@ public class RMpSurplusHarmonicDetailMServiceImpl extends MppServiceImpl<RMpSurp
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
public void insertHarmonicDetailMonthTwo(LineParam lineParam) { public void insertHarmonicDetailMonthTwo(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细月表2开始执行"); log.info(LocalDateTime.now()+"===>监测点稳态指标超标明细月表2开始执行");
//int year = Integer.parseInt(lineParam.getDataDate().split("-")[0]); DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
//int month = Integer.parseInt(lineParam.getDataDate().split("-")[1]); DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
//String startTime = PublicUtil.getFisrtDayOfMonth(year,month); List<String> lineIds = calculatedParam.getIdList();
//String endTime = PublicUtil.getLastDayOfMonth(year,month); List<List<String>> pendingIds = ListUtils.partition(lineIds, 100);
List<RMpSurplusHarmonicDetailM> list = this.baseMapper.getHarmonicDetailMonthTwo(lineParam.getBeginTime(),lineParam.getEndTime(),lineParam.getLineIds()); for (List<String> pendingId : pendingIds) {
if (!CollectionUtils.isEmpty(list)){ List<RMpSurplusHarmonicDetailM> list = this.baseMapper.getHarmonicDetailMonthTwo(DateUtil.format(beginMonth, DatePattern.NORM_DATE_PATTERN),beginMonth,endMonth,pendingId);
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); if (CollectionUtil.isNotEmpty(list)){
LocalDate date = LocalDate.parse(lineParam.getBeginTime(), df); this.saveOrUpdateBatchByMultiId(list);
list.forEach(item->{ }
item.setDataDate(date);
});
this.saveOrUpdateBatchByMultiId(list,50);
} }
} }
} }

View File

@@ -1,23 +1,20 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line; package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollectionUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD;
import com.njcn.harmonic.pojo.po.RMpVThd; 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.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.service.mysql.line.IRMpVThdService;
import com.njcn.prepare.harmonic.utils.PublicUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* 类的介绍: * 类的介绍:
@@ -33,19 +30,16 @@ public class RMpVThdServiceImpl extends MppServiceImpl<RMpVThdMapper, RMpVThd> i
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
public void insertHarmonicVThdDay(LineParam lineParam) { public void insertHarmonicVThdDay(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"===>监测点谐波畸变率开始执行"); log.info(LocalDateTime.now()+"===>监测点谐波畸变率开始执行");
List<RMpVThd> result = new ArrayList<>(); List<String> lineIds = calculatedParam.getIdList();
if (Objects.equals(lineParam.getType(),5)){ //以尺寸100分片,查询数据
result = this.baseMapper.getVThdData(lineParam.getDataDate(),lineParam.getLineIds()); List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
} else if (Objects.equals(lineParam.getType(),3)){ for (List<String> pendingId : pendingIds) {
int year = Integer.parseInt(lineParam.getDataDate().split("-")[0]); List<RMpVThd> result = this.baseMapper.getVThdData(calculatedParam.getDataDate(),pendingId);
int month = Integer.parseInt(lineParam.getDataDate().split("-")[1]); if (CollectionUtil.isNotEmpty(result)){
List<String> dayList = PublicUtil.getDayByMonth(year,month); this.saveOrUpdateBatchByMultiId(result);
for (String item : dayList) {
result.addAll(this.baseMapper.getVThdData(item,lineParam.getLineIds()));
} }
} }
this.saveOrUpdateBatchByMultiId(result,50);
} }
} }

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.area; package com.njcn.prepare.harmonic.service.mysql.area;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.param.LineParam;
/** /**
@@ -12,10 +13,16 @@ import com.njcn.prepare.harmonic.pojo.param.LineParam;
*/ */
public interface IRMpMonitorAlarmCountMService { public interface IRMpMonitorAlarmCountMService {
// /**
// * @Description: 监测点指标告警月统计
// * @author: xuyang
// */
// void alarmMonth(LineParam lineParam);
/** /**
* @Description: 监测点指标告警月统计 * @Description: 监测点指标告警月统计
* @author: xuyang * @author: xuyang
*/ */
void alarmMonth(LineParam lineParam); void alarmMonth(CalculatedParam calculatedParam);
} }

View File

@@ -3,6 +3,7 @@ package com.njcn.prepare.harmonic.service.mysql.area;
import com.github.jeffreyning.mybatisplus.service.IMppService; import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO; import com.njcn.harmonic.pojo.dto.RMpMonitorAlarmCountMDTO;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.param.LineParam;
import java.util.List; import java.util.List;
@@ -27,15 +28,21 @@ public interface RMpTargetWarnDService extends IMppService<RMpTargetWarnDPO> {
*/ */
Integer queryHarmonicMeasurementAccrued(List<String> monitorIdList, String dataDate); Integer queryHarmonicMeasurementAccrued(List<String> monitorIdList, String dataDate);
// /**
// * @Description: 监测点指标告警日统计
// * @author: xuyang
// */
// void alarmDay(LineParam lineParam);
/** /**
* @Description: 监测点指标告警日统计 * @Description: 监测点指标告警日统计
* @author: xuyang * @author: xuyang
*/ */
void alarmDay(LineParam lineParam); void alarmDay(CalculatedParam calculatedParam);
/** // /**
* @Description: 监测点指标告警月统计 // * @Description: 监测点指标告警月统计
* @author: xuyang // * @author: xuyang
*/ // */
List<RMpMonitorAlarmCountMDTO> getDate(LineParam lineParam); // List<RMpMonitorAlarmCountMDTO> getDate(LineParam lineParam);
} }

View File

@@ -1,5 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.line; 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.dto.AlarmDetailDayDTO;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.harmonic.pojo.param.LineParam;
@@ -14,15 +15,17 @@ import java.util.List;
*/ */
public interface AlarmDetailService { public interface AlarmDetailService {
/**
* 监测点指标告警日统计
* @author qijian
* @date 2022/12/28
* @return
*/
//void alarmDetailAlarm(LineParam lineParam); //void alarmDetailAlarm(LineParam lineParam);
void targetDiff(LineParam lineParam); // void targetDiff(LineParam lineParam);
/**
* 监测点指标告警日统计
* @author xuyang
* @date 2023/11/13
* @return
*/
void targetDiff(CalculatedParam calculatedParam);
List<AlarmDetailDayDTO> getAvgDiffData(String time,List<String> list); List<AlarmDetailDayDTO> getAvgDiffData(String time,List<String> list);
} }

View File

@@ -1,6 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.line; package com.njcn.prepare.harmonic.service.mysql.line;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.bo.CalculatedParam;
/** /**
* @author xy * @author xy
@@ -9,9 +9,8 @@ public interface IRMpPartHarmonicDetailDService {
/** /**
* 计算监测点稳态指标超标明细日表1数据 * 计算监测点稳态指标超标明细日表1数据
* @param lineParam * @param calculatedParam
*/ */
void insertHarmonicDetailDayOne(LineParam lineParam); void insertHarmonicDetailDayOne(CalculatedParam calculatedParam);
} }

View File

@@ -1,13 +1,13 @@
package com.njcn.prepare.harmonic.service.mysql.line; 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 { public interface IRMpPartHarmonicDetailMService {
/** /**
* 计算监测点稳态指标超标明细月表1数据 * 计算监测点稳态指标超标明细月表1数据
* @param lineParam * @param calculatedParam
*/ */
void insertHarmonicDetailMonthOne(LineParam lineParam); void insertHarmonicDetailMonthOne(CalculatedParam calculatedParam);
} }

View File

@@ -1,6 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.line; package com.njcn.prepare.harmonic.service.mysql.line;
import com.njcn.prepare.harmonic.pojo.param.LineParam; import com.njcn.prepare.bo.CalculatedParam;
/** /**
* @author xy * @author xy
@@ -9,8 +9,8 @@ public interface IRMpSurplusHarmonicDetailDService {
/** /**
* 计算监测点稳态指标超标明细日表2数据 * 计算监测点稳态指标超标明细日表2数据
* @param lineParam * @param calculatedParam
*/ */
void insertHarmonicDetailDayTwo(LineParam lineParam); void insertHarmonicDetailDayTwo(CalculatedParam calculatedParam);
} }

View File

@@ -1,12 +1,12 @@
package com.njcn.prepare.harmonic.service.mysql.line; 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 { public interface IRMpSurplusHarmonicDetailMService {
/** /**
* 计算监测点稳态指标超标明细月表2数据 * 计算监测点稳态指标超标明细月表2数据
* @param lineParam * @param calculatedParam
*/ */
void insertHarmonicDetailMonthTwo(LineParam lineParam); void insertHarmonicDetailMonthTwo(CalculatedParam calculatedParam);
} }

View File

@@ -1,8 +1,13 @@
package com.njcn.prepare.harmonic.service.mysql.line; 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 { public interface IRMpVThdService {
void insertHarmonicVThdDay(LineParam lineParam); /**
* 计算谐波畸变率表
* @param calculatedParam
*/
void insertHarmonicVThdDay(CalculatedParam calculatedParam);
} }