浏览代码

fix conflict

lixing 3 年之前
父节点
当前提交
50882a61cb
共有 16 个文件被更改,包括 361 次插入44 次删除
  1. 26 0
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/Formula.java
  2. 1 1
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/dto/AddAlarmConditionDTO.java
  3. 1 1
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/dto/UpdateAlarmConditionDTO.java
  4. 1 0
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/service/IAlarmConditionService.java
  5. 41 24
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/service/impl/AlarmConditionServiceImpl.java
  6. 4 0
      src/main/java/com/persagy/apm/alarmservice/calculatemethod/model/dto/CalculateMethodDTO.java
  7. 1 1
      src/main/java/com/persagy/apm/alarmservice/group/management/controller/GroupManagementController.java
  8. 4 4
      src/main/java/com/persagy/apm/alarmservice/group/management/service/GroupManagementService.java
  9. 13 9
      src/main/java/com/persagy/apm/alarmservice/group/management/service/impl/GroupManagementServiceImpl.java
  10. 12 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/controller/ProjectAlarmRuleObjRelController.java
  11. 20 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/dto/QueryShieldManageDTO.java
  12. 2 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/IProjectAlarmRuleObjRelService.java
  13. 24 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/impl/ProjectAlarmRuleObjRelServiceImpl.java
  14. 23 3
      src/main/java/com/persagy/apm/common/configuration/ElasticSearchConfig.java
  15. 133 0
      src/main/java/com/persagy/apm/common/configuration/JmsConfig.java
  16. 55 0
      src/main/java/com/persagy/apm/model/DmpMessage.java

+ 26 - 0
src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/Formula.java

@@ -0,0 +1,26 @@
+package com.persagy.apm.alarmservice.alarmcondition.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.persagy.apm.common.model.entity.AuditableEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * 报警条件(AlarmCondition)实体类
+ * @author lixing
+ * @version V1.0 2021-09-08 22:30:38
+ */
+@Data
+public class Formula implements Serializable {
+    private static final long serialVersionUID = 268657175929005281L;
+
+    private String key;
+    private String label;
+    private String value;
+
+}

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/dto/AddAlarmConditionDTO.java

@@ -18,7 +18,7 @@ import java.util.Map;
 public class AddAlarmConditionDTO {
     @ApiModelProperty(value = "包含的参数", required = true)
     //@NotNull(message = "包含的参数不能为空") // todo 更新校验规则
-    private Map<String,String> infoCodes;
+    private Object infoCodes;
     
     @ApiModelProperty(value = "报警触发规则", required = true)
     @NotNull(message = "报警触发规则不能为空") // todo 更新校验规则

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/dto/UpdateAlarmConditionDTO.java

@@ -22,7 +22,7 @@ public class UpdateAlarmConditionDTO {
     
     @ApiModelProperty(value = "包含的参数", required = true)
     @NotNull(message = "包含的参数不能为空") // todo 更新校验规则
-    private Map<String, String> infoCodes;
+    private Object infoCodes;
     
     @ApiModelProperty(value = "前端展示", required = true)
     @NotNull(message = "前端展示不能为空") // todo 更新校验规则

+ 1 - 0
src/main/java/com/persagy/apm/alarmservice/alarmcondition/service/IAlarmConditionService.java

@@ -6,6 +6,7 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.json.JSONException;
 
 /**
  * 报警条件(AlarmCondition) service接口

+ 41 - 24
src/main/java/com/persagy/apm/alarmservice/alarmcondition/service/impl/AlarmConditionServiceImpl.java

@@ -1,6 +1,7 @@
 package com.persagy.apm.alarmservice.alarmcondition.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -9,6 +10,7 @@ import com.google.common.base.CaseFormat;
 import com.persagy.apm.alarmservice.alarmcondition.dao.AlarmConditionMapper;
 import com.persagy.apm.alarmservice.alarmcondition.model.AlarmCondition;
 import com.persagy.apm.alarmservice.alarmcondition.model.ConvertAlarmConditionTool;
+import com.persagy.apm.alarmservice.alarmcondition.model.Formula;
 import com.persagy.apm.alarmservice.alarmcondition.model.dto.AddAlarmConditionDTO;
 import com.persagy.apm.alarmservice.alarmcondition.model.dto.PageQueryAlarmConditionDTO;
 import com.persagy.apm.alarmservice.alarmcondition.model.dto.QueryAlarmConditionDTO;
@@ -20,13 +22,10 @@ import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.common.model.dto.Sort;
 import org.apache.commons.lang.StringUtils;
-import org.json.JSONArray;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 报警条件(AlarmCondition) service层
@@ -49,43 +48,61 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
     public String createAlarmCondition(AddAlarmConditionDTO addAlarmConditionDTO) {
         AlarmCondition alarmCondition = ConvertAlarmConditionTool.INSTANCE.convertAddDto2Entity(addAlarmConditionDTO);
         List<List<CalculateMethodDTO>> frontend = addAlarmConditionDTO.getFrontend();
-        addAlarmConditionDTO.getInfoCodes();
         Object json = JSON.toJSON(frontend);
         alarmCondition.setFrontend(json);
         //将前端公式转换成后台公式
-        String backend = frontend2Backend(frontend);
-        alarmCondition.setBackend(backend);
+        Map<String, String> stringMap = frontend2Backend(frontend);
+        alarmCondition.setBackend(stringMap.get("backend"));
+        alarmCondition.setInfoCodes(stringMap.get("infoCode"));
         // 设置默认值
         setDefaultValue(alarmCondition);
         save(alarmCondition);
         return alarmCondition.getId();
     }
 
-    private String frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
-        StringBuffer sb = new StringBuffer();
+    private Map<String, String> frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
+        StringBuffer allNotNull = new StringBuffer();
+        StringBuffer allNull = new StringBuffer();
+        Set<String> infoCodesList = new HashSet<>();
         for (List<CalculateMethodDTO> calculateMethodDTOS : frontend) {
             StringBuffer notNullString = new StringBuffer();
-            notNullString.append("(");
             StringBuffer nullString = new StringBuffer();
-            nullString.append("(");
             StringBuffer calculateString = new StringBuffer();
             for (CalculateMethodDTO calculateMethodDTO : calculateMethodDTOS) {
-                nullString.append(calculateMethodDTO.getMonitorIndicatorId()).append("==NaN").append("||");
-                notNullString.append("(").append(calculateMethodDTO.getMonitorIndicatorId()).append("!=NaN").append("&&");
+                infoCodesList.add(calculateMethodDTO.getMonitorIndicatorId());
+                String formular = calculateMethodDTO.getFormula();
+                List<Formula> formulas = JSONObject.parseArray(formular, Formula.class);
+                StringBuffer tempFormula = new StringBuffer();
+                for (Formula formula : formulas) {
+                    if(formula.getValue()!=null){
+                        nullString.append(formula.getValue()).append("==NaN").append(" || ");
+                        notNullString.append(formula.getValue()).append("!=NaN").append(" && ");
+                        tempFormula.append(formula.getValue());
+                        infoCodesList.add(formula.getValue());
+                    }else{
+                        tempFormula.append(formula.getLabel());
+                    }
+                }
+                calculateMethodDTO.setTempFormula(tempFormula.toString());
+                nullString.append(calculateMethodDTO.getMonitorIndicatorId()).append("==NaN").append(" || ");
+                notNullString.append(calculateMethodDTO.getMonitorIndicatorId()).append("!=NaN").append(" && ");
                 calculateString.append("(")
                         .append(calculateMethodDTO.getMonitorIndicatorId())
                         .append(calculateMethodDTO.getOperator())
-                        .append(calculateMethodDTO.getFormula()).append(")")
+                        .append(calculateMethodDTO.getTempFormula()).append(")")
                         .append(" && ");
             }
-            notNullString.append(")").append("||");
-            //sb.append(calculateString.substring(0, calculateString.length() - 4)).append(" || ");
+            notNullString.delete(notNullString.length() - 4, notNullString.length()).append(")");
+            allNotNull.append("(").append(notNullString).append(" || ");
+            allNull.append("(").append("(").append(nullString.substring(0, nullString.length() - 4)).append(")").append("?true:").append("(").append(calculateString.substring(0, calculateString.length() - 4)).append(")").append(")").append(" || ");
         }
-        String substring = sb.substring(0, sb.length() - 4);
-//        for (Map.Entry<String, String> entry : infoCodes.entrySet()) {
-//            calculateString.toString().replace(entry.getKey(),entry.getValue());
-//        }
-        return substring;
+        String infoCode = JSON.toJSONString(infoCodesList);
+        StringBuffer substring = new StringBuffer();
+        substring.append("(").append(allNotNull.substring(0, allNotNull.length() - 4)).append(")").append(" && ").append("(").append(allNull.substring(0, allNull.length() - 4)).append(")").toString();
+        Map<String, String> map = new HashMap();
+        map.put("infoCode",infoCode);
+        map.put("backend",substring.toString());
+        return map;
     }
 
     /**
@@ -135,12 +152,12 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         alarmCondition.setModifier(PoemsContext.getContext().getUserId());
         if (updateAlarmConditionDTO.getFrontend() != null) {
             List<List<CalculateMethodDTO>> frontend = updateAlarmConditionDTO.getFrontend();
-            //Map<String, String> infoCodes = updateAlarmConditionDTO.getInfoCodes();
             String frontJson = JSON.toJSONString(frontend);
             alarmCondition.setFrontend(frontJson);
             //将前端公式转换成后台公式
-            String backend = frontend2Backend(frontend);
-            alarmCondition.setBackend(backend);
+            Map<String, String> stringMap = frontend2Backend(frontend);
+            alarmCondition.setBackend(stringMap.get("backend"));
+            alarmCondition.setInfoCodes(stringMap.get("infoCode"));
         }
         updateById(alarmCondition);
     }

+ 4 - 0
src/main/java/com/persagy/apm/alarmservice/calculatemethod/model/dto/CalculateMethodDTO.java

@@ -3,6 +3,7 @@ package com.persagy.apm.alarmservice.calculatemethod.model.dto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.constraints.NotNull;
 
@@ -28,5 +29,8 @@ public class CalculateMethodDTO {
     @ApiModelProperty(value = "是否是指标默认计算方式", required = true)
     @NotNull(message = "是否是指标默认计算方式不能为空") // todo 更新校验规则
     private Integer isDefault;
+
+    @ApiModelProperty(value = "临时存储公式")
+    private String tempFormula;
     
 }

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/group/management/controller/GroupManagementController.java

@@ -56,7 +56,7 @@ public class GroupManagementController {
     
     @ApiOperation(value = "分组条件(设备类+查询条件)+项目 获取设备  加上分页和根据设备名称查询")
     @PostMapping("/equips/query")
-    public CommonResult<PageList<GroupManagementVo>> equipsQuery(@RequestBody GroupManagementDTO managementDTO){
+    public CommonResult<PageList<GroupManagementVo>> equipsQuery(@Valid @RequestBody GroupManagementDTO managementDTO){
         PageList<GroupManagementVo> pageList = managementService.equipsQuery(managementDTO);
         return ResultHelper.multi(pageList.getRecords(),pageList.getTotal());
     }

+ 4 - 4
src/main/java/com/persagy/apm/alarmservice/group/management/service/GroupManagementService.java

@@ -19,7 +19,7 @@ import java.util.Map;
 public interface GroupManagementService{
     /**
      * 分组条件(设备类+查询条件)+项目 获取设备
-     * @param managementDTO
+     * @param managementDTO 查询条件
      * @author 易涛
      * @date 2021/9/8 16:54
      * @return java.util.List<com.persagy.apm.model.vo.GroupManagementVo>
@@ -27,8 +27,8 @@ public interface GroupManagementService{
     PageList<GroupManagementVo> equipsQuery(GroupManagementDTO managementDTO);
     
     /**
-     * 获取设备名称
-     * @param id
+     *
+     * @param id 设备id
      * @author 易涛
      * @date 2021/9/9 16:04 
      * @return com.persagy.apm.model.vo.GroupManagementVo
@@ -47,7 +47,7 @@ public interface GroupManagementService{
 
     /**
      * 根据设备id查询分组名称
-     * @param ids
+     * @param ids 设备id数组
      * @author 易涛
      * @date 2021/9/10 10:02
      * @return com.persagy.apm.alarmservice.group.management.model.vo.GroupTreeDetailVO

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

@@ -51,6 +51,7 @@ import static org.apache.commons.lang3.math.NumberUtils.INTEGER_ONE;
 import static org.apache.commons.lang3.math.NumberUtils.INTEGER_ZERO;
 
 /**
+ * 分组管理service
  * @author 易涛
  * @version 1.0
  * @date 2021/9/8 14:18
@@ -114,9 +115,7 @@ public class GroupManagementServiceImpl implements GroupManagementService {
 
     /**
      * 根据id查询设备-常用方法
-     *
-     * @param id
-     * @return java.lang.String
+     * @param id 设备id
      * @author 易涛
      * @date 2021/9/10 10:05
      */
@@ -187,22 +186,27 @@ public class GroupManagementServiceImpl implements GroupManagementService {
     public List<GroupTreeInfoVO> equipsGroupQuery(List<String> ids) {
         List<GroupTreeInfoVO> groupTreeInfoVOList = Lists.newArrayList();
         List<GroupManagement> groupManagementList = findEquipsByIds(ids);
-        for (GroupManagement management : groupManagementList) {
-            if (StringUtils.isEmpty(management.getInfos())) {
-                return null;
+        for(GroupManagement management:groupManagementList) {
+            if(StringUtils.isEmpty(management.getInfos())){
+                return groupTreeInfoVOList;
             }
             String infos = management.getInfos().replace(DELIM_START, "")
                     .replace(DELIM_END, "").replace("\"", "")
                     .replace(BACKSLASH, "").replace(" ", "")
                     .trim();
             if (StringUtils.isEmpty(infos)) {
-                return null;
+                return groupTreeInfoVOList;
             }
+            //将infos字段整个给转为map,后续匹配的时候时间复杂度为1。
             Map<String, String> infoMap = Arrays.stream(infos.split(COMMA))
-                    .collect(Collectors.toMap(key -> key, value -> value, (e1, e2) -> e1));
+                    .collect(Collectors.toMap(key-> key, value->value, (e1, e2) -> e1));
+            //获取分组树
             List<GroupTreeVO> groupTreeVOList = getGroupTree();
             GroupTreeInfoVO infoVO = new GroupTreeInfoVO();
-            groupTreeInfoVOList.add(queryGroupName(groupTreeVOList, infoVO, infoMap, management.getId()));
+            if(CollectionUtils.isEmpty(groupTreeVOList)){
+                return groupTreeInfoVOList;
+            }
+            groupTreeInfoVOList.add(queryGroupName(groupTreeVOList,infoVO,infoMap,management.getId()));
         }
         return groupTreeInfoVOList;
     }

+ 12 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/controller/ProjectAlarmRuleObjRelController.java

@@ -32,6 +32,7 @@ public class ProjectAlarmRuleObjRelController {
     private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
 
 	@ApiOperation(value = "创建项目报警规则与监测对象的关联")
+    @ApiIgnore
 	@PostMapping("/create")
 	public CommonResult<ApmResponseUpsertVO> createProjectAlarmRuleObjRel(
 	        @Valid @RequestBody AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO) {
@@ -71,6 +72,7 @@ public class ProjectAlarmRuleObjRelController {
 
 
     @ApiOperation(value = "项目报警规则与监测对象的关联列表")
+    @ApiIgnore
     @PostMapping("/query")
     public CommonResult<PageList<ProjectAlarmRuleObjRelListItemVO>> queryProjectAlarmRuleObjRel(
             @Valid @RequestBody QueryProjectAlarmRuleObjRelDTO queryProjectAlarmRuleObjRelDTO) {
@@ -94,12 +96,21 @@ public class ProjectAlarmRuleObjRelController {
     //    return ResultHelper.multi(pagedResultList);
     //}
 
-    @ApiOperation(value = "屏蔽管理")
+    @ApiOperation(value = "修改屏蔽管理")
     @PostMapping("/shieldManage")
     public CommonResult<ApmResponseUpsertVO> shieldManage(
             @Valid @RequestBody List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList) {
         projectAlarmRuleObjRelService.updateBatch(projectAlarmRuleObjRelList);
         return ResultHelper.success();
     }
+
+    @ApiOperation(value = "项目报警规则与监测对象的关联列表")
+    @PostMapping("/queryShieldManage")
+    public CommonResult<PageList<ProjectAlarmRuleObjRelListItemVO>> queryShieldManage(
+            @Valid @RequestBody QueryShieldManageDTO queryShieldManageDTO) {
+        List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList = projectAlarmRuleObjRelService.queryShieldManage(queryShieldManageDTO);
+        List<ProjectAlarmRuleObjRelListItemVO> resultList = ConvertProjectAlarmRuleObjRelTool.INSTANCE.convert2List(projectAlarmRuleObjRelList);
+        return ResultHelper.multi(resultList);
+    }
 }
 

+ 20 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/dto/QueryShieldManageDTO.java

@@ -0,0 +1,20 @@
+package com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-09-08 22:46:37
+ */
+@Data
+@ApiModel(value = "查询项目报警规则与监测对象的关联入参")
+public class QueryShieldManageDTO {
+    @ApiModelProperty(value = "项目报警规则id", required = true)
+    private String projectAlarmRuleId;
+    
+    @ApiModelProperty(value = "项目id", required = true)
+    private String projectId;
+    
+}

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

@@ -82,4 +82,6 @@ public interface IProjectAlarmRuleObjRelService  {
     void updateBatch(List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList);
 
     void deleteBatch();
+
+    List<ProjectAlarmRuleObjRel> queryShieldManage(QueryShieldManageDTO queryShieldManageDTO);
 }

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

@@ -263,4 +263,28 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
         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());
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ProjectAlarmRuleObjRel.PROP_CREATIONTIME);
+
+        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());
+            }
+
+        }
+
+        return list(queryWrapper);
+    }
 }

+ 23 - 3
src/main/java/com/persagy/apm/common/configuration/ElasticSearchConfig.java

@@ -3,6 +3,7 @@ package com.persagy.apm.common.configuration;
 import org.apache.http.HttpHost;
 import org.elasticsearch.client.RestClient;
 import org.elasticsearch.client.RestHighLevelClient;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
@@ -13,12 +14,31 @@ import org.springframework.context.annotation.Configuration;
  */
 @Configuration
 public class ElasticSearchConfig {
-    @Bean
+
+    @Value("${elasticsearch.host}")
+    private String host;
+
+    @Value("${elasticsearch.port}")
+    private int port;
+
+    @Value("${elasticsearch.connectTimeout:15000}")
+    private int connectTimeout;
+
+    @Value("${elasticsearch.socketTimeout:15000}")
+    private int socketTimeout;
+
+    @Value("${elasticsearch.connectionRequestTimeout:15000}")
+    private int connectionRequestTimeout;
+
+    @Bean(destroyMethod = "close",name = "client")
     public RestHighLevelClient restHighLevelClient() {
         return new RestHighLevelClient(
                 RestClient.builder(
-                        new HttpHost("172.16.1.186", 9200, "http")
-                )
+                        new HttpHost(host, port, "http")
+                ).setRequestConfigCallback(requestConfigBuilder->requestConfigBuilder
+                 .setConnectTimeout(connectTimeout)
+                 .setSocketTimeout(socketTimeout)
+                 .setConnectionRequestTimeout(connectionRequestTimeout))
         );
     }
 }

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

@@ -0,0 +1,133 @@
+//package com.persagy.apm.common.configuration;
+//
+//import com.alibaba.fastjson.JSON;
+//import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
+//import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
+//import com.persagy.apm.model.DmpMessage;
+//
+//import com.rabbitmq.client.Channel;
+//import lombok.extern.slf4j.Slf4j;
+//import org.checkerframework.checker.units.qual.A;
+//import org.springframework.amqp.core.*;
+//import org.springframework.amqp.rabbit.annotation.RabbitListener;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.context.annotation.Bean;
+//
+//
+///**
+// * @author: yaoll
+// * @date: 2020-10-22
+// * @verison: 1.0
+// */
+//@Slf4j
+////@Configuration
+//public class JmsConfig {
+//
+//    @Value("${persagy.dmp.exchange}")
+//    private String exchange;
+//
+//    @Value("${persagy.dmp.alarm.routingKey}")
+//    private String dmpAlarmRoutingKey;
+//
+//    @Value("${alarm.obj.routingKey}")
+//    private String alarmObjRoutingKey;
+//
+//    @Value("${persagy.dmp.rwd.routingKey}")
+//    private String rwdRoutingKey;
+//
+//    @Value("${persagy.dmp.alarm.queue}")
+//    private String alarmQueue;
+//
+//    @Autowired
+//    private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
+//
+////    @Value("${persagy.dmp.alarm.rwd.queue}")
+////    private String alarmRwdQueue;
+////
+////    @Bean
+////    public Queue alarmRwdQueue() {
+////        return new Queue(alarmRwdQueue, true);
+////    }
+////
+////    @Bean
+////    public Binding alarmRwdBinding() {
+////        return BindingBuilder.bind(alarmRwdQueue()).to(exchange()).with(rwdRoutingKey);
+////    }
+//
+//    /**
+//     * 报警对象队列
+//     */
+//    private final String alarmObjQueue = "alarm-obj-queue";
+//
+//    @Bean
+//    public TopicExchange exchange() {
+//        return new TopicExchange(exchange);
+//    }
+//
+//    @Bean
+//    public Queue alarmQueue() {
+//        return new Queue(alarmQueue, true);
+//    }
+//
+//    @Bean
+//    public Binding alarmBinding() {
+//        return BindingBuilder.bind(alarmQueue()).to(exchange()).with(dmpAlarmRoutingKey);
+//    }
+//
+//    @Bean
+//    public Queue alarmObjQueue() {
+//        return new Queue(alarmObjQueue, true);
+//    }
+//
+//    @Bean
+//    public Binding alarmObjBinding() {
+//        return BindingBuilder.bind(alarmObjQueue()).to(exchange()).with(alarmObjRoutingKey);
+//    }
+//
+//    @RabbitListener(queues = {alarmObjQueue})    //监听器监听指定的Queue
+//    public void process(String message, Channel channel, Message msg) throws Exception{
+//        // 手动确认消息已消费
+//        try {
+//            log.info("============================== Receive:" + message);
+//            DmpMessage dmpMessages = JSON.parseObject(message,DmpMessage.class);
+//            String mid = dmpMessages.getMid();
+//            String type = dmpMessages.getType();
+//            String projectId = dmpMessages.getProjectId();
+//            if("instanceObjectCreate".equals(type)){
+//                // TODO
+//                AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO = new AddProjectAlarmRuleObjRelDTO();
+//                //addProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId();
+//                addProjectAlarmRuleObjRelDTO.setProjectId(projectId);
+//                addProjectAlarmRuleObjRelDTO.setEquipId(mid);
+//                addProjectAlarmRuleObjRelDTO.setOpen(1);
+//                projectAlarmRuleObjRelService.createProjectAlarmRuleObjRel(addProjectAlarmRuleObjRelDTO);
+//            }else if("instanceObjectDelete".equals(type)){
+//
+//            }
+//            channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+//        } catch (Exception e) {
+//            Boolean isRedeliveredFail = msg.getMessageProperties().getRedelivered();
+//            // true表示消息已经重复处理失败
+//            if (isRedeliveredFail) {
+//                // 拒绝消息,requeue=false 表示不再重新入队,如果配置了死信队列则进入死信队列
+//                log.error("重复消费消息失败,message: {}", message);
+//                channel.basicReject(msg.getMessageProperties().getDeliveryTag(), false);
+//            } else {
+//                // 如果是第一次失败则再次放入队列
+//                // requeue为是否重新回到队列,true重新入队
+//                channel.basicNack(msg.getMessageProperties().getDeliveryTag(), false, true);
+//            }
+//        }
+//    }
+//
+////    @RabbitListener(queues ="${persagy.dmp.alarm.rwd.queue}")    //监听器监听指定的Queue
+////    public void processRwdMsg(DmpMessage message, Channel channel, Message msg) {
+////        consumeMessageThreadPool.consumeMessage(message, channel, msg);
+////    }
+//
+////    @RabbitListener(queues = "${persagy.dmp.alarm.queue}")    //监听器监听指定的Queue
+////    public void processAlarmMsg(DmpMessage message, Channel channel, Message msg) {
+////        consumeMessageThreadPool.consumeMessage(message, channel, msg);
+////    }
+//}

+ 55 - 0
src/main/java/com/persagy/apm/model/DmpMessage.java

@@ -0,0 +1,55 @@
+package com.persagy.apm.model;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+
+/**
+ * @description:中台消息队列格式
+ * @author:LuoGuangyi
+ * @company:PersagyTechnologyCo.,Ltd
+ * @since:2020/10/28 002816:10
+ * @version:V1.0
+ **/
+@Data
+public class DmpMessage {
+    private String mid;
+    /**
+     *  type = alarmConfigsChange
+     *  报警消息变化
+     */
+    private String type;
+    private String groupCode;
+    private String projectId;
+    private String targetId;
+    private Integer int1;
+    private Integer int2;
+    private String str1;
+    private String str2;
+    private String sendTime;
+    private String expireTime;
+    private String appId;
+    private String userId;
+    /**
+     * 分别存放新增和修改的报警定义条目
+     * {
+     *     "createdConfigUniques": [
+     *         {
+     *             "itemCode": "报警条目编码",
+     *             "objId": "对象id"
+     *         }
+     *     ],
+     *     "deletedConfigUniques": [
+     *         {
+     *             "itemCode": "报警条目编码",
+     *             "objId": "对象id"
+     *         }
+     *     ]
+     * }
+     */
+    private JSONObject exts;
+
+    @Override
+    public String toString() {
+        return JSONObject.toJSONString(this);
+    }
+}