Kaynağa Gözat

移除bootstrap.yml中不注册到注册中心的配置

lixing 3 yıl önce
ebeveyn
işleme
bb4d7dd801

+ 4 - 1
src/main/java/com/persagy/apm/alarmservice/common/aspect/AlarmDataAspect.java

@@ -7,6 +7,7 @@ import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
@@ -22,6 +23,8 @@ import java.util.List;
 @Aspect
 @Component
 public class AlarmDataAspect {
+    @Value("${spring.application.name}")
+    private String appName;
     @Pointcut("execution(public * com.persagy.apm.energyalarmstarter.alarmdata.service.*.*(..))")
     public void feignPointCut() {
     }
@@ -43,7 +46,7 @@ public class AlarmDataAspect {
             }
             argParam.setUserId(PoemsContext.getContext().getUserId());
             argParam.setGroupCode(PoemsContext.getContext().getGroupCode());
-            argParam.setAppId("energy-alarm-service");
+            argParam.setAppId(appName);
         }
     }
 }

+ 0 - 1
src/main/java/com/persagy/apm/alarmservice/common/configuration/JmsConfig.java

@@ -95,7 +95,6 @@
 //            String type = dmpMessages.getType();
 //            String projectId = dmpMessages.getProjectId();
 //            if("instanceObjectCreate".equals(type)){
-//                // TODO
 //                AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO = new AddProjectAlarmRuleObjRelDTO();
 //                //addProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId();
 //                addProjectAlarmRuleObjRelDTO.setProjectId(projectId);

+ 231 - 5
src/main/java/com/persagy/apm/alarmservice/common/jms/JmsSender.java

@@ -1,16 +1,30 @@
 package com.persagy.apm.alarmservice.common.jms;
 
+import cn.hutool.core.lang.generator.UUIDGenerator;
+import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.alarmservice.common.configuration.rabbitmq.JacksonMapper;
+import com.persagy.apm.alarmservice.common.enums.JmsTypeEnum;
 import com.persagy.apm.alarmservice.common.model.DmpMessage;
+import com.persagy.apm.alarmservice.project.alarmcondition.model.AlarmCondition;
+import com.persagy.apm.alarmservice.project.alarmrule.model.ProjectAlarmRule;
+import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ProjectAlarmRuleObjRel;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.QueryProjectAlarmRuleObjRelDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ObjConditionRel;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.energyalarmstarter.alarmdata.utils.DateUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.core.Binding;
-import org.springframework.amqp.core.BindingBuilder;
-import org.springframework.amqp.core.Queue;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.amqp.core.TopicExchange;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
 
 /**
  * 消息发送者
@@ -21,8 +35,14 @@ import org.springframework.stereotype.Component;
 @Slf4j
 @Component
 public class JmsSender {
+    @Value("${spring.application.name}")
+    private String appName;
     @Autowired
     private RabbitTemplate rabbitTemplate;
+    @Autowired
+    IProjectAlarmRuleService projectAlarmRuleService;
+    @Autowired
+    IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
 
     /**
      * 交换机
@@ -52,7 +72,7 @@ public class JmsSender {
      * @author lixing
      * @version V1.0 2021/10/25 2:18 下午
      */
-    public void sendConditionMsg(DmpMessage message) {
+    private void sendConditionMsg(DmpMessage message) {
         log.info("向rabbitMQ发送报警条件消息,message:" + JacksonMapper.toSimpleJson(message));
         rabbitTemplate.convertAndSend(exchange, alarmConditionRoutingKey, message);
     }
@@ -64,8 +84,214 @@ public class JmsSender {
      * @author lixing
      * @version V1.0 2021/10/25 2:18 下午
      */
-    public void sendObjConditionRelMsg(DmpMessage message) {
+    private void sendObjConditionRelMsg(DmpMessage message) {
         log.info("向rabbitMQ发送设备与报警条件关联消息,message:" + JacksonMapper.toSimpleJson(message));
         rabbitTemplate.convertAndSend(exchange, objConditionRelRoutingKey, message);
     }
+
+    /**
+     * 发送新建报警条件的消息
+     *
+     * @param alarmCondition 新增的报警条件
+     * @author lixing
+     * @version V1.0 2021/10/26 2:37 下午
+     */
+    public void sendNewAlarmConditionMsg(AlarmCondition alarmCondition) {
+        DmpMessage dmpMessage = initDmpMessage();
+
+        dmpMessage.setMid(alarmCondition.getId());
+        dmpMessage.setStr1(JSONObject.toJSONString(alarmCondition));
+        dmpMessage.setType(JmsTypeEnum.NEW_CONDITION.getType());
+
+        sendConditionMsg(dmpMessage);
+    }
+
+    /**
+     * 发送更新报警条件的消息
+     *
+     * @param alarmCondition 更新的报警条件
+     * @author lixing
+     * @version V1.0 2021/10/26 2:37 下午
+     */
+    public void sendUpdateAlarmConditionMsg(AlarmCondition alarmCondition) {
+        DmpMessage dmpMessage = initDmpMessage();
+
+        dmpMessage.setMid(alarmCondition.getId());
+        dmpMessage.setStr1(JSONObject.toJSONString(alarmCondition));
+        dmpMessage.setType(JmsTypeEnum.UPDATE_CONDITION.getType());
+
+        sendConditionMsg(dmpMessage);
+    }
+
+    /**
+     * 发送删除报警条件的消息
+     *
+     * @param alarmConditionId 删除的报警条件Id
+     * @author lixing
+     * @version V1.0 2021/10/26 2:37 下午
+     */
+    public void sendDeleteAlarmConditionMsg(String alarmConditionId) {
+        DmpMessage dmpMessage = initDmpMessage();
+
+        dmpMessage.setMid(alarmConditionId);
+        dmpMessage.setStr1(alarmConditionId);
+        dmpMessage.setType(JmsTypeEnum.DELETE_CONDITION.getType());
+
+        sendConditionMsg(dmpMessage);
+    }
+
+    /**
+     * 初始化消息体
+     *
+     * @return DmpMessage对象
+     * @author lixing
+     * @version V1.0 2021/10/26 2:36 下午
+     */
+    private DmpMessage initDmpMessage() {
+        DmpMessage dmpMessage = new DmpMessage();
+        dmpMessage.setUserId(PoemsContext.getContext().getUserId());
+        dmpMessage.setGroupCode(PoemsContext.getContext().getGroupCode());
+        dmpMessage.setProjectId(PoemsContext.getContext().getProjectId());
+        dmpMessage.setAppId(appName);
+        dmpMessage.setSendTime(DateUtils.date2Str(new Date(), DateUtils.SDF_SECOND));
+        return dmpMessage;
+    }
+
+    /**
+     * 发送新建设备与报警条件关联关系的消息
+     *
+     * @param relationList 新增的关联关系
+     * @author lixing
+     * @version V1.0 2021/10/26 2:37 下午
+     */
+    public void sendNewObjConditionRelListMsg(List<ProjectAlarmRuleObjRel> relationList) {
+        DmpMessage dmpMessage = initDmpMessage();
+
+        List<ObjConditionRel> relList = convert2ObjConditionRelList(relationList);
+        if (relList == null) {return;}
+        UUIDGenerator uuidGenerator = new UUIDGenerator();
+        dmpMessage.setMid(uuidGenerator.next());
+        dmpMessage.setStr1(JSONObject.toJSONString(relList));
+        dmpMessage.setType(JmsTypeEnum.NEW_OBJ_CONDITION_REL.getType());
+
+        sendObjConditionRelMsg(dmpMessage);
+    }
+
+    /**
+     * 发送新建设备与报警条件关联关系的消息
+     *
+     * @param ruleId 报警规则id
+     * @author lixing
+     * @version V1.0 2021/10/26 2:37 下午
+     */
+    public void sendNewObjConditionRelListMsg(String ruleId) {
+        // 查询报警规则关联的设备
+        List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList = getProjectAlarmRuleObjRels(ruleId);
+
+        sendNewObjConditionRelListMsg(projectAlarmRuleObjRelList);
+    }
+
+    /**
+     * 将设备与项目报警规则关联关系转换为设备与报警条件关联关系
+     *
+     * @param relationList 设备与项目报警规则关联关系列表
+     * @return 设备与报警条件关联关系列表
+     * @author lixing
+     * @version V1.0 2021/10/26 3:17 下午
+     */
+    private List<ObjConditionRel> convert2ObjConditionRelList(List<ProjectAlarmRuleObjRel> relationList) {
+        if (CollectionUtils.isEmpty(relationList)) {
+            return null;
+        }
+
+        // 报警规则和设备列表的映射
+        Map<String, List<String>> ruleIdObjListMap = new HashMap<>();
+        for (ProjectAlarmRuleObjRel projectAlarmRuleObjRel : relationList) {
+            String ruleId = projectAlarmRuleObjRel.getProjectAlarmRuleId();
+            List<String> objList;
+            if (ruleIdObjListMap.containsKey(ruleId)) {
+                objList = ruleIdObjListMap.get(ruleId);
+            } else {
+                objList = new ArrayList<>();
+                ruleIdObjListMap.put(ruleId, objList);
+            }
+            objList.add(projectAlarmRuleObjRel.getObjId());
+        }
+
+        // 获取报警规则详情,拼装结果
+        List<ObjConditionRel> relList = getObjConditionRels(ruleIdObjListMap);
+        return relList;
+    }
+
+    /**
+     * 将报警规则id与设备关联关系映射转换为ObjConditionRel列表
+     *
+     * @param ruleIdObjListMap 报警规则id与设备关联关系映射
+     * @return ObjConditionRel列表
+     * @author lixing
+     * @version V1.0 2021/10/26 5:21 下午
+     */
+    private List<ObjConditionRel> getObjConditionRels(Map<String, List<String>> ruleIdObjListMap) {
+        List<ObjConditionRel> relList = new LinkedList<>();
+        for (String ruleId : ruleIdObjListMap.keySet()) {
+            ProjectAlarmRule projectAlarmRule = projectAlarmRuleService.queryProjectAlarmRuleDetail(ruleId);
+            List<String> objIds = ruleIdObjListMap.get(ruleId);
+            for (String objId : objIds) {
+                ObjConditionRel objConditionRel = ObjConditionRel.builder().
+                        objId(objId).itemCode(projectAlarmRule.getAlarmItemCode()).
+                        projectId(projectAlarmRule.getProjectId()).conditionId(projectAlarmRule.getAlarmConditionId()).
+                        build();
+                relList.add(objConditionRel);
+            }
+        }
+        return relList;
+    }
+
+    /**
+     * 发送移除设备与报警条件关联关系的消息
+     *
+     * @param ruleId 报警规则id
+     * @author lixing
+     * @version V1.0 2021/10/26 2:37 下午
+     */
+    public void sendRemoveObjConditionRelListMsg(String ruleId) {
+        if (StringUtils.isBlank(ruleId)) {
+            return;
+        }
+        DmpMessage dmpMessage = initDmpMessage();
+
+        // 查询报警规则下的所有关联关系
+        List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList = getProjectAlarmRuleObjRels(ruleId);
+
+        if (CollectionUtils.isEmpty(projectAlarmRuleObjRelList)) {
+            return;
+        }
+
+        List<ObjConditionRel> relList = convert2ObjConditionRelList(projectAlarmRuleObjRelList);
+
+        if (relList == null) {return;}
+        UUIDGenerator uuidGenerator = new UUIDGenerator();
+        dmpMessage.setMid(uuidGenerator.next());
+        dmpMessage.setStr1(JSONObject.toJSONString(relList));
+        dmpMessage.setType(JmsTypeEnum.DELETE_OBJ_CONDITION_REL.getType());
+
+        sendObjConditionRelMsg(dmpMessage);
+    }
+
+    /**
+     * 获取报警规则与设备的关联关系
+     *
+     * @param ruleId 报警规则id
+     * @return 报警规则与设备的关联关系列表
+     * @author lixing
+     * @version V1.0 2021/10/26 5:33 下午
+     */
+    private List<ProjectAlarmRuleObjRel> getProjectAlarmRuleObjRels(String ruleId) {
+        QueryProjectAlarmRuleObjRelDTO queryProjectAlarmRuleObjRelDTO = new QueryProjectAlarmRuleObjRelDTO();
+        queryProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId(ruleId);
+        // 屏蔽状态 1-open、0- 屏蔽
+        queryProjectAlarmRuleObjRelDTO.setOpen(1);
+        return projectAlarmRuleObjRelService.
+                queryProjectAlarmRuleObjRelList(queryProjectAlarmRuleObjRelDTO);
+    }
 }

+ 13 - 4
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/impl/AlarmConditionServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.CaseFormat;
 import com.persagy.apm.alarmservice.common.enums.AlarmEffectTimeTypeEnum;
+import com.persagy.apm.alarmservice.common.jms.JmsSender;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.dto.CalculateMethodDTO;
 import com.persagy.apm.alarmservice.group.monitorindicator.model.MonitorIndicator;
 import com.persagy.apm.alarmservice.group.monitorindicator.service.IMonitorIndicatorService;
@@ -41,6 +42,8 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
 
     @Autowired
     private IMonitorIndicatorService monitorIndicatorService;
+    @Autowired
+    JmsSender jmsSender;
 
     /**
      * 创建报警条件
@@ -73,7 +76,7 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
     @Override
     public void saveCondition(AlarmCondition alarmCondition) {
         save(alarmCondition);
-        // 发送创建报警条件消息至mq // TODO: 2021/10/25  
+        jmsSender.sendNewAlarmConditionMsg(alarmCondition);
     }
 
     /**
@@ -101,8 +104,6 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
 
     @Override
     public Map<String, Object> frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
-        // TODO: 2021/10/21 后端条件示例
-        //
         /* frontend示例 规则1: 新风焓值 ≥ 1;运行状态 = 停止 规则2: 新风焓值 ≥ 新风焓值 + 1
         [
               [
@@ -248,9 +249,16 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         updateAndSendMsg2MQ(alarmCondition);
     }
 
+    /**
+     * 更新报警条件并发送更新消息
+     *
+     * @param alarmCondition 报警条件
+     * @author lixing
+     * @version V1.0 2021/10/26 2:43 下午
+     */
     private void updateAndSendMsg2MQ(AlarmCondition alarmCondition) {
         updateById(alarmCondition);
-        // 发送消息至MQ // TODO: 2021/10/25
+        jmsSender.sendUpdateAlarmConditionMsg(alarmCondition);
     }
 
     /**
@@ -339,6 +347,7 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         AlarmCondition alarmCondition = checkDeletable(id);
         alarmCondition.setValid(ValidEnum.FALSE.getType());
         updateById(alarmCondition);
+        jmsSender.sendDeleteAlarmConditionMsg(alarmCondition.getId());
     }
 
     /**

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.apm.alarmservice.common.configuration.rabbitmq.RabbitMsgSender;
+import com.persagy.apm.alarmservice.common.jms.JmsSender;
 import com.persagy.apm.alarmservice.common.util.DataUtils;
 import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
@@ -76,7 +77,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     @Autowired
     private ProjectAlarmRuleMapper mapper;
     @Autowired
-    private RabbitMsgSender rabbitMsgSender;
+    private JmsSender jmsSender;
     @Autowired
     private ProjectAlarmRuleObjRelMapper projectAlarmRuleObjRelMapper;
 
@@ -230,9 +231,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         projectAlarmRule.setModifier(PoemsContext.getContext().getUserId());
         projectAlarmRule.setBelong(updateProjectAlarmRuleDTO.getBelong());
         updateById(projectAlarmRule);
-        //删除报警对象关联关系
-        //projectAlarmRuleObjRelService.deleteRelation(updateProjectAlarmRuleDTO.getId());
-        projectAlarmRuleObjRelMapper.deleteByProjectAlarmRuleId(updateProjectAlarmRuleDTO.getId());
+        // 根据报警规则删除规则与设备关联关系并发送mq消息
+        deleteAndSendMsgByRuleId(updateProjectAlarmRuleDTO.getId());
         //新增关联关系
         List<UpdateAlarmItemDTO> addRelationList = updateProjectAlarmRuleDTO.getAddEquipList();
         String projectId = updateProjectAlarmRuleDTO.getProjectId();
@@ -285,6 +285,17 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
 //        sendBatchCreateAlarmConfigMsg(alarmConfigs, projectId);
     }
 
+    /**
+     * 根据报警规则删除规则与设备关联关系并发送mq消息
+     *
+     * @param ruleId 报警规则id
+     * @author lixing
+     * @version V1.0 2021/10/26 5:38 下午
+     */
+    private void deleteAndSendMsgByRuleId(String ruleId) {
+        jmsSender.sendRemoveObjConditionRelListMsg(ruleId);
+        projectAlarmRuleObjRelMapper.deleteByProjectAlarmRuleId(ruleId);
+    }
     private List<AddProjectAlarmRuleObjRelDTO> convert2AddProjectAlarmRuleObjRelDTO(List<UpdateAlarmItemDTO> addRelationList, String id, String projectId) {
         List<AddProjectAlarmRuleObjRelDTO> list = new ArrayList<>();
         for (UpdateAlarmItemDTO updateAlarmItemDTO : addRelationList) {
@@ -350,31 +361,31 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         }
         //删除项目报警规则与监测对象的关联
         projectAlarmRuleObjRelService.deleteRelation(projectAlarmRule.getId());
-        //删除设备报警条件 begin
-        BatchDeleteAlarmConfigDTO batchDeleteAlarmConfigDTO = new BatchDeleteAlarmConfigDTO();
-        List<DeleteAlarmConfigDTO> alarmConfigs = new ArrayList<>();
-        String condition = deleteProjectAlarmRuleDTO.getCondition();
-        String classCode = deleteProjectAlarmRuleDTO.getClassCode();
-        String projectId = deleteProjectAlarmRuleDTO.getProjectId();
-        //查询所有设备
-        List<EquipItem> equips = this.getAllEquip(classCode, condition, projectId);
-        List<String> objIds = equips.stream().map(EquipItem::getId).collect(Collectors.toList());
-        QueryAlarmConfigDTO queryAlarmConfigDTO = new QueryAlarmConfigDTO();
-        queryAlarmConfigDTO.setObjId(objIds);
-        DmpResult<List<AlarmConfigItem>> query = alarmConfigService.query(queryAlarmConfigDTO);
-        //所有设备条件
-        List<AlarmConfigItem> data = query.getData();
-        //组织删除参数
-        if (data.size() > 0) {
-            data.forEach(alarmConfigItem -> {
-                DeleteAlarmConfigDTO deleteAlarmConfigDTO = new DeleteAlarmConfigDTO();
-                deleteAlarmConfigDTO.setId(alarmConfigItem.getId());
-                alarmConfigs.add(deleteAlarmConfigDTO);
-            });
-            batchDeleteAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
-            alarmConfigService.batchDelete(batchDeleteAlarmConfigDTO);
-        }
-        //删除设备报警条件 end
+//        //删除设备报警条件 begin
+//        BatchDeleteAlarmConfigDTO batchDeleteAlarmConfigDTO = new BatchDeleteAlarmConfigDTO();
+//        List<DeleteAlarmConfigDTO> alarmConfigs = new ArrayList<>();
+//        String condition = deleteProjectAlarmRuleDTO.getCondition();
+//        String classCode = deleteProjectAlarmRuleDTO.getClassCode();
+//        String projectId = deleteProjectAlarmRuleDTO.getProjectId();
+//        //查询所有设备
+//        List<EquipItem> equips = this.getAllEquip(classCode, condition, projectId);
+//        List<String> objIds = equips.stream().map(EquipItem::getId).collect(Collectors.toList());
+//        QueryAlarmConfigDTO queryAlarmConfigDTO = new QueryAlarmConfigDTO();
+//        queryAlarmConfigDTO.setObjId(objIds);
+//        DmpResult<List<AlarmConfigItem>> query = alarmConfigService.query(queryAlarmConfigDTO);
+//        //所有设备条件
+//        List<AlarmConfigItem> data = query.getData();
+//        //组织删除参数
+//        if (data.size() > 0) {
+//            data.forEach(alarmConfigItem -> {
+//                DeleteAlarmConfigDTO deleteAlarmConfigDTO = new DeleteAlarmConfigDTO();
+//                deleteAlarmConfigDTO.setId(alarmConfigItem.getId());
+//                alarmConfigs.add(deleteAlarmConfigDTO);
+//            });
+//            batchDeleteAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
+//            alarmConfigService.batchDelete(batchDeleteAlarmConfigDTO);
+//        }
+//        //删除设备报警条件 end
     }
 
     private List<EquipItem> getAllEquip(String classCode, String condition, String projectId) {
@@ -504,8 +515,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
                 addRelationList.add(addProjectAlarmRuleObjRelDTO);
             }
             // 按项目批量保存
-            projectAlarmRuleObjRelService.createBatchRelation(addRelationList);
             saveBatch(projectAlarmRuleList);
+            projectAlarmRuleObjRelService.createBatchRelation(addRelationList);
             count ++;
             log.info("已完成{}个项目的报警规则创建, 剩余{}个项目的报警规则待创建", count, projects.size() - count);
         }

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.CaseFormat;
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
+import com.persagy.apm.alarmservice.common.jms.JmsSender;
 import com.persagy.apm.alarmservice.group.management.model.equip.dto.QueryEquipDTO;
 import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
 import com.persagy.apm.alarmservice.group.management.service.GroupManagementService;
@@ -62,6 +63,8 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
     GroupManagementService groupManagementService;
     @Autowired
     private ProjectAlarmRuleObjRelMapper projectAlarmRuleObjRelMapper;
+    @Autowired
+    JmsSender jmsSender;
 
     /**
      * 创建项目报警规则与监测对象的关联
@@ -88,8 +91,6 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
      */
     private void setDefaultValue(ProjectAlarmRuleObjRel projectAlarmRuleObjRel) {
         projectAlarmRuleObjRel.setCreator(AppContext.getContext().getAccountId());
-        // todo 其他默认的属性
-
     }
 
     /**
@@ -224,23 +225,20 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
             }
         }
 
-        // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleObjRelDTO.getProjectAlarmRuleId())) {
-            queryWrapper.like(ProjectAlarmRuleObjRel.PROP_PROJECT_ALARM_RULE_ID, pageQueryProjectAlarmRuleObjRelDTO.getProjectAlarmRuleId());
+            queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_PROJECT_ALARM_RULE_ID, pageQueryProjectAlarmRuleObjRelDTO.getProjectAlarmRuleId());
         }
 
-        // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleObjRelDTO.getEquipId())) {
-            queryWrapper.like(ProjectAlarmRuleObjRel.PROP_OBJ_ID, pageQueryProjectAlarmRuleObjRelDTO.getEquipId());
+            queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_OBJ_ID, pageQueryProjectAlarmRuleObjRelDTO.getEquipId());
         }
 
         if (pageQueryProjectAlarmRuleObjRelDTO.getOpen() != null) {
             queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_OPEN, pageQueryProjectAlarmRuleObjRelDTO.getOpen());
         }
 
-        // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleObjRelDTO.getProjectId())) {
-            queryWrapper.like(ProjectAlarmRuleObjRel.PROP_PROJECT_ID, pageQueryProjectAlarmRuleObjRelDTO.getProjectId());
+            queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_PROJECT_ID, pageQueryProjectAlarmRuleObjRelDTO.getProjectId());
         }
 
         return getBaseMapper().selectPage(pageParam, queryWrapper);
@@ -254,12 +252,13 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
     }
 
     @Override
-    public void deleteRelation(String id) {
+    public void deleteRelation(String ruleId) {
         QueryWrapper<ProjectAlarmRuleObjRel> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_PROJECT_ALARM_RULE_ID, id);
+        queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_PROJECT_ALARM_RULE_ID, ruleId);
         ProjectAlarmRuleObjRel projectAlarmRuleObjRel = new ProjectAlarmRuleObjRel();
         projectAlarmRuleObjRel.setValid(ValidEnum.FALSE.getType());
         update(projectAlarmRuleObjRel, queryWrapper);
+        jmsSender.sendRemoveObjConditionRelListMsg(ruleId);
     }
 
     @Override
@@ -270,7 +269,7 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
             setDefaultValue(projectAlarmRuleObjRel);
             relationList.add(projectAlarmRuleObjRel);
         });
-        saveBatch(relationList);
+        saveBatchAndSendMsg(relationList);
     }
 
     @Override
@@ -278,32 +277,36 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
         List<ShieldManageDTO> shieldManageDTOList = shieldManageListDTO.getShieldManageDTOList();
         String projectAlarmRuleId = shieldManageListDTO.getProjectAlarmRuleId();
         String projectId = shieldManageListDTO.getProjectId();
+        // 更新前,发送移除老的关联关系的消息
+        jmsSender.sendRemoveObjConditionRelListMsg(projectAlarmRuleId);
         projectAlarmRuleObjRelMapper.updateStatus(shieldManageDTOList, projectAlarmRuleId, projectId);
-
-        //删除设备报警条件 begin
-        BatchDeleteAlarmConfigDTO batchDeleteAlarmConfigDTO = new BatchDeleteAlarmConfigDTO();
-        List<DeleteAlarmConfigDTO> alarmConfigs = new ArrayList<>();
-        String condition = shieldManageListDTO.getCondition();
-        String classCode = shieldManageListDTO.getClassCode();
-        //查询所有设备
-        List<EquipItem> equips = this.getAllEquip(classCode, condition);
-        List<String> objIds = equips.stream().map(EquipItem::getId).collect(Collectors.toList());
-        QueryAlarmConfigDTO queryAlarmConfigDTO = new QueryAlarmConfigDTO();
-        queryAlarmConfigDTO.setObjId(objIds);
-        DmpResult<List<AlarmConfigItem>> query = alarmConfigService.query(queryAlarmConfigDTO);
-        //所有设备条件
-        List<AlarmConfigItem> data = query.getData();
-        //组织删除参数
-        if (data.size() > 0) {
-            data.forEach(alarmConfigItem -> {
-                DeleteAlarmConfigDTO deleteAlarmConfigDTO = new DeleteAlarmConfigDTO();
-                deleteAlarmConfigDTO.setId(alarmConfigItem.getId());
-                alarmConfigs.add(deleteAlarmConfigDTO);
-            });
-            batchDeleteAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
-            alarmConfigService.batchDelete(batchDeleteAlarmConfigDTO);
-        }
-        //删除设备报警条件 end
+        // 更新后,发送增加新的关联关系的消息
+        jmsSender.sendNewObjConditionRelListMsg(projectAlarmRuleId);
+
+//        //删除设备报警条件 begin
+//        BatchDeleteAlarmConfigDTO batchDeleteAlarmConfigDTO = new BatchDeleteAlarmConfigDTO();
+//        List<DeleteAlarmConfigDTO> alarmConfigs = new ArrayList<>();
+//        String condition = shieldManageListDTO.getCondition();
+//        String classCode = shieldManageListDTO.getClassCode();
+//        //查询所有设备
+//        List<EquipItem> equips = this.getAllEquip(classCode, condition);
+//        List<String> objIds = equips.stream().map(EquipItem::getId).collect(Collectors.toList());
+//        QueryAlarmConfigDTO queryAlarmConfigDTO = new QueryAlarmConfigDTO();
+//        queryAlarmConfigDTO.setObjId(objIds);
+//        DmpResult<List<AlarmConfigItem>> query = alarmConfigService.query(queryAlarmConfigDTO);
+//        //所有设备条件
+//        List<AlarmConfigItem> data = query.getData();
+//        //组织删除参数
+//        if (data.size() > 0) {
+//            data.forEach(alarmConfigItem -> {
+//                DeleteAlarmConfigDTO deleteAlarmConfigDTO = new DeleteAlarmConfigDTO();
+//                deleteAlarmConfigDTO.setId(alarmConfigItem.getId());
+//                alarmConfigs.add(deleteAlarmConfigDTO);
+//            });
+//            batchDeleteAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
+//            alarmConfigService.batchDelete(batchDeleteAlarmConfigDTO);
+//        }
+//        //删除设备报警条件 end
     }
 
     public List<EquipItem> getAllEquip(String classCode, String condition) {
@@ -340,12 +343,10 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
 
         if (queryShieldManageDTO != null) {
 
-            // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryShieldManageDTO.getProjectAlarmRuleId())) {
                 queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_PROJECT_ALARM_RULE_ID, queryShieldManageDTO.getProjectAlarmRuleId());
             }
 
-            // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryShieldManageDTO.getProjectId())) {
                 queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_PROJECT_ID, queryShieldManageDTO.getProjectId());
             }
@@ -432,12 +433,24 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
     }
 
     @Override
-    public void saveProjectAlarmRule(List<ProjectAlarmRuleObjRel> addEquipList) {
-        saveBatch(addEquipList);
+    public void saveProjectAlarmRule(List<ProjectAlarmRuleObjRel> relList) {
+        saveBatchAndSendMsg(relList);
     }
 
     @Override
     public List<ObjConditionRel> queryObjAlarmConditionRel(QueryObjConditionRelDTO queryObjConditionRelDTO) {
         return projectAlarmRuleObjRelMapper.queryObjAlarmConditionRel(queryObjConditionRelDTO.getProjectId());
     }
+
+    /**
+     * 批量保存并发送mq消息
+     *
+     * @param relList 设备与项目报警规则关联关系
+     * @author lixing
+     * @version V1.0 2021/10/26 3:21 下午
+     */
+    private void saveBatchAndSendMsg(List<ProjectAlarmRuleObjRel> relList) {
+        saveBatch(relList);
+        jmsSender.sendNewObjConditionRelListMsg(relList);
+    }
 }

+ 2 - 2
src/main/resources/bootstrap.yml

@@ -17,7 +17,7 @@ mybatis-plus:
 eureka:
 #  instance:
 #    prefer-ip-address: true
-  client:
-    register-with-eureka: false
+#  client:
+#    register-with-eureka: false