Ver código fonte

精益触发告警逻辑优化和自测004

qiangxuan 8 meses atrás
pai
commit
372cb2b642

+ 1 - 1
jeecg-module-gather/src/main/java/org/jeecg/modules/fpgJob/LeanEventTriggerWarnTask.java

@@ -51,7 +51,7 @@ public class LeanEventTriggerWarnTask {
     @Autowired
     ILeanEventWarnInfoService leanEventWarnInfoService;
 
-//    @Scheduled(cron = "0/10 * * * * *")
+//    @Scheduled(cron = "0 */3 * * * *")
     public void leanEventTriggerWarnHandle(){
         LambdaQueryWrapper<FpgGatherData> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(FpgGatherData::getEventWarnState, "0").isNotNull(FpgGatherData::getDeviceInformationId).orderByDesc(FpgGatherData::getCreateTime);

+ 62 - 28
jeecg-module-gather/src/main/java/org/jeecg/modules/leanEventWarn/service/impl/LeanEventWarnInfoServiceImpl.java

@@ -19,11 +19,13 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -65,7 +67,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("HOST_OPEN状态下,辅设备电流小于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
     }
 
@@ -83,7 +86,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("HOST_CLOSE状态下,辅设备电流大于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
     }
 
@@ -96,13 +100,13 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         leanEventWarnInfo.setCreateTime(new Date());
         PeaksAndValleysTimeConfigParam peaksAndValleysTimeConfigParam = peaksAndValleysTimeConfigService.get();
         // 获取尖、峰、平、谷配置信息并拼接开始时间、结束时间
-        List<PeaksAndValleysTimeConfig> topsNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "tops");
+        List<PeaksAndValleysTimeConfig> topsNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "tops", fpgGatherData.getCreateTime());
 
-        List<PeaksAndValleysTimeConfig> peaksNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "peaks");
+        List<PeaksAndValleysTimeConfig> peaksNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "peaks", fpgGatherData.getCreateTime());
 
-        List<PeaksAndValleysTimeConfig> flatNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "flat");
+        List<PeaksAndValleysTimeConfig> flatNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "flat", fpgGatherData.getCreateTime());
 
-        List<PeaksAndValleysTimeConfig> valleysNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "valleys");
+        List<PeaksAndValleysTimeConfig> valleysNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "valleys", fpgGatherData.getCreateTime());
 
         BigDecimal limitVoltage = new BigDecimal("5");
         // 根据采集到的数据 创建时间,跟峰平谷配置的时间,判断属于哪个时段(尖、峰、平、谷)
@@ -115,7 +119,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("FPG_OPEN状态下,尖时段采集到的数据电流小于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
         boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (peaksIsExit && fpgGatherData.getRunCurrent().compareTo(limitVoltage) < 0){
@@ -123,7 +128,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("FPG_OPEN状态下,峰时段采集到的数据电流小于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
         boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (flatIsExit && fpgGatherData.getRunCurrent().compareTo(limitVoltage) < 0){
@@ -131,7 +137,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("FPG_OPEN状态下,平时段采集到的数据电流小于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
         boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (valleysIsExit && fpgGatherData.getRunCurrent().compareTo(limitVoltage) < 0){
@@ -139,7 +146,28 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("FPG_OPEN状态下,谷时段采集到的数据电流小于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
+        }
+    }
+
+    /**
+     * 先根据设备区域ID、设备ID、采集点ID查询告警信息是否存在,
+     * 存在:更新原来的告警信息的更新时间
+     * 不存在:保存告警信息
+     * @param fpgGatherData
+     * @param leanEventWarnInfo
+     */
+    private void saveOrUpdateLeanEventWarnInfo(FpgGatherData fpgGatherData, LeanEventWarnInfo leanEventWarnInfo) {
+        LambdaQueryWrapper<LeanEventWarnInfo> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(LeanEventWarnInfo::getDeviceRegionId, fpgGatherData.getDeviceRegionId()).eq(LeanEventWarnInfo::getDevicePointId, fpgGatherData.getDevicePointId()).
+                eq(LeanEventWarnInfo::getDeviceInformationId, fpgGatherData.getDeviceInformationId());
+        LeanEventWarnInfo leanEventWarnInfoObj = baseMapper.selectOne(wrapper);
+        if (leanEventWarnInfoObj == null){
             baseMapper.insert(leanEventWarnInfo);
+        }else {
+            leanEventWarnInfoObj.setUpdateTime(new Date());
+            baseMapper.updateById(leanEventWarnInfoObj);
         }
     }
 
@@ -153,13 +181,13 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         PeaksAndValleysTimeConfigParam peaksAndValleysTimeConfigParam = peaksAndValleysTimeConfigService.get();
 
         // 获取尖、峰、平、谷配置信息并拼接开始时间、结束时间
-        List<PeaksAndValleysTimeConfig> topsNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "tops");
+        List<PeaksAndValleysTimeConfig> topsNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "tops", fpgGatherData.getCreateTime());
 
-        List<PeaksAndValleysTimeConfig> peaksNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "peaks");
+        List<PeaksAndValleysTimeConfig> peaksNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "peaks", fpgGatherData.getCreateTime());
 
-        List<PeaksAndValleysTimeConfig> flatNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "flat");
+        List<PeaksAndValleysTimeConfig> flatNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "flat", fpgGatherData.getCreateTime());
 
-        List<PeaksAndValleysTimeConfig> valleysNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "valleys");
+        List<PeaksAndValleysTimeConfig> valleysNewPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, "valleys", fpgGatherData.getCreateTime());
 
         // 根据采集到的数据 创建时间,跟峰平谷配置的时间,判断属于哪个时段(尖、峰、平、谷)
         BigDecimal limitVoltage = new BigDecimal("5");
@@ -172,7 +200,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("FPG_CLOSE状态下,采集到的数据电流大于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
         boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (peaksIsExit && fpgGatherData.getRunCurrent().compareTo(limitVoltage) > 0){
@@ -180,7 +209,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("FPG_CLOSE状态下,采集到的数据电流大于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
         boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (flatIsExit && fpgGatherData.getRunCurrent().compareTo(limitVoltage) > 0){
@@ -188,7 +218,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("FPG_CLOSE状态下,采集到的数据电流大于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
         boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (valleysIsExit && fpgGatherData.getRunCurrent().compareTo(limitVoltage) > 0){
@@ -196,7 +227,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             leanEventWarnInfo.setDeviceWarnInfo("FPG_CLOSE状态下,采集到的数据电流大于5A,触发精益事件告警!");
             leanEventWarnInfo.setWarnType("1");
             leanEventWarnInfo.setDeviceWarnLevel("0");
-            baseMapper.insert(leanEventWarnInfo);
+            // 更新或者新增逻辑处理
+            saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
     }
 
@@ -223,7 +255,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
                 leanEventWarnInfo.setDeviceWarnInfo("事件类型为FPG_ING_TIME,累计运行时长超过限制时长,触发精益事件告警!");
                 leanEventWarnInfo.setWarnType("1");
                 leanEventWarnInfo.setDeviceWarnLevel("0");
-                baseMapper.insert(leanEventWarnInfo);
+                // 更新或者新增逻辑处理
+                saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
             }
         }
 
@@ -252,7 +285,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
                 leanEventWarnInfo.setDeviceWarnInfo("事件类型为FPG_POWER_LIMIT,累计功率超过功率限制,触发精益事件告警!");
                 leanEventWarnInfo.setWarnType("1");
                 leanEventWarnInfo.setDeviceWarnLevel("0");
-                baseMapper.insert(leanEventWarnInfo);
+                // 更新或者新增逻辑处理
+                saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
             }
         }
 
@@ -265,14 +299,14 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
      * @param type
      * @return
      */
-    public List<PeaksAndValleysTimeConfig> getPeaksAndValleysTimeConfigByType(PeaksAndValleysTimeConfigParam peaksAndValleysTimeConfigParam, String type){
+    public List<PeaksAndValleysTimeConfig> getPeaksAndValleysTimeConfigByType(PeaksAndValleysTimeConfigParam peaksAndValleysTimeConfigParam, String type, Date createTime){
         // 定义日期格式
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         if ("tops".equals(type)){
             List<PeaksAndValleysTimeConfig> topsPeaksAndValleysTimeConfigList = peaksAndValleysTimeConfigParam.getTops();
             List<PeaksAndValleysTimeConfig> topsNewPeaksAndValleysTimeConfigList = topsPeaksAndValleysTimeConfigList.stream().map(t->{
-                String newStartTime = sdf.format(new Date())+ " " + t.getStartTime();
-                String newEndTime = sdf.format(new Date())+ " " + t.getEndTime();
+                String newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
+                String newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
                 t.setStartTime(newStartTime);
                 t.setEndTime(newEndTime);
                 return t;
@@ -281,8 +315,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         }else if ("peaks".equals(type)){
             List<PeaksAndValleysTimeConfig> peaksPeaksAndValleysTimeConfigList = peaksAndValleysTimeConfigParam.getPeaks();
             List<PeaksAndValleysTimeConfig> peaksNewPeaksAndValleysTimeConfigList = peaksPeaksAndValleysTimeConfigList.stream().map(t->{
-                String newStartTime = sdf.format(new Date())+ " " + t.getStartTime();
-                String newEndTime = sdf.format(new Date())+ " " + t.getEndTime();
+                String newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
+                String newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
                 t.setStartTime(newStartTime);
                 t.setEndTime(newEndTime);
                 return t;
@@ -291,8 +325,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         }else if ("flat".equals(type)){
             List<PeaksAndValleysTimeConfig> flatPeaksAndValleysTimeConfigList = peaksAndValleysTimeConfigParam.getFlat();
             List<PeaksAndValleysTimeConfig> flatNewPeaksAndValleysTimeConfigList = flatPeaksAndValleysTimeConfigList.stream().map(t->{
-                String newStartTime = sdf.format(new Date())+ " " + t.getStartTime();
-                String newEndTime = sdf.format(new Date())+ " " + t.getEndTime();
+                String newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
+                String newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
                 t.setStartTime(newStartTime);
                 t.setEndTime(newEndTime);
                 return t;
@@ -301,8 +335,8 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         }else if ("valleys".equals(type)){
             List<PeaksAndValleysTimeConfig> valleysPeaksAndValleysTimeConfigList = peaksAndValleysTimeConfigParam.getValleys();
             List<PeaksAndValleysTimeConfig> valleysNewPeaksAndValleysTimeConfigList = valleysPeaksAndValleysTimeConfigList.stream().map(t->{
-                String newStartTime = sdf.format(new Date())+ " " + t.getStartTime();
-                String newEndTime = sdf.format(new Date())+ " " + t.getEndTime();
+                String newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
+                String newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
                 t.setStartTime(newStartTime);
                 t.setEndTime(newEndTime);
                 return t;