Jelajahi Sumber

修改集团报警

xujiaheng 3 tahun lalu
induk
melakukan
7cdbaae525

+ 4 - 3
src/main/java/com/persagy/apm/alarmservice/alarmcondition/controller/AlarmConditionController.java

@@ -16,6 +16,7 @@ import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 报警条件控制层
@@ -35,10 +36,10 @@ public class AlarmConditionController {
 	@PostMapping("/create")
 	public CommonResult<ApmResponseUpsertVO> createAlarmCondition(
 	        @Valid @RequestBody AddAlarmConditionDTO addAlarmConditionDTO) {
-        String id = alarmConditionService.createAlarmCondition(addAlarmConditionDTO);
-        return ResultHelper.single(new ApmResponseUpsertVO(id));
+        Map<String, Object> alarmCondition = alarmConditionService.createAlarmCondition(addAlarmConditionDTO);
+        return ResultHelper.single(new ApmResponseUpsertVO((String) alarmCondition.get("id")));
 	}
-	
+
 	@ApiOperation(value = "报警条件详情")
     @ApiIgnore
     @PostMapping("/get")

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

@@ -3,10 +3,9 @@ package com.persagy.apm.alarmservice.alarmcondition.service;
 import com.persagy.apm.alarmservice.alarmcondition.model.*;
 import com.persagy.apm.alarmservice.alarmcondition.model.dto.*;
 import java.util.List;
+import java.util.Map;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.json.JSONException;
 
 /**
  * 报警条件(AlarmCondition) service接口
@@ -24,7 +23,7 @@ public interface IAlarmConditionService  {
     * @author lixing
     * @version V1.0 2021-09-08 22:30:38
     */
-    public String createAlarmCondition(AddAlarmConditionDTO addAlarmConditionDTO);
+    public Map<String, Object> createAlarmCondition(AddAlarmConditionDTO addAlarmConditionDTO);
     
     /**
     * 报警条件详情

+ 14 - 6
src/main/java/com/persagy/apm/alarmservice/alarmcondition/service/impl/AlarmConditionServiceImpl.java

@@ -45,25 +45,27 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
      * @version V1.0 2021-09-08 22:30:38
      */
     @Override
-    public String createAlarmCondition(AddAlarmConditionDTO addAlarmConditionDTO) {
+    public Map<String, Object> createAlarmCondition(AddAlarmConditionDTO addAlarmConditionDTO) {
         AlarmCondition alarmCondition = ConvertAlarmConditionTool.INSTANCE.convertAddDto2Entity(addAlarmConditionDTO);
         List<List<CalculateMethodDTO>> frontend = addAlarmConditionDTO.getFrontend();
         Object json = JSON.toJSON(frontend);
         alarmCondition.setFrontend(json);
         //将前端公式转换成后台公式
-        Map<String, String> stringMap = frontend2Backend(frontend);
+        Map<String, Object> stringMap = frontend2Backend(frontend);
         alarmCondition.setBackend(stringMap.get("backend"));
         alarmCondition.setInfoCodes(stringMap.get("infoCode"));
         // 设置默认值
         setDefaultValue(alarmCondition);
         save(alarmCondition);
-        return alarmCondition.getId();
+        stringMap.put("id",alarmCondition.getId());
+        return stringMap;
     }
 
-    private Map<String, String> frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
+    private Map<String, Object> frontend2Backend(List<List<CalculateMethodDTO>> frontend) {
         StringBuffer allNotNull = new StringBuffer();
         StringBuffer allNull = new StringBuffer();
         Set<String> infoCodesList = new HashSet<>();
+        Set<String> displayFormulaList = new HashSet<>();
         for (List<CalculateMethodDTO> calculateMethodDTOS : frontend) {
             StringBuffer notNullString = new StringBuffer();
             StringBuffer nullString = new StringBuffer();
@@ -73,6 +75,8 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
                 String formular = calculateMethodDTO.getFormula();
                 List<Formula> formulas = JSONObject.parseArray(formular, Formula.class);
                 StringBuffer tempFormula = new StringBuffer();
+                StringBuffer displayFormula = new StringBuffer();
+                displayFormula.append(calculateMethodDTO.getMonitorIndicatorName()).append(calculateMethodDTO.getOperator());
                 for (Formula formula : formulas) {
                     if(formula.getValue()!=null){
                         nullString.append(formula.getValue()).append("==NaN").append(" || ");
@@ -82,7 +86,9 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
                     }else{
                         tempFormula.append(formula.getLabel());
                     }
+                    displayFormula.append(formula.getLabel());
                 }
+                displayFormulaList.add(displayFormula.toString());
                 calculateMethodDTO.setTempFormula(tempFormula.toString());
                 nullString.append(calculateMethodDTO.getMonitorIndicatorId()).append("==NaN").append(" || ");
                 notNullString.append(calculateMethodDTO.getMonitorIndicatorId()).append("!=NaN").append(" && ");
@@ -95,13 +101,15 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
             notNullString.delete(notNullString.length() - 4, notNullString.length()).append(")");
             allNotNull.append("(").append(notNullString).append(" || ");
             allNull.append("(").append("(").append(nullString.substring(0, nullString.length() - 4)).append(")").append("?true:").append("(").append(calculateString.substring(0, calculateString.length() - 4)).append(")").append(")").append(" || ");
+
         }
         String infoCode = JSON.toJSONString(infoCodesList);
         StringBuffer substring = new StringBuffer();
         substring.append("(").append(allNotNull.substring(0, allNotNull.length() - 4)).append(")").append(" && ").append("(").append(allNull.substring(0, allNull.length() - 4)).append(")").toString();
-        Map<String, String> map = new HashMap();
+        Map<String, Object> map = new HashMap();
         map.put("infoCode",infoCode);
         map.put("backend",substring.toString());
+        map.put("displayFormula",displayFormulaList);
         return map;
     }
 
@@ -155,7 +163,7 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
             String frontJson = JSON.toJSONString(frontend);
             alarmCondition.setFrontend(frontJson);
             //将前端公式转换成后台公式
-            Map<String, String> stringMap = frontend2Backend(frontend);
+            Map<String, Object> stringMap = frontend2Backend(frontend);
             alarmCondition.setBackend(stringMap.get("backend"));
             alarmCondition.setInfoCodes(stringMap.get("infoCode"));
         }

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

@@ -25,6 +25,10 @@ public class CalculateMethodDTO {
     @ApiModelProperty(value = "监测指标id", required = true)
     @NotNull(message = "监测指标id不能为空") // todo 更新校验规则
     private String monitorIndicatorId;
+
+    @ApiModelProperty(value = "监测指标name", required = true)
+    @NotNull(message = "监测指标name不能为空") // todo 更新校验规则
+    private String monitorIndicatorName;
     
     @ApiModelProperty(value = "是否是指标默认计算方式", required = true)
     @NotNull(message = "是否是指标默认计算方式不能为空") // todo 更新校验规则

+ 21 - 0
src/main/java/com/persagy/apm/alarmservice/group/alarmrule/controller/GroupAlarmRuleController.java

@@ -9,6 +9,7 @@ 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.common.excel.ExcelUtils;
 import com.persagy.apm.common.response.ApmResponseUpsertVO;
 import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.response.PageList;
@@ -19,6 +20,10 @@ import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
 import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -28,7 +33,12 @@ import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
+import static jogamp.common.os.elf.SectionArmAttributes.Tag.File;
 
 /**
  * 集团报警规则控制层
@@ -127,5 +137,16 @@ public class GroupAlarmRuleController {
         System.out.println(query);
     }
 
+    @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++) {
+
+        }
+    }
+
 }
 

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

@@ -1,9 +1,12 @@
 package com.persagy.apm.alarmservice.group.alarmrule.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 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.calculatemethod.model.dto.CalculateMethodDTO;
 import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
 import com.persagy.apm.common.configuration.DataUtils;
 import com.persagy.apm.common.configuration.PoemsWebConfigurer;
 import com.persagy.apm.common.context.AppContext;
@@ -11,6 +14,11 @@ 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 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.service.AlarmConfigServiceImpl;
+import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.apache.commons.lang.StringUtils;
@@ -19,8 +27,11 @@ 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.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.base.CaseFormat;
@@ -40,6 +51,9 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
     private IAlarmConditionService alarmConditionService;
     @Autowired
     private IProjectAlarmRuleService projectAlarmRuleService;
+    @Autowired
+    private AlarmConfigServiceImpl alarmConfigService;
+
     /**
     * 创建集团报警规则
     * @return 集团报警规则主键
@@ -51,14 +65,38 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
         //1、给某个设备分组创建集团报警
         GroupAlarmRule groupAlarmRule = ConvertGroupAlarmRuleTool.INSTANCE.convertAddDto2Entity(addGroupAlarmRuleDTO);
         AddAlarmConditionDTO alarmCondition = addGroupAlarmRuleDTO.getAlarmCondition();
-        String alarmConditionId = alarmConditionService.createAlarmCondition(alarmCondition);
+        Map<String, Object> conditionMap = alarmConditionService.createAlarmCondition(alarmCondition);
         // 设置默认值
-        groupAlarmRule.setAlarmConditionId(alarmConditionId);
+        groupAlarmRule.setAlarmConditionId((String) conditionMap.get("id"));
         setDefaultValue(groupAlarmRule);
         save(groupAlarmRule);
         //2、同步创建项目报警
-        projectAlarmRuleService.addProjectAlarmRules(addGroupAlarmRuleDTO);
+        List<AddProjectAlarmRuleObjRelDTO> addProjectAlarmRuleObjRelDTOS = projectAlarmRuleService.addProjectAlarmRules(addGroupAlarmRuleDTO);
         //3、同步创建设备报警条件
+        BatchAddAlarmConfigDTO batchAddAlarmConfigDTO = new BatchAddAlarmConfigDTO();
+        List<AddAlarmConfigDTO> alarmConfigs = new ArrayList<>();
+        for (AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO : addProjectAlarmRuleObjRelDTOS) {
+            AddAlarmConfigDTO addAlarmConfigDTO = new AddAlarmConfigDTO();
+            addAlarmConfigDTO.setObjId(addProjectAlarmRuleObjRelDTO.getEquipId());
+            addAlarmConfigDTO.setItemCode(addGroupAlarmRuleDTO.getAlarmItemCode());
+            addAlarmConfigDTO.setClassCode(addGroupAlarmRuleDTO.getClassCode());
+            addAlarmConfigDTO.setLevel(alarmCondition.getAlarmLevel());
+            AlarmCondition condition = new AlarmCondition();
+            condition.setTrigger((String) conditionMap.get("backend"));
+            String infoCode = (String) conditionMap.get("infoCode");
+            List<String> infoCodeList = (List<String>) JSONArray.parse(infoCode);
+            condition.setInfoCode(infoCodeList);
+            condition.setTriggerUphold(alarmCondition.getTriggerUphold());
+            condition.setRules((List<String>) conditionMap.get("conditionMap"));
+            addAlarmConfigDTO.setCondition(condition);
+            alarmConfigs.add(addAlarmConfigDTO);
+        }
+        batchAddAlarmConfigDTO.setAlarmConfigs(alarmConfigs);
+        try {
+            alarmConfigService.batchCreate(batchAddAlarmConfigDTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         return groupAlarmRule.getId();
     }
     

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

@@ -10,6 +10,7 @@ import com.persagy.apm.alarmservice.group.management.model.vo.GroupTreeDetailVO;
 import com.persagy.apm.alarmservice.group.management.model.vo.GroupTreeInfoVO;
 import com.persagy.apm.alarmservice.group.management.model.vo.GroupTreeVO;
 import com.persagy.apm.alarmservice.group.management.service.GroupManagementService;
+import com.persagy.apm.common.configuration.ElasticSearchConfig;
 import com.persagy.apm.common.model.vo.SimpleObjVO;
 import com.persagy.apm.common.response.PageList;
 import com.persagy.apm.model.dto.GroupManagementDTO;
@@ -36,6 +37,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
 import org.elasticsearch.search.sort.SortOrder;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
@@ -63,6 +65,9 @@ public class GroupManagementServiceImpl implements GroupManagementService {
     @Autowired
     private RestHighLevelClient client;
 
+    @Value("${elasticsearch.maxSearchCount}")
+    private int maxSearchCount;
+
     @Override
     public PageList<GroupManagementVo> equipsQuery(GroupManagementDTO managementDTO) {
         List<GroupManagementVo> groupManagementVoList = new ArrayList<>();
@@ -302,7 +307,7 @@ public class GroupManagementServiceImpl implements GroupManagementService {
     @Override
     public List<GroupManagementVo> getEquipList(GroupManagementDTO groupManagementDTO) {
         groupManagementDTO.setCurrent(INTEGER_ONE);
-        groupManagementDTO.setSize(5000);
+        groupManagementDTO.setSize(maxSearchCount);
         PageList<GroupManagementVo> groupManagementVoPageList = this.equipsQuery(groupManagementDTO);
         return groupManagementVoPageList.getRecords();
     }

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

@@ -5,8 +5,7 @@ import com.persagy.apm.alarmservice.project.alarmrule.model.*;
 import com.persagy.apm.alarmservice.project.alarmrule.model.dto.*;
 import java.util.List;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
 
 /**
  * 项目报警规则(ProjectAlarmRule) service接口
@@ -74,5 +73,5 @@ public interface IProjectAlarmRuleService  {
     */
     public IPage<ProjectAlarmRule> pageQueryProjectAlarmRule(PageQueryProjectAlarmRuleDTO pageQueryProjectAlarmRuleDTO);
 
-    void addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO);
+    List<AddProjectAlarmRuleObjRelDTO> addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO);
 }

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

@@ -1,14 +1,10 @@
 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;
@@ -20,10 +16,7 @@ import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleS
 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;
@@ -32,19 +25,13 @@ 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 java.util.Map;
 
 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;
 
@@ -86,8 +73,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
             projectAlarmRule.setAlarmConditionId(conditionId);
         }else {
             //新增自定义的规则
-            String conditionId = alarmConditionService.createAlarmCondition(addProjectAlarmRuleDTO.getAlarmCondition());
-            projectAlarmRule.setAlarmConditionId(conditionId);
+            Map<String, Object> map = alarmConditionService.createAlarmCondition(addProjectAlarmRuleDTO.getAlarmCondition());
+            projectAlarmRule.setAlarmConditionId((String) map.get("id"));
         }
         //新增关联关系
         projectAlarmRuleObjRelService.createBatchRelation(addProjectAlarmRuleDTO.getAddRelationList());
@@ -149,16 +136,16 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         projectAlarmRuleObjRelService.deleteRelation(updateProjectAlarmRuleDTO.getProjectId());
         if (belongOld > belongNew) {//集团规则->项目自定义规则
             //新增自定义的规则
-            String conditionId = alarmConditionService.createAlarmCondition(updateProjectAlarmRuleDTO.getAlarmCondition());
-            projectAlarmRule.setAlarmConditionId(conditionId);
+            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());
-            String id = alarmConditionService.createAlarmCondition(updateProjectAlarmRuleDTO.getAlarmCondition());
-            projectAlarmRule.setAlarmConditionId(id);
+            Map<String, Object> map = alarmConditionService.createAlarmCondition(updateProjectAlarmRuleDTO.getAlarmCondition());
+            projectAlarmRule.setAlarmConditionId((String) map.get("id"));
         }
         //新增关联关系
         projectAlarmRuleObjRelService.createBatchRelation(updateProjectAlarmRuleDTO.getAddRelationList());
@@ -320,7 +307,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
     }
 
     @Override
-    public void addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
+    public List<AddProjectAlarmRuleObjRelDTO> addProjectAlarmRules(AddGroupAlarmRuleDTO addGroupAlarmRuleDTO) {
         String condition = addGroupAlarmRuleDTO.getCondition();
         String classCode = addGroupAlarmRuleDTO.getClassCode();
         List<GroupManagementVo> records = groupManagementService.getEquipList(condition,classCode);
@@ -353,7 +340,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
         projectAlarmRuleObjRelService.createBatchRelation(addRelationList);
         saveBatch(projectAlarmRuleList);
 
-
+        return addRelationList;
 
 
     }

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

@@ -0,0 +1,22 @@
+package com.persagy.apm.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;
+}

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

@@ -0,0 +1,224 @@
+package com.persagy.apm.common.excel;
+
+import com.persagy.apm.common.configuration.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);
+    }
+}

TEMPAT SAMPAH
src/main/java/com/persagy/apm/common/excel/项目清单.xlsx