Bladeren bron

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

lixing 3 jaren geleden
bovenliggende
commit
0e45914bf8
32 gewijzigde bestanden met toevoegingen van 819 en 290 verwijderingen
  1. 15 8
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/controller/AlarmConditionController.java
  2. 7 2
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/AlarmCondition.java
  3. 2 2
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/dto/AddAlarmConditionDTO.java
  4. 5 2
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/dto/UpdateAlarmConditionDTO.java
  5. 98 74
      src/main/java/com/persagy/apm/alarmservice/alarmcondition/service/impl/AlarmConditionServiceImpl.java
  6. 37 18
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/controller/GroupAlarmRuleController.java
  7. 8 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/dao/GroupAlarmRuleMapper.java
  8. 10 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/AddGroupAlarmRuleDTO.java
  9. 4 1
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/DeleteGroupAlarmRuleDTO.java
  10. 7 5
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/QueryGroupAlarmRuleDTO.java
  11. 6 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/UpdateGroupAlarmRuleDTO.java
  12. 1 1
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/vo/GroupAlarmRuleListItemVO.java
  13. 2 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/IGroupAlarmRuleService.java
  14. 16 10
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java
  15. 21 0
      src/main/java/com/persagy/apm/alarmservice/group/management/service/impl/GroupManagementServiceImpl.java
  16. 41 14
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/controller/ProjectAlarmRuleController.java
  17. 7 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/dao/ProjectAlarmRuleMapper.java
  18. 13 3
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/AddProjectAlarmRuleDTO.java
  19. 7 6
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/PageQueryProjectAlarmRuleDTO.java
  20. 11 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/UpdateProjectAlarmRuleDTO.java
  21. 9 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/vo/ProjectAlarmRuleListItemVO.java
  22. 3 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/IProjectAlarmRuleService.java
  23. 212 71
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java
  24. 13 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/controller/ProjectAlarmRuleObjRelController.java
  25. 26 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/vo/ProjectVO.java
  26. 10 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/IProjectAlarmRuleObjRelService.java
  27. 115 58
      src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/service/impl/ProjectAlarmRuleObjRelServiceImpl.java
  28. 35 0
      src/main/java/com/persagy/apm/common/method/CommonMethod.java
  29. 1 1
      src/main/resources/db/init/table.sql
  30. 17 0
      src/main/resources/json/Project.json
  31. 54 12
      src/main/resources/mapper/GroupAlarmRuleMapper.xml
  32. 6 1
      src/main/resources/mapper/ProjectAlarmRuleMapper.xml

+ 15 - 8
src/main/java/com/persagy/apm/alarmservice/alarmcondition/controller/AlarmConditionController.java

@@ -26,12 +26,12 @@ import java.util.List;
 @Validated
 @RestController
 @RequestMapping("alarmConditions")
-@ApiIgnore
 public class AlarmConditionController {
     @Autowired
     private IAlarmConditionService alarmConditionService;
 
 	@ApiOperation(value = "创建报警条件")
+    @ApiIgnore
 	@PostMapping("/create")
 	public CommonResult<ApmResponseUpsertVO> createAlarmCondition(
 	        @Valid @RequestBody AddAlarmConditionDTO addAlarmConditionDTO) {
@@ -40,6 +40,7 @@ public class AlarmConditionController {
 	}
 	
 	@ApiOperation(value = "报警条件详情")
+    @ApiIgnore
     @PostMapping("/get")
     public CommonResult<AlarmConditionItemVO> queryAlarmConditionDetail(
             @Valid @RequestBody QueryAlarmConditionDetailDTO queryAlarmConditionDetailDTO) {
@@ -59,6 +60,7 @@ public class AlarmConditionController {
 
 
     @ApiOperation(value = "删除报警条件")
+    @ApiIgnore
     @PostMapping("/delete")
     public CommonResult deleteAlarmCondition(
             @RequestBody @Valid DeleteAlarmConditionDTO deleteAlarmConditionDTO) {
@@ -68,6 +70,7 @@ public class AlarmConditionController {
 
 
     @ApiOperation(value = "报警条件列表")
+    @ApiIgnore
     @PostMapping("/query")
     public CommonResult<PageList<AlarmConditionListItemVO>> queryAlarmCondition(
             @Valid @RequestBody QueryAlarmConditionDTO queryAlarmConditionDTO) {
@@ -75,7 +78,16 @@ public class AlarmConditionController {
         List<AlarmConditionListItemVO> resultList = ConvertAlarmConditionTool.INSTANCE.convert2List(alarmConditionList);
         return ResultHelper.multi(resultList);
     }
-    
+
+    @ApiOperation(value = "报警条件合法性校验")
+    @PostMapping("/validate")
+    public CommonResult<Boolean> validate(
+            @Valid @RequestBody ValidateAlarmConditionDTO validateAlarmConditionDTO) {
+        StringBuffer calculateString = new StringBuffer();
+
+        return ResultHelper.success();
+    }
+
     //@ApiOperation(value = "报警条件列表, 分页查询")
     //@PostMapping("/query")
     //public CommonResult<PageList<AlarmConditionListItemVO>> queryAlarmCondition(
@@ -91,11 +103,6 @@ public class AlarmConditionController {
     //    return ResultHelper.multi(pagedResultList);
     //}
 
-    @ApiOperation(value = "报警条件合法性校验")
-    @PostMapping("/validate")
-    public CommonResult<Boolean> validate(
-            @Valid @RequestBody ValidateAlarmConditionDTO validateAlarmConditionDTO) {
-        return ResultHelper.success();
-    }
+
 }
 

+ 7 - 2
src/main/java/com/persagy/apm/alarmservice/alarmcondition/model/AlarmCondition.java

@@ -1,5 +1,7 @@
 package com.persagy.apm.alarmservice.alarmcondition.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -20,12 +22,15 @@ import java.util.Date;
 public class AlarmCondition extends AuditableEntity<AlarmCondition> implements Serializable {
     private static final long serialVersionUID = 268657175929005281L;
 
+    @TableField(typeHandler = FastjsonTypeHandler.class)
     @ApiModelProperty("包含的参数")
     private Object infoCodes;
-    
+
+    @TableField(typeHandler = FastjsonTypeHandler.class)
     @ApiModelProperty("前端展示")
     private Object frontend;
-    
+
+    @TableField(typeHandler = FastjsonTypeHandler.class)
     @ApiModelProperty("后端使用")
     private Object backend;
     

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

@@ -17,7 +17,7 @@ import java.util.Map;
 @ApiModel(value = "创建报警条件入参")
 public class AddAlarmConditionDTO {
     @ApiModelProperty(value = "包含的参数", required = true)
-    @NotNull(message = "包含的参数不能为空") // todo 更新校验规则
+    //@NotNull(message = "包含的参数不能为空") // todo 更新校验规则
     private Map<String,String> infoCodes;
     
     @ApiModelProperty(value = "报警触发规则", required = true)
@@ -25,7 +25,7 @@ public class AddAlarmConditionDTO {
     private List<List<CalculateMethodDTO>> frontend;
 
     @ApiModelProperty(value = "后端使用", required = true)
-    @NotNull(message = "后端使用不能为空") // todo 更新校验规则
+    //@NotNull(message = "后端使用不能为空") // todo 更新校验规则
     private Object backend;
     
     @ApiModelProperty(value = "触发时长", required = true)

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

@@ -1,10 +1,13 @@
 package com.persagy.apm.alarmservice.alarmcondition.model.dto;
 
+import com.persagy.apm.alarmservice.calculatemethod.model.dto.CalculateMethodDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import javax.validation.constraints.NotNull;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author lixing
@@ -19,11 +22,11 @@ public class UpdateAlarmConditionDTO {
     
     @ApiModelProperty(value = "包含的参数", required = true)
     @NotNull(message = "包含的参数不能为空") // todo 更新校验规则
-    private Object infoCodes;
+    private Map<String, String> infoCodes;
     
     @ApiModelProperty(value = "前端展示", required = true)
     @NotNull(message = "前端展示不能为空") // todo 更新校验规则
-    private Object frontend;
+    private List<List<CalculateMethodDTO>> frontend;
     
     @ApiModelProperty(value = "后端使用", required = true)
     @NotNull(message = "后端使用不能为空") // todo 更新校验规则

+ 98 - 74
src/main/java/com/persagy/apm/alarmservice/alarmcondition/service/impl/AlarmConditionServiceImpl.java

@@ -24,6 +24,7 @@ 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;
 
@@ -34,24 +35,25 @@ import java.util.Map;
  * @version V1.0 2021-09-08 22:30:38
  */
 @Service
-public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper, AlarmCondition> 
-    implements IAlarmConditionService {
-    
+public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper, AlarmCondition>
+        implements IAlarmConditionService {
+
     /**
-    * 创建报警条件
-    * @return 报警条件主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:30:38
-    */
+     * 创建报警条件
+     *
+     * @return 报警条件主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:30:38
+     */
     @Override
     public String createAlarmCondition(AddAlarmConditionDTO addAlarmConditionDTO) {
         AlarmCondition alarmCondition = ConvertAlarmConditionTool.INSTANCE.convertAddDto2Entity(addAlarmConditionDTO);
         List<List<CalculateMethodDTO>> frontend = addAlarmConditionDTO.getFrontend();
-        Map<String, String> infoCodes = addAlarmConditionDTO.getInfoCodes();
-        String frontJson = JSON.toJSONString(frontend);
-        alarmCondition.setFrontend(frontJson);
+        addAlarmConditionDTO.getInfoCodes();
+        Object json = JSON.toJSON(frontend);
+        alarmCondition.setFrontend(json);
         //将前端公式转换成后台公式
-        String backend = frontend2Backend(frontend,infoCodes);
+        String backend = frontend2Backend(frontend);
         alarmCondition.setBackend(backend);
         // 设置默认值
         setDefaultValue(alarmCondition);
@@ -59,25 +61,31 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         return alarmCondition.getId();
     }
 
-    private String frontend2Backend(List<List<CalculateMethodDTO>> frontend, Map<String, String> infoCodes) {
-
+    private String frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
+        StringBuffer sb = new StringBuffer();
         for (List<CalculateMethodDTO> calculateMethodDTOS : frontend) {
-            StringBuffer sb = new StringBuffer();
-
+            StringBuffer notNullString = new StringBuffer();
+            notNullString.append("(");
+            StringBuffer nullString = new StringBuffer();
+            nullString.append("(");
+            StringBuffer calculateString = new StringBuffer();
             for (CalculateMethodDTO calculateMethodDTO : calculateMethodDTOS) {
-                StringBuffer calculateString = new StringBuffer();
+                nullString.append(calculateMethodDTO.getMonitorIndicatorId()).append("==NaN").append("||");
+                notNullString.append("(").append(calculateMethodDTO.getMonitorIndicatorId()).append("!=NaN").append("&&");
                 calculateString.append("(")
                         .append(calculateMethodDTO.getMonitorIndicatorId())
-                .append(calculateMethodDTO.getOperator())
-                .append(calculateMethodDTO.getFormula()).append(") &&");
-                sb.append(calculateString);
+                        .append(calculateMethodDTO.getOperator())
+                        .append(calculateMethodDTO.getFormula()).append(")")
+                        .append(" && ");
             }
-
+            notNullString.append(")").append("||");
+            //sb.append(calculateString.substring(0, calculateString.length() - 4)).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 null;
+        return substring;
     }
 
     /**
@@ -89,18 +97,22 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
      */
     private void setDefaultValue(AlarmCondition alarmCondition) {
         alarmCondition.setCreator(PoemsContext.getContext().getUserId());
+        alarmCondition.setCreationTime(new Date());
+        alarmCondition.setModifiedTime(new Date());
+        alarmCondition.setModifier(PoemsContext.getContext().getUserId());
         alarmCondition.setId(DataUtils.getUUID());
         // todo 其他默认的属性
-        
+
     }
-    
+
     /**
-    * 报警条件详情
-    * @param id 主键
-    * @return 部门do类
-    * @author lixing
-    * @version V1.0 2021-09-08 22:30:38
-    */
+     * 报警条件详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-09-08 22:30:38
+     */
     @Override
     public AlarmCondition queryAlarmConditionDetail(String id) {
         AlarmCondition alarmCondition = getById(id);
@@ -109,20 +121,30 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         }
         return alarmCondition;
     }
-    
+
     /**
-    * 更新报警条件
-    * @author lixing
-    * @version V1.0 2021-09-08 22:30:38
-    */
+     * 更新报警条件
+     *
+     * @author lixing
+     * @version V1.0 2021-09-08 22:30:38
+     */
     @Override
     public void updateAlarmCondition(UpdateAlarmConditionDTO updateAlarmConditionDTO) {
         AlarmCondition alarmCondition = getById(updateAlarmConditionDTO.getId());
         alarmCondition = ConvertAlarmConditionTool.INSTANCE.convertUpdateDto2Entity(alarmCondition, updateAlarmConditionDTO);
         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);
+        }
         updateById(alarmCondition);
     }
-    
+
     /**
      * 校验报警条件是否可删除
      *
@@ -144,109 +166,111 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
 
         return alarmCondition;
     }
-    
+
     /**
-    * 删除报警条件
-    * @param id 主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:30:38
-    */
+     * 删除报警条件
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:30:38
+     */
     @Override
     public void deleteAlarmCondition(String id) {
         // 校验是否可删除
         AlarmCondition alarmCondition = checkDeletable(id);
-
         alarmCondition.setValid(ValidEnum.FALSE.getType());
         updateById(alarmCondition);
     }
-    
+
     /**
-    * 查询报警条件
-    * @return List<AlarmCondition>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:30:38
-    */
+     * 查询报警条件
+     *
+     * @return List<AlarmCondition>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:30:38
+     */
     @Override
     public List<AlarmCondition> queryAlarmConditionList(QueryAlarmConditionDTO queryAlarmConditionDTO) {
         QueryWrapper<AlarmCondition> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(AlarmCondition.PROP_VALID, ValidEnum.TRUE.getType());
         // 默认按创建时间倒序排序
         queryWrapper.orderBy(true, false, AlarmCondition.PROP_CREATIONTIME);
-        
+
         if (queryAlarmConditionDTO != null) {
-                                    
+
             if (queryAlarmConditionDTO.getInfoCodes() != null) {
                 queryWrapper.eq(AlarmCondition.PROP_INFO_CODES, queryAlarmConditionDTO.getInfoCodes());
             }
-                                            
+
             if (queryAlarmConditionDTO.getFrontend() != null) {
                 queryWrapper.eq(AlarmCondition.PROP_FRONTEND, queryAlarmConditionDTO.getFrontend());
             }
-                                            
+
             if (queryAlarmConditionDTO.getBackend() != null) {
                 queryWrapper.eq(AlarmCondition.PROP_BACKEND, queryAlarmConditionDTO.getBackend());
             }
-                                            
+
             if (queryAlarmConditionDTO.getTriggerUphold() != null) {
                 queryWrapper.eq(AlarmCondition.PROP_TRIGGER_UPHOLD, queryAlarmConditionDTO.getTriggerUphold());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryAlarmConditionDTO.getAlarmLevel())) {
                 queryWrapper.like(AlarmCondition.PROP_ALARM_LEVEL, queryAlarmConditionDTO.getAlarmLevel());
             }
-                                            
+
         }
-        
+
         return list(queryWrapper);
     }
-    
+
     /**
-    * 分页查询报警条件
-    * @return IPage<AlarmCondition>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:30:38
-    */
+     * 分页查询报警条件
+     *
+     * @return IPage<AlarmCondition>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:30:38
+     */
     @Override
     public IPage<AlarmCondition> pageQueryAlarmCondition(PageQueryAlarmConditionDTO pageQueryAlarmConditionDTO) {
         QueryWrapper<AlarmCondition> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(AlarmCondition.PROP_VALID, ValidEnum.TRUE.getType());
         // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
-        IPage<AlarmCondition> pageParam = new Page<>(pageQueryAlarmConditionDTO.getPage(), pageQueryAlarmConditionDTO.getSize(),true);
+        IPage<AlarmCondition> pageParam = new Page<>(pageQueryAlarmConditionDTO.getPage(), pageQueryAlarmConditionDTO.getSize(), true);
         // 排序信息
-        if(CollectionUtils.isEmpty(pageQueryAlarmConditionDTO.getOrders())){
+        if (CollectionUtils.isEmpty(pageQueryAlarmConditionDTO.getOrders())) {
             // 默认按创建时间倒序排序
             queryWrapper.orderBy(true, false, AlarmCondition.PROP_CREATIONTIME);
-        }else {
+        } else {
             List<Sort> orders = pageQueryAlarmConditionDTO.getOrders();
-            for(Sort sort: orders) {
+            for (Sort sort : orders) {
                 // 将驼峰转换为下划线格式
-                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE,sort.getColumn()));
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
                 queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
             }
         }
-                
+
         if (pageQueryAlarmConditionDTO.getInfoCodes() != null) {
             queryWrapper.eq(AlarmCondition.PROP_INFO_CODES, pageQueryAlarmConditionDTO.getInfoCodes());
         }
-                            
+
         if (pageQueryAlarmConditionDTO.getFrontend() != null) {
             queryWrapper.eq(AlarmCondition.PROP_FRONTEND, pageQueryAlarmConditionDTO.getFrontend());
         }
-                            
+
         if (pageQueryAlarmConditionDTO.getBackend() != null) {
             queryWrapper.eq(AlarmCondition.PROP_BACKEND, pageQueryAlarmConditionDTO.getBackend());
         }
-                            
+
         if (pageQueryAlarmConditionDTO.getTriggerUphold() != null) {
             queryWrapper.eq(AlarmCondition.PROP_TRIGGER_UPHOLD, pageQueryAlarmConditionDTO.getTriggerUphold());
         }
-                            
+
         // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryAlarmConditionDTO.getAlarmLevel())) {
             queryWrapper.like(AlarmCondition.PROP_ALARM_LEVEL, pageQueryAlarmConditionDTO.getAlarmLevel());
         }
-                                    
+
         return getBaseMapper().selectPage(pageParam, queryWrapper);
     }
 }

+ 37 - 18
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/controller/GroupAlarmRuleController.java

@@ -1,7 +1,11 @@
 package com.persagy.apm.alarmservice.group.alarmrule.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.alarmservice.alarmcondition.service.IAlarmConditionService;
+import com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper;
 import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
 
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.common.QueryAlarmConfigDTO;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
@@ -17,6 +21,8 @@ import com.persagy.apm.common.response.*;
 import com.persagy.apm.common.utils.ResultHelper;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
 import javax.validation.Valid;
 import java.util.List;
 
@@ -32,6 +38,12 @@ import java.util.List;
 public class GroupAlarmRuleController {
     @Autowired
     private IGroupAlarmRuleService groupAlarmRuleService;
+    @Autowired
+    private GroupAlarmRuleMapper groupAlarmRuleMapper;
+    @Autowired
+    private IAlarmConditionService alarmConditionService;
+    @Autowired
+    private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
 
 	@ApiOperation(value = "创建集团报警规则")
 	@PostMapping("/create")
@@ -43,6 +55,7 @@ public class GroupAlarmRuleController {
 	
 	@ApiOperation(value = "集团报警规则详情")
     @PostMapping("/get")
+    @ApiIgnore
     public CommonResult<GroupAlarmRuleItemVO> queryGroupAlarmRuleDetail(
             @Valid @RequestBody QueryGroupAlarmRuleDetailDTO queryGroupAlarmRuleDetailDTO) {
         GroupAlarmRule groupAlarmRule = groupAlarmRuleService.queryGroupAlarmRuleDetail(queryGroupAlarmRuleDetailDTO.getId());
@@ -53,6 +66,7 @@ public class GroupAlarmRuleController {
 
     @ApiOperation(value = "更新集团报警规则")
     @PostMapping("/update")
+    @ApiIgnore
     public CommonResult<ApmResponseUpsertVO> updateGroupAlarmRule(
             @Valid @RequestBody UpdateGroupAlarmRuleDTO updateGroupAlarmRuleDTO) {
         groupAlarmRuleService.updateGroupAlarmRule(updateGroupAlarmRuleDTO);
@@ -65,6 +79,8 @@ public class GroupAlarmRuleController {
     public CommonResult deleteGroupAlarmRule(
             @RequestBody @Valid DeleteGroupAlarmRuleDTO deleteGroupAlarmRuleDTO) {
         groupAlarmRuleService.deleteGroupAlarmRule(deleteGroupAlarmRuleDTO.getId());
+        alarmConditionService.deleteAlarmCondition(deleteGroupAlarmRuleDTO.getAlarmConditionId());
+        projectAlarmRuleObjRelService.deleteBatch();
         return ResultHelper.success();
     }
 
@@ -72,26 +88,29 @@ public class GroupAlarmRuleController {
     @ApiOperation(value = "集团报警规则列表")
     @PostMapping("/query")
     public CommonResult<PageList<GroupAlarmRuleListItemVO>> queryGroupAlarmRule(
-            @Valid @RequestBody QueryGroupAlarmRuleDTO queryGroupAlarmRuleDTO) {
-        List<GroupAlarmRule> groupAlarmRuleList = groupAlarmRuleService.queryGroupAlarmRuleList(queryGroupAlarmRuleDTO);
-        List<GroupAlarmRuleListItemVO> resultList = ConvertGroupAlarmRuleTool.INSTANCE.convert2List(groupAlarmRuleList);
-        return ResultHelper.multi(resultList);
+            @Valid @RequestBody PageQueryGroupAlarmRuleDTO pageQueryGroupAlarmRuleDTO) {
+        int page = pageQueryGroupAlarmRuleDTO.getPage();
+        int size = pageQueryGroupAlarmRuleDTO.getSize();
+        pageQueryGroupAlarmRuleDTO.setStartIndex((page-1)*size);
+        int count = groupAlarmRuleMapper.queryCount(pageQueryGroupAlarmRuleDTO);
+        List<GroupAlarmRuleListItemVO> groupAlarmRuleList = groupAlarmRuleMapper.queryList(pageQueryGroupAlarmRuleDTO);
+        return ResultHelper.multi(groupAlarmRuleList,count);
     }
     
-    //@ApiOperation(value = "集团报警规则列表, 分页查询")
-    //@PostMapping("/query")
-    //public CommonResult<PageList<GroupAlarmRuleListItemVO>> queryGroupAlarmRule(
-    //        @Valid @RequestBody PageQueryGroupAlarmRuleDTO pageQueryGroupAlarmRuleDTO) {
-    //    IPage<GroupAlarmRule> pagedList = groupAlarmRuleService.pageQueryGroupAlarmRule(pageQueryGroupAlarmRuleDTO);
-    //    IPage<GroupAlarmRuleListItemVO> pagedResultList = pagedList.convert(item -> {
-    //        try {
-    //           return ConvertGroupAlarmRuleTool.INSTANCE.convert2ResponseListItemDTO(item);
-    //        } catch (Exception e) {
-    //            throw new IllegalArgumentException("分页查询,GroupAlarmRule实体类转换为列表对象发生异常", e);
-    //        }
-    //    });
-    //    return ResultHelper.multi(pagedResultList);
-    //}
+//    @ApiOperation(value = "集团报警规则列表, 分页查询")
+//    @PostMapping("/query")
+//    public CommonResult<PageList<GroupAlarmRuleListItemVO>> queryGroupAlarmRule(
+//            @Valid @RequestBody PageQueryGroupAlarmRuleDTO pageQueryGroupAlarmRuleDTO) {
+//        IPage<GroupAlarmRule> pagedList = groupAlarmRuleService.pageQueryGroupAlarmRule(pageQueryGroupAlarmRuleDTO);
+//        IPage<GroupAlarmRuleListItemVO> pagedResultList = pagedList.convert(item -> {
+//            try {
+//               return ConvertGroupAlarmRuleTool.INSTANCE.convert2ResponseListItemDTO(item);
+//            } catch (Exception e) {
+//                throw new IllegalArgumentException("分页查询,GroupAlarmRule实体类转换为列表对象发生异常", e);
+//            }
+//        });
+//        return ResultHelper.multi(pagedResultList);
+//    }
 
     @Autowired
     AlarmConfigServiceImpl alarmConfigService;

+ 8 - 0
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/dao/GroupAlarmRuleMapper.java

@@ -2,8 +2,13 @@ package com.persagy.apm.alarmservice.group.alarmrule.dao;
 
 import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.PageQueryGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleListItemVO;
 import org.apache.ibatis.annotations.Mapper;
 
+import javax.validation.Valid;
+import java.util.List;
+
 /**
  * 集团报警规则(GroupAlarmRule)dao层
  * @author lixing
@@ -12,4 +17,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface GroupAlarmRuleMapper extends BaseMapper<GroupAlarmRule>{
 
+    List<GroupAlarmRuleListItemVO> queryList(@Valid PageQueryGroupAlarmRuleDTO pageQueryGroupAlarmRuleDTO);
+
+    int queryCount(PageQueryGroupAlarmRuleDTO pageQueryGroupAlarmRuleDTO);
 }

+ 10 - 0
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/AddGroupAlarmRuleDTO.java

@@ -3,6 +3,8 @@ package com.persagy.apm.alarmservice.group.alarmrule.model.dto;
 import com.persagy.apm.alarmservice.alarmcondition.model.dto.AddAlarmConditionDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import lombok.Data;
 import java.util.Date;
@@ -25,5 +27,13 @@ public class AddGroupAlarmRuleDTO {
     @ApiModelProperty(value = "报警规则", required = true)
     @NotNull(message = "报警规则不能为空") // todo 更新校验规则
     private AddAlarmConditionDTO alarmCondition;
+
+    @ApiModelProperty(value = "对象类编码",required = true)
+    @NotBlank(message = "对象类编码必传")
+    private String classCode;
+
+    @ApiModelProperty(value = "查询条件",required = true)
+    @NotBlank(message = "查询条件必传")
+    private String condition;
     
 }

+ 4 - 1
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/DeleteGroupAlarmRuleDTO.java

@@ -15,5 +15,8 @@ public class DeleteGroupAlarmRuleDTO {
     @NotNull(message = "id不能为空")
     @ApiModelProperty(value = "主键", required = true)
     private String id;
-    
+
+    @ApiModelProperty(value = "报警条件id", required = true)
+    @NotNull(message = "报警条件id不能为空") // todo 更新校验规则
+    private String alarmConditionId;
 }

+ 7 - 5
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/QueryGroupAlarmRuleDTO.java

@@ -15,10 +15,12 @@ public class QueryGroupAlarmRuleDTO {
     @ApiModelProperty(value = "分组id", required = true)
     private String groupId;
     
-    @ApiModelProperty(value = "报警条目编码", required = true)
+    @ApiModelProperty(value = "报警类型编码", required = true)
     private String alarmItemCode;
-    
-    @ApiModelProperty(value = "报警条件id", required = true)
-    private String alarmConditionId;
-    
+
+    @ApiModelProperty(value = "每页条数", required = true)
+    private int pageSize;
+
+    @ApiModelProperty(value = "查询页", required = true)
+    private int pageNum;
 }

+ 6 - 0
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/UpdateGroupAlarmRuleDTO.java

@@ -1,5 +1,7 @@
 package com.persagy.apm.alarmservice.group.alarmrule.model.dto;
 
+import com.persagy.apm.alarmservice.alarmcondition.model.dto.AddAlarmConditionDTO;
+import com.persagy.apm.alarmservice.alarmcondition.model.dto.UpdateAlarmConditionDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import javax.validation.constraints.NotNull;
@@ -28,5 +30,9 @@ public class UpdateGroupAlarmRuleDTO {
     @ApiModelProperty(value = "报警条件id", required = true)
     @NotNull(message = "报警条件id不能为空") // todo 更新校验规则
     private String alarmConditionId;
+
+    @ApiModelProperty(value = "报警规则", required = true)
+    @NotNull(message = "报警规则不能为空") // todo 更新校验规则
+    private UpdateAlarmConditionDTO alarmCondition;
     
 }

+ 1 - 1
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/vo/GroupAlarmRuleListItemVO.java

@@ -25,7 +25,7 @@ public class GroupAlarmRuleListItemVO {
     private String alarmItemCode;
     
     @ApiModelProperty("报警条件")
-    private AlarmConditionListItemVO alarmConditionList;
+    private AlarmConditionListItemVO alarmCondition;
     
     @ApiModelProperty("创建人")
     private String creator;

+ 2 - 0
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/IGroupAlarmRuleService.java

@@ -4,6 +4,7 @@ import com.persagy.apm.alarmservice.group.alarmrule.model.*;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.*;
 import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleListItemVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
@@ -72,4 +73,5 @@ public interface IGroupAlarmRuleService  {
     * @version V1.0 2021-09-08 22:35:45
     */
     public IPage<GroupAlarmRule> pageQueryGroupAlarmRule(PageQueryGroupAlarmRuleDTO pageQueryGroupAlarmRuleDTO);
+
 }

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

@@ -1,12 +1,16 @@
 package com.persagy.apm.alarmservice.group.alarmrule.service.impl;
 
 import com.persagy.apm.alarmservice.alarmcondition.model.dto.AddAlarmConditionDTO;
+import com.persagy.apm.alarmservice.alarmcondition.model.dto.UpdateAlarmConditionDTO;
 import com.persagy.apm.alarmservice.alarmcondition.service.IAlarmConditionService;
+import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
 import com.persagy.apm.common.configuration.DataUtils;
+import com.persagy.apm.common.configuration.PoemsWebConfigurer;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper;
 import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.persagy.apm.common.context.poems.PoemsContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.apache.commons.lang.StringUtils;
@@ -14,6 +18,8 @@ import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.persagy.apm.alarmservice.group.alarmrule.model.*;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.*;
+
+import java.util.Date;
 import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -32,6 +38,8 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
     implements IGroupAlarmRuleService {
     @Autowired
     private IAlarmConditionService alarmConditionService;
+    @Autowired
+    private IProjectAlarmRuleService projectAlarmRuleService;
     /**
     * 创建集团报警规则
     * @return 集团报警规则主键
@@ -40,6 +48,7 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
     */
     @Override
     public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
+        //1、给某个设备分组创建集团报警
         GroupAlarmRule groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertAddDto2Entity(addGroupAlarmRuleDTO);
         AddAlarmConditionDTO alarmCondition = addGroupAlarmRuleDTO.getAlarmCondition();
         String alarmConditionId = alarmConditionService.createAlarmCondition(alarmCondition);
@@ -47,6 +56,9 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         groupAlarmRule.setAlarmConditionId(alarmConditionId);
         setDefaultValue(groupAlarmRule);
         save(groupAlarmRule);
+        //2、同步创建项目报警
+        projectAlarmRuleService.addProjectAlarmRules(addGroupAlarmRuleDTO);
+        //3、同步创建设备报警条件
         return groupAlarmRule.getId();
     }
     
@@ -60,8 +72,8 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
     private void setDefaultValue(GroupAlarmRule groupAlarmRule) {
         groupAlarmRule.setCreator(AppContext.getContext().getAccountId());
         groupAlarmRule.setId(DataUtils.getUUID());
-        // todo 其他默认的属性
-        
+        groupAlarmRule.setModifier(PoemsContext.getContext().getUserId());
+        groupAlarmRule.setModifiedTime(new Date());
     }
     
     /**
@@ -91,6 +103,8 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertUpdateDto2Entity(groupAlarmRule, updateGroupAlarmRuleDTO);
         groupAlarmRule.setModifier(AppContext.getContext().getAccountId());
         updateById(groupAlarmRule);
+        UpdateAlarmConditionDTO alarmCondition = updateGroupAlarmRuleDTO.getAlarmCondition();
+        alarmConditionService.updateAlarmCondition(alarmCondition);
     }
     
     /**
@@ -125,7 +139,6 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
     public void deleteGroupAlarmRule(String id) {
         // 校验是否可删除
         GroupAlarmRule groupAlarmRule = checkDeletable(id);
-
         groupAlarmRule.setValid(ValidEnum.FALSE.getType());
         updateById(groupAlarmRule);
     }
@@ -154,14 +167,7 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
             if (StringUtils.isNotEmpty(queryGroupAlarmRuleDTO.getAlarmItemCode())) {
                 queryWrapper.like(GroupAlarmRule.PROP_ALARM_ITEM_CODE, queryGroupAlarmRuleDTO.getAlarmItemCode());
             }
-                                        
-            // todo 需判断使用like还是eq
-            if (StringUtils.isNotEmpty(queryGroupAlarmRuleDTO.getAlarmConditionId())) {
-                queryWrapper.like(GroupAlarmRule.PROP_ALARM_CONDITION_ID, queryGroupAlarmRuleDTO.getAlarmConditionId());
-            }
-                                            
         }
-        
         return list(queryWrapper);
     }
     

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

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.google.common.collect.Lists;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
 import com.persagy.apm.alarmservice.group.management.model.GroupManagement;
 import com.persagy.apm.alarmservice.group.management.model.vo.GroupTreeInfoVO;
 import com.persagy.apm.alarmservice.group.management.model.vo.GroupTreeVO;
@@ -62,6 +63,10 @@ public class GroupManagementServiceImpl implements GroupManagementService {
     @Autowired
     private RestHighLevelClient client;
 
+
+    @Autowired
+    private GroupManagementServiceImpl groupManagementService;
+
     @Override
     public PageList<GroupManagementVo> equipsQuery(GroupManagementDTO managementDTO) {
         List<GroupManagementVo> groupManagementVoList = new ArrayList<>();
@@ -249,4 +254,20 @@ public class GroupManagementServiceImpl implements GroupManagementService {
             throw new RuntimeException("删除elasticSearch失败",e);
         }
     }
+
+    /**
+     * 查询分组下的设备
+     * @param condition
+     * @param classCode
+     * @return
+     */
+    public List<GroupManagementVo> getEquipList(String condition,String classCode){
+        GroupManagementDTO managementDTO = new GroupManagementDTO();
+        managementDTO.setClassCode(classCode);
+        managementDTO.setCondition(condition);
+        managementDTO.setCurrent(INTEGER_ONE);
+        managementDTO.setSize(5000);
+        PageList<GroupManagementVo> groupManagementVoPageList = this.equipsQuery(managementDTO);
+        return groupManagementVoPageList.getRecords();
+    }
 }

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

@@ -1,7 +1,13 @@
 package com.persagy.apm.alarmservice.project.alarmrule.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper;
+import com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleListItemVO;
+import com.persagy.apm.alarmservice.project.alarmrule.dao.ProjectAlarmRuleMapper;
 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.service.IProjectAlarmRuleObjRelService;
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -13,8 +19,13 @@ import com.persagy.apm.common.response.*;
 import com.persagy.apm.common.utils.ResultHelper;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 项目报警规则控制层
@@ -28,6 +39,8 @@ import java.util.List;
 public class ProjectAlarmRuleController {
     @Autowired
     private IProjectAlarmRuleService projectAlarmRuleService;
+    @Autowired
+    private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
 
 	@ApiOperation(value = "创建项目报警规则")
 	@PostMapping("/create")
@@ -66,6 +79,7 @@ public class ProjectAlarmRuleController {
 
 
     @ApiOperation(value = "项目报警规则列表")
+    @ApiIgnore
     @PostMapping("/query")
     public CommonResult<PageList<ProjectAlarmRuleListItemVO>> queryProjectAlarmRule(
             @Valid @RequestBody QueryProjectAlarmRuleDTO queryProjectAlarmRuleDTO) {
@@ -74,19 +88,32 @@ public class ProjectAlarmRuleController {
         return ResultHelper.multi(resultList);
     }
     
-    //@ApiOperation(value = "项目报警规则列表, 分页查询")
-    //@PostMapping("/query")
-    //public CommonResult<PageList<ProjectAlarmRuleListItemVO>> queryProjectAlarmRule(
-    //        @Valid @RequestBody PageQueryProjectAlarmRuleDTO pageQueryProjectAlarmRuleDTO) {
-    //    IPage<ProjectAlarmRule> pagedList = projectAlarmRuleService.pageQueryProjectAlarmRule(pageQueryProjectAlarmRuleDTO);
-    //    IPage<ProjectAlarmRuleListItemVO> pagedResultList = pagedList.convert(item -> {
-    //        try {
-    //           return ConvertProjectAlarmRuleTool.INSTANCE.convert2ResponseListItemDTO(item);
-    //        } catch (Exception e) {
-    //            throw new IllegalArgumentException("分页查询,ProjectAlarmRule实体类转换为列表对象发生异常", e);
-    //        }
-    //    });
-    //    return ResultHelper.multi(pagedResultList);
-    //}
+    @ApiOperation(value = "项目报警规则列表, 分页查询")
+    @PostMapping("/queryPage")
+    public CommonResult<PageList<ProjectAlarmRuleListItemVO>> queryProjectAlarmRule(
+            @Valid @RequestBody PageQueryProjectAlarmRuleDTO pageQueryProjectAlarmRuleDTO) {
+        IPage<ProjectAlarmRule> pagedList = projectAlarmRuleService.pageQueryProjectAlarmRule(pageQueryProjectAlarmRuleDTO);
+        if(pagedList.getRecords().size()>0){
+            List<String> projectIds = pagedList.getRecords().stream().map(ProjectAlarmRule::getProjectId).collect(Collectors.toList());
+            List<ProjectAlarmRuleObjRel> relationList = projectAlarmRuleObjRelService.queryRelationListByProjectIds(projectIds);
+            Map<String, ProjectAlarmRuleObjRel> relationMap = relationList.stream().collect(Collectors.toMap(ProjectAlarmRuleObjRel::getProjectId, rule -> rule));
+            IPage<ProjectAlarmRuleListItemVO> pagedResultList = pagedList.convert(item -> {
+                try {
+                    return ConvertProjectAlarmRuleTool.INSTANCE.convert2ResponseListItemDTO(item);
+                } catch (Exception e) {
+                    throw new IllegalArgumentException("分页查询,ProjectAlarmRule实体类转换为列表对象发生异常", e);
+                }
+            });
+            pagedResultList.getRecords().forEach(projectAlarmRuleListItemVO -> {
+                String projectId = projectAlarmRuleListItemVO.getProjectId();
+                if(relationMap.containsKey(projectId)){
+                    projectAlarmRuleListItemVO.setRelListItemList((List<ProjectAlarmRuleObjRel>) relationMap.get(projectId));
+                }
+            });
+            return ResultHelper.multi(pagedResultList);
+        }
+
+        return ResultHelper.multi(new ArrayList<>());
+    }
 }
 

+ 7 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/dao/ProjectAlarmRuleMapper.java

@@ -2,8 +2,12 @@ package com.persagy.apm.alarmservice.project.alarmrule.dao;
 
 import com.persagy.apm.alarmservice.project.alarmrule.model.ProjectAlarmRule;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.apm.alarmservice.project.alarmrule.model.dto.PageQueryProjectAlarmRuleDTO;
+import com.persagy.apm.alarmservice.project.alarmrule.model.vo.ProjectAlarmRuleListItemVO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 项目报警规则(ProjectAlarmRule)dao层
  * @author lixing
@@ -12,4 +16,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface ProjectAlarmRuleMapper extends BaseMapper<ProjectAlarmRule>{
 
+    int queryCount(PageQueryProjectAlarmRuleDTO pageQueryProjectAlarmRuleDTO);
+
+    List<ProjectAlarmRuleListItemVO> queryList(PageQueryProjectAlarmRuleDTO pageQueryProjectAlarmRuleDTO);
 }

+ 13 - 3
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/AddProjectAlarmRuleDTO.java

@@ -1,10 +1,12 @@
 package com.persagy.apm.alarmservice.project.alarmrule.model.dto;
 
+import com.persagy.apm.alarmservice.alarmcondition.model.dto.AddAlarmConditionDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import javax.validation.constraints.NotNull;
 import lombok.Data;
-import java.util.Date;
+import java.util.List;
 
 /**
  * @author lixing
@@ -17,8 +19,8 @@ public class AddProjectAlarmRuleDTO {
     @NotNull(message = "分组id不能为空") // todo 更新校验规则
     private String groupId;
     
-    @ApiModelProperty(value = "报警条目编码", required = true)
-    @NotNull(message = "报警条目编码不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "报警类型编码", required = true)
+    @NotNull(message = "报警类型编码不能为空") // todo 更新校验规则
     private String alarmItemCode;
     
     @ApiModelProperty(value = "报警条件id", required = true)
@@ -32,5 +34,13 @@ public class AddProjectAlarmRuleDTO {
     @ApiModelProperty(value = "项目id", required = true)
     @NotNull(message = "项目id不能为空") // todo 更新校验规则
     private String projectId;
+
+    @ApiModelProperty(value = "报警对象ids", required = true)
+    @NotNull(message = "报警对象不能为空") // todo 更新校验规则
+    private List<AddProjectAlarmRuleObjRelDTO> addRelationList;
+
+    @ApiModelProperty(value = "报警规则", required = true)
+    @NotNull(message = "报警规则不能为空") // todo 更新校验规则
+    private AddAlarmConditionDTO alarmCondition;
     
 }

+ 7 - 6
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/PageQueryProjectAlarmRuleDTO.java

@@ -6,6 +6,7 @@ import java.util.Date;
 import com.persagy.apm.common.model.dto.PageDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import springfox.documentation.annotations.ApiIgnore;
 
 /**
  * @author lixing
@@ -15,8 +16,8 @@ import lombok.EqualsAndHashCode;
 @Data
 @ApiModel(value = "分页查询项目报警规则入参")
 public class PageQueryProjectAlarmRuleDTO extends PageDTO {
-    @ApiModelProperty(value = "主键", required = true)
-    private String id;
+//    @ApiModelProperty(value = "主键", required = true)
+//    private String id;
     
     @ApiModelProperty(value = "分组id", required = true)
     private String groupId;
@@ -24,11 +25,11 @@ public class PageQueryProjectAlarmRuleDTO extends PageDTO {
     @ApiModelProperty(value = "报警条目编码", required = true)
     private String alarmItemCode;
     
-    @ApiModelProperty(value = "报警条件id", required = true)
-    private String alarmConditionId;
+//    @ApiModelProperty(value = "报警条件id", required = true)
+//    private String alarmConditionId;
     
-    @ApiModelProperty(value = "所属类型(0项目自定义、1集团标准)", required = true)
-    private Integer belong;
+//    @ApiModelProperty(value = "所属类型(0项目自定义、1集团标准)", required = true)
+//    private Integer belong;
     
     @ApiModelProperty(value = "项目id", required = true)
     private String projectId;

+ 11 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/UpdateProjectAlarmRuleDTO.java

@@ -1,10 +1,13 @@
 package com.persagy.apm.alarmservice.project.alarmrule.model.dto;
 
+import com.persagy.apm.alarmservice.alarmcondition.model.dto.AddAlarmConditionDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import javax.validation.constraints.NotNull;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author lixing
@@ -36,5 +39,13 @@ public class UpdateProjectAlarmRuleDTO {
     @ApiModelProperty(value = "项目id", required = true)
     @NotNull(message = "项目id不能为空") // todo 更新校验规则
     private String projectId;
+
+    @ApiModelProperty(value = "报警对象ids", required = true)
+    @NotNull(message = "报警对象不能为空") // todo 更新校验规则
+    private List<AddProjectAlarmRuleObjRelDTO> addRelationList;
+
+    @ApiModelProperty(value = "报警规则", required = true)
+    @NotNull(message = "报警规则不能为空") // todo 更新校验规则
+    private AddAlarmConditionDTO alarmCondition;
     
 }

+ 9 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/vo/ProjectAlarmRuleListItemVO.java

@@ -1,9 +1,14 @@
 package com.persagy.apm.alarmservice.project.alarmrule.model.vo;
 
+import com.persagy.apm.alarmservice.alarmcondition.model.vo.AlarmConditionListItemVO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ProjectAlarmRuleObjRel;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectAlarmRuleObjRelListItemVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonInclude;
 
 /**
@@ -43,5 +48,8 @@ public class ProjectAlarmRuleListItemVO {
     
     @ApiModelProperty("修改时间")
     private Date modifiedTime;
-    
+
+    @ApiModelProperty("修改时间")
+    private List<ProjectAlarmRuleObjRel> relListItemList;
+
 }

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

@@ -1,5 +1,6 @@
 package com.persagy.apm.alarmservice.project.alarmrule.service;
 
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
 import com.persagy.apm.alarmservice.project.alarmrule.model.*;
 import com.persagy.apm.alarmservice.project.alarmrule.model.dto.*;
 import java.util.List;
@@ -72,4 +73,6 @@ public interface IProjectAlarmRuleService  {
     * @version V1.0 2021-09-08 22:46:16
     */
     public IPage<ProjectAlarmRule> pageQueryProjectAlarmRule(PageQueryProjectAlarmRuleDTO pageQueryProjectAlarmRuleDTO);
+
+    void addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO);
 }

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

@@ -1,22 +1,53 @@
 package com.persagy.apm.alarmservice.project.alarmrule.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.persagy.apm.alarmservice.alarmcondition.model.AlarmCondition;
+import com.persagy.apm.alarmservice.alarmcondition.model.dto.QueryAlarmConditionDTO;
+import com.persagy.apm.alarmservice.alarmcondition.service.IAlarmConditionService;
+import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.AddGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.QueryGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
+import com.persagy.apm.alarmservice.group.management.model.vo.GroupTreeVO;
+import com.persagy.apm.alarmservice.group.management.service.impl.GroupManagementServiceImpl;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
+import com.persagy.apm.common.configuration.DataUtils;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.alarmservice.project.alarmrule.dao.ProjectAlarmRuleMapper;
 import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.common.method.CommonMethod;
+import com.persagy.apm.common.response.PageList;
+import com.persagy.apm.model.dto.GroupManagementDTO;
+import com.persagy.apm.model.vo.GroupManagementVo;
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.apache.commons.lang.StringUtils;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.persagy.apm.alarmservice.project.alarmrule.model.*;
 import com.persagy.apm.alarmservice.project.alarmrule.model.dto.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.base.CaseFormat;
 import com.persagy.apm.common.model.dto.Sort;
 import org.springframework.util.CollectionUtils;
 
+import static org.apache.commons.lang3.math.NumberUtils.INTEGER_ONE;
+
 /**
  * 项目报警规则(ProjectAlarmRule) service层
  *
@@ -24,24 +55,49 @@ import org.springframework.util.CollectionUtils;
  * @version V1.0 2021-09-08 22:46:16
  */
 @Service
-public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMapper, ProjectAlarmRule> 
-    implements IProjectAlarmRuleService {
-    
+public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMapper, ProjectAlarmRule>
+        implements IProjectAlarmRuleService {
+
+    @Autowired
+    private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
+    @Autowired
+    private IAlarmConditionService alarmConditionService;
+    @Autowired
+    private IGroupAlarmRuleService groupAlarmRuleService;
+    @Autowired
+    private GroupManagementServiceImpl groupManagementService;
+
     /**
-    * 创建项目报警规则
-    * @return 项目报警规则主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:16
-    */
+     * 创建项目报警规则
+     *
+     * @return 项目报警规则主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:16
+     */
     @Override
     public String createProjectAlarmRule(AddProjectAlarmRuleDTO addProjectAlarmRuleDTO) {
         ProjectAlarmRule projectAlarmRule = ConvertProjectAlarmRuleTool.INSTANCE.convertAddDto2Entity(addProjectAlarmRuleDTO);
+        if (addProjectAlarmRuleDTO.getBelong() == INTEGER_ONE) {
+            //查询对应报警类型的集团规则,将ID添加到项目规则表
+            QueryGroupAlarmRuleDTO queryAlarmConditionDTO = new QueryGroupAlarmRuleDTO();
+            queryAlarmConditionDTO.setAlarmItemCode(addProjectAlarmRuleDTO.getAlarmItemCode());
+            List<GroupAlarmRule> groupAlarmRuleList = groupAlarmRuleService.queryGroupAlarmRuleList(queryAlarmConditionDTO);
+            String conditionId = groupAlarmRuleList.get(0).getAlarmConditionId();
+            projectAlarmRule.setAlarmConditionId(conditionId);
+        }else {
+            //新增自定义的规则
+            String conditionId = alarmConditionService.createAlarmCondition(addProjectAlarmRuleDTO.getAlarmCondition());
+            projectAlarmRule.setAlarmConditionId(conditionId);
+        }
+        //新增关联关系
+        projectAlarmRuleObjRelService.createBatchRelation(addProjectAlarmRuleDTO.getAddRelationList());
         // 设置默认值
+        projectAlarmRule.setCreationTime(new Date());
         setDefaultValue(projectAlarmRule);
         save(projectAlarmRule);
         return projectAlarmRule.getId();
     }
-    
+
     /**
      * 如果某些字段没有赋值,使用默认的值
      *
@@ -51,17 +107,20 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
      */
     private void setDefaultValue(ProjectAlarmRule projectAlarmRule) {
         projectAlarmRule.setCreator(AppContext.getContext().getAccountId());
+        projectAlarmRule.setId(DataUtils.getUUID());
+        projectAlarmRule.setModifiedTime(new Date());
         // todo 其他默认的属性
-        
+
     }
-    
+
     /**
-    * 项目报警规则详情
-    * @param id 主键
-    * @return 部门do类
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:16
-    */
+     * 项目报警规则详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:16
+     */
     @Override
     public ProjectAlarmRule queryProjectAlarmRuleDetail(String id) {
         ProjectAlarmRule projectAlarmRule = getById(id);
@@ -70,20 +129,53 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         }
         return projectAlarmRule;
     }
-    
+
     /**
-    * 更新项目报警规则
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:16
-    */
+     * 更新项目报警规则
+     *
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:16
+     */
     @Override
     public void updateProjectAlarmRule(UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO) {
         ProjectAlarmRule projectAlarmRule = getById(updateProjectAlarmRuleDTO.getId());
         projectAlarmRule = ConvertProjectAlarmRuleTool.INSTANCE.convertUpdateDto2Entity(projectAlarmRule, updateProjectAlarmRuleDTO);
         projectAlarmRule.setModifier(AppContext.getContext().getAccountId());
+        //查询已有报警
+        ProjectAlarmRule projectRule = getById(updateProjectAlarmRuleDTO.getId());
+        int belongOld = projectRule.getBelong();
+        int belongNew = updateProjectAlarmRuleDTO.getBelong();
+        //删除对应项目、报警类型、报警对象的关联
+        projectAlarmRuleObjRelService.deleteRelation(updateProjectAlarmRuleDTO.getProjectId());
+        if (belongOld > belongNew) {//集团规则->项目自定义规则
+            //新增自定义的规则
+            String conditionId = alarmConditionService.createAlarmCondition(updateProjectAlarmRuleDTO.getAlarmCondition());
+            projectAlarmRule.setAlarmConditionId(conditionId);
+        } else if (belongOld < belongNew) {//项目自定义规则->集团规则
+            String conditionId = getConditionId(updateProjectAlarmRuleDTO.getAlarmItemCode());
+            projectAlarmRule.setAlarmConditionId(conditionId);
+        } else if (belongOld == 0 && belongNew == 0) {//项目自定义规则->项目自定义规则
+            //删除自定义规则,新增自定义的规则
+            alarmConditionService.deleteAlarmCondition(updateProjectAlarmRuleDTO.getAlarmConditionId());
+            String id = alarmConditionService.createAlarmCondition(updateProjectAlarmRuleDTO.getAlarmCondition());
+            projectAlarmRule.setAlarmConditionId(id);
+        }
+        //新增关联关系
+        projectAlarmRuleObjRelService.createBatchRelation(updateProjectAlarmRuleDTO.getAddRelationList());
+        //更新项目报警
+        projectAlarmRule.setModifiedTime(new Date());
+        projectAlarmRule.setModifier(PoemsContext.getContext().getUserId());
         updateById(projectAlarmRule);
     }
-    
+
+    public String getConditionId(String alarmItemCode){
+        //查询对应报警类型的集团规则,将ID添加到项目规则表
+        QueryGroupAlarmRuleDTO queryAlarmConditionDTO = new QueryGroupAlarmRuleDTO();
+        queryAlarmConditionDTO.setAlarmItemCode(alarmItemCode);
+        List<GroupAlarmRule> groupAlarmRuleList = groupAlarmRuleService.queryGroupAlarmRuleList(queryAlarmConditionDTO);
+        String conditionId = groupAlarmRuleList.get(0).getAlarmConditionId();
+        return conditionId;
+    }
     /**
      * 校验项目报警规则是否可删除
      *
@@ -105,115 +197,164 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
 
         return projectAlarmRule;
     }
-    
+
     /**
-    * 删除项目报警规则
-    * @param id 主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:16
-    */
+     * 删除项目报警规则
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:16
+     */
     @Override
     public void deleteProjectAlarmRule(String id) {
         // 校验是否可删除
         ProjectAlarmRule projectAlarmRule = checkDeletable(id);
-
         projectAlarmRule.setValid(ValidEnum.FALSE.getType());
         updateById(projectAlarmRule);
+        //查询是否是自定义报警,是则删除自定义规则
+        int belong = projectAlarmRule.getBelong();
+        if (belong == 0) {
+            alarmConditionService.deleteAlarmCondition(projectAlarmRule.getAlarmConditionId());
+        }
+        //删除项目报警规则与监测对象的关联
+        projectAlarmRuleObjRelService.deleteRelation(projectAlarmRule.getProjectId());
     }
-    
+
     /**
-    * 查询项目报警规则
-    * @return List<ProjectAlarmRule>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:16
-    */
+     * 查询项目报警规则
+     *
+     * @return List<ProjectAlarmRule>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:16
+     */
     @Override
     public List<ProjectAlarmRule> queryProjectAlarmRuleList(QueryProjectAlarmRuleDTO queryProjectAlarmRuleDTO) {
         QueryWrapper<ProjectAlarmRule> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(ProjectAlarmRule.PROP_VALID, ValidEnum.TRUE.getType());
         // 默认按创建时间倒序排序
         queryWrapper.orderBy(true, false, ProjectAlarmRule.PROP_CREATIONTIME);
-        
+
         if (queryProjectAlarmRuleDTO != null) {
-                                
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectAlarmRuleDTO.getGroupId())) {
                 queryWrapper.like(ProjectAlarmRule.PROP_GROUP_ID, queryProjectAlarmRuleDTO.getGroupId());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectAlarmRuleDTO.getAlarmItemCode())) {
                 queryWrapper.like(ProjectAlarmRule.PROP_ALARM_ITEM_CODE, queryProjectAlarmRuleDTO.getAlarmItemCode());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectAlarmRuleDTO.getAlarmConditionId())) {
                 queryWrapper.like(ProjectAlarmRule.PROP_ALARM_CONDITION_ID, queryProjectAlarmRuleDTO.getAlarmConditionId());
             }
-                                            
+
             if (queryProjectAlarmRuleDTO.getBelong() != null) {
                 queryWrapper.eq(ProjectAlarmRule.PROP_BELONG, queryProjectAlarmRuleDTO.getBelong());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectAlarmRuleDTO.getProjectId())) {
                 queryWrapper.like(ProjectAlarmRule.PROP_PROJECT_ID, queryProjectAlarmRuleDTO.getProjectId());
             }
-                                            
+
         }
-        
+
         return list(queryWrapper);
     }
-    
+
     /**
-    * 分页查询项目报警规则
-    * @return IPage<ProjectAlarmRule>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:16
-    */
+     * 分页查询项目报警规则
+     *
+     * @return IPage<ProjectAlarmRule>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:16
+     */
     @Override
-    public IPage<ProjectAlarmRule> pageQueryProjectAlarmRule(PageQueryProjectAlarmRuleDTO pageQueryProjectAlarmRuleDTO) {
+    public IPage<ProjectAlarmRule> pageQueryProjectAlarmRule(PageQueryProjectAlarmRuleDTO
+                                                                     pageQueryProjectAlarmRuleDTO) {
         QueryWrapper<ProjectAlarmRule> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(ProjectAlarmRule.PROP_VALID, ValidEnum.TRUE.getType());
         // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
-        IPage<ProjectAlarmRule> pageParam = new Page<>(pageQueryProjectAlarmRuleDTO.getPage(), pageQueryProjectAlarmRuleDTO.getSize(),true);
+        IPage<ProjectAlarmRule> pageParam = new Page<>(pageQueryProjectAlarmRuleDTO.getPage(), pageQueryProjectAlarmRuleDTO.getSize(), true);
         // 排序信息
-        if(CollectionUtils.isEmpty(pageQueryProjectAlarmRuleDTO.getOrders())){
-            // 默认按创建时间倒序排序
-            queryWrapper.orderBy(true, false, ProjectAlarmRule.PROP_CREATIONTIME);
-        }else {
+//        if(CollectionUtils.isEmpty(pageQueryProjectAlarmRuleDTO.getOrders())){
+        // 默认按创建时间倒序排序
+        queryWrapper.orderBy(true, false, ProjectAlarmRule.PROP_CREATIONTIME);
+        /*}else {
             List<Sort> orders = pageQueryProjectAlarmRuleDTO.getOrders();
             for(Sort sort: orders) {
                 // 将驼峰转换为下划线格式
                 sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE,sort.getColumn()));
                 queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
             }
-        }
-                
+        }*/
+
         // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getGroupId())) {
-            queryWrapper.like(ProjectAlarmRule.PROP_GROUP_ID, pageQueryProjectAlarmRuleDTO.getGroupId());
+            queryWrapper.eq(ProjectAlarmRule.PROP_GROUP_ID, pageQueryProjectAlarmRuleDTO.getGroupId());
         }
-                            
+
         // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getAlarmItemCode())) {
-            queryWrapper.like(ProjectAlarmRule.PROP_ALARM_ITEM_CODE, pageQueryProjectAlarmRuleDTO.getAlarmItemCode());
+            queryWrapper.eq(ProjectAlarmRule.PROP_ALARM_ITEM_CODE, pageQueryProjectAlarmRuleDTO.getAlarmItemCode());
         }
-                            
+
         // todo 需判断使用like还是eq
-        if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getAlarmConditionId())) {
+        /*if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getAlarmConditionId())) {
             queryWrapper.like(ProjectAlarmRule.PROP_ALARM_CONDITION_ID, pageQueryProjectAlarmRuleDTO.getAlarmConditionId());
-        }
-                            
-        if (pageQueryProjectAlarmRuleDTO.getBelong() != null) {
-            queryWrapper.eq(ProjectAlarmRule.PROP_BELONG, pageQueryProjectAlarmRuleDTO.getBelong());
-        }
-                            
+        }*/
+
+//        if (pageQueryProjectAlarmRuleDTO.getBelong() != null) {
+//            queryWrapper.eq(ProjectAlarmRule.PROP_BELONG, pageQueryProjectAlarmRuleDTO.getBelong());
+//        }
+
         // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getProjectId())) {
-            queryWrapper.like(ProjectAlarmRule.PROP_PROJECT_ID, pageQueryProjectAlarmRuleDTO.getProjectId());
+            queryWrapper.eq(ProjectAlarmRule.PROP_PROJECT_ID, pageQueryProjectAlarmRuleDTO.getProjectId());
         }
-                                    
+
         return getBaseMapper().selectPage(pageParam, queryWrapper);
     }
+
+    @Override
+    public void addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
+        String condition = addGroupAlarmRuleDTO.getCondition();
+        String classCode = addGroupAlarmRuleDTO.getClassCode();
+        List<GroupManagementVo> records = groupManagementService.getEquipList(condition,classCode);
+        //查询所有项目
+        List<ProjectVO> projects = CommonMethod.getProject();
+        //遍历项目,组好对象进行插入
+        List<ProjectAlarmRule> projectAlarmRuleList = new ArrayList<>();
+        String alarmItemCode = addGroupAlarmRuleDTO.getAlarmItemCode();
+        List<AddProjectAlarmRuleObjRelDTO> addRelationList = new ArrayList<>();
+        for (ProjectVO project : projects) {
+            ProjectAlarmRule projectAlarmRule = new ProjectAlarmRule();
+            projectAlarmRule.setProjectId(project.getProjectId());
+            projectAlarmRule.setAlarmItemCode(alarmItemCode);
+            projectAlarmRule.setBelong(INTEGER_ONE);
+            projectAlarmRule.setGroupId(addGroupAlarmRuleDTO.getGroupId());
+            String conditionId = getConditionId(alarmItemCode);
+            projectAlarmRule.setAlarmConditionId(conditionId);
+            setDefaultValue(projectAlarmRule);
+            projectAlarmRuleList.add(projectAlarmRule);
+            //新增关联关系
+            records.forEach(groupManagementVo -> {
+                AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO = new AddProjectAlarmRuleObjRelDTO();
+                addProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId(projectAlarmRule.getId());
+                addProjectAlarmRuleObjRelDTO.setProjectId(project.getProjectId());
+                addProjectAlarmRuleObjRelDTO.setEquipId(groupManagementVo.getId());
+                addProjectAlarmRuleObjRelDTO.setOpen(INTEGER_ONE);
+                addRelationList.add(addProjectAlarmRuleObjRelDTO);
+            });
+        }
+        projectAlarmRuleObjRelService.createBatchRelation(addRelationList);
+        saveBatch(projectAlarmRuleList);
+
+
+
+
+    }
 }

+ 13 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/controller/ProjectAlarmRuleObjRelController.java

@@ -13,6 +13,8 @@ import com.persagy.apm.common.response.*;
 import com.persagy.apm.common.utils.ResultHelper;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
 import javax.validation.Valid;
 import java.util.List;
 
@@ -38,6 +40,7 @@ public class ProjectAlarmRuleObjRelController {
 	}
 	
 	@ApiOperation(value = "项目报警规则与监测对象的关联详情")
+    @ApiIgnore
     @PostMapping("/get")
     public CommonResult<ProjectAlarmRuleObjRelItemVO> queryProjectAlarmRuleObjRelDetail(
             @Valid @RequestBody QueryProjectAlarmRuleObjRelDetailDTO queryProjectAlarmRuleObjRelDetailDTO) {
@@ -48,6 +51,7 @@ public class ProjectAlarmRuleObjRelController {
 
 
     @ApiOperation(value = "更新项目报警规则与监测对象的关联")
+    @ApiIgnore
     @PostMapping("/update")
     public CommonResult<ApmResponseUpsertVO> updateProjectAlarmRuleObjRel(
             @Valid @RequestBody UpdateProjectAlarmRuleObjRelDTO updateProjectAlarmRuleObjRelDTO) {
@@ -57,6 +61,7 @@ public class ProjectAlarmRuleObjRelController {
 
 
     @ApiOperation(value = "删除项目报警规则与监测对象的关联")
+    @ApiIgnore
     @PostMapping("/delete")
     public CommonResult deleteProjectAlarmRuleObjRel(
             @RequestBody @Valid DeleteProjectAlarmRuleObjRelDTO deleteProjectAlarmRuleObjRelDTO) {
@@ -88,5 +93,13 @@ public class ProjectAlarmRuleObjRelController {
     //    });
     //    return ResultHelper.multi(pagedResultList);
     //}
+
+    @ApiOperation(value = "屏蔽管理")
+    @PostMapping("/shieldManage")
+    public CommonResult<ApmResponseUpsertVO> shieldManage(
+            @Valid @RequestBody List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList) {
+        projectAlarmRuleObjRelService.updateBatch(projectAlarmRuleObjRelList);
+        return ResultHelper.success();
+    }
 }
 

+ 26 - 0
src/main/java/com/persagy/apm/alarmservice/project/alarmruleobjrel/model/vo/ProjectVO.java

@@ -0,0 +1,26 @@
+package com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author 易涛
+ * @version 1.0
+ * @date 2021/9/8 11:32
+ */
+@ApiModel(value = "项目")
+@Data
+public class ProjectVO {
+
+    @ApiModelProperty("集团编码")
+    private String groupCode;
+
+    @ApiModelProperty("项目名称")
+    private String projectName;
+
+    @ApiModelProperty("项目id")
+    private String projectId;
+}

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

@@ -72,4 +72,14 @@ public interface IProjectAlarmRuleObjRelService  {
     * @version V1.0 2021-09-08 22:46:37
     */
     public IPage<ProjectAlarmRuleObjRel> pageQueryProjectAlarmRuleObjRel(PageQueryProjectAlarmRuleObjRelDTO pageQueryProjectAlarmRuleObjRelDTO);
+
+    List<ProjectAlarmRuleObjRel> queryRelationListByProjectIds(List<String> projectIds);
+
+    void deleteRelation(String projectId);
+
+    void createBatchRelation(List<AddProjectAlarmRuleObjRelDTO> addRelationList);
+
+    void updateBatch(List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList);
+
+    void deleteBatch();
 }

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

@@ -1,16 +1,23 @@
 package com.persagy.apm.alarmservice.project.alarmruleobjrel.service.impl;
 
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
+import com.persagy.apm.common.configuration.DataUtils;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.dao.ProjectAlarmRuleObjRelMapper;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.persagy.apm.common.method.CommonMethod;
 import org.springframework.stereotype.Service;
 import org.apache.commons.lang.StringUtils;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.*;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.*;
+
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.base.CaseFormat;
@@ -24,15 +31,16 @@ import org.springframework.util.CollectionUtils;
  * @version V1.0 2021-09-08 22:46:37
  */
 @Service
-public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmRuleObjRelMapper, ProjectAlarmRuleObjRel> 
-    implements IProjectAlarmRuleObjRelService {
-    
+public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmRuleObjRelMapper, ProjectAlarmRuleObjRel>
+        implements IProjectAlarmRuleObjRelService {
+
     /**
-    * 创建项目报警规则与监测对象的关联
-    * @return 项目报警规则与监测对象的关联主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:37
-    */
+     * 创建项目报警规则与监测对象的关联
+     *
+     * @return 项目报警规则与监测对象的关联主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:37
+     */
     @Override
     public String createProjectAlarmRuleObjRel(AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO) {
         ProjectAlarmRuleObjRel projectAlarmRuleObjRel = ConvertProjectAlarmRuleObjRelTool.INSTANCE.convertAddDto2Entity(addProjectAlarmRuleObjRelDTO);
@@ -41,7 +49,7 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
         save(projectAlarmRuleObjRel);
         return projectAlarmRuleObjRel.getId();
     }
-    
+
     /**
      * 如果某些字段没有赋值,使用默认的值
      *
@@ -51,17 +59,19 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
      */
     private void setDefaultValue(ProjectAlarmRuleObjRel projectAlarmRuleObjRel) {
         projectAlarmRuleObjRel.setCreator(AppContext.getContext().getAccountId());
+        projectAlarmRuleObjRel.setId(DataUtils.getUUID());
         // todo 其他默认的属性
-        
+
     }
-    
+
     /**
-    * 项目报警规则与监测对象的关联详情
-    * @param id 主键
-    * @return 部门do类
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:37
-    */
+     * 项目报警规则与监测对象的关联详情
+     *
+     * @param id 主键
+     * @return 部门do类
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:37
+     */
     @Override
     public ProjectAlarmRuleObjRel queryProjectAlarmRuleObjRelDetail(String id) {
         ProjectAlarmRuleObjRel projectAlarmRuleObjRel = getById(id);
@@ -70,12 +80,13 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
         }
         return projectAlarmRuleObjRel;
     }
-    
+
     /**
-    * 更新项目报警规则与监测对象的关联
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:37
-    */
+     * 更新项目报警规则与监测对象的关联
+     *
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:37
+     */
     @Override
     public void updateProjectAlarmRuleObjRel(UpdateProjectAlarmRuleObjRelDTO updateProjectAlarmRuleObjRelDTO) {
         ProjectAlarmRuleObjRel projectAlarmRuleObjRel = getById(updateProjectAlarmRuleObjRelDTO.getId());
@@ -83,7 +94,7 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
         projectAlarmRuleObjRel.setModifier(AppContext.getContext().getAccountId());
         updateById(projectAlarmRuleObjRel);
     }
-    
+
     /**
      * 校验项目报警规则与监测对象的关联是否可删除
      *
@@ -105,13 +116,14 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
 
         return projectAlarmRuleObjRel;
     }
-    
+
     /**
-    * 删除项目报警规则与监测对象的关联
-    * @param id 主键
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:37
-    */
+     * 删除项目报警规则与监测对象的关联
+     *
+     * @param id 主键
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:37
+     */
     @Override
     public void deleteProjectAlarmRuleObjRel(String id) {
         // 校验是否可删除
@@ -120,90 +132,135 @@ public class ProjectAlarmRuleObjRelServiceImpl extends ServiceImpl<ProjectAlarmR
         projectAlarmRuleObjRel.setValid(ValidEnum.FALSE.getType());
         updateById(projectAlarmRuleObjRel);
     }
-    
+
     /**
-    * 查询项目报警规则与监测对象的关联
-    * @return List<ProjectAlarmRuleObjRel>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:37
-    */
+     * 查询项目报警规则与监测对象的关联
+     *
+     * @return List<ProjectAlarmRuleObjRel>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:37
+     */
     @Override
     public List<ProjectAlarmRuleObjRel> queryProjectAlarmRuleObjRelList(QueryProjectAlarmRuleObjRelDTO queryProjectAlarmRuleObjRelDTO) {
         QueryWrapper<ProjectAlarmRuleObjRel> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_VALID, ValidEnum.TRUE.getType());
         // 默认按创建时间倒序排序
         queryWrapper.orderBy(true, false, ProjectAlarmRuleObjRel.PROP_CREATIONTIME);
-        
+
         if (queryProjectAlarmRuleObjRelDTO != null) {
-                                
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectAlarmRuleObjRelDTO.getProjectAlarmRuleId())) {
                 queryWrapper.like(ProjectAlarmRuleObjRel.PROP_PROJECT_ALARM_RULE_ID, queryProjectAlarmRuleObjRelDTO.getProjectAlarmRuleId());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectAlarmRuleObjRelDTO.getEquipId())) {
                 queryWrapper.like(ProjectAlarmRuleObjRel.PROP_EQUIP_ID, queryProjectAlarmRuleObjRelDTO.getEquipId());
             }
-                                            
+
             if (queryProjectAlarmRuleObjRelDTO.getOpen() != null) {
                 queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_OPEN, queryProjectAlarmRuleObjRelDTO.getOpen());
             }
-                                        
+
             // todo 需判断使用like还是eq
             if (StringUtils.isNotEmpty(queryProjectAlarmRuleObjRelDTO.getProjectId())) {
                 queryWrapper.like(ProjectAlarmRuleObjRel.PROP_PROJECT_ID, queryProjectAlarmRuleObjRelDTO.getProjectId());
             }
-                                            
+
         }
-        
+
         return list(queryWrapper);
     }
-    
+
     /**
-    * 分页查询项目报警规则与监测对象的关联
-    * @return IPage<ProjectAlarmRuleObjRel>
-    * @author lixing
-    * @version V1.0 2021-09-08 22:46:37
-    */
+     * 分页查询项目报警规则与监测对象的关联
+     *
+     * @return IPage<ProjectAlarmRuleObjRel>
+     * @author lixing
+     * @version V1.0 2021-09-08 22:46:37
+     */
     @Override
     public IPage<ProjectAlarmRuleObjRel> pageQueryProjectAlarmRuleObjRel(PageQueryProjectAlarmRuleObjRelDTO pageQueryProjectAlarmRuleObjRelDTO) {
         QueryWrapper<ProjectAlarmRuleObjRel> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_VALID, ValidEnum.TRUE.getType());
         // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
-        IPage<ProjectAlarmRuleObjRel> pageParam = new Page<>(pageQueryProjectAlarmRuleObjRelDTO.getPage(), pageQueryProjectAlarmRuleObjRelDTO.getSize(),true);
+        IPage<ProjectAlarmRuleObjRel> pageParam = new Page<>(pageQueryProjectAlarmRuleObjRelDTO.getPage(), pageQueryProjectAlarmRuleObjRelDTO.getSize(), true);
         // 排序信息
-        if(CollectionUtils.isEmpty(pageQueryProjectAlarmRuleObjRelDTO.getOrders())){
+        if (CollectionUtils.isEmpty(pageQueryProjectAlarmRuleObjRelDTO.getOrders())) {
             // 默认按创建时间倒序排序
             queryWrapper.orderBy(true, false, ProjectAlarmRuleObjRel.PROP_CREATIONTIME);
-        }else {
+        } else {
             List<Sort> orders = pageQueryProjectAlarmRuleObjRelDTO.getOrders();
-            for(Sort sort: orders) {
+            for (Sort sort : orders) {
                 // 将驼峰转换为下划线格式
-                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE,sort.getColumn()));
+                sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
                 queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
             }
         }
-                
+
         // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleObjRelDTO.getProjectAlarmRuleId())) {
             queryWrapper.like(ProjectAlarmRuleObjRel.PROP_PROJECT_ALARM_RULE_ID, pageQueryProjectAlarmRuleObjRelDTO.getProjectAlarmRuleId());
         }
-                            
+
         // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleObjRelDTO.getEquipId())) {
             queryWrapper.like(ProjectAlarmRuleObjRel.PROP_EQUIP_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());
         }
-                                    
+
         return getBaseMapper().selectPage(pageParam, queryWrapper);
     }
+
+    @Override
+    public List<ProjectAlarmRuleObjRel> queryRelationListByProjectIds(List<String> projectIds) {
+        QueryWrapper<ProjectAlarmRuleObjRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in(ProjectAlarmRuleObjRel.PROP_PROJECT_ID, projectIds);
+        return list(queryWrapper);
+    }
+
+    @Override
+    public void deleteRelation(String projectId) {
+        QueryWrapper<ProjectAlarmRuleObjRel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(ProjectAlarmRuleObjRel.PROP_PROJECT_ID, projectId);
+        ProjectAlarmRuleObjRel projectAlarmRuleObjRel = new ProjectAlarmRuleObjRel();
+        projectAlarmRuleObjRel.setValid(ValidEnum.FALSE.getType());
+        update(projectAlarmRuleObjRel, queryWrapper);
+    }
+
+    @Override
+    public void createBatchRelation(List<AddProjectAlarmRuleObjRelDTO> addRelationList) {
+        List<ProjectAlarmRuleObjRel> relationList = new ArrayList<>();
+        addRelationList.forEach(ruleObjRel -> {
+            ProjectAlarmRuleObjRel projectAlarmRuleObjRel = ConvertProjectAlarmRuleObjRelTool.INSTANCE.convertAddDto2Entity(ruleObjRel);
+            setDefaultValue(projectAlarmRuleObjRel);
+            relationList.add(projectAlarmRuleObjRel);
+        });
+        saveBatch(relationList);
+    }
+
+    @Override
+    public void updateBatch(List<ProjectAlarmRuleObjRel> projectAlarmRuleObjRelList) {
+        updateBatchById(projectAlarmRuleObjRelList);
+    }
+
+    @Override
+    public void deleteBatch() {
+        List<ProjectVO> project = CommonMethod.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);
+    }
 }

+ 35 - 0
src/main/java/com/persagy/apm/common/method/CommonMethod.java

@@ -0,0 +1,35 @@
+package com.persagy.apm.common.method;
+
+import com.alibaba.fastjson.JSONArray;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
+import org.apache.commons.io.IOUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+/**
+ * 公共方法类
+ */
+public class CommonMethod {
+    /**
+     * 获取项目
+     */
+    public static List<ProjectVO> getProject() {
+        InputStream inputStream = CommonMethod.class.getClassLoader()
+                .getResourceAsStream(File.separator + "json" + File.separator + "Project.json");
+        if (inputStream == null) {
+            return null;
+        }
+        try {
+            String str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+            return JSONArray.parseArray(str, ProjectVO.class);
+        } catch (IOException ioe) {
+            throw new RuntimeException("json文件有误", ioe);
+        }
+    }
+
+
+}

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


+ 17 - 0
src/main/resources/json/Project.json

@@ -0,0 +1,17 @@
+[
+  {
+    "projectId": "1101060001",
+    "projectName": "北京槐房万达广场",
+    "groupCode": ""
+  },
+  {
+    "projectId": "1101060002",
+    "projectName": "北京丰科万达广场",
+    "groupCode": ""
+  },
+  {
+    "projectId": "2101120002",
+    "projectName": "沈阳全运万达广场",
+    "groupCode": ""
+  }
+]

+ 54 - 12
src/main/resources/mapper/GroupAlarmRuleMapper.xml

@@ -1,17 +1,59 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper">
-    <resultMap id="GroupAlarmRuleMap" type="com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule">
-		<result column="id" property="id" />
-		<result column="group_id" property="groupId" />
-		<result column="alarm_item_code" property="alarmItemCode" />
-		<result column="alarm_condition_id" property="alarmConditionId" />
-		<result column="ts" property="ts" />
-		<result column="creator" property="creator" />
-		<result column="creation_time" property="creationTime" />
-		<result column="modifier" property="modifier" />
-		<result column="modified_time" property="modifiedTime" />
-		<result column="valid" property="valid" />
-	</resultMap>
+    <resultMap id="GroupAlarmRuleMap"
+               type="com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleListItemVO">
+        <result column="id" property="id"/>
+        <result column="group_id" property="groupId"/>
+        <result column="alarm_item_code" property="alarmItemCode"/>
+        <result column="creator" property="creator"/>
+        <result column="creation_time" property="creationTime"/>
+        <result column="modifier" property="modifier"/>
+        <result column="modified_time" property="modifiedTime"/>
+        <collection property="alarmCondition"
+                    ofType="com.persagy.apm.alarmservice.alarmcondition.model.vo.AlarmConditionListItemVO">
+            <result column="cid" property="id"/>
+            <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"
+                    typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
+            <result column="trigger_uphold" property="triggerUphold"/>
+            <result column="alarm_level" property="alarmLevel"/>
+        </collection>
+    </resultMap>
+    <select id="queryList" resultMap="GroupAlarmRuleMap">
+        select a.id,
+        a.group_id,
+        a.alarm_item_code,
+        a.creator,
+        a.creation_time,
+        a.modifier,
+        a.modified_time,
+        b.id as cid,
+        b.info_codes,
+        b.frontend,
+        b.backend,
+        b.trigger_uphold,
+        b.alarm_level
+        from group_alarm_rule a
+        left join alarm_condition b on a.alarm_condition_id = b.id
+        where a.group_id = #{groupId}
+        <if test="alarmItemCode != null">
+            and a.alarm_item_code = #{alarmItemCode}
+        </if>
+        order by a.creation_time
+        limit #{startIndex},#{size}
+    </select>
+    <select id="queryCount" resultType="java.lang.Integer">
+        select count(*)
+        from group_alarm_rule a
+        left join alarm_condition b on a.alarm_condition_id = b.id
+        where a.group_id = #{groupId}
+        <if test="alarmItemCode != null">
+            and a.alarm_item_code = #{alarmItemCode}
+        </if>
+    </select>
 </mapper>
 

+ 6 - 1
src/main/resources/mapper/ProjectAlarmRuleMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.persagy.apm.alarmservice.project.alarmrule.dao.ProjectAlarmRuleMapper">
-    <resultMap id="ProjectAlarmRuleMap" type="com.persagy.apm.alarmservice.project.alarmrule.model.ProjectAlarmRule">
+    <resultMap id="ProjectAlarmRuleMap" type="com.persagy.apm.alarmservice.project.alarmrule.model.vo.ProjectAlarmRuleListItemVO">
 		<result column="id" property="id" />
 		<result column="group_id" property="groupId" />
 		<result column="alarm_item_code" property="alarmItemCode" />
@@ -15,5 +15,10 @@
 		<result column="modified_time" property="modifiedTime" />
 		<result column="valid" property="valid" />
 	</resultMap>
+    <select id="queryCount" resultType="java.lang.Integer"></select>
+	<select id="queryList"
+			resultMap="ProjectAlarmRuleMap">
+
+	</select>
 </mapper>