Browse Source

Merge branch 'v1.0.0' of http://39.106.8.246:3003/apm/energy-alarm-service into v1.1.0

miaolijing 3 years ago
parent
commit
74904afa2c
25 changed files with 586 additions and 269 deletions
  1. 4 1
      src/main/java/com/persagy/apm/alarmservice/common/aspect/AlarmDataAspect.java
  2. 0 1
      src/main/java/com/persagy/apm/alarmservice/common/configuration/JmsConfig.java
  3. 57 0
      src/main/java/com/persagy/apm/alarmservice/common/enums/JmsTypeEnum.java
  4. 231 5
      src/main/java/com/persagy/apm/alarmservice/common/jms/JmsSender.java
  5. 0 16
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/model/MonitorIndicatorRecordListItemVO.java
  6. 1 1
      src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/service/EqDiagnoseServiceImpl.java
  7. 1 2
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java
  8. 5 1
      src/main/java/com/persagy/apm/alarmservice/group/management/service/impl/GroupManagementServiceImpl.java
  9. 20 21
      src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/service/impl/MonitorIndicatorServiceImpl.java
  10. 1 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/AlarmCondition.java
  11. 12 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/ConvertAlarmConditionTool.java
  12. 2 2
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/vo/AlarmConditionItemVO.java
  13. 4 2
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/vo/AlarmConditionListItemVO.java
  14. 13 4
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/impl/AlarmConditionServiceImpl.java
  15. 1 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/controller/ProjectAlarmRuleController.java
  16. 3 3
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/IProjectAlarmRuleService.java
  17. 157 144
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java
  18. 3 3
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/IProjectAlarmRuleObjRelService.java
  19. 54 51
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/impl/ProjectAlarmRuleObjRelServiceImpl.java
  20. 10 3
      src/main/resources/bootstrap.yml
  21. 1 1
      src/main/resources/db/init/data_dev.sql
  22. 1 1
      src/main/resources/db/init/table.sql
  23. 1 1
      src/main/resources/mapper/GroupAlarmRuleMapper.xml
  24. 3 4
      src/main/resources/mapper/ProjectAlarmRuleMapper.xml
  25. 1 0
      src/main/resources/mapper/ProjectAlarmRuleObjRelMapper.xml

+ 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);

+ 57 - 0
src/main/java/com/persagy/apm/alarmservice/common/enums/JmsTypeEnum.java

@@ -0,0 +1,57 @@
+package com.persagy.apm.alarmservice.common.enums;
+
+import com.persagy.apm.common.model.annotation.SwaggerDisplayEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * 消息类型
+ *
+ * @author lixing
+ * @version V1.0 2021/9/13 10:01 上午
+ **/
+@SwaggerDisplayEnum
+@AllArgsConstructor
+public enum JmsTypeEnum {
+    /**
+     * 字典类型
+     */
+    NEW_CONDITION("new_condition", "新增报警条件"),
+    UPDATE_CONDITION("update_condition", "更新报警条件"),
+    DELETE_CONDITION("delete_condition", "删除报警条件"),
+    NEW_OBJ_CONDITION_REL("new_obj_condition_rel", "新增条件和设备的关联关系"),
+    DELETE_OBJ_CONDITION_REL("delete_obj_condition_rel", "删除条件和设备的关联关系");
+
+
+    @Setter
+    @Getter
+    private String type;
+    @Setter
+    @Getter
+    private String desc;
+
+    /**
+     * 根据type获取到枚举对象
+     *
+     * @param type 报告状态编码
+     * @return 报告状态枚举对象
+     * @author lixing
+     * @version V1.0 2021/5/31 4:06 下午
+     */
+    public static JmsTypeEnum getByType(String type) {
+        if (StringUtils.isBlank(type)) {
+            return null;
+        }
+        JmsTypeEnum[] enums = JmsTypeEnum.values();
+        for (JmsTypeEnum item : enums) {
+            if (type.equals(item.getType())) {
+                return item;
+            }
+        }
+        return null;
+    }
+}
+
+

+ 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);
+    }
 }

+ 0 - 16
src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/model/MonitorIndicatorRecordListItemVO.java

@@ -15,9 +15,6 @@ import java.util.Date;
 @ApiModel(value = "监测指标历史记录列表返回结果参数")
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class MonitorIndicatorRecordListItemVO {
-    @ApiModelProperty("主键")
-    private String id;
-    
     @ApiModelProperty("对象id")
     private String objId;
     
@@ -29,17 +26,4 @@ public class MonitorIndicatorRecordListItemVO {
     
     @ApiModelProperty("值")
     private String value;
-    
-    @ApiModelProperty("创建人")
-    private String creator;
-    
-    @ApiModelProperty("创建时间")
-    private Date creationTime;
-    
-    @ApiModelProperty("修改人")
-    private String modifier;
-    
-    @ApiModelProperty("修改时间")
-    private Date modifiedTime;
-    
 }

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/dependency/eqdiagnose/service/EqDiagnoseServiceImpl.java

@@ -52,7 +52,7 @@ public class EqDiagnoseServiceImpl {
         if (CollectionUtils.isEmpty(records)) {
             return new HashMap<>(0);
         }
-        return records.stream().collect(
+        return records.stream().filter(record -> record.getDate() != null).collect(
                 Collectors.toMap(
                         MonitorIndicatorRecordListItemVO::getDate,
                         MonitorIndicatorRecordListItemVO::getValue

+ 1 - 2
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java

@@ -388,8 +388,7 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         GroupAlarmRule groupAlarmRule = getById(groupRuleId);
         this.deleteGroupAlarmRule(groupRuleId);
         alarmConditionService.deleteAlarmCondition(deleteGroupAlarmRuleDTO.getAlarmConditionId());
-        projectAlarmRuleService.deleteBatch(groupAlarmRule);
-        projectAlarmRuleObjRelService.deleteBatch();
+        projectAlarmRuleService.deleteBatchByGroupRule(groupAlarmRule);
         String condition = deleteGroupAlarmRuleDTO.getCondition();
         String classCode = deleteGroupAlarmRuleDTO.getClassCode();
         deleteEquipCondition(condition, classCode, groupAlarmRule.getAlarmItemCode());

+ 5 - 1
src/main/java/com/persagy/apm/alarmservice/group/management/service/impl/GroupManagementServiceImpl.java

@@ -104,7 +104,11 @@ public class GroupManagementServiceImpl implements GroupManagementService {
             Map<String, String> equipFuncMap = new HashMap<>();
             if (jsonObject != null) {
                 for (String key : jsonObject.keySet()) {
-                    String funcInfo = key + ":" + jsonObject.get(key).toString();
+                    Object value = jsonObject.get(key);
+                    if (value instanceof String) {
+                        value = "\"" + value + "\"";
+                    }
+                    String funcInfo = key + ":" + value;
                     equipFuncMap.put(funcInfo, funcInfo);
                 }
             }

+ 20 - 21
src/main/java/com/persagy/apm/alarmservice/group/monitorindicator/service/impl/MonitorIndicatorServiceImpl.java

@@ -27,6 +27,7 @@ import com.persagy.apm.alarmservice.group.monitorindicator.service.IMonitorIndic
 import com.persagy.apm.common.constant.enums.AttrValueTypeEnum;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
+import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.common.model.dto.Sort;
 import com.persagy.apm.common.model.vo.GraphItemVO;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmRecordItem;
@@ -256,6 +257,7 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
         // 获取监测指标的历史采集值 monitorId -> (time -> value)
         List<String> infoCodeList = infoCodeArray.toJavaList(String.class);
         Map<String, Map<Date, String>> monitorValuesMap = getIndicatorHistoryValues(
+                alarmRecord.getObjId(),
                 infoCodeList, queryMonitorIndicatorRecordInfoDTO.getStartTime(),
                 queryMonitorIndicatorRecordInfoDTO.getEndTime());
 
@@ -310,14 +312,17 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
             String formula = monitorIndicatorFormulaItem.getFormula();
             List<GraphItemVO> referenceValueList = new ArrayList<>();
             Map<Date, String> indicatorRecordMap = monitorValuesMap.get(monitorIndicator.getId());
-            for (Date date : indicatorRecordMap.keySet()) {
-                HashMap<String, Object> paramMap = getParamMap(monitorValuesMap, date);
-                Double formulaResult = calculateFormula(formula, paramMap);
-                GraphItemVO graphItemVO = new GraphItemVO(
-                        String.valueOf(date.getTime()), formulaResult,
-                        AttrValueTypeEnum.number_2, monitorIndicator.getUnit());
-                referenceValueList.add(graphItemVO);
+            if (!CollectionUtils.isEmpty(indicatorRecordMap)) {
+                for (Date date : indicatorRecordMap.keySet()) {
+                    HashMap<String, Object> paramMap = getParamMap(monitorValuesMap, date);
+                    Double formulaResult = calculateFormula(formula, paramMap);
+                    GraphItemVO graphItemVO = new GraphItemVO(
+                            String.valueOf(date.getTime()), formulaResult,
+                            AttrValueTypeEnum.number_2, monitorIndicator.getUnit());
+                    referenceValueList.add(graphItemVO);
+                }
             }
+
             monitorIndicatorReferenceItem.setValue(referenceValueList);
             reference.add(monitorIndicatorReferenceItem);
         }
@@ -336,6 +341,9 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
     private List<GraphItemVO> getIndicatorRecordGraphData(
             MonitorIndicator monitorIndicator, Map<Date, String> indicatorRecordMap) {
         List<GraphItemVO> values = new ArrayList<>();
+        if (CollectionUtils.isEmpty(indicatorRecordMap)) {
+            return values;
+        }
         for (Date date : indicatorRecordMap.keySet()) {
             if (date == null) {
                 continue;
@@ -433,6 +441,7 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
     /**
      * 获取监测指标的历史采集值
      *
+     * @param objId        设备id
      * @param infoCodeList [equipId-monitorId]
      * @param startTime    开始时间
      * @param endTime      结束时间
@@ -441,25 +450,15 @@ public class MonitorIndicatorServiceImpl extends ServiceImpl<MonitorIndicatorMap
      * @version V1.0 2021/9/27 2:35 下午
      */
     private Map<String, Map<Date, String>> getIndicatorHistoryValues(
-            List<String> infoCodeList, Date startTime, Date endTime) {
+            String objId, List<String> infoCodeList, Date startTime, Date endTime) {
         // monitorId -> (time -> value)
         Map<String, Map<Date, String>> monitorValuesMap = new HashMap<>();
-        // infoCodeList:[equipId-monitorId]
-        for (String infoCode : infoCodeList) {
-            String objId;
-            String indicatorId;
-            try {
-                objId = infoCode.substring(0, infoCode.indexOf("_"));
-                indicatorId = infoCode.substring(infoCode.indexOf("_") + 1);
-            } catch (Exception e) {
-                throw new IllegalArgumentException("报警记录数据有误,无法正确获取到报警条件中的信息点");
-            }
-            if (StringUtils.isBlank(objId) || StringUtils.isBlank(indicatorId)) {
-                throw new IllegalArgumentException("报警记录数据有误,无法正确获取到报警条件中的信息点");
-            }
+        // infoCodeList:[indicatorId]
+        for (String indicatorId : infoCodeList) {
             // 查询设备监测指标取值
             QueryMonitorIndicatorRecordDTO queryMonitorIndicatorRecordDTO = new QueryMonitorIndicatorRecordDTO();
             queryMonitorIndicatorRecordDTO.setObjId(objId);
+            queryMonitorIndicatorRecordDTO.setProjectId(PoemsContext.getContext().getProjectId());
             queryMonitorIndicatorRecordDTO.setMonitorIndicatorId(indicatorId);
             queryMonitorIndicatorRecordDTO.setTimeFrom(startTime == null ? null : startTime.getTime());
             queryMonitorIndicatorRecordDTO.setTimeTo(endTime == null ? null : endTime.getTime());

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/AlarmCondition.java

@@ -23,7 +23,7 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 @Data
 @ApiModel(description = "报警条件")
-@TableName(value = "alarm_condition_bak", autoResultMap = true)
+@TableName(value = "alarm_condition_v2", autoResultMap = true)
 public class AlarmCondition extends AuditableEntity<AlarmCondition> implements Serializable {
     private static final long serialVersionUID = 268657175929005281L;
 

+ 12 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/ConvertAlarmConditionTool.java

@@ -29,6 +29,10 @@ public interface ConvertAlarmConditionTool {
     * @author lixing
     * @version V1.0 2021-09-08 22:30:38
     */
+    @Mappings({
+            @Mapping(source = "triggerFrontend", target = "frontend"),
+            @Mapping(source = "triggerBackend", target = "backend")
+    })
     AlarmConditionItemVO convert2ResponseItemDTO(AlarmCondition alarmCondition);
     
     /**
@@ -39,6 +43,10 @@ public interface ConvertAlarmConditionTool {
     * @author lixing
     * @version V1.0 2021-09-08 22:30:38
     */
+    @Mappings({
+            @Mapping(source = "triggerFrontend", target = "frontend"),
+            @Mapping(source = "triggerBackend", target = "backend")
+    })
     AlarmConditionListItemVO convert2ResponseListItemDTO(AlarmCondition alarmCondition);
 
     /**
@@ -70,6 +78,10 @@ public interface ConvertAlarmConditionTool {
     * @author lixing
     * @version V1.0 2021-09-08 22:30:38
     */
+    @Mappings({
+            @Mapping(source = "updateAlarmConditionDTO.backend", target = "triggerBackend"),
+            @Mapping(source = "updateAlarmConditionDTO.frontend", target = "triggerFrontend")
+    })
     AlarmCondition convertUpdateDto2Entity(@MappingTarget AlarmCondition alarmCondition, UpdateAlarmConditionDTO updateAlarmConditionDTO);
 }
 

+ 2 - 2
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/vo/AlarmConditionItemVO.java

@@ -27,10 +27,10 @@ public class AlarmConditionItemVO {
     private List<String> infoCodes;
 
     @ApiModelProperty("触发条件-前端展示")
-    private List<List<CalculateMethodDTO>> triggerFrontend;
+    private List<List<CalculateMethodDTO>> frontend;
 
     @ApiModelProperty("触发条件-后端使用")
-    private String triggerBackend;
+    private String backend;
 
     @ApiModelProperty("触发时长")
     private Integer triggerUphold;

+ 4 - 2
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/vo/AlarmConditionListItemVO.java

@@ -1,5 +1,7 @@
 package com.persagy.apm.alarmservice.project.alarmcondition.model.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.dto.CalculateMethodDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -25,10 +27,10 @@ public class AlarmConditionListItemVO {
     private List<String> infoCodes;
 
     @ApiModelProperty("触发条件-前端展示")
-    private List<List<CalculateMethodDTO>> triggerFrontend;
+    private List<List<CalculateMethodDTO>> frontend;
 
     @ApiModelProperty("触发条件-后端使用")
-    private String triggerBackend;
+    private String backend;
 
     @ApiModelProperty("触发时长")
     private Integer triggerUphold;

+ 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());
     }
 
     /**

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/controller/ProjectAlarmRuleController.java

@@ -107,7 +107,7 @@ public class ProjectAlarmRuleController {
     public CommonResult deleteProjectAlarmRule(
             @RequestBody @Valid DeleteProjectAlarmRuleDTO deleteProjectAlarmRuleDTO) {
         try {
-            projectAlarmRuleService.deleteProjectAlarmRule(deleteProjectAlarmRuleDTO);
+            projectAlarmRuleService.deleteProjectAlarmRule(deleteProjectAlarmRuleDTO.getId());
         } catch (Exception e) {
             e.printStackTrace();
             return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());

+ 3 - 3
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/IProjectAlarmRuleService.java

@@ -55,11 +55,11 @@ public interface IProjectAlarmRuleService  {
     /**
     * 删除项目报警规则
     *
-    * @param deleteProjectAlarmRuleDTO 入参
+    * @param ruleId 报警规则id
     * @author lixing
     * @version V1.0 2021-09-08 22:46:16
     */
-    public void deleteProjectAlarmRule(DeleteProjectAlarmRuleDTO deleteProjectAlarmRuleDTO) throws Exception;
+    public void deleteProjectAlarmRule(String ruleId) throws Exception;
     
     /**
     * 查询项目报警规则
@@ -103,5 +103,5 @@ public interface IProjectAlarmRuleService  {
 //     */
 //    void sendBatchCreateAlarmConfigMsg(List<AddAlarmConfigDTO> alarmConfigs, String projectId);
 
-    void deleteBatch(GroupAlarmRule groupAlarmRule);
+    void deleteBatchByGroupRule(GroupAlarmRule groupAlarmRule) throws Exception;
 }

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

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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;
@@ -34,15 +34,13 @@ import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlar
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.common.context.poems.PoemsContext;
-import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
-import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.*;
-import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
 import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -76,7 +74,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     @Autowired
     private ProjectAlarmRuleMapper mapper;
     @Autowired
-    private RabbitMsgSender rabbitMsgSender;
+    private JmsSender jmsSender;
     @Autowired
     private ProjectAlarmRuleObjRelMapper projectAlarmRuleObjRelMapper;
 
@@ -102,54 +100,54 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         //存储项目报警
         save(projectAlarmRule);
 
-        List<ProjectAlarmRuleObjRel> addEquipList = addProjectAlarmRuleDTO.getAddEquipList();
-        addEquipList.forEach(addEquip -> {
+        List<ProjectAlarmRuleObjRel> alarmRuleObjRels = addProjectAlarmRuleDTO.getAddEquipList();
+        alarmRuleObjRels.forEach(addEquip -> {
             addEquip.setProjectAlarmRuleId(projectAlarmRule.getId());
             addEquip.setProjectId(addProjectAlarmRuleDTO.getProjectId());
         });
-        //保存报警对象
-        projectAlarmRuleObjRelService.saveProjectAlarmRule(addEquipList);
+        // 保存报警对象与规则的关联关系
+        projectAlarmRuleObjRelService.saveObjRuleRels(alarmRuleObjRels);
 
         // 勿删后续可能启用 lixing
-//        //保存中台规则
-//        BatchAddAlarmConfigDTO batchAddAlarmConfigDTO = new BatchAddAlarmConfigDTO();
-//        List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
-//        for (ProjectAlarmRuleObjRel ProjectAlarmRuleObjRel : addEquipList) {
-//            AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
-//            String equipId = ProjectAlarmRuleObjRel.getObjId();
-//            addAlarmConfigDTO.setObjId(equipId);
-//            addAlarmConfigDTO.setItemCode(addProjectAlarmRuleDTO.getAlarmItemCode());
-//            addAlarmConfigDTO.setClassCode(addProjectAlarmRuleDTO.getClassCode());
-//            addAlarmConfigDTO.setLevel(alarmConditionDTO.getAlarmLevel());
-//            addAlarmConfigDTO.setCategory("Eqdx");
-//            addAlarmConfigDTO.setOpen(1);
-//            AlarmCondition equipCondition = new AlarmCondition();
-//            List<String> infoCodeList = (List<String>) alarmConditionMap.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) alarmConditionMap.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(alarmConditionDTO.getTriggerUphold() * 60);
-//            equipCondition.setRules((List<String>) alarmConditionMap.get("displayFormula"));
-//            JSONArray configs = JSONArray.parseArray(JSON.toJSONString(alarmConditionDTO.getFrontend()));
-//            equipCondition.setConfigs(configs);
-//            AlarmEffectTime effectTime = new AlarmEffectTime();
-//            effectTime.setType("always");
-//            equipCondition.setEffectTime(effectTime);
-//            addAlarmConfigDTO.setCondition(equipCondition);
-//            alarmConfigs.add(addAlarmConfigDTO);
-//        }
-//        sendBatchCreateAlarmConfigMsg(alarmConfigs, addProjectAlarmRuleDTO.getProjectId());
+        //        //保存中台规则
+        //        BatchAddAlarmConfigDTO batchAddAlarmConfigDTO = new BatchAddAlarmConfigDTO();
+        //        List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
+        //        for (ProjectAlarmRuleObjRel ProjectAlarmRuleObjRel : alarmRuleObjRels) {
+        //            AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
+        //            String equipId = ProjectAlarmRuleObjRel.getObjId();
+        //            addAlarmConfigDTO.setObjId(equipId);
+        //            addAlarmConfigDTO.setItemCode(addProjectAlarmRuleDTO.getAlarmItemCode());
+        //            addAlarmConfigDTO.setClassCode(addProjectAlarmRuleDTO.getClassCode());
+        //            addAlarmConfigDTO.setLevel(alarmConditionDTO.getAlarmLevel());
+        //            addAlarmConfigDTO.setCategory("Eqdx");
+        //            addAlarmConfigDTO.setOpen(1);
+        //            AlarmCondition equipCondition = new AlarmCondition();
+        //            List<String> infoCodeList = (List<String>) alarmConditionMap.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) alarmConditionMap.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(alarmConditionDTO.getTriggerUphold() * 60);
+        //            equipCondition.setRules((List<String>) alarmConditionMap.get("displayFormula"));
+        //            JSONArray configs = JSONArray.parseArray(JSON.toJSONString(alarmConditionDTO.getFrontend()));
+        //            equipCondition.setConfigs(configs);
+        //            AlarmEffectTime effectTime = new AlarmEffectTime();
+        //            effectTime.setType("always");
+        //            equipCondition.setEffectTime(effectTime);
+        //            addAlarmConfigDTO.setCondition(equipCondition);
+        //            alarmConfigs.add(addAlarmConfigDTO);
+        //        }
+        //        sendBatchCreateAlarmConfigMsg(alarmConfigs, addProjectAlarmRuleDTO.getProjectId());
         return projectAlarmRule.getId();
     }
 
@@ -229,10 +227,10 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         projectAlarmRule.setModifiedTime(new Date());
         projectAlarmRule.setModifier(PoemsContext.getContext().getUserId());
         projectAlarmRule.setBelong(updateProjectAlarmRuleDTO.getBelong());
+        // 前面更新报警条件已经发送了消息,这里更新报警规则不需要再发送消息
         updateById(projectAlarmRule);
-        //删除报警对象关联关系
-        //projectAlarmRuleObjRelService.deleteRelation(updateProjectAlarmRuleDTO.getId());
-        projectAlarmRuleObjRelMapper.deleteByProjectAlarmRuleId(updateProjectAlarmRuleDTO.getId());
+        // 根据报警规则删除规则与设备关联关系并发送mq消息
+        deleteRelsAndSendMsgByRuleId(updateProjectAlarmRuleDTO.getId());
         //新增关联关系
         List<UpdateAlarmItemDTO> addRelationList = updateProjectAlarmRuleDTO.getAddEquipList();
         String projectId = updateProjectAlarmRuleDTO.getProjectId();
@@ -240,49 +238,61 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         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);
+        //        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);
+    }
+
+    /**
+     * 根据报警规则删除规则与设备关联关系并发送mq消息
+     *
+     * @param ruleId 报警规则id
+     * @author lixing
+     * @version V1.0 2021/10/26 5:38 下午
+     */
+    private void deleteRelsAndSendMsgByRuleId(String ruleId) {
+        jmsSender.sendRemoveObjConditionRelListMsg(ruleId);
+        projectAlarmRuleObjRelMapper.deleteByProjectAlarmRuleId(ruleId);
     }
 
     private List<AddProjectAlarmRuleObjRelDTO> convert2AddProjectAlarmRuleObjRelDTO(List<UpdateAlarmItemDTO> addRelationList, String id, String projectId) {
@@ -338,9 +348,9 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void deleteProjectAlarmRule(DeleteProjectAlarmRuleDTO deleteProjectAlarmRuleDTO) throws Exception {
+    public void deleteProjectAlarmRule(String ruleId) throws Exception {
         // 校验是否可删除
-        ProjectAlarmRule projectAlarmRule = checkDeletable(deleteProjectAlarmRuleDTO.getId());
+        ProjectAlarmRule projectAlarmRule = checkDeletable(ruleId);
         projectAlarmRule.setValid(ValidEnum.FALSE.getType());
         updateById(projectAlarmRule);
         //查询是否是自定义报警,是则删除自定义规则
@@ -350,31 +360,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,9 +514,9 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
                 addRelationList.add(addProjectAlarmRuleObjRelDTO);
             }
             // 按项目批量保存
-            projectAlarmRuleObjRelService.createBatchRelation(addRelationList);
             saveBatch(projectAlarmRuleList);
-            count ++;
+            projectAlarmRuleObjRelService.createBatchRelation(addRelationList);
+            count++;
             log.info("已完成{}个项目的报警规则创建, 剩余{}个项目的报警规则待创建", count, projects.size() - count);
         }
     }
@@ -534,33 +544,36 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     }
 
     // 勿删后续可能启用 lixing
-//    @Override
-//    public void sendBatchCreateAlarmConfigMsg(List<AddAlarmConfigDTO> alarmConfigs, String projectId) {
-//        if (CollectionUtils.isEmpty(alarmConfigs)) {
-//            return;
-//        }
-//        DmpMessage dmpMessage = new DmpMessage();
-//        dmpMessage.setGroupCode(PoemsContext.getContext().getGroupCode());
-//        dmpMessage.setProjectId(projectId);
-//        dmpMessage.setUserId(PoemsContext.getContext().getUserId());
-//        dmpMessage.setAppId("energy-alarm-service");
-//        dmpMessage.setType("alarmConfigBatchCreate");
-//        JSONObject exts = new JSONObject();
-//        exts.put("alarmConfigs", alarmConfigs);
-//        dmpMessage.setExts(exts);
-//        rabbitMsgSender.convertAndSend(dmpMessage);
-//    }
+    //    @Override
+    //    public void sendBatchCreateAlarmConfigMsg(List<AddAlarmConfigDTO> alarmConfigs, String projectId) {
+    //        if (CollectionUtils.isEmpty(alarmConfigs)) {
+    //            return;
+    //        }
+    //        DmpMessage dmpMessage = new DmpMessage();
+    //        dmpMessage.setGroupCode(PoemsContext.getContext().getGroupCode());
+    //        dmpMessage.setProjectId(projectId);
+    //        dmpMessage.setUserId(PoemsContext.getContext().getUserId());
+    //        dmpMessage.setAppId("energy-alarm-service");
+    //        dmpMessage.setType("alarmConfigBatchCreate");
+    //        JSONObject exts = new JSONObject();
+    //        exts.put("alarmConfigs", alarmConfigs);
+    //        dmpMessage.setExts(exts);
+    //        rabbitMsgSender.convertAndSend(dmpMessage);
+    //    }
 
     @Override
-    public void deleteBatch(GroupAlarmRule groupAlarmRule) {
+    public void deleteBatchByGroupRule(GroupAlarmRule groupAlarmRule) throws Exception{
         QueryWrapper<ProjectAlarmRule> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(ProjectAlarmRule.PROP_GROUP_ID, groupAlarmRule.getGroupId());
         queryWrapper.eq(ProjectAlarmRule.PROP_ALARM_ITEM_CODE, groupAlarmRule.getAlarmItemCode());
         queryWrapper.eq(ProjectAlarmRule.PROP_ALARM_CONDITION_ID, groupAlarmRule.getAlarmConditionId());
-        List<ProjectAlarmRule> list = list(queryWrapper);
-        ProjectAlarmRule projectAlarmRule = new ProjectAlarmRule();
-        projectAlarmRule.setValid(ValidEnum.FALSE.getType());
-        update(projectAlarmRule, queryWrapper);
+        List<ProjectAlarmRule> projectAlarmRuleList = list(queryWrapper);
+        if (CollectionUtils.isEmpty(projectAlarmRuleList)) {
+            return;
+        }
+        for (ProjectAlarmRule projectAlarmRule : projectAlarmRuleList) {
+            deleteProjectAlarmRule(projectAlarmRule.getId());
+        }
     }
 
     /**

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

@@ -1,5 +1,7 @@
 package com.persagy.apm.alarmservice.project.alarmruleobjrel.service;
 
+import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
+import com.persagy.apm.alarmservice.project.alarmrule.model.ProjectAlarmRule;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.*;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.*;
 import java.util.List;
@@ -82,8 +84,6 @@ public interface IProjectAlarmRuleObjRelService  {
 
     void updateBatch(ShieldManageListDTO shieldManageListDTO) throws Exception;
 
-    void deleteBatch();
-
     List<ProjectAlarmRuleObjRel> queryShieldManage(QueryShieldManageDTO queryShieldManageDTO);
 
     List<ProjectAlarmRuleObjRelListItemVO> queryRuleObjRel(QueryRuleObjRelDTO queryRuleObjRelDTO);
@@ -92,7 +92,7 @@ public interface IProjectAlarmRuleObjRelService  {
 
     List<ProjectAlarmRuleObjRel> queryObjRelList(List<String> strings);
 
-    void saveProjectAlarmRule(List<ProjectAlarmRuleObjRel> addEquipList);
+    void saveObjRuleRels(List<ProjectAlarmRuleObjRel> alarmRuleObjRels);
 
     /**
      * 查询报警对象与报警条件的关联关系

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

@@ -7,6 +7,8 @@ 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.alarmrule.model.GroupAlarmRule;
 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 +64,8 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
     GroupManagementService groupManagementService;
     @Autowired
     private ProjectAlarmRuleObjRelMapper projectAlarmRuleObjRelMapper;
+    @Autowired
+    JmsSender jmsSender;
 
     /**
      * 创建项目报警规则与监测对象的关联
@@ -88,8 +92,6 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
      */
     private void setDefaultValue(ProjectAlarmRuleObjRel projectAlarmRuleObjRel) {
         projectAlarmRuleObjRel.setCreator(AppContext.getContext().getAccountId());
-        // todo 其他默认的属性
-
     }
 
     /**
@@ -224,23 +226,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,11 +253,12 @@ 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());
+        jmsSender.sendRemoveObjConditionRelListMsg(ruleId);
         update(projectAlarmRuleObjRel, queryWrapper);
     }
 
@@ -270,7 +270,7 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
             setDefaultValue(projectAlarmRuleObjRel);
             relationList.add(projectAlarmRuleObjRel);
         });
-        saveBatch(relationList);
+        saveBatchAndSendMsg(relationList);
     }
 
     @Override
@@ -278,32 +278,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) {
@@ -321,17 +325,6 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
     }
 
     @Override
-    public void deleteBatch() {
-        List<ProjectVO> project = projectAlarmRuleService.getProject();
-        List<String> list = project.stream().map(ProjectVO::getProjectId).collect(Collectors.toList());
-        QueryWrapper<ProjectAlarmRuleObjRel> queryWrapper = new QueryWrapper<>();
-        queryWrapper.in(ProjectAlarmRuleObjRel.PROP_PROJECT_ID, list);
-        ProjectAlarmRuleObjRel projectAlarmRuleObjRel = new ProjectAlarmRuleObjRel();
-        projectAlarmRuleObjRel.setValid(ValidEnum.FALSE.getType());
-        update(projectAlarmRuleObjRel, queryWrapper);
-    }
-
-    @Override
     public List<ProjectAlarmRuleObjRel> queryShieldManage(QueryShieldManageDTO queryShieldManageDTO) {
         QueryWrapper<ProjectAlarmRuleObjRel> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_VALID, ValidEnum.TRUE.getType());
@@ -340,12 +333,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 +423,24 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
     }
 
     @Override
-    public void saveProjectAlarmRule(List<ProjectAlarmRuleObjRel> addEquipList) {
-        saveBatch(addEquipList);
+    public void saveObjRuleRels(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);
+    }
 }

+ 10 - 3
src/main/resources/bootstrap.yml

@@ -7,17 +7,24 @@ spring:
     name: energy-alarm-service
 
 EUREKA_CLIENT_DEFAULT_ZONE: http://frame:123456@develop.persagy.com/integrated-eureka/eureka/
-#EUREKA_INSTANCE_IP_ADDRESS: 192.168.16.235
 
+# 不打印sql
 mybatis-plus:
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
 
 eureka:
 #  instance:
 #    prefer-ip-address: true
   client:
-    register-with-eureka: false
+    register-with-eureka: ${register-with-eureka}
+
+# com.persagy包的日志等级为info
+logging:
+  level:
+    com:
+      persagy: info
 
 

+ 1 - 1
src/main/resources/db/init/data_dev.sql

@@ -171,4 +171,4 @@ VALUES ('9', '(当前时刻CO2浓度-上一时刻CO2浓度)的绝对值',
         'ACATAH_ReturnAirCO2difference', 1, NULL, 'systemId', '2021-09-20 17:13:56', 'systemId', '2021-09-20 17:14:18',
         1);
 REPLACE INTO energy_alarm_service.alarm_project (id, project_id, project_name, group_code)
-VALUES ('153', '1101060001', '北京槐房万达广场', 'WD');
+VALUES ('153', 'Pj1101060001', '北京槐房万达广场', 'WD');

File diff suppressed because it is too large
+ 1 - 1
src/main/resources/db/init/table.sql


+ 1 - 1
src/main/resources/mapper/GroupAlarmRuleMapper.xml

@@ -39,7 +39,7 @@
         b.trigger_uphold,
         b.alarm_level
         from group_alarm_rule a
-        left join alarm_condition b on a.alarm_condition_id = b.id
+        left join alarm_condition_v2 b on a.alarm_condition_id = b.id
         where a.group_id = #{groupId} and a.valid = 1
         <if test="alarmItemName != null and alarmItemName != ''">
             and a.alarm_item_name like '%${alarmItemName}%'

+ 3 - 4
src/main/resources/mapper/ProjectAlarmRuleMapper.xml

@@ -18,10 +18,9 @@
                     ofType="com.persagy.apm.alarmservice.project.alarmcondition.model.vo.AlarmConditionListItemVO">
             <result column="info_codes" property="infoCodes"
                     typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
-            <result column="frontend" property="frontend"
-                    typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
-            <result column="backend" property="backend"
+            <result column="trigger_frontend" property="frontend"
                     typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
+            <result column="trigger_backend" property="backend"/>
             <result column="trigger_uphold" property="triggerUphold"/>
             <result column="alarm_level" property="alarmLevel"/>
         </collection>
@@ -55,7 +54,7 @@
         c.alarm_level,
         c.trigger_backend,c.trigger_frontend,c.info_codes,c.trigger_uphold
         from project_alarm_rule a
-        left join alarm_condition c on a.alarm_condition_id = c.id
+        left join alarm_condition_v2 c on a.alarm_condition_id = c.id
         where a.group_id = #{groupId} and a.valid = 1 and a.project_id = #{projectId}
         <if test="alarmItemCode != null and alarmItemCode != ''">
             and a.alarm_item_code = #{alarmItemCode}

+ 1 - 0
src/main/resources/mapper/ProjectAlarmRuleObjRelMapper.xml

@@ -43,6 +43,7 @@
         from project_alarm_rule rule,
         project_alarm_rule_obj_rel rel
         where rule.id = rel.project_alarm_rule_id
+          and rel.valid = 1 and rule.valid = 1
         <if test="projectId != null and projectId != ''">
             and rule.project_id = #{projectId};
         </if>