Browse Source

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

lixing 3 years ago
parent
commit
a9aab30dc9
25 changed files with 419 additions and 352 deletions
  1. 0 22
      src/main/java/com/persagy/apm/alarmservice/common/excel/ExcelMergeDTO.java
  2. 0 224
      src/main/java/com/persagy/apm/alarmservice/common/excel/ExcelUtils.java
  3. 43 24
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/controller/GroupAlarmRuleController.java
  4. 1 1
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/GroupAlarmRule.java
  5. 10 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/DeleteGroupAlarmRuleDTO.java
  6. 26 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/GetGroupAlarmRuleDTO.java
  7. 3 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/QueryGroupAlarmRuleDTO.java
  8. 10 0
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/model/dto/UpdateGroupAlarmRuleDTO.java
  9. 9 2
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/IGroupAlarmRuleService.java
  10. 118 16
      src/main/java/com/persagy/apm/alarmservice/group/alarmrule/service/impl/GroupAlarmRuleServiceImpl.java
  11. 14 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/controller/AlarmConditionController.java
  12. 3 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/AlarmCondition.java
  13. 1 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/dto/AddAlarmConditionDTO.java
  14. 1 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/model/dto/UpdateAlarmConditionDTO.java
  15. 3 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/IAlarmConditionService.java
  16. 3 5
      src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/impl/AlarmConditionServiceImpl.java
  17. 15 2
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/controller/ProjectAlarmRuleController.java
  18. 5 1
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/ProjectAlarmRule.java
  19. 16 2
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/AddProjectAlarmRuleDTO.java
  20. 5 2
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/PageQueryProjectAlarmRuleDTO.java
  21. 11 0
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/dto/UpdateProjectAlarmRuleDTO.java
  22. 2 2
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/IProjectAlarmRuleService.java
  23. 119 28
      src/main/java/com/persagy/apm/alarmservice/project/alarmrule/service/impl/ProjectAlarmRuleServiceImpl.java
  24. 1 17
      src/main/resources/json/Project.json
  25. 0 0
      src/main/resources/json/Project.xlsx

+ 0 - 22
src/main/java/com/persagy/apm/alarmservice/common/excel/ExcelMergeDTO.java

@@ -1,22 +0,0 @@
-package com.persagy.apm.alarmservice.common.excel;
-
-import lombok.Data;
-
-/**
- * @description: 合并excelDTO
- * @author: fenghanchao
- * @company: Persagy Technology Co.,Ltd
- * @since: 2021/5/14 10:59
- * @version: V1.0
- **/
-@Data
-public class ExcelMergeDTO {
-    /*起始行*/
-    private int startRow;
-    /*结束行*/
-    private int endRow;
-    /*起始列*/
-    private int startColumn;
-    /*结束列*/
-    private int endColumn;
-}

+ 0 - 224
src/main/java/com/persagy/apm/alarmservice/common/excel/ExcelUtils.java

@@ -1,224 +0,0 @@
-package com.persagy.apm.alarmservice.common.excel;
-
-import com.persagy.apm.alarmservice.common.util.DataUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.ss.util.WorkbookUtil;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.util.CollectionUtils;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.reflect.Field;
-import java.net.URLEncoder;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-public class ExcelUtils {
-
-    /***
-     * @description:导出excel
-     * @param: sheetName 页签名称
-     * @param: titleNameList 表头列表
-     * @param: titleCodeList 表头编码列表
-     * @param: dataObjectList 数据对象列表
-     * @return: void
-     * @exception:
-     * @author: fenghanchao
-     * @company: Persagy Technology Co.,Ltd
-     * @since: 11:02 2020/7/9
-     * @version: V1.0
-     */
-    public static <T> Workbook exportToExcel(String sheetName, List<String> titleNameList, List<String> titleCodeList
-            , List<T> dataObjectList) throws Exception {
-        // 根据模板,创建工作簿
-        Workbook workBook = new XSSFWorkbook();
-        String safeName = WorkbookUtil.createSafeSheetName(sheetName);
-        Sheet sheet = workBook.createSheet(safeName);
-
-        for (int columnNumber = 0; columnNumber < titleNameList.size(); columnNumber++) {
-            createCell(sheet, 0, columnNumber, titleNameList.get(columnNumber));
-        }
-        // 输出流
-        int skipNum = 1;
-        for (int rowNumber = 0; rowNumber < dataObjectList.size(); rowNumber++) {
-            T dataObject = dataObjectList.get(rowNumber);
-            for (int columnNumber = 0; columnNumber < titleCodeList.size(); columnNumber++) {
-                Field field = dataObject.getClass().getDeclaredField(titleCodeList.get(columnNumber));
-                field.setAccessible(true);
-                createCell(sheet, rowNumber + skipNum, columnNumber, field.get(dataObject));
-            }
-        }
-        return workBook;
-    }
-
-    private static void createCell(Sheet sheet, int rowNumber, int cellNumber, Object content) {
-        Row row = sheet.getRow(rowNumber);
-        if (row == null) {
-            row = sheet.createRow(rowNumber);
-        }
-        Cell cell = row.getCell(cellNumber);
-        if (cell == null) {
-            cell = row.createCell(cellNumber);
-        }
-
-        if (content == null) {
-            content = "";
-        }
-        cell.setCellValue(content.toString());
-    }
-
-    public static Workbook exportToExcel(String sheetName, int skipRows, int skipColumns, List<List<String>> rowInfoList) throws Exception {
-        Workbook workBook = new XSSFWorkbook();
-        String safeName = WorkbookUtil.createSafeSheetName(sheetName);
-        Sheet sheet = workBook.createSheet(safeName);
-        exportToExcel(sheet, skipRows, skipColumns, rowInfoList);
-        return workBook;
-    }
-
-    public static void exportToExcel(Sheet sheet, int skipRows, int skipColumns, List<List<String>> rowInfoList) throws Exception {
-        for (int rowNumber = 0; rowNumber < rowInfoList.size(); rowNumber++) {
-            for (int columnNumber = 0; columnNumber < rowInfoList.get(rowNumber).size(); columnNumber++) {
-                createCell(sheet, rowNumber + skipRows, columnNumber + skipColumns, rowInfoList.get(rowNumber).get(columnNumber));
-            }
-        }
-    }
-
-
-    public static void excelResponse(HttpServletResponse response, Workbook wb, String fileName) {
-        OutputStream out = null;
-        try {
-            out = response.getOutputStream();
-            response.setContentType("application/vnd.ms-excel");
-            response.setHeader("Content-Disposition", "attachment; filename="
-                    + URLEncoder.encode(fileName + ".xlsx", "UTF-8"));
-            wb.write(out);
-        } catch (Exception e) {
-            e.printStackTrace();
-        } finally {
-            try {
-                out.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    /**
-     * @description: 获取excel的workbook
-     * @param: filePath 示例: "config/budget/template/excel/MonthEnergyExportTemplate.xlsx"
-     * @return: org.apache.poi.ss.usermodel.Workbook
-     * @author: fenghanchao
-     * @company: Persagy Technology Co.,Ltd
-     * @since: 10:34 2021/5/14
-     * @version: V1.0
-     */
-    public static Workbook getWorkbook(String filePath) throws Exception {
-        InputStream in = ExcelUtils.class.getResourceAsStream(filePath);
-        // 读取excel模板
-        return new XSSFWorkbook(in);
-    }
-
-    /**
-     * @description: 合并一行的单元格
-     * @param: workbook
-     * @param: rowNum
-     * @param: mergeCellsList eg: [[0,1,2],[3,4],[5,6]] 合并0,1,2单元格; 3,4单元格; 5,6单元格
-     * @return: void
-     * @exception:
-     * @author: fenghanchao
-     * @company: Persagy Technology Co.,Ltd
-     * @since: 10:48 2021/5/14
-     * @version: V1.0
-     */
-    public static void mergeRowCell(Workbook workbook, List<ExcelMergeDTO> mergeDTOList) throws Exception {
-        if (CollectionUtils.isEmpty(mergeDTOList)) {
-            return;
-        }
-        Sheet sheet0 = workbook.getSheetAt(0);
-        mergeDTOList.forEach(mergeDTO -> {
-            CellRangeAddress region = new CellRangeAddress(mergeDTO.getStartRow(), mergeDTO.getEndRow(), mergeDTO.getStartColumn()
-                    , mergeDTO.getEndColumn());
-            sheet0.addMergedRegion(region);
-        });
-    }
-
-    public static List<List<String>> getExcelSheetInfo(byte[] excelByteArray, String sheetName) throws Exception {
-        InputStream in = new ByteArrayInputStream(excelByteArray);
-        Workbook workBook = WorkbookFactory.create(in);
-        // 遍历excel中的sheet
-        List<List<String>> resultInfo = new ArrayList<>();
-        Sheet sheet = workBook.getSheet(sheetName);
-        if (sheet == null) {
-            return new ArrayList<>();
-        }
-
-        int lastColumnNum = 0;
-        for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
-            Row row = sheet.getRow(rowNum);
-            if (row == null) {
-                continue;
-            }
-            if (lastColumnNum < row.getLastCellNum()) {
-                lastColumnNum = row.getLastCellNum();
-            }
-        }
-
-        for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
-            Row row = sheet.getRow(rowNum);
-            ArrayList<String> curarr = new ArrayList<>();
-            if (row == null) {
-                for (int columnNum = 0; columnNum < lastColumnNum; columnNum++) {
-                    curarr.add("");
-                }
-            } else {
-                for (int columnNum = 0; columnNum < lastColumnNum; columnNum++) {
-                    Cell cell = row.getCell(columnNum);
-                    curarr.add(getCellStringValue(cell));
-                }
-            }
-            resultInfo.add(curarr);
-        }
-        return resultInfo;
-    }
-
-    public static String getCellStringValue(Cell cell) throws Exception {
-        if (cell == null) {
-            return "";
-        }
-        String value;
-        switch (cell.getCellTypeEnum()) {
-            case STRING:
-                value = cell.getStringCellValue();
-                break;
-            case NUMERIC:
-                if (DateUtil.isCellDateFormatted(cell)) {
-                    value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(cell.getDateCellValue());
-                } else {
-                    value = DataUtils.parseString(cell.getNumericCellValue());
-                }
-                break;
-            case BOOLEAN:
-                value = String.valueOf(cell.getBooleanCellValue());
-                break;
-            case BLANK:
-                value = "";
-                break;
-            case ERROR:
-                throw new Exception("can not resolve this cell! CELL_TYPE_ERROR! ");
-            case FORMULA:
-                value = cell.getCellFormula();
-                break;
-            default:
-                value = cell.getStringCellValue();
-                break;
-        }
-
-        return StringUtils.trim(value);
-    }
-}

+ 43 - 24
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/controller/GroupAlarmRuleController.java

@@ -1,5 +1,8 @@
 package com.persagy.apm.alarmservice.group.alarmrule.controller;
 
+import com.persagy.apm.alarmservice.project.alarmcondition.model.AlarmCondition;
+import com.persagy.apm.alarmservice.project.alarmcondition.model.ConvertAlarmConditionTool;
+import com.persagy.apm.alarmservice.project.alarmcondition.model.vo.AlarmConditionItemVO;
 import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
 import com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper;
 import com.persagy.apm.alarmservice.group.alarmrule.model.ConvertGroupAlarmRuleTool;
@@ -9,7 +12,6 @@ import com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleItemV
 import com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleListItemVO;
 import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
-import com.persagy.apm.alarmservice.common.excel.ExcelUtils;
 import com.persagy.apm.common.response.ApmResponseUpsertVO;
 import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.response.PageList;
@@ -18,10 +20,12 @@ import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.QueryAlarmConfigDTO;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
 import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
+import com.persagy.common.enums.ResponseCode;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -31,16 +35,19 @@ import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
+import java.io.File;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
 /**
  * 集团报警规则控制层
+ *
  * @author lixing
  * @version V1.0 2021-09-08 22:35:45
  */
-@Api(tags = "集团报警规则") 
+@Api(tags = "集团报警规则")
 @Validated
 @RestController
 @RequestMapping("groupAlarmRules")
@@ -54,15 +61,21 @@ public class GroupAlarmRuleController {
     @Autowired
     private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
 
-	@ApiOperation(value = "创建集团报警规则")
-	@PostMapping("/create")
-	public CommonResult<ApmResponseUpsertVO> createGroupAlarmRule(
-	        @Valid @RequestBody AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
-        String id = groupAlarmRuleService.createGroupAlarmRule(addGroupAlarmRuleDTO);
+    @ApiOperation(value = "创建集团报警规则")
+    @PostMapping("/create")
+    public CommonResult<ApmResponseUpsertVO> createGroupAlarmRule(
+            @Valid @RequestBody AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
+        String id = null;
+        try {
+            id = groupAlarmRuleService.createGroupAlarmRule(addGroupAlarmRuleDTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());
+        }
         return ResultHelper.single(new ApmResponseUpsertVO(id));
-	}
-	
-	@ApiOperation(value = "集团报警规则详情")
+    }
+
+    @ApiOperation(value = "集团报警规则详情")
     @PostMapping("/get")
     @ApiIgnore
     public CommonResult<GroupAlarmRuleItemVO> queryGroupAlarmRuleDetail(
@@ -77,7 +90,12 @@ public class GroupAlarmRuleController {
     @PostMapping("/update")
     public CommonResult<ApmResponseUpsertVO> updateGroupAlarmRule(
             @Valid @RequestBody UpdateGroupAlarmRuleDTO updateGroupAlarmRuleDTO) {
-        groupAlarmRuleService.updateGroupAlarmRule(updateGroupAlarmRuleDTO);
+        try {
+            groupAlarmRuleService.updateGroupAlarmRule(updateGroupAlarmRuleDTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());
+        }
         return ResultHelper.single(new ApmResponseUpsertVO(updateGroupAlarmRuleDTO.getId()));
     }
 
@@ -86,9 +104,12 @@ public class GroupAlarmRuleController {
     @PostMapping("/delete")
     public CommonResult deleteGroupAlarmRule(
             @RequestBody @Valid DeleteGroupAlarmRuleDTO deleteGroupAlarmRuleDTO) {
-        groupAlarmRuleService.deleteGroupAlarmRule(deleteGroupAlarmRuleDTO.getId());
-        alarmConditionService.deleteAlarmCondition(deleteGroupAlarmRuleDTO.getAlarmConditionId());
-        projectAlarmRuleObjRelService.deleteBatch();
+        try {
+            groupAlarmRuleService.delete(deleteGroupAlarmRuleDTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());
+        }
         return ResultHelper.success();
     }
 
@@ -99,12 +120,12 @@ public class GroupAlarmRuleController {
             @Valid @RequestBody PageQueryGroupAlarmRuleDTO pageQueryGroupAlarmRuleDTO) {
         int page = pageQueryGroupAlarmRuleDTO.getPage();
         int size = pageQueryGroupAlarmRuleDTO.getSize();
-        pageQueryGroupAlarmRuleDTO.setStartIndex((page-1)*size);
+        pageQueryGroupAlarmRuleDTO.setStartIndex((page - 1) * size);
         int count = groupAlarmRuleMapper.queryCount(pageQueryGroupAlarmRuleDTO);
         List<GroupAlarmRuleListItemVO> groupAlarmRuleList = groupAlarmRuleMapper.queryList(pageQueryGroupAlarmRuleDTO);
-        return ResultHelper.multi(groupAlarmRuleList,count);
+        return ResultHelper.multi(groupAlarmRuleList, count);
     }
-    
+
 //    @ApiOperation(value = "集团报警规则列表, 分页查询")
 //    @PostMapping("/query")
 //    public CommonResult<PageList<GroupAlarmRuleListItemVO>> queryGroupAlarmRule(
@@ -125,7 +146,8 @@ public class GroupAlarmRuleController {
 
     @ApiOperation(value = "")
     @PostMapping("/test")
-    public void test() throws Exception{
+    @ApiIgnore
+    public void test() throws Exception {
         QueryAlarmConfigDTO queryAlarmConfigDTO = new QueryAlarmConfigDTO();
         DmpResult<List<AlarmConfigItem>> query = alarmConfigService.query(queryAlarmConfigDTO);
         System.out.println(query);
@@ -133,13 +155,10 @@ public class GroupAlarmRuleController {
 
     @ApiOperation(value = "读取表格")
     @PostMapping("/readExcel")
-    public void readExcel() throws Exception{
-        Workbook workbook = ExcelUtils.getWorkbook("/项目清单.xlsx");
-        Sheet sheet = workbook.getSheet("慧云3.0及3.1版本清单");
-        List<Map<String, String>> list = new ArrayList();
-        for (int i = 0; i < sheet.getLastRowNum(); i++) {
+    @ApiIgnore
+    public void readExcel() throws Exception {
+        groupAlarmRuleService.readExcel();
 
-        }
     }
 
 }

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

@@ -22,7 +22,7 @@ public class GroupAlarmRule extends AuditableEntity<GroupAlarmRule> implements S
     @ApiModelProperty("分组id")
     private String groupId;
     
-    @ApiModelProperty("报警条目编码")
+    @ApiModelProperty("报警类型编码")
     private String alarmItemCode;
 
     @ApiModelProperty("报警类型名称")

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

@@ -3,6 +3,8 @@ package com.persagy.apm.alarmservice.group.alarmrule.model.dto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -19,4 +21,12 @@ public class DeleteGroupAlarmRuleDTO {
     @ApiModelProperty(value = "报警条件id", required = true)
     @NotNull(message = "报警条件id不能为空") // todo 更新校验规则
     private String alarmConditionId;
+
+    @ApiModelProperty(value = "对象类编码",required = true)
+    @NotBlank(message = "对象类编码必传")
+    private String classCode;
+
+    @ApiModelProperty(value = "查询条件",required = true)
+    @NotBlank(message = "查询条件必传")
+    private String condition;
 }

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

@@ -0,0 +1,26 @@
+package com.persagy.apm.alarmservice.group.alarmrule.model.dto;
+
+import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-09-08 22:35:45
+ */
+@Data
+@ApiModel(value = "查询报警规则入参")
+public class GetGroupAlarmRuleDTO {
+    @ApiModelProperty(value = "分组id", required = true)
+    @NotNull(message = "分组id不能为空") // todo 更新校验规则
+    private String groupId;
+    
+    @ApiModelProperty(value = "报警类型编码", required = true)
+    @NotNull(message = "报警类型编码不能为空") // todo 更新校验规则
+    private String alarmItemCode;
+    
+}

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

@@ -18,6 +18,9 @@ public class QueryGroupAlarmRuleDTO {
     @ApiModelProperty(value = "报警类型编码", required = true)
     private String alarmItemCode;
 
+    @ApiModelProperty(value = "报警类型名称", required = true)
+    private String alarmItemName;
+
     @ApiModelProperty(value = "每页条数", required = true)
     private int pageSize;
 

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

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

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

@@ -2,6 +2,8 @@ package com.persagy.apm.alarmservice.group.alarmrule.service;
 
 import com.persagy.apm.alarmservice.group.alarmrule.model.*;
 import com.persagy.apm.alarmservice.group.alarmrule.model.dto.*;
+
+import java.io.IOException;
 import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.persagy.apm.alarmservice.group.alarmrule.model.vo.GroupAlarmRuleListItemVO;
@@ -24,7 +26,7 @@ public interface IGroupAlarmRuleService  {
     * @author lixing
     * @version V1.0 2021-09-08 22:35:45
     */
-    public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO);
+    public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) throws Exception;
     
     /**
     * 集团报警规则详情
@@ -43,7 +45,7 @@ public interface IGroupAlarmRuleService  {
     * @author lixing
     * @version V1.0 2021-09-08 22:35:45
     */
-    public void updateGroupAlarmRule(UpdateGroupAlarmRuleDTO updateGroupAlarmRuleDTO);
+    public void updateGroupAlarmRule(UpdateGroupAlarmRuleDTO updateGroupAlarmRuleDTO) throws Exception;
     
     /**
     * 删除集团报警规则
@@ -74,4 +76,9 @@ public interface IGroupAlarmRuleService  {
     */
     public IPage<GroupAlarmRule> pageQueryGroupAlarmRule(PageQueryGroupAlarmRuleDTO pageQueryGroupAlarmRuleDTO);
 
+    void delete(DeleteGroupAlarmRuleDTO deleteGroupAlarmRuleDTO) throws Exception;
+
+    void readExcel() throws IOException;
+
+    GroupAlarmRule getGroupAlarmRule(GetGroupAlarmRuleDTO getGroupAlarmRuleDTO);
 }

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

@@ -1,41 +1,56 @@
 package com.persagy.apm.alarmservice.group.alarmrule.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+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;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.base.CaseFormat;
+import com.persagy.apm.alarmservice.group.alarmrule.controller.GroupAlarmRuleController;
 import com.persagy.apm.alarmservice.group.alarmrule.dao.GroupAlarmRuleMapper;
 import com.persagy.apm.alarmservice.group.alarmrule.model.ConvertGroupAlarmRuleTool;
 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.PageQueryGroupAlarmRuleDTO;
-import com.persagy.apm.alarmservice.group.alarmrule.model.dto.QueryGroupAlarmRuleDTO;
-import com.persagy.apm.alarmservice.group.alarmrule.model.dto.UpdateGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.*;
 import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
+import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
+import com.persagy.apm.alarmservice.group.management.service.impl.GroupManagementServiceImpl;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.UpdateAlarmConditionDTO;
 import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
+import com.persagy.apm.alarmservice.project.alarmcondition.service.impl.AlarmConditionServiceImpl;
 import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ProjectAlarmRuleObjRel;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.common.context.poems.PoemsContext;
 import com.persagy.apm.common.model.dto.Sort;
+import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.AlarmCondition;
-import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.AddAlarmConfigDTO;
-import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.BatchAddAlarmConfigDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.*;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.common.QueryDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
 import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
+import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.io.*;
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 集团报警规则(GroupAlarmRule) service层
@@ -52,6 +67,10 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
     private IProjectAlarmRuleService projectAlarmRuleService;
     @Autowired
     private AlarmConfigServiceImpl alarmConfigService;
+    @Autowired
+    private GroupManagementServiceImpl groupManagementService;
+    @Autowired
+    private IProjectAlarmRuleObjRelService projectAlarmRuleObjRelService;
 
     /**
      * 创建集团报警规则
@@ -61,7 +80,8 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
      * @version V1.0 2021-09-08 22:35:45
      */
     @Override
-    public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
+    @Transactional(rollbackFor = Exception.class)
+    public String createGroupAlarmRule(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) throws Exception {
         //1、给某个设备分组创建集团报警
         GroupAlarmRule groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertAddDto2Entity(addGroupAlarmRuleDTO);
         AddAlarmConditionDTO alarmCondition = addGroupAlarmRuleDTO.getAlarmCondition();
@@ -86,16 +106,12 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
             List<String> infoCodeList = (List<String>) conditionMap.get("infoCode");
             condition.setInfoCode(infoCodeList);
             condition.setTriggerUphold(alarmCondition.getTriggerUphold());
-            condition.setRules((List<String>) conditionMap.get("conditionMap"));
+            condition.setRules((List<String>) conditionMap.get("displayFormula"));
             addAlarmConfigDTO.setCondition(condition);
             alarmConfigs.add(addAlarmConfigDTO);
         }
         batchAddAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
-        try {
-            alarmConfigService.batchCreate(batchAddAlarmConfigDTO);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        alarmConfigService.batchCreate(batchAddAlarmConfigDTO);
         return groupAlarmRule.getId();
     }
 
@@ -135,13 +151,40 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
      * @version V1.0 2021-09-08 22:35:45
      */
     @Override
-    public void updateGroupAlarmRule(UpdateGroupAlarmRuleDTO updateGroupAlarmRuleDTO) {
+    @Transactional(rollbackFor = Exception.class)
+    public void updateGroupAlarmRule(UpdateGroupAlarmRuleDTO updateGroupAlarmRuleDTO) throws Exception {
         GroupAlarmRule groupAlarmRule = getById(updateGroupAlarmRuleDTO.getId());
         groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertUpdateDto2Entity(groupAlarmRule, updateGroupAlarmRuleDTO);
         groupAlarmRule.setModifier(AppContext.getContext().getAccountId());
         updateById(groupAlarmRule);
         UpdateAlarmConditionDTO alarmCondition = updateGroupAlarmRuleDTO.getAlarmCondition();
         alarmConditionService.updateAlarmCondition(alarmCondition);
+        if (alarmCondition != null) {
+            //同步更新设备报警条件 begin
+            BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
+            List<UpdateAlarmConfigDTO> updateAlarmConfigDTOs = new ArrayList();
+            String condition = updateGroupAlarmRuleDTO.getCondition();
+            String classCode = updateGroupAlarmRuleDTO.getClassCode();
+            List<EquipItem> equipList = groupManagementService.getEquipList(condition, classCode);
+            Map<String, Object> stringMap = alarmConditionService.frontend2Backend(alarmCondition.getFrontend());
+            for (EquipItem record : equipList) {
+                AlarmCondition alarmCondit = new AlarmCondition();
+                alarmCondit.setTrigger((String) alarmCondition.getBackend());
+                List<String> infoCodeList = alarmCondition.getInfoCodes();
+                alarmCondit.setInfoCode(infoCodeList);
+                alarmCondit.setTriggerUphold(alarmCondition.getTriggerUphold());
+                alarmCondit.setRules((List<String>) stringMap.get("displayFormula"));
+                UpdateAlarmConfigDTO updateAlarmConfigDTO = new UpdateAlarmConfigDTO();
+                updateAlarmConfigDTO.setCondition(alarmCondit);
+                updateAlarmConfigDTO.setId(record.getId());
+                updateAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
+                updateAlarmConfigDTOs.add(updateAlarmConfigDTO);
+            }
+            batchUpdateAlarmConfigDTO.setAlarmConfigs(updateAlarmConfigDTOs);
+            alarmConfigService.batchUpdate(batchUpdateAlarmConfigDTO);
+            //同步更新设备报警条件 end
+        }
+
     }
 
     /**
@@ -203,8 +246,8 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
             }
 
             // todo 需判断使用like还是eq
-            if (StringUtils.isNotEmpty(queryGroupAlarmRuleDTO.getAlarmItemCode())) {
-                queryWrapper.like(GroupAlarmRule.PROP_ALARM_ITEM_CODE, queryGroupAlarmRuleDTO.getAlarmItemCode());
+            if (StringUtils.isNotEmpty(queryGroupAlarmRuleDTO.getAlarmItemName())) {
+                queryWrapper.like(GroupAlarmRule.PROP_ALARM_ITEM_NAME, queryGroupAlarmRuleDTO.getAlarmItemName());
             }
         }
         return list(queryWrapper);
@@ -253,4 +296,63 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
 
         return getBaseMapper().selectPage(pageParam, queryWrapper);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delete(DeleteGroupAlarmRuleDTO deleteGroupAlarmRuleDTO) throws Exception {
+        this.deleteGroupAlarmRule(deleteGroupAlarmRuleDTO.getId());
+        alarmConditionService.deleteAlarmCondition(deleteGroupAlarmRuleDTO.getAlarmConditionId());
+        projectAlarmRuleObjRelService.deleteBatch();
+        //删除设备报警条件 begin
+        BatchDeleteAlarmConfigDTO batchDeleteAlarmConfigDTO = new BatchDeleteAlarmConfigDTO();
+        List<DeleteAlarmConfigDTO> alarmConfigs = new ArrayList<>();
+        String condition = deleteGroupAlarmRuleDTO.getCondition();
+        String classCode = deleteGroupAlarmRuleDTO.getClassCode();
+        //查询所有设备
+        List<EquipItem> records = groupManagementService.getEquipList(condition, classCode);
+        List<String> objIds = records.stream().map(EquipItem::getId).collect(Collectors.toList());
+        QueryAlarmConfigDTO queryAlarmConfigDTO = new QueryAlarmConfigDTO();
+        queryAlarmConfigDTO.setObjId(objIds);
+        DmpResult<List<AlarmConfigItem>> query = alarmConfigService.query(queryAlarmConfigDTO);
+        //所有设备条件
+        List<AlarmConfigItem> data = query.getData();
+        //组织删除参数
+        data.forEach(alarmConfigItem -> {
+            DeleteAlarmConfigDTO deleteAlarmConfigDTO = new DeleteAlarmConfigDTO();
+            deleteAlarmConfigDTO.setId(alarmConfigItem.getId());
+            alarmConfigs.add(deleteAlarmConfigDTO);
+        });
+        batchDeleteAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
+        alarmConfigService.batchDelete(batchDeleteAlarmConfigDTO);
+        //删除设备报警条件 end
+    }
+
+    @Override
+    public void readExcel() throws IOException {
+        InputStream in = GroupAlarmRuleServiceImpl.class.getResourceAsStream(File.separator + "json" + File.separator + "Project.xlsx");
+        XSSFWorkbook sheets = new XSSFWorkbook(in);
+        Sheet sheet = sheets.getSheet("慧云3.0及3.1版本清单");
+//        String path = this.getClass().getClassLoader().getResource("Project.json").getPath();
+        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("/Users/xjh/develop/persagy/energy-alarm-service/src/main/resources/json/Project.json"), "UTF-8");
+        List<JSONObject> list = new ArrayList();
+        for (int i = 1; i < sheet.getPhysicalNumberOfRows() - 1; i++) {
+            Row row = sheet.getRow(i);
+            JSONObject subObj = new JSONObject();
+            subObj.put("projectId", row.getCell(1).toString());
+            subObj.put("projectName", row.getCell(3).toString());
+            subObj.put("groupCode", "wd");
+            list.add(subObj);
+        }
+        osw.write(JSON.toJSONString(list));
+        osw.flush();
+        osw.close();
+    }
+
+    @Override
+    public GroupAlarmRule getGroupAlarmRule(GetGroupAlarmRuleDTO getGroupAlarmRuleDTO) {
+        QueryWrapper<GroupAlarmRule> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(GroupAlarmRule.PROP_GROUP_ID, getGroupAlarmRuleDTO.getGroupId());
+        queryWrapper.eq(GroupAlarmRule.PROP_ALARM_ITEM_CODE, getGroupAlarmRuleDTO.getAlarmItemCode());
+        return getOne(queryWrapper);
+    }
 }

+ 14 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/controller/AlarmConditionController.java

@@ -1,5 +1,8 @@
 package com.persagy.apm.alarmservice.project.alarmcondition.controller;
 
+import com.persagy.apm.alarmservice.group.alarmrule.model.GroupAlarmRule;
+import com.persagy.apm.alarmservice.group.alarmrule.model.dto.GetGroupAlarmRuleDTO;
+import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleService;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.Formula;
 import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
 
@@ -33,6 +36,8 @@ import java.util.*;
 public class AlarmConditionController {
     @Autowired
     private IAlarmConditionService alarmConditionService;
+    @Autowired
+    private IGroupAlarmRuleService groupAlarmRuleService;
 
     @ApiOperation(value = "创建报警条件")
     @ApiIgnore
@@ -106,6 +111,14 @@ public class AlarmConditionController {
     //    return ResultHelper.multi(pagedResultList);
     //}
 
-
+    @ApiOperation(value = "集团报警规则详情")
+    @PostMapping("/getCondition")
+    public CommonResult<AlarmConditionItemVO> getCondition(
+            @Valid @RequestBody GetGroupAlarmRuleDTO getGroupAlarmRuleDTO) {
+        GroupAlarmRule groupAlarmRule = groupAlarmRuleService.getGroupAlarmRule(getGroupAlarmRuleDTO);
+        AlarmCondition alarmCondition = alarmConditionService.queryAlarmConditionDetail(groupAlarmRule.getAlarmConditionId());
+        AlarmConditionItemVO alarmConditionItemVO = ConvertAlarmConditionTool.INSTANCE.convert2ResponseItemDTO(alarmCondition);
+        return ResultHelper.single(alarmConditionItemVO);
+    }
 }
 

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

@@ -1,6 +1,7 @@
 package com.persagy.apm.alarmservice.project.alarmcondition.model;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.dto.CalculateMethodDTO;
 import com.persagy.apm.common.model.entity.AuditableEntity;
@@ -21,6 +22,7 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 @Data
 @ApiModel(description = "报警条件")
+@TableName(autoResultMap = true)
 public class AlarmCondition extends AuditableEntity<AlarmCondition> implements Serializable {
     private static final long serialVersionUID = 268657175929005281L;
 
@@ -34,7 +36,7 @@ public class AlarmCondition extends AuditableEntity<AlarmCondition> implements S
 
     @TableField(typeHandler = FastjsonTypeHandler.class)
     @ApiModelProperty("后端使用")
-    private Object backend;
+    private String backend;
 
     @ApiModelProperty("触发时长")
     private Integer triggerUphold;

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

@@ -26,7 +26,7 @@ public class AddAlarmConditionDTO {
 
     @ApiModelProperty(value = "后端使用", required = true)
     //@NotNull(message = "后端使用不能为空") // todo 更新校验规则
-    private Object backend;
+    private String backend;
     
     @ApiModelProperty(value = "触发时长", required = true)
     @NotNull(message = "触发时长不能为空") // todo 更新校验规则

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

@@ -29,7 +29,7 @@ public class UpdateAlarmConditionDTO {
     
     @ApiModelProperty(value = "后端使用", required = true)
     @NotNull(message = "后端使用不能为空") // todo 更新校验规则
-    private Object backend;
+    private String backend;
     
     @ApiModelProperty(value = "触发时长", required = true)
     @NotNull(message = "触发时长不能为空") // todo 更新校验规则

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

@@ -1,6 +1,7 @@
 package com.persagy.apm.alarmservice.project.alarmcondition.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.apm.alarmservice.group.calculatemethod.model.dto.CalculateMethodDTO;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.AlarmCondition;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.*;
 import com.persagy.apm.common.response.CommonResult;
@@ -75,4 +76,6 @@ public interface IAlarmConditionService  {
     public IPage<AlarmCondition> pageQueryAlarmCondition(PageQueryAlarmConditionDTO pageQueryAlarmConditionDTO);
 
     CommonResult<Boolean> validate(ValidateAlarmConditionDTO formulaString);
+
+    Map<String, Object> frontend2Backend(List<List<CalculateMethodDTO>> frontend);
 }

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

@@ -58,7 +58,7 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         alarmCondition.setFrontend(frontend);
         //将前端公式转换成后台公式
         Map<String, Object> stringMap = frontend2Backend(frontend);
-        alarmCondition.setBackend(stringMap.get("backend"));
+        alarmCondition.setBackend((String) stringMap.get("backend"));
         alarmCondition.setInfoCodes((List<String>) stringMap.get("infoCode"));
         // 设置默认值
         setDefaultValue(alarmCondition);
@@ -67,7 +67,7 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         return stringMap;
     }
 
-    private Map<String, Object> frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
+    public Map<String, Object> frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
         StringBuffer allNotNull = new StringBuffer();
         StringBuffer allNull = new StringBuffer();
         Set<String> infoCodesSet = new HashSet<>();
@@ -108,7 +108,6 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
             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 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, Object> map = new HashMap();
@@ -161,11 +160,10 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         alarmCondition.setModifier(PoemsContext.getContext().getUserId());
         if (updateAlarmConditionDTO.getFrontend() != null) {
             List<List<CalculateMethodDTO>> frontend = updateAlarmConditionDTO.getFrontend();
-            String frontJson = JSON.toJSONString(frontend);
             alarmCondition.setFrontend(frontend);
             //将前端公式转换成后台公式
             Map<String, Object> stringMap = frontend2Backend(frontend);
-            alarmCondition.setBackend(stringMap.get("backend"));
+            alarmCondition.setBackend((String) stringMap.get("backend"));
             alarmCondition.setInfoCodes((List<String>) stringMap.get("infoCode"));
         }
         updateById(alarmCondition);

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

@@ -8,6 +8,7 @@ import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleS
 
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.ProjectAlarmRuleObjRel;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
+import com.persagy.common.enums.ResponseCode;
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -46,12 +47,19 @@ public class ProjectAlarmRuleController {
 	@PostMapping("/create")
 	public CommonResult<ApmResponseUpsertVO> createProjectAlarmRule(
 	        @Valid @RequestBody AddProjectAlarmRuleDTO addProjectAlarmRuleDTO) {
-        String id = projectAlarmRuleService.createProjectAlarmRule(addProjectAlarmRuleDTO);
+        String id = null;
+        try {
+            id = projectAlarmRuleService.createProjectAlarmRule(addProjectAlarmRuleDTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());
+        }
         return ResultHelper.single(new ApmResponseUpsertVO(id));
 	}
 	
 	@ApiOperation(value = "项目报警规则详情")
     @PostMapping("/get")
+    @ApiIgnore
     public CommonResult<ProjectAlarmRuleItemVO> queryProjectAlarmRuleDetail(
             @Valid @RequestBody QueryProjectAlarmRuleDetailDTO queryProjectAlarmRuleDetailDTO) {
         ProjectAlarmRule projectAlarmRule = projectAlarmRuleService.queryProjectAlarmRuleDetail(queryProjectAlarmRuleDetailDTO.getId());
@@ -64,7 +72,12 @@ public class ProjectAlarmRuleController {
     @PostMapping("/update")
     public CommonResult<ApmResponseUpsertVO> updateProjectAlarmRule(
             @Valid @RequestBody UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO) {
-        projectAlarmRuleService.updateProjectAlarmRule(updateProjectAlarmRuleDTO);
+        try {
+            projectAlarmRuleService.updateProjectAlarmRule(updateProjectAlarmRuleDTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());
+        }
         return ResultHelper.single(new ApmResponseUpsertVO(updateProjectAlarmRuleDTO.getId()));
     }
 

+ 5 - 1
src/main/java/com/persagy/apm/alarmservice/project/alarmrule/model/ProjectAlarmRule.java

@@ -22,8 +22,11 @@ public class ProjectAlarmRule extends AuditableEntity<ProjectAlarmRule> implemen
     @ApiModelProperty("分组id")
     private String groupId;
     
-    @ApiModelProperty("报警条目编码")
+    @ApiModelProperty("报警类型编码")
     private String alarmItemCode;
+
+    @ApiModelProperty("报警类型名称")
+    private String alarmItemName;
     
     @ApiModelProperty("报警条件id")
     private String alarmConditionId;
@@ -40,5 +43,6 @@ public class ProjectAlarmRule extends AuditableEntity<ProjectAlarmRule> implemen
     public static String PROP_ALARM_CONDITION_ID = "alarm_condition_id";
     public static String PROP_BELONG = "belong";
     public static String PROP_PROJECT_ID = "project_id";
+    public static String PROP_ALARM_ITEM_NAME = "alarm_item_name";
 
 }

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

@@ -4,6 +4,8 @@ import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmCon
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
 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.List;
@@ -22,6 +24,10 @@ public class AddProjectAlarmRuleDTO {
     @ApiModelProperty(value = "报警类型编码", required = true)
     @NotNull(message = "报警类型编码不能为空") // todo 更新校验规则
     private String alarmItemCode;
+
+    @ApiModelProperty(value = "报警类型名称", required = true)
+    @NotNull(message = "报警类型名称不能为空") // todo 更新校验规则
+    private String alarmItemName;
     
     @ApiModelProperty(value = "报警条件id", required = true)
     @NotNull(message = "报警条件id不能为空") // todo 更新校验规则
@@ -35,12 +41,20 @@ public class AddProjectAlarmRuleDTO {
     @NotNull(message = "项目id不能为空") // todo 更新校验规则
     private String projectId;
 
-    @ApiModelProperty(value = "报警对象ids", required = true)
-    @NotNull(message = "报警对象不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "报警对象列表", required = true)
+    @NotNull(message = "报警对象列表不能为空") // todo 更新校验规则
     private List<AddProjectAlarmRuleObjRelDTO> addRelationList;
 
     @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;
     
 }

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

@@ -22,8 +22,11 @@ public class PageQueryProjectAlarmRuleDTO extends PageDTO {
     @ApiModelProperty(value = "分组id", required = true)
     private String groupId;
     
-    @ApiModelProperty(value = "报警条目编码", required = true)
-    private String alarmItemCode;
+//    @ApiModelProperty(value = "报警类型编码", required = true)
+//    private String alarmItemCode;
+
+    @ApiModelProperty(value = "报警类型名称", required = true)
+    private String alarmItemName;
     
 //    @ApiModelProperty(value = "报警条件id", required = true)
 //    private String alarmConditionId;

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

@@ -4,6 +4,8 @@ import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmCon
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import lombok.Data;
 
@@ -47,5 +49,14 @@ public class UpdateProjectAlarmRuleDTO {
     @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;
     
 }

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

@@ -24,7 +24,7 @@ public interface IProjectAlarmRuleService  {
     * @author lixing
     * @version V1.0 2021-09-08 22:46:16
     */
-    public String createProjectAlarmRule(AddProjectAlarmRuleDTO addProjectAlarmRuleDTO);
+    public String createProjectAlarmRule(AddProjectAlarmRuleDTO addProjectAlarmRuleDTO) throws Exception;
     
     /**
     * 项目报警规则详情
@@ -43,7 +43,7 @@ public interface IProjectAlarmRuleService  {
     * @author lixing
     * @version V1.0 2021-09-08 22:46:16
     */
-    public void updateProjectAlarmRule(UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO);
+    public void updateProjectAlarmRule(UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO) throws Exception;
     
     /**
     * 删除项目报警规则

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

@@ -12,6 +12,7 @@ import com.persagy.apm.alarmservice.group.alarmrule.service.IGroupAlarmRuleServi
 import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipItem;
 import com.persagy.apm.alarmservice.group.management.model.equip.vo.EquipListItem;
 import com.persagy.apm.alarmservice.group.management.service.impl.GroupManagementServiceImpl;
+import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
 import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
 import com.persagy.apm.alarmservice.project.alarmrule.dao.ProjectAlarmRuleMapper;
 import com.persagy.apm.alarmservice.project.alarmrule.model.ConvertProjectAlarmRuleTool;
@@ -27,10 +28,17 @@ import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlar
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.AppContext;
 import com.persagy.apm.common.context.poems.PoemsContext;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.AlarmCondition;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.AddAlarmConfigDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.BatchAddAlarmConfigDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.BatchUpdateAlarmConfigDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.UpdateAlarmConfigDTO;
+import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.io.File;
 import java.io.IOException;
@@ -61,6 +69,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     private IGroupAlarmRuleService groupAlarmRuleService;
     @Autowired
     private GroupManagementServiceImpl groupManagementService;
+    @Autowired
+    private AlarmConfigServiceImpl alarmConfigService;
 
     /**
      * 创建项目报警规则
@@ -70,8 +80,10 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
      * @version V1.0 2021-09-08 22:46:16
      */
     @Override
-    public String createProjectAlarmRule(AddProjectAlarmRuleDTO addProjectAlarmRuleDTO) {
+    @Transactional(rollbackFor = Exception.class)
+    public String createProjectAlarmRule(AddProjectAlarmRuleDTO addProjectAlarmRuleDTO) throws Exception {
         ProjectAlarmRule projectAlarmRule = ConvertProjectAlarmRuleTool.INSTANCE.convertAddDto2Entity(addProjectAlarmRuleDTO);
+        AddAlarmConditionDTO addAlarmConditionDTO = addProjectAlarmRuleDTO.getAlarmCondition();
         if (addProjectAlarmRuleDTO.getBelong() == INTEGER_ONE) {
             //查询对应报警类型的集团规则,将ID添加到项目规则表
             QueryGroupAlarmRuleDTO queryAlarmConditionDTO = new QueryGroupAlarmRuleDTO();
@@ -79,9 +91,9 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
             List<GroupAlarmRule> groupAlarmRuleList = groupAlarmRuleService.queryGroupAlarmRuleList(queryAlarmConditionDTO);
             String conditionId = groupAlarmRuleList.get(0).getAlarmConditionId();
             projectAlarmRule.setAlarmConditionId(conditionId);
-        }else {
+        } else {
             //新增自定义的规则
-            Map<String, Object> map = alarmConditionService.createAlarmCondition(addProjectAlarmRuleDTO.getAlarmCondition());
+            Map<String, Object> map = alarmConditionService.createAlarmCondition(addAlarmConditionDTO);
             projectAlarmRule.setAlarmConditionId((String) map.get("id"));
         }
         //新增关联关系
@@ -90,6 +102,51 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         projectAlarmRule.setCreationTime(new Date());
         setDefaultValue(projectAlarmRule);
         save(projectAlarmRule);
+//        //同步创建设备报警条件
+//        BatchAddAlarmConfigDTO batchAddAlarmConfigDTO = new BatchAddAlarmConfigDTO();
+//        List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
+//        for (AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO : addProjectAlarmRuleDTO.getAddRelationList()) {
+//            AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
+//            addAlarmConfigDTO.setObjId(addProjectAlarmRuleObjRelDTO.getEquipId());
+//            addAlarmConfigDTO.setItemCode(addProjectAlarmRuleDTO.getAlarmItemCode());
+//            addAlarmConfigDTO.setClassCode(addProjectAlarmRuleDTO.getClassCode());
+//            addAlarmConfigDTO.setLevel(addAlarmConditionDTO.getAlarmLevel());
+//            AlarmCondition condition = new AlarmCondition();
+//            condition.setTrigger(addAlarmConditionDTO.getBackend());
+//            List<String> infoCodeList = addAlarmConditionDTO.getInfoCodes();
+//            condition.setInfoCode(infoCodeList);
+//            condition.setTriggerUphold(addAlarmConditionDTO.getTriggerUphold());
+//            Map<String, Object> stringMap = alarmConditionService.frontend2Backend(addAlarmConditionDTO.getFrontend());
+//            condition.setRules((List<String>) stringMap.get("displayFormula"));
+//            addAlarmConfigDTO.setCondition(condition);
+//            alarmConfigs.add(addAlarmConfigDTO);
+//        }
+//        batchAddAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
+//        alarmConfigService.batchCreate(batchAddAlarmConfigDTO);
+
+        //同步更新设备报警条件 begin
+//        BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
+//        List<UpdateAlarmConfigDTO> updateAlarmConfigDTOs = new ArrayList();
+//        String condition = addProjectAlarmRuleDTO.getCondition();
+//        String classCode = addProjectAlarmRuleDTO.getClassCode();
+//        List<GroupManagementVo> records = groupManagementService.getEquipList(condition, classCode);
+//        Map<String, Object> stringMap = alarmConditionService.frontend2Backend(addAlarmConditionDTO.getFrontend());
+//        for (GroupManagementVo record : records) {
+//            AlarmCondition alarmCondit = new AlarmCondition();
+//            alarmCondit.setTrigger(alarmCondition.getBackend());
+//            List<String> infoCodeList = alarmCondition.getInfoCodes();
+//            alarmCondit.setInfoCode(infoCodeList);
+//            alarmCondit.setTriggerUphold(alarmCondition.getTriggerUphold());
+//            alarmCondit.setRules((List<String>) stringMap.get("displayFormula"));
+//            UpdateAlarmConfigDTO updateAlarmConfigDTO = new UpdateAlarmConfigDTO();
+//            updateAlarmConfigDTO.setCondition(alarmCondit);
+//            updateAlarmConfigDTO.setId(record.getId());
+//            updateAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
+//            updateAlarmConfigDTOs.add(updateAlarmConfigDTO);
+//        }
+//        batchUpdateAlarmConfigDTO.setAlarmConfigs(updateAlarmConfigDTOs);
+//        alarmConfigService.batchUpdate(batchUpdateAlarmConfigDTO);
+        //同步更新设备报警条件 end
         return projectAlarmRule.getId();
     }
 
@@ -131,38 +188,68 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
      * @version V1.0 2021-09-08 22:46:16
      */
     @Override
-    public void updateProjectAlarmRule(UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO) {
+    @Transactional(rollbackFor = Exception.class)
+    public void updateProjectAlarmRule(UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO) throws Exception {
         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) {//集团规则->项目自定义规则
-            //新增自定义的规则
-            Map<String, Object> map = alarmConditionService.createAlarmCondition(updateProjectAlarmRuleDTO.getAlarmCondition());
-            projectAlarmRule.setAlarmConditionId((String) map.get("id"));
-        } else if (belongOld < belongNew) {//项目自定义规则->集团规则
-            String conditionId = getConditionId(updateProjectAlarmRuleDTO.getAlarmItemCode());
-            projectAlarmRule.setAlarmConditionId(conditionId);
-        } else if (belongOld == 0 && belongNew == 0) {//项目自定义规则->项目自定义规则
-            //删除自定义规则,新增自定义的规则
-            alarmConditionService.deleteAlarmCondition(updateProjectAlarmRuleDTO.getAlarmConditionId());
-            Map<String, Object> map = alarmConditionService.createAlarmCondition(updateProjectAlarmRuleDTO.getAlarmCondition());
-            projectAlarmRule.setAlarmConditionId((String) map.get("id"));
+        AddAlarmConditionDTO alarmCondition = updateProjectAlarmRuleDTO.getAlarmCondition();
+        if (alarmCondition != null) {
+            //查询已有报警
+            ProjectAlarmRule projectRule = getById(updateProjectAlarmRuleDTO.getId());
+            int belongOld = projectRule.getBelong();
+            int belongNew = updateProjectAlarmRuleDTO.getBelong();
+            //删除对应项目、报警类型、报警对象的关联
+            projectAlarmRuleObjRelService.deleteRelation(updateProjectAlarmRuleDTO.getProjectId());
+            if (belongOld > belongNew) {//集团规则->项目自定义规则
+                //新增自定义的规则
+                Map<String, Object> map = alarmConditionService.createAlarmCondition(alarmCondition);
+                projectAlarmRule.setAlarmConditionId((String) map.get("id"));
+            } else if (belongOld < belongNew) {//项目自定义规则->集团规则
+                String conditionId = getConditionId(updateProjectAlarmRuleDTO.getAlarmItemCode());
+                projectAlarmRule.setAlarmConditionId(conditionId);
+            } else if (belongOld == 0 && belongNew == 0) {//项目自定义规则->项目自定义规则
+                //删除自定义规则,新增自定义的规则
+                alarmConditionService.deleteAlarmCondition(updateProjectAlarmRuleDTO.getAlarmConditionId());
+                Map<String, Object> map = alarmConditionService.createAlarmCondition(alarmCondition);
+                projectAlarmRule.setAlarmConditionId((String) map.get("id"));
+            }
+            //新增关联关系
+            projectAlarmRuleObjRelService.createBatchRelation(updateProjectAlarmRuleDTO.getAddRelationList());
+
+            //同步更新设备报警条件 begin
+            BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
+            List<UpdateAlarmConfigDTO> updateAlarmConfigDTOs = new ArrayList();
+            String condition = updateProjectAlarmRuleDTO.getCondition();
+            String classCode = updateProjectAlarmRuleDTO.getClassCode();
+            List<EquipItem> records = groupManagementService.getEquipList(condition, classCode);
+            Map<String, Object> stringMap = alarmConditionService.frontend2Backend(alarmCondition.getFrontend());
+            for (EquipItem record : records) {
+                AlarmCondition alarmCondit = new AlarmCondition();
+                alarmCondit.setTrigger(alarmCondition.getBackend());
+                List<String> infoCodeList = alarmCondition.getInfoCodes();
+                alarmCondit.setInfoCode(infoCodeList);
+                alarmCondit.setTriggerUphold(alarmCondition.getTriggerUphold());
+                alarmCondit.setRules((List<String>) stringMap.get("displayFormula"));
+                UpdateAlarmConfigDTO updateAlarmConfigDTO = new UpdateAlarmConfigDTO();
+                updateAlarmConfigDTO.setCondition(alarmCondit);
+                updateAlarmConfigDTO.setId(record.getId());
+                updateAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
+                updateAlarmConfigDTOs.add(updateAlarmConfigDTO);
+            }
+            batchUpdateAlarmConfigDTO.setAlarmConfigs(updateAlarmConfigDTOs);
+            alarmConfigService.batchUpdate(batchUpdateAlarmConfigDTO);
+            //同步更新设备报警条件 end
         }
-        //新增关联关系
-        projectAlarmRuleObjRelService.createBatchRelation(updateProjectAlarmRuleDTO.getAddRelationList());
         //更新项目报警
         projectAlarmRule.setModifiedTime(new Date());
         projectAlarmRule.setModifier(PoemsContext.getContext().getUserId());
         updateById(projectAlarmRule);
+
+
     }
 
-    public String getConditionId(String alarmItemCode){
+    public String getConditionId(String alarmItemCode) {
         //查询对应报警类型的集团规则,将ID添加到项目规则表
         QueryGroupAlarmRuleDTO queryAlarmConditionDTO = new QueryGroupAlarmRuleDTO();
         queryAlarmConditionDTO.setAlarmItemCode(alarmItemCode);
@@ -170,6 +257,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         String conditionId = groupAlarmRuleList.get(0).getAlarmConditionId();
         return conditionId;
     }
+
     /**
      * 校验项目报警规则是否可删除
      *
@@ -200,6 +288,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
      * @version V1.0 2021-09-08 22:46:16
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void deleteProjectAlarmRule(String id) {
         // 校验是否可删除
         ProjectAlarmRule projectAlarmRule = checkDeletable(id);
@@ -292,8 +381,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         }
 
         // todo 需判断使用like还是eq
-        if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getAlarmItemCode())) {
-            queryWrapper.eq(ProjectAlarmRule.PROP_ALARM_ITEM_CODE, pageQueryProjectAlarmRuleDTO.getAlarmItemCode());
+        if (StringUtils.isNotEmpty(pageQueryProjectAlarmRuleDTO.getAlarmItemName())) {
+            queryWrapper.like(ProjectAlarmRule.PROP_ALARM_ITEM_NAME, pageQueryProjectAlarmRuleDTO.getAlarmItemName());
         }
 
         // todo 需判断使用like还是eq
@@ -317,17 +406,19 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     public List<AddProjectAlarmRuleObjRelDTO> addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
         String condition = addGroupAlarmRuleDTO.getCondition();
         String classCode = addGroupAlarmRuleDTO.getClassCode();
-        List<EquipItem> records = groupManagementService.getEquipList(condition,classCode);
+        List<EquipItem> records = groupManagementService.getEquipList(condition, classCode);
         //查询所有项目
         List<ProjectVO> projects = this.getProject();
         //遍历项目,组好对象进行插入
         List<ProjectAlarmRule> projectAlarmRuleList = new ArrayList<>();
         String alarmItemCode = addGroupAlarmRuleDTO.getAlarmItemCode();
+        String alarmItemName = addGroupAlarmRuleDTO.getAlarmItemName();
         List<AddProjectAlarmRuleObjRelDTO> addRelationList = new ArrayList<>();
         for (ProjectVO project : projects) {
             ProjectAlarmRule projectAlarmRule = new ProjectAlarmRule();
             projectAlarmRule.setProjectId(project.getProjectId());
             projectAlarmRule.setAlarmItemCode(alarmItemCode);
+            projectAlarmRule.setAlarmItemName(alarmItemName);
             projectAlarmRule.setBelong(INTEGER_ONE);
             projectAlarmRule.setGroupId(addGroupAlarmRuleDTO.getGroupId());
             String conditionId = getConditionId(alarmItemCode);

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

@@ -1,17 +1 @@
-[
-  {
-    "projectId": "1101060001",
-    "projectName": "北京槐房万达广场",
-    "groupCode": ""
-  },
-  {
-    "projectId": "1101060002",
-    "projectName": "北京丰科万达广场",
-    "groupCode": ""
-  },
-  {
-    "projectId": "2101120002",
-    "projectName": "沈阳全运万达广场",
-    "groupCode": ""
-  }
-]
+[{"projectName":"衡阳蒸湘万达广场","projectId":"4.304080001E9","groupCode":"wd"},{"projectName":"泉州安溪万达广场","projectId":"3.505240001E9","groupCode":"wd"}]

src/main/java/com/persagy/apm/alarmservice/common/excel/项目清单.xlsx → src/main/resources/json/Project.xlsx