diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/dto/AlarmDetailDayDTO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/dto/AlarmDetailDayDTO.java
new file mode 100644
index 000000000..76eaa7703
--- /dev/null
+++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/dto/AlarmDetailDayDTO.java
@@ -0,0 +1,30 @@
+package com.njcn.prepare.harmonic.pojo.dto;
+
+import lombok.Data;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/5/8 18:36
+ */
+@Data
+public class AlarmDetailDayDTO {
+
+ private String lineId;
+
+ private Double vlDev;
+
+ private Double freqDev;
+
+ private Double vUnbalance;
+
+ private Double vHarmonic;
+
+ private Double plt;
+
+ private Double sagTimes;
+
+ private Double interruptTimes;
+}
diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/utils/PublicUtil.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/utils/PublicUtil.java
index c6c2f6f6e..570fe9670 100644
--- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/utils/PublicUtil.java
+++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/utils/PublicUtil.java
@@ -155,6 +155,15 @@ public class PublicUtil {
return localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
+ /**
+ * 获取去年今日
+ */
+ public static String getLastYearDay(String time) {
+ LocalDate localDate = LocalDate.parse(time).minusYears(1);
+ return localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ }
+
+
/**
* @Description: 根据电压字典获取电压等级
* @Param: [id, dictDataList]
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/RMpTargetWarnDController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/RMpTargetWarnDController.java
new file mode 100644
index 000000000..f396ad81e
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/RMpTargetWarnDController.java
@@ -0,0 +1,57 @@
+package com.njcn.prepare.harmonic.controller.line;
+
+
+import com.njcn.common.pojo.annotation.OperateInfo;
+import com.njcn.common.pojo.constant.OperateType;
+import com.njcn.common.pojo.enums.common.LogEnum;
+import com.njcn.common.pojo.enums.response.CommonResponseEnum;
+import com.njcn.common.pojo.response.HttpResult;
+import com.njcn.common.utils.HttpResultUtil;
+import com.njcn.prepare.harmonic.pojo.param.LineParam;
+import com.njcn.prepare.harmonic.service.mysql.line.IRMpTargetWarnDService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+import com.njcn.web.controller.BaseController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author xuyang
+ * @since 2023-05-08
+ */
+@Validated
+@Slf4j
+@RestController
+@RequestMapping("/alarmDetailData")
+@Api(tags = "监测点指标告警明细")
+@AllArgsConstructor
+public class RMpTargetWarnDController extends BaseController {
+
+ private final IRMpTargetWarnDService irMpTargetWarnDService;
+
+ /**
+ * @author xuyang
+ */
+ @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
+ @PostMapping("/alarmDay")
+ @ApiOperation("监测点指标告警日统计")
+ @ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
+ public HttpResult alarmDay(@RequestBody @Validated LineParam lineParam) {
+ String methodDescribe = getMethodDescribe("alarmDay");
+ irMpTargetWarnDService.alarmDay(lineParam);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
+ }
+
+}
+
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/RStatDataVDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/RStatDataVDMapper.java
index 380587d8e..8815fb3a2 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/RStatDataVDMapper.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/RStatDataVDMapper.java
@@ -2,6 +2,24 @@ package com.njcn.prepare.harmonic.mapper.mysql.day;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
+import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
+import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
public interface RStatDataVDMapper extends MppBaseMapper {
+
+ /**
+ * 获取本年的所有(监测点日报表)稳态指标最大值(有的取最大值,有的取95概率大值)
+ * @param time 时间
+ * @return 集合
+ */
+ List getDayData(@Param("time") String time);
+
+ /**
+ * 获取本年的所有(监测点日报表)稳态指标最大值(有的取最大值,有的取95概率大值)求一个平均值
+ */
+ List getAvgDayData(@Param("startTime") String time, @Param("endTime") String endTime);
+
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/mapping/RStatDataVDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/mapping/RStatDataVDMapper.xml
index 2a953176c..a78448396 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/mapping/RStatDataVDMapper.xml
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/day/mapping/RStatDataVDMapper.xml
@@ -2,4 +2,162 @@
+
+
+
\ No newline at end of file
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/AlarmMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/AlarmMapper.java
index 1e0601c29..2676c693b 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/AlarmMapper.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/AlarmMapper.java
@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.mapper.mysql.line;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO;
import org.apache.ibatis.annotations.Param;
@@ -12,11 +13,6 @@ import java.util.List;
*/
public interface AlarmMapper extends MppBaseMapper {
- /**
- * 获取监测点每日指标数据
- * @param time 时间
- * @return 集合
- */
- List getDayData(@Param("time") String time);
+ List getAvgDiffData(@Param("startTime") String startTime, @Param("endTime") String endTime);
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/AlarmMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/AlarmMapper.xml
index a47f9cf11..77b3bdfb6 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/AlarmMapper.xml
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/AlarmMapper.xml
@@ -2,79 +2,19 @@
-
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/AlarmDetailServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/AlarmDetailServiceImpl.java
index a371ab6c0..8f254e23a 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/AlarmDetailServiceImpl.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/AlarmDetailServiceImpl.java
@@ -10,7 +10,9 @@ import com.njcn.device.pms.pojo.po.DistributionMonitor;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.*;
+import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.AlarmDetailService;
@@ -23,10 +25,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
-import java.lang.reflect.Array;
import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -61,6 +60,8 @@ public class AlarmDetailServiceImpl extends MppServiceImpl getAvgDiffData(LineParam lineParam) {
+ String startTime = lineParam.getDataDate();
+ String endTime = PublicUtil.getLastYearDay(startTime);
+ //计算本年的rm值
+ return this.baseMapper.getAvgDiffData(startTime,endTime);
+ }
+
/**
* 生成指标差值日统计
*/
public void diffData(String startTime, String endTime) {
- List localData = this.baseMapper.getDayData(startTime);
- List yesterdayData = this.baseMapper.getDayData(endTime);
+ List localData = rStatDataVDMapper.getDayData(startTime);
+ List yesterdayData = rStatDataVDMapper.getDayData(endTime);
if (!CollectionUtils.isEmpty(localData) && !CollectionUtils.isEmpty(yesterdayData)){
//取两个集合的交集,做算法处理取绝对值
List intersectionList = localData.stream().map(map->yesterdayData.stream().filter(m->Objects.equals(m.getLineId(),map.getLineId())).findFirst().map(m->{
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpTargetWarnDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpTargetWarnDServiceImpl.java
new file mode 100644
index 000000000..45fb1ba5c
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpTargetWarnDServiceImpl.java
@@ -0,0 +1,76 @@
+package com.njcn.prepare.harmonic.service.mysql.Impl.line;
+
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
+import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper;
+import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
+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.IRMpTargetWarnDService;
+import com.njcn.prepare.harmonic.utils.PublicUtil;
+import lombok.AllArgsConstructor;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author xuyang
+ * @since 2023-05-08
+ */
+@Service
+@AllArgsConstructor
+public class RMpTargetWarnDServiceImpl extends MppServiceImpl implements IRMpTargetWarnDService {
+
+ private final AlarmDetailService alarmDetailService;
+
+ private final RStatDataVDMapper rStatDataVDMapper;
+
+ @Override
+ public void alarmDay(LineParam lineParam) {
+ //本年的rm值
+ List rmList = alarmDetailService.getAvgDiffData(lineParam);
+ //本年的CL值
+ List clList = rStatDataVDMapper.getAvgDayData(lineParam.getDataDate(), PublicUtil.getLastYearDay(lineParam.getDataDate()));
+ //本年的RL值
+ List rlList = rmList.stream().map(item->{
+ AlarmDetailDayDTO alarmDetailDayDTO = new AlarmDetailDayDTO();
+ alarmDetailDayDTO.setLineId(item.getLineId());
+ alarmDetailDayDTO.setVlDev(item.getVlDev()*3.3);
+ alarmDetailDayDTO.setFreqDev(item.getFreqDev()*3.3);
+ alarmDetailDayDTO.setVUnbalance(item.getVUnbalance()*3.3);
+ alarmDetailDayDTO.setVHarmonic(item.getVHarmonic()*3.3);
+ alarmDetailDayDTO.setSagTimes(item.getSagTimes()*3.3);
+ alarmDetailDayDTO.setInterruptTimes(item.getInterruptTimes()*3.3);
+ return alarmDetailDayDTO;
+ }).collect(Collectors.toList());
+ //本年的UCL值
+ List uclList = rmList.stream().map(map->clList.stream().filter(m-> Objects.equals(m.getLineId(),map.getLineId())).findFirst().map(m->{
+ AlarmDetailDayDTO alarmDetailDayDTO = new AlarmDetailDayDTO();
+ alarmDetailDayDTO.setLineId(map.getLineId());
+ alarmDetailDayDTO.setVlDev(m.getVlDev()+map.getVlDev()*3);
+ alarmDetailDayDTO.setFreqDev(m.getFreqDev()+map.getFreqDev()*3);
+ alarmDetailDayDTO.setVUnbalance(m.getVUnbalance()+map.getVUnbalance()*3);
+ alarmDetailDayDTO.setVHarmonic(m.getVHarmonic()+map.getVHarmonic()*3);
+ alarmDetailDayDTO.setSagTimes(m.getSagTimes()+map.getSagTimes()*3);
+ alarmDetailDayDTO.setInterruptTimes(m.getInterruptTimes()+map.getInterruptTimes()*3);
+ return alarmDetailDayDTO;
+ }).orElse(null)).filter(Objects::nonNull).collect(Collectors.toList());
+
+
+
+ }
+
+ @Override
+ public void alarmMonth(LineParam lineParam) {
+
+ }
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/AlarmDetailService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/AlarmDetailService.java
index cdb9d19d0..cafc269fa 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/AlarmDetailService.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/AlarmDetailService.java
@@ -1,7 +1,10 @@
package com.njcn.prepare.harmonic.service.mysql.line;
+import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
+import java.util.List;
+
/**
* 监测点指标告警明细
*
@@ -20,4 +23,6 @@ public interface AlarmDetailService {
boolean alarmDetailAlarm(LineParam lineParam);
void targetDiff(LineParam lineParam);
+
+ List getAvgDiffData(LineParam lineParam);
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpTargetWarnDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpTargetWarnDService.java
new file mode 100644
index 000000000..ae5b4b080
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/IRMpTargetWarnDService.java
@@ -0,0 +1,19 @@
+package com.njcn.prepare.harmonic.service.mysql.line;
+
+import com.njcn.prepare.harmonic.pojo.param.LineParam;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author xuyang
+ * @since 2023-05-08
+ */
+public interface IRMpTargetWarnDService {
+
+ void alarmDay(LineParam lineParam);
+
+ void alarmMonth(LineParam lineParam);
+
+}