Browse Source

1.获取最新的一个报警流水,规避河北互斥点,流水中反复显示触发解除问题(互斥点河北只要触发)
2.alarmuser id由long类型改为string,规避前端精度丢失问题
3.风机报警规则表 warning2 中id 生成规则由原来的 风机型号,场站简称拼接后自增,改为雪花算法

wanghs 2 years ago
parent
commit
7866f7704d

+ 1 - 1
transport/redis2taos/build.gradle

@@ -24,7 +24,7 @@ dependencies {
     implementation ("mysql:mysql-connector-java:$mysqlConnectorVersion")
 
     implementation("$bootGroup:spring-boot-starter-test")
-    implementation 'com.alibaba:druid:$alibabaDruidVersion'
+    implementation ("com.alibaba:druid:$alibabaDruidVersion")
     implementation("$bootGroup:spring-boot-starter-web")
     //compile("$bootGroup:spring-boot-starter-session")
     implementation("$bootGroup:spring-boot-starter-websocket")

+ 3 - 2
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/controller/Alertrule2Controller.java

@@ -98,10 +98,11 @@ public class Alertrule2Controller {
             @RequestParam(value = "station", required = false) String station,
             @RequestParam(value = "modelId", required = false) String modelId,
             @RequestParam(value = "rank", required = false) String rank,
-            @RequestParam(value = "category", required = false) String category
+            @RequestParam(value = "category", required = false) String category,
+            @RequestParam(value = "enabled",required = false) String enabled
     ) {
         Page<Alertrule2> page = new Page(pageNum, pageSize);
-        IPage<Alertrule2> pageResult = alertrule2Service.pageQueryAll(page, name,station,modelId,rank,category);
+        IPage<Alertrule2> pageResult = alertrule2Service.pageQueryAll(page, name,station,modelId,rank,category,enabled);
 
         return pageResult;
     }

+ 1 - 1
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/entity/AlarmUser.java

@@ -21,7 +21,7 @@ public class AlarmUser implements Serializable {
 
     @JSONField(serializeUsing = ToStringSerializer.class)
     @TableId("ID")
-    private long Id;
+    private String Id;
     @TableField("USERNAME")
     private String userName;
     @TableField("PASSWORD")

+ 16 - 0
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/mapper/AlarmHisotryMapper.java

@@ -66,4 +66,20 @@ public interface AlarmHisotryMapper extends BaseMapper<AlarmHistory> {
     void timedCreatAlerttimeIndex(@Param("stationname")String stationname,@Param("yearmonth")String yearmonth,@Param("tablespace") String ts);
     void timedCreatSnapidIndex(@Param("stationname")String stationname,@Param("yearmonth")String yearmonth,@Param("tablespace") String ts);
     int isHasTable(@Param("stationname")String stationname,@Param("yearmonth")String yearmonth);
+
+
+    /**
+     * @author Wanghs
+     * @description 获取最新的一个报警流水
+     * @date 2022/7/5
+     * @param
+     * @param tbName 历史表名
+     * @param snapId 快照id
+     * @param messageType  流水状态,1为触发,3为解除
+     * @return
+     * @return com.gyee.wisdom.alarm.sharding.entity.AlarmHistory
+     **/
+
+
+    AlarmHistory getlatestAlarmHistory(@Param("tbName") String  tbName,@Param("snapId") Long snapId,@Param("messageType")String messageType,@Param("startTime")Date startTime,@Param("endTime")Date endTime);
 }

+ 2 - 1
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/mapper/Alertrule2Mapper.java

@@ -22,7 +22,8 @@ public interface Alertrule2Mapper extends BaseMapper<Alertrule2> {
                                    @Param("station") String station,
                                    @Param("modelId")String modelId,
                                    @Param("rank")String rank,
-                                   @Param("category")String category);
+                                   @Param("category")String category,
+                                   @Param("enabled") String enabled);
 
     Integer getMaxEdnaValue();
 

+ 72 - 13
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/service/AlarmSnapService.java

@@ -18,15 +18,21 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
 @Slf4j
 public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
 
+    @Value("${syz_kg_relieve_show:true}")
+    private boolean syz_kg_relieve_show;
+
     @Autowired
     private AlarmSnapMapper alarmSnapMapper;
 
@@ -79,7 +85,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
                                          Integer isopened,
                                          String keyword,
                                          String startTime,
-                                         String endTime) throws Exception{
+                                         String endTime) throws Exception {
         if (keyword != null && keyword.trim() != "")
             keyword = "%" + keyword.trim() + "%";
         Date dtStart = null;
@@ -94,7 +100,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
 
     }
 
-    public void saveAlarmSnap(AlarmSnap alarmSnap) throws Exception{
+    public void saveAlarmSnap(AlarmSnap alarmSnap) throws Exception {
         if (alarmSnap.getId() == null || alarmSnap.getId() <= 0) {
             alarmSnap.setId(SnowflakeGenerator.generateId());
             alarmSnapMapper.insert(alarmSnap);
@@ -123,7 +129,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
         }
     }
 
-    public int saveAlarmSnaps(List<AlarmSnap> alarmSnaps) throws Exception{
+    public int saveAlarmSnaps(List<AlarmSnap> alarmSnaps) throws Exception {
         if (alarmSnaps == null || alarmSnaps.size() == 0)
             return 0;
         List<AlarmSnap> insertSnaps = new ArrayList<>();
@@ -170,7 +176,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
         if (insertSnaps.size() > 0)
             alarmSnapMapper.batchInsert(insertSnaps);
 
-        if (updateSnaps.size() > 0){
+        if (updateSnaps.size() > 0) {
             alarmSnapMapper.batchUpdate(updateSnaps);
 
         }
@@ -220,7 +226,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
             }
         }
 
-        if (insertFaultSnaps.size() > 0){
+        if (insertFaultSnaps.size() > 0) {
             //insertFaultSnaps = checkGroupSnap(insertFaultSnaps);
             for (Iterator it = insertFaultSnaps.iterator(); it.hasNext(); ) {
                 FaultSnap snap = (FaultSnap) it.next();
@@ -231,7 +237,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
             }
             faultSnapMapper.batchInsert(insertFaultSnaps);
             for (FaultSnap snap : insertFaultSnaps) {
-                FaultHistory fh =  createFaultHistory(snap);
+                FaultHistory fh = createFaultHistory(snap);
 
                 //region 如果报警未升压站类报警,则根据alarmSnap 中的dataInfo(测点值0,或1)
                 if (snap.getCategory1().contains("SYZ")) {
@@ -255,11 +261,11 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
         }
 
 
-        if (updateFaultSnaps.size() > 0){
+        if (updateFaultSnaps.size() > 0) {
             //updateFaultSnaps = checkGroupSnap(updateFaultSnaps);
             faultSnapMapper.batchUpdate(updateFaultSnaps);
             for (FaultSnap snap : updateFaultSnaps) {
-                FaultHistory fh =  createFaultHistory(snap);
+                FaultHistory fh = createFaultHistory(snap);
                 //region 如果报警未升压站类报警,则根据alarmSnap 中的dataInfo(测点值0,或1)
                 if (snap.getCategory1().contains("SYZ")) {
                     if (snap.getAlertText().contains("地刀") || snap.getAlertText().contains("刀闸") || snap.getAlertText().contains("分位") || snap.getAlertText().contains("合位") ||
@@ -362,7 +368,7 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
 
     }
 
-    private void testSaveSnap() throws Exception{
+    private void testSaveSnap() throws Exception {
         List<AlarmSnap> lst = new ArrayList<>();
         for (int i = 1; i < 1011; i++) {
             AlarmSnap snap = alarmSnapMapper.selectById(i);
@@ -398,12 +404,65 @@ public class AlarmSnapService extends ServiceImpl<AlarmSnapMapper, AlarmSnap> {
         if (num > 2000)
             num = 2000;
 
-        return alarmSnapMapper.getTopNumAlarm(category1, num);
+        List<AlarmSnap> topNumAlarm = alarmSnapMapper.getTopNumAlarm(category1, num);
+
+        if (!syz_kg_relieve_show) {
+            ///region  数据处理 场景描述:对于河北升压站中开关类报警,业主要求首页只展示合位触发,开位触发等流水,不展示合位解除,开位解除等流水
+            if (category1.equals("SYZ")) {
+                //如果查询内容为升压站,筛选出报警内容包含字符串"开关",且包含字符串"合位"或"开位" (即筛选出开关类互斥点报警快照),且已经解除了的报警
+                List<AlarmSnap> collect = topNumAlarm.stream().filter(s -> s.getAlertText().contains("开关") && (s.getAlertText().contains("开位") || s.getAlertText().contains("合位") || s.getAlertText().contains("分位")) && s.getIsOpened() == 0).collect(Collectors.toList());
+                if (collect.size() > 0) {
+                    List<AlarmHistory> list = new ArrayList<>();
+
+                    //以当前时间向前推14天
+                    Date dtEnd = new Date();
+                    Date dtStart = DateUtil.addDays(dtEnd, -14);
+                    List<String> yearMonthList = tableNameService.getYearAndMonthList(dtStart, dtEnd);
+
+
+                    for (int i = 0; i < collect.size(); i++) {
+                        if (yearMonthList.size() > 1) {
+                            {
+                                for (int j = 0; j < yearMonthList.size(); j++) {
+                                    //获取表名  alarmhistory_mhs_02
+                                    String tbName = "ALARMHISTORY_" + collect.get(i).getStationId().split("_")[0] + "_" + yearMonthList.get(j);
+                                    AlarmHistory alarmHistory = alarmHisotryMapper.getlatestAlarmHistory(tbName, collect.get(i).getId(), "3", dtStart, dtEnd);
+                                    //如果从当前月已经查到数据,则结束循环查询
+                                    if (alarmHistory != null) {
+                                        list.add(alarmHistory);
+                                        break;
+                                    }
+                                }
+                            }
+
+                        } else {
+                            String tbName = "ALARMHISTORY_" + collect.get(i).getStationId().split("_")[0] + "_" + yearMonthList.get(0);
+                            AlarmHistory alarmHistory = alarmHisotryMapper.getlatestAlarmHistory(tbName, collect.get(i).getId(), "3", dtStart, dtEnd);
+                            if (alarmHistory != null) {
+                                list.add(alarmHistory);
+                            }
+                        }
+                    }
+                    for (AlarmHistory history :
+                            list) {
+                        Optional<AlarmSnap> first = topNumAlarm.stream().filter(s -> s.getId().equals(history.getSnapId())).findFirst();
+                        if (first.isPresent()) {
+                            first.get().setLastUpdateTime(history.getAlertTime());
+                            first.get().setIsOpened(1);
+                        }
+                    }
+                }
+            }
+            ///endregion
+        }
+
+        return topNumAlarm;
+
     }
 
-    public List<AlarmSnap>  getRecentAlarm(String category1,
-                                           Date lastUpdateTime) {
-        return  alarmSnapMapper.getRecentAlarm(category1, lastUpdateTime);
+    public List<AlarmSnap> getRecentAlarm(String category1,
+                                          Date lastUpdateTime) {
+        return alarmSnapMapper.getRecentAlarm(category1, lastUpdateTime);
     }
 
 }

+ 2 - 2
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/service/AlarmUserService.java

@@ -24,9 +24,9 @@ public class AlarmUserService {
     private AlarmUserMapper alarmUserMapper;
 
     public int registerUser(AlarmUser alarmUser) {
-        if(alarmUser.getId()<=0){
+        if(StringUtil.isBlank(alarmUser.getId())){
             long newId= SnowflakeGenerator.generateId();
-            alarmUser.setId(newId);
+            alarmUser.setId(String.valueOf(newId));
         }
 
         String password = alarmUser.getPassWord();

+ 2 - 2
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/service/Alertrule2Service.java

@@ -93,8 +93,8 @@ public class Alertrule2Service extends ServiceImpl<Alertrule2Mapper, Alertrule2>
         return alertrule2Mapper.deleteById(alertrule2.getId());
     }
 
-    public IPage<Alertrule2> pageQueryAll(Page page, String name,String station,String modelId,String rank,String category) {
-        return alertrule2Mapper.pageQueryAll(page, name,station,modelId,rank,category);
+    public IPage<Alertrule2> pageQueryAll(Page page, String name,String station,String modelId,String rank,String category,String enabled) {
+        return alertrule2Mapper.pageQueryAll(page, name,station,modelId,rank,category,enabled);
     }
 
     //根据场站风机型号生成最新自定义报警规则ID

+ 8 - 20
warning-web/src/main/java/com/gyee/wisdom/alarm/sharding/service/Warning2Service.java

@@ -26,38 +26,26 @@ public class Warning2Service extends ServiceImpl<Warning2Mapper, Warning2> {
     @Autowired
     private RuleUpdateEventService eventService;
 
-    public int saveAndUpdateWarning2(Warning2 warning2,String userName) {
+    public int saveAndUpdateWarning2(Warning2 warning2, String userName) {
 //        String modelId = warning2.getModelId();
 //        String[] s = modelId.split("_");
 //        if(s.length>1){
 //            warning2.setModelId(s[0]);
 //        }
-        Warning2 oldData=null;
+        Warning2 oldData = null;
         int result = 0;
         if (StringUtils.isBlank(warning2.getId())) {
-            String maxIdString = warning2Mapper.getMaxIdByModelId(warning2.getModelId());
-            if(maxIdString == null || maxIdString.length() == 0){
-                maxIdString = warning2.getModelId()+"_0";
-            }
-            String[] arr = maxIdString.split("_");
-
-            int maxId = 0;
-            try {
-                maxId = Integer.valueOf(arr[1]);
-            } catch (Exception ex) {
-                maxId = 100000;
-            } finally {
-                warning2.setId(String.valueOf(warning2.getModelId() + "_" + (maxId + 1)));
-                result = warning2Mapper.insert(warning2);
-            }
+            long id = SnowflakeGenerator.generateId();
+            warning2.setId(String.valueOf(id));
+            result = warning2Mapper.insert(warning2);
         } else {
-             oldData = warning2Mapper.selectById(warning2.getId());
+            oldData = warning2Mapper.selectById(warning2.getId());
             if (oldData != null) {
                 result = warning2Mapper.updateById(warning2);
             }
         }
-        if(result>0){
-            eventService.saveEventWarning(warning2,oldData,userName);
+        if (result > 0) {
+            eventService.saveEventWarning(warning2, oldData, userName);
         }
         return result;
     }

+ 3 - 2
warning-web/src/main/resources/application.yaml

@@ -42,7 +42,7 @@ spring:
 
 mybatis-plus:
   typeAliasesPackage: com.gyee.wisdom.alarm.sharding.entity
-  mapper-locations: classpath:mappers/*.xml
+  mapper-locations: classpath:mappers-oracle/*.xml
   global-config:
     #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
     id-type: 3
@@ -94,5 +94,6 @@ stationname: HNJ
 tablespace: TS_NXFD_DATA
 adapterUrl: http://123.60.219.66:8011/ts
 rule_encryption: false
-
+#升压站开关首页top查询是否显示解除的流水,默认为true
+syz_kg_relieve_show: false
 

+ 20 - 0
warning-web/src/main/resources/mappers-oracle/AlarmHistoryMapper.xml

@@ -251,5 +251,25 @@
         select count(*) from user_tables where table_name =upper('ALARMHISTORY_${stationname}_${yearmonth}')
     </select>
 
+    <select id="getlatestAlarmHistory" parameterType="java.util.Map" resultType="com.gyee.wisdom.alarm.sharding.model.AlarmHistoryInfo">
+
+        select * from (
+        SELECT * FROM  ${tbName} a
+        <where>
+            <if test="snapId !=null and snapId !=''">
+                and a.SNAPID=#{snapId}
+            </if>
+            <if test="messageType !=null and messageType !=''">
+                and a.MESSAGETYPE=#{messageType}
+            </if>
+            <if test="startTime !=null and endTime !=null">
+                and a.alerttime &gt;= #{startTime,jdbcType=DATE} and a.alerttime &lt;= #{endTime,jdbcType=DATE}
+            </if>
+        </where>
+        order by a.ALERTTIME DESC)
+        where ROWNUM=1
+
+    </select>
+
 
 </mapper>

+ 3 - 0
warning-web/src/main/resources/mappers-oracle/Alertrule2Mapper.xml

@@ -54,6 +54,9 @@
             <if test="category !=null and category !=''">
                 and a.category = #{category}
             </if>
+            <if test="enabled !=null and enabled !=''">
+                and a.enabled = #{enabled}
+            </if>
 <!--            and a.range = 0-->
         </where>
         order by a.createtime desc

+ 15 - 1
warning-web/src/main/resources/mappers/AlarmHistoryMapper.xml

@@ -203,5 +203,19 @@
         select count(*) from information_schema.TABLES where table_name =upper('ALARMHISTORY_${stationname}_${yearmonth}')
     </select>
 
-
+    <select id="getlatestAlarmHistory" parameterType="java.util.Map" resultType="com.gyee.wisdom.alarm.sharding.model.AlarmHistoryInfo">
+        SELECT * FROM  ${tbName} a
+        <where>
+            <if test="snapId !=null and snapId !=''">
+                and a.SNAPID=#{snapId}
+            </if>
+            <if test="messageType !=null and messageType !=''">
+                and a.MESSAGETYPE=#{messageType}
+            </if>
+            <if test="starttime !=null and endtime !=null">
+                and a.alerttime &gt;= #{starttime,jdbcType=DATE} and a.alerttime &lt;= #{endtime,jdbcType=DATE}
+            </if>
+        </where>
+        order by a.ALERTTIME DESC LIMIT 0,1
+    </select>
 </mapper>

+ 3 - 0
warning-web/src/main/resources/mappers/Alertrule2Mapper.xml

@@ -54,6 +54,9 @@
             <if test="category !=null and category !=''">
                 and a.category = #{category}
             </if>
+            <if test="enabled !=null and enabled !=''">
+                and a.enabled = #{enabled}
+            </if>
 <!--            and a.range = 0-->
         </where>
         order by a.createtime desc