Sfoglia il codice sorgente

调整告警规则编辑逻辑

liuyaowen 9 mesi fa
parent
commit
1807fb83a7

+ 2 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/mapper/IotWarnindicatorMapper.java

@@ -60,4 +60,6 @@ public interface IotWarnindicatorMapper {
      * @return 结果
      */
     public int deleteIotWarnindicatorByWiBids(@Param("array") String[] ids, @Param("tid") String tid);
+
+    int deleteIotWarnindicatorByWcBid(@Param("wcBid") String wcBid,@Param("tid")String tid);
 }

+ 16 - 4
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotWarnconfigServiceImpl.java

@@ -3,7 +3,9 @@ package com.yunfeiyun.agmp.iotm.web.service.impl;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.enums.RedisCacheKey;
 import com.yunfeiyun.agmp.common.exception.BizException;
+import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
 import com.yunfeiyun.agmp.common.utils.DateUtils;
 import com.yunfeiyun.agmp.common.utils.SecurityUtils;
 import com.yunfeiyun.agmp.common.utils.StringUtils;
@@ -47,6 +49,8 @@ public class IotWarnconfigServiceImpl implements IIotWarnconfigService {
     private IotDeviceMapper iotDeviceMapper;
     @Resource
     private IotDeviceconfigMapper iotDeviceconfigMapper;
+    @Resource
+    private RedisCacheManager redisCacheManager;
 
     /**
      * 查询告警配置
@@ -204,9 +208,10 @@ public class IotWarnconfigServiceImpl implements IIotWarnconfigService {
         Collection<IotWarnobject> differ = CollectionUtils.disjunction(oldWarnObjectList,iotWarnconfigEditReqVo.getIotWarnobjectList());
         // 老数据中存在,新数据中不存在,代表被删除的数据,即旧数据与differ的交集
         Collection<IotWarnobject> deleteData = CollectionUtils.intersection(oldWarnObjectList,differ);
-        if(!deleteData.isEmpty()){
-            String[] woBids = deleteData.stream().map(IotWarnobject::getWoBid).toArray(String[]::new);
-            iotWarnobjectMapper.deleteIotWarnobjectByWoBids(woBids, SecurityUtils.getTid());
+        for(IotWarnobject iotWarnobject :deleteData){
+            iotWarnobjectMapper.deleteIotWarnobjectByWoBid(iotWarnobject.getWoBid(), SecurityUtils.getTid());
+            // 清除告警对象的缓存
+            redisCacheManager.deleteObject(RedisCacheKey.IOT_WARN_RE_COUNTS, iotWarnconfigEditReqVo.getWcBid() + ":" + iotWarnobject.getDevBid());
         }
         // 老数据中不存在,新数据中存在,代表新增的数据,即入参与differ的交集
         Collection<IotWarnobject> addData = CollectionUtils.intersection(iotWarnconfigEditReqVo.getIotWarnobjectList(),differ);
@@ -216,8 +221,15 @@ public class IotWarnconfigServiceImpl implements IIotWarnconfigService {
             addWarnObject.setWoBid(addWarnObject.getUUId());
             iotWarnobjectMapper.insertIotWarnobject(addWarnObject);
         }
+        // 考虑编辑设备的情况下,对应的规则可能出现调整的情况,
+        iotWarnindicatorMapper.deleteIotWarnindicatorByWcBid(iotWarnconfigEditReqVo.getWcBid(),SecurityUtils.getTid());
         for(IotWarnindicator iotWarnindicator : iotWarnconfigEditReqVo.getIotWarnindicatorList()){
-            iotWarnindicatorMapper.updateIotWarnindicator(iotWarnindicator);
+            iotWarnindicator.setWiBid(iotWarnindicator.getUUId());
+            iotWarnindicator.setWcBid(iotWarnconfigEditReqVo.getWcBid());
+            iotWarnindicator.setTid(SecurityUtils.getTid());
+            iotWarnindicator.setWiCreator(SecurityUtils.getTid());
+            iotWarnindicator.setWiCreateddate(DateUtils.dateTimeNow());
+            iotWarnindicatorMapper.insertIotWarnindicator(iotWarnindicator);
         }
         return iotWarnconfigMapper.updateIotWarnconfig(iotWarnconfigEditReqVo);
     }

+ 4 - 0
src/main/resources/mapper/IotWarnindicatorMapper.xml

@@ -125,4 +125,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{wiBid}
         </foreach>
     </delete>
+
+    <delete id="deleteIotWarnindicatorByWcBid">
+        delete from IotWarnindicator where wcBid = #{wcBid} and tid = #{tid}
+    </delete>
 </mapper>