瀏覽代碼

编辑报警条件与设备的关联关系,只发送一条消息

lixing 3 年之前
父節點
當前提交
1929de4469

+ 2 - 1
src/main/java/com/persagy/apm/alarmservice/common/enums/JmsTypeEnum.java

@@ -22,7 +22,8 @@ public enum JmsTypeEnum {
     UPDATE_CONDITION("update_condition", "更新报警条件"),
     DELETE_CONDITION("delete_condition", "删除报警条件"),
     NEW_OBJ_CONDITION_REL("new_obj_condition_rel", "新增条件和设备的关联关系"),
-    DELETE_OBJ_CONDITION_REL("delete_obj_condition_rel", "删除条件和设备的关联关系");
+    DELETE_OBJ_CONDITION_REL("delete_obj_condition_rel", "删除条件和设备的关联关系"),
+    UPDATE_OBJ_CONDITION_REL("update_obj_condition_rel", "更新条件和设备的关联关系");
 
 
     @Setter

+ 31 - 8
src/main/java/com/persagy/apm/alarmservice/common/jms/JmsSender.java

@@ -173,8 +173,6 @@ public class JmsSender {
         }
         UUIDGenerator uuidGenerator = new UUIDGenerator();
         dmpMessage.setMid(uuidGenerator.next());
-        String projectAlarmRuleId = relationList.get(0).getProjectAlarmRuleId();
-        dmpMessage.setTargetId(projectAlarmRuleId);
         dmpMessage.setStr1(JSONObject.toJSONString(relList));
         dmpMessage.setType(JmsTypeEnum.NEW_OBJ_CONDITION_REL.getType());
 
@@ -266,17 +264,15 @@ public class JmsSender {
 
         // 查询报警规则下的所有关联关系
         List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList = getProjectAlarmRuleObjRels(ruleId);
-
         if (CollectionUtils.isEmpty(projectAlarmRuleObjRelList)) {
             return;
         }
-
         List<ObjConditionRel> relList = convert2ObjConditionRelList(projectAlarmRuleObjRelList);
-
-        if (relList == null) {return;}
+        if (CollectionUtils.isEmpty(relList)) {
+            return;
+        }
         UUIDGenerator uuidGenerator = new UUIDGenerator();
         dmpMessage.setMid(uuidGenerator.next());
-        dmpMessage.setTargetId(ruleId);
         dmpMessage.setStr1(JSONObject.toJSONString(relList));
         dmpMessage.setType(JmsTypeEnum.DELETE_OBJ_CONDITION_REL.getType());
 
@@ -291,7 +287,7 @@ public class JmsSender {
      * @author lixing
      * @version V1.0 2021/10/26 5:33 下午
      */
-    private List<ProjectAlarmRuleObjRel> getProjectAlarmRuleObjRels(String ruleId) {
+    public List<ProjectAlarmRuleObjRel> getProjectAlarmRuleObjRels(String ruleId) {
         QueryProjectAlarmRuleObjRelDTO queryProjectAlarmRuleObjRelDTO = new QueryProjectAlarmRuleObjRelDTO();
         queryProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId(ruleId);
         // 屏蔽状态 1-open、0- 屏蔽
@@ -299,4 +295,31 @@ public class JmsSender {
         return projectAlarmRuleObjRelService.
                 queryProjectAlarmRuleObjRelList(queryProjectAlarmRuleObjRelDTO);
     }
+
+    /**
+     * 发送更新设备与报警条件关联关系的消息
+     *
+     * @param deletedObjConditionRels 删除的关联关系
+     * @param createdObjConditionRels 新增的关联关系
+     * @author lixing
+     * @version V1.0 2021/10/26 2:37 下午
+     */
+    public void sendUpdateObjConditionRelListMsg(
+            List<ProjectAlarmRuleObjRel> deletedObjConditionRels,
+            List<ProjectAlarmRuleObjRel> createdObjConditionRels) {
+        DmpMessage dmpMessage = initDmpMessage();
+
+        List<ObjConditionRel> deletedRelList = convert2ObjConditionRelList(deletedObjConditionRels);
+        List<ObjConditionRel> createdRelList = convert2ObjConditionRelList(createdObjConditionRels);
+        if (CollectionUtils.isEmpty(deletedRelList) && CollectionUtils.isEmpty(createdRelList) ) {
+            return;
+        }
+        UUIDGenerator uuidGenerator = new UUIDGenerator();
+        dmpMessage.setMid(uuidGenerator.next());
+        dmpMessage.setStr1(JSONObject.toJSONString(deletedRelList));
+        dmpMessage.setStr2(JSONObject.toJSONString(createdRelList));
+        dmpMessage.setType(JmsTypeEnum.UPDATE_OBJ_CONDITION_REL.getType());
+
+        sendObjConditionRelMsg(dmpMessage);
+    }
 }

+ 12 - 51
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java

@@ -33,6 +33,7 @@ import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ProjectAlarmRu
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.QueryRuleObjRelDTO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.UpdateAlarmItemDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ObjConditionRel;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.common.constant.enums.ValidEnum;
@@ -232,70 +233,30 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         projectAlarmRule.setBelong(updateProjectAlarmRuleDTO.getBelong());
         // 前面更新报警条件已经发送了消息,这里更新报警规则不需要再发送消息
         updateById(projectAlarmRule);
-        // 根据报警规则删除规则与设备关联关系并发送mq消息
-        deleteRelsAndSendMsgByRuleId(updateProjectAlarmRuleDTO.getId());
+        // 根据报警规则删除规则与设备关联关系
+        List<ProjectAlarmRuleObjRel> deletedObjConditionRels = deleteRels(updateProjectAlarmRuleDTO.getId());
         //新增关联关系
         List<UpdateAlarmItemDTO> addRelationList = updateProjectAlarmRuleDTO.getAddEquipList();
         String projectId = updateProjectAlarmRuleDTO.getProjectId();
         String id = updateProjectAlarmRuleDTO.getId();
         List<AddProjectAlarmRuleObjRelDTO> addRelations = convert2AddProjectAlarmRuleObjRelDTO(addRelationList, id, projectId);
-        projectAlarmRuleObjRelService.createBatchRelation(addRelations);
-        // 勿删后续可能启用 lixing
-        //        String condition = updateProjectAlarmRuleDTO.getCondition();
-        //        String classCode = updateProjectAlarmRuleDTO.getClassCode();
-        //        String alarmItemCode = updateProjectAlarmRuleDTO.getAlarmItemCode();
-        //        //删除中台报警条件
-        //        groupAlarmRuleService.deleteEquipCondition(condition, classCode, alarmItemCode);
-        //        //新增中台报警条件
-        //        List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
-        //        for (AddProjectAlarmRuleObjRelDTO equipRel : addRelations) {
-        //            AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
-        //            String equipId = equipRel.getObjId();
-        //            addAlarmConfigDTO.setObjId(equipId);
-        //            addAlarmConfigDTO.setItemCode(alarmItemCode);
-        //            addAlarmConfigDTO.setClassCode(classCode);
-        //            addAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
-        //            addAlarmConfigDTO.setCategory("Eqdx");
-        //            addAlarmConfigDTO.setOpen(1);
-        //            AlarmCondition equipCondition = new AlarmCondition();
-        //            List<String> infoCodeList = (List<String>) conditionMap.get("infoCode");
-        //            List<String> infoCodeNew = new ArrayList<>();
-        //            for (String infoCode : infoCodeList) {
-        //                String replacement = equipId + "_" + infoCode;
-        //                infoCodeNew.add(infoCode.replaceAll(infoCode, replacement));
-        //            }
-        //            equipCondition.setInfoCode(infoCodeNew);
-        //            String backend = (String) conditionMap.get("backend");
-        //            for (String infoCode : infoCodeList) {
-        //                String replacement = equipId + "_" + infoCode;
-        //                backend = backend.replaceAll(infoCode, replacement);
-        //            }
-        //            equipCondition.setEnd("!" + backend);
-        //            equipCondition.setEndUphold(0);
-        //            equipCondition.setTrigger(backend);
-        //            equipCondition.setTriggerUphold(alarmCondition.getTriggerUphold() * 60);
-        //            equipCondition.setRules((List<String>) conditionMap.get("displayFormula"));
-        //            JSONArray configs = JSONArray.parseArray(JSON.toJSONString(alarmCondition.getFrontend()));
-        //            equipCondition.setConfigs(configs);
-        //            AlarmEffectTime effectTime = new AlarmEffectTime();
-        //            effectTime.setType("always");
-        //            equipCondition.setEffectTime(effectTime);
-        //            addAlarmConfigDTO.setCondition(equipCondition);
-        //            alarmConfigs.add(addAlarmConfigDTO);
-        //        }
-        //        sendBatchCreateAlarmConfigMsg(alarmConfigs, projectId);
+        List<ProjectAlarmRuleObjRel> createdObjConditionRels = projectAlarmRuleObjRelService.createBatchRelation(addRelations);
+        // 发送更新关联关系的消息
+        jmsSender.sendUpdateObjConditionRelListMsg(deletedObjConditionRels, createdObjConditionRels);
     }
 
     /**
-     * 根据报警规则删除规则与设备关联关系并发送mq消息
+     * 根据报警规则删除规则与设备关联关系
      *
      * @param ruleId 报警规则id
+     * @return 删除的关联关系
      * @author lixing
      * @version V1.0 2021/10/26 5:38 下午
      */
-    private void deleteRelsAndSendMsgByRuleId(String ruleId) {
-        jmsSender.sendRemoveObjConditionRelListMsg(ruleId);
+    private List<ProjectAlarmRuleObjRel> deleteRels(String ruleId) {
+        List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRels = jmsSender.getProjectAlarmRuleObjRels(ruleId);
         projectAlarmRuleObjRelMapper.deleteByProjectAlarmRuleId(ruleId);
+        return projectAlarmRuleObjRels;
     }
 
     private List<AddProjectAlarmRuleObjRelDTO> convert2AddProjectAlarmRuleObjRelDTO(List<UpdateAlarmItemDTO> addRelationList, String id, String projectId) {
@@ -524,7 +485,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
             }
             // 按项目批量保存
             saveBatch(projectAlarmRuleList);
-            projectAlarmRuleObjRelService.createBatchRelation(addRelationList);
+            projectAlarmRuleObjRelService.createBatchRelationAndSendMsg(addRelationList);
             count++;
             log.info("已完成{}个项目的报警规则创建, 剩余{}个项目的报警规则待创建", count, projects.size() - count);
         }

+ 3 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/IProjectAlarmRuleObjRelService.java

@@ -80,7 +80,9 @@ public interface IProjectAlarmRuleObjRelService  {
 
     void deleteRelation(String projectId);
 
-    void createBatchRelation(List<AddProjectAlarmRuleObjRelDTO> addRelationList);
+    void createBatchRelationAndSendMsg(List<AddProjectAlarmRuleObjRelDTO> addRelationList);
+
+    List<ProjectAlarmRuleObjRel> createBatchRelation(List<AddProjectAlarmRuleObjRelDTO> addRelationList);
 
     void updateBatch(ShieldManageListDTO shieldManageListDTO) throws Exception;
 

+ 13 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/impl/ProjectAlarmRuleObjRelServiceImpl.java

@@ -263,7 +263,7 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
     }
 
     @Override
-    public void createBatchRelation(List<AddProjectAlarmRuleObjRelDTO> addRelationList) {
+    public void createBatchRelationAndSendMsg(List<AddProjectAlarmRuleObjRelDTO> addRelationList) {
         List<ProjectAlarmRuleObjRel> relationList = new ArrayList<>();
         addRelationList.forEach(ruleObjRel -> {
             ProjectAlarmRuleObjRel projectAlarmRuleObjRel = ConvertProjectAlarmRuleObjRelTool.INSTANCE.convertAddDto2Entity(ruleObjRel);
@@ -274,6 +274,18 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
     }
 
     @Override
+    public List<ProjectAlarmRuleObjRel> createBatchRelation(List<AddProjectAlarmRuleObjRelDTO> addRelationList) {
+        List<ProjectAlarmRuleObjRel> relationList = new ArrayList<>();
+        addRelationList.forEach(ruleObjRel -> {
+            ProjectAlarmRuleObjRel projectAlarmRuleObjRel = ConvertProjectAlarmRuleObjRelTool.INSTANCE.convertAddDto2Entity(ruleObjRel);
+            setDefaultValue(projectAlarmRuleObjRel);
+            relationList.add(projectAlarmRuleObjRel);
+        });
+        saveBatch(relationList);
+        return relationList;
+    }
+
+    @Override
     public void updateBatch(ShieldManageListDTO shieldManageListDTO) throws Exception {
         List<ShieldManageDTO> shieldManageDTOList = shieldManageListDTO.getShieldManageDTOList();
         String projectAlarmRuleId = shieldManageListDTO.getProjectAlarmRuleId();