瀏覽代碼

告警配置后端提交

tl 8 月之前
父節點
當前提交
5cf2d6da49

+ 64 - 0
cpp-admin/src/main/java/com/cpp/web/controller/alarm/AlarmConfController.java

@@ -0,0 +1,64 @@
+package com.cpp.web.controller.alarm;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cpp.common.core.domain.R;
+import com.cpp.web.domain.Alarm.AlarmConf;
+import com.cpp.web.service.alarm.AlarmConfService;
+import com.cpp.web.service.alarm.AlarmLog;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+/**
+ * 告警配置
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("alarmConf")
+public class AlarmConfController {
+    private final AlarmConfService alarmConfService;
+
+    @GetMapping("/pageByExpireTime")
+    public R pageByExpireTime(Long currentPage, Long pageSize, Long time) {
+        Page page = new Page(currentPage, pageSize);
+        page.setMaxLimit((long) -1);
+        return R.ok(alarmConfService.page(page, Wrappers.lambdaQuery(AlarmConf.class).select().ge(AlarmConf::getExpireTime,new Date(time))));
+    }
+
+
+    @PostMapping("/save")
+    public R save(@RequestBody AlarmConf alarmConf) {
+        Boolean b = alarmConfService.saveOrUpdate(alarmConf);
+        AlarmLog.getInstance().updateStationAlarmConfListMap(alarmConf,true);
+
+        return R.ok(b);
+    }
+
+
+    /**
+     * 修改
+     *
+     * @return R
+     */
+    @PostMapping("/updateById")
+    public R updateById(@RequestBody AlarmConf alarmConf) {
+        AlarmLog.getInstance().updateStationAlarmConfListMap(alarmConf,true);
+        return R.ok(alarmConfService.updateById(alarmConf));
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param
+     * @return R
+     */
+    @PostMapping("/remove")
+    public R removeById(@RequestBody AlarmConf alarmConf) {
+        AlarmLog.getInstance().updateStationAlarmConfListMap(alarmConf,false);
+        return R.ok(alarmConfService.removeById(alarmConf.getId()));
+    }
+
+
+}

+ 42 - 0
cpp-admin/src/main/java/com/cpp/web/domain/Alarm/AlarmConf.java

@@ -0,0 +1,42 @@
+package com.cpp.web.domain.Alarm;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.cpp.web.domain.BaseCppEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+
+/**
+ * 告警配置
+ *
+ * @author tl
+ * @date 2024-10-16 14:53
+ */
+@Data
+@TableName("cpp_alarm_conf")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "cpp_alarm_conf")
+public class AlarmConf extends BaseCppEntity {
+
+    /**
+     * 关键词
+     */
+    private String keyword;
+
+
+    /**
+     * 0包含,1等于
+     */
+    private Integer type;
+
+
+    /**
+     * 失效时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date expireTime;
+}

+ 17 - 0
cpp-admin/src/main/java/com/cpp/web/mapper/alarm/AlarmConfMapper.java

@@ -0,0 +1,17 @@
+package com.cpp.web.mapper.alarm;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cpp.web.domain.Alarm.AlarmConf;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 告警配置 mapper
+ *
+ * @author tl
+ * @date 2024-10-16 15:10
+ */
+@Mapper
+public interface AlarmConfMapper extends BaseMapper<AlarmConf> {
+
+}

+ 16 - 0
cpp-admin/src/main/java/com/cpp/web/service/alarm/AlarmConfService.java

@@ -0,0 +1,16 @@
+package com.cpp.web.service.alarm;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.cpp.web.domain.Alarm.AlarmConf;
+
+
+/**
+ * 告警配置业务层接口
+ *
+ * @author tl
+ * @date 2024-10-16 15:11
+ */
+public interface AlarmConfService extends IService<AlarmConf> {
+
+
+}

+ 44 - 4
cpp-admin/src/main/java/com/cpp/web/service/alarm/AlarmLog.java

@@ -4,16 +4,15 @@ import ch.qos.logback.classic.Logger;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cpp.common.utils.spring.SpringUtils;
 import com.cpp.web.domain.Alarm.AbnormalAlarm;
+import com.cpp.web.domain.Alarm.AlarmConf;
 import com.cpp.web.domain.enums.AlarmEnum;
 import com.cpp.web.domain.enums.DataSourcesEnum;
 import com.cpp.web.utils.LogUtil;
 import lombok.Data;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
 
 
 /**
@@ -30,6 +29,8 @@ public class AlarmLog {
         return LazyHolder.INSTANCE;
     }
 
+    private Map<String, List<AlarmConf>> stationAlarmConfListMap = new ConcurrentHashMap<>();
+
     private static class LazyHolder {
         private static final AlarmLog INSTANCE = new AlarmLog();
     }
@@ -44,11 +45,20 @@ public class AlarmLog {
      */
     public void info(DataSourcesEnum alarmSource, AlarmEnum alarmType, String info, String stationCode) {
 
+        List<AlarmConf> alarmConfs = stationAlarmConfListMap.get(stationCode);
+
+        Integer status = 0;
+
+        if (alarmConfs.stream().anyMatch(a -> a.getType().equals(1) ? a.getKeyword().equals(info) : info.contains(a.getKeyword()))) {
+            status = 1;
+        }
+
         String key = alarmSource.getCode() + "_" + alarmType.getCode() + "_" + info + "_" + stationCode;
         if (alarmDtoMap.containsKey(key)) {
             alarmDtoMap.get(key).setUpdateTime(new Date());
         } else {
             AbnormalAlarm abnormalAlarm = new AbnormalAlarm(alarmSource, alarmType, info, stationCode);
+            abnormalAlarm.setStatus(status);
             SpringUtils.getBean(AbnormalAlarmService.class).save(abnormalAlarm);
             AlarmDto alarmDto = new AlarmDto(abnormalAlarm, new Date());
             alarmDtoMap.put(key, alarmDto);
@@ -59,6 +69,9 @@ public class AlarmLog {
     }
 
 
+    /**
+     * 告警数据传输对象
+     */
     @Data
     public class AlarmDto {
         private AbnormalAlarm abnormalAlarm;
@@ -107,5 +120,32 @@ public class AlarmLog {
             String key = abnormalAlarm.getAlarmSource().getCode() + "_" + abnormalAlarm.getAlarmType().getCode() + "_" + abnormalAlarm.getMsg() + "_" + abnormalAlarm.getStationCode();
             alarmDtoMap.put(key, new AlarmDto(abnormalAlarm, new Date()));
         }
+        List<AlarmConf> alarmConfs = SpringUtils.getBean(AlarmConfService.class).list(Wrappers.lambdaQuery(AlarmConf.class).select().ge(AlarmConf::getExpireTime, new Date()));
+
+        stationAlarmConfListMap = alarmConfs.stream().collect(Collectors.groupingBy(AlarmConf::getStationCode, Collectors.toList()));
+    }
+
+
+    public void updateStationAlarmConfListMap(AlarmConf alarmConf, Boolean b) {
+
+        if (b) {
+            //更新
+            if (stationAlarmConfListMap.containsKey(alarmConf.getStationCode())){
+                List<AlarmConf> list = stationAlarmConfListMap.get(alarmConf.getStationCode());
+                list.removeIf(s->s.getId().equals(alarmConf.getId()));
+                list.add(alarmConf);
+            }else {
+                List<AlarmConf> list = new ArrayList<>();
+                list.add(alarmConf);
+                stationAlarmConfListMap.put(alarmConf.getStationCode(),list);
+            }
+
+        } else {
+            //删除
+            if (stationAlarmConfListMap.containsKey(alarmConf.getStationCode())){
+                List<AlarmConf> list = stationAlarmConfListMap.get(alarmConf.getStationCode());
+                list.removeIf(s->s.getId().equals(alarmConf.getId()));
+            }
+        }
     }
 }

+ 22 - 0
cpp-admin/src/main/java/com/cpp/web/service/alarm/impl/AlarmConfServiceImpl.java

@@ -0,0 +1,22 @@
+package com.cpp.web.service.alarm.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.cpp.web.domain.Alarm.AlarmConf;
+import com.cpp.web.mapper.alarm.AlarmConfMapper;
+import com.cpp.web.service.alarm.AlarmConfService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 告警配置业务层实现类
+ *
+ * @author tl
+ * @date 2024-10-16 15:11
+ */
+@AllArgsConstructor
+@Slf4j
+@Service
+public class AlarmConfServiceImpl extends ServiceImpl<AlarmConfMapper, AlarmConf> implements AlarmConfService {
+
+}

+ 10 - 1
cpp-admin/src/main/java/com/cpp/web/utils/ZipUtil.java

@@ -13,9 +13,9 @@ public class ZipUtil {
 
 
     /**
+     * 压缩
      *
      * @param path
-     * @param file
      * @return
      */
     public static String zip(String path, String zipPath) {
@@ -48,6 +48,15 @@ public class ZipUtil {
         return file.delete();
     }
 
+    /**
+     * 目录转为zip包
+     *
+     * @param srcDir
+     * @param out
+     * @param KeepDirStructure
+     * @return
+     * @throws RuntimeException
+     */
     public static Boolean toZip(String srcDir, OutputStream out, boolean KeepDirStructure) throws RuntimeException {
 
         long start = System.currentTimeMillis();

+ 2 - 2
cpp-ui/src/views/largeScreen/index.vue

@@ -125,7 +125,7 @@
               label="报警描述">
             </el-table-column>\
             <el-table-column
-              prop="alarmSource" align="center" :formatter="formatAlarmSource"
+              prop="alarmType" align="center" :formatter="formatAlarmSource"
               label="报警来源">
             </el-table-column>
             <el-table-column
@@ -367,7 +367,7 @@ export default {
     formatAlarmSource(row) {
       let name= '未知场站名称'
       this.alarmEnum.forEach(s=>{
-        if(row.alarmSource === s.value){
+        if(row.alarmType === s.value){
           name = s.label
           return name
         }