xujiaheng 3 سال پیش
والد
کامیت
b88f99480e

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

@@ -29,6 +29,7 @@ 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.AlarmEffectTime;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmconfig.*;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmConfigItem;
 import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmConfigServiceImpl;
@@ -104,13 +105,13 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
             List<String> infoCodeList = (List<String>) conditionMap.get("infoCode");
             List<String> infoCodeNew = new ArrayList<>();
             for (String infoCode : infoCodeList) {
-                String replacement = equipId + "-" + infoCode;
+                String replacement = equipId + "_" + infoCode;
                 infoCodeNew.add(infoCode.replaceAll(infoCode, replacement));
             }
             condition.setInfoCode(infoCodeNew);
             String backend = (String) conditionMap.get("backend");
             for (String infoCode : infoCodeList) {
-                String replacement = equipId + "-" + infoCode;
+                String replacement = equipId + "_" + infoCode;
                 backend = backend.replaceAll(infoCode, replacement);
             }
             condition.setEnd("!" + backend);
@@ -120,6 +121,9 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
             condition.setRules((List<String>) conditionMap.get("displayFormula"));
             JSONArray configs= JSONArray.parseArray(JSON.toJSONString(alarmCondition.getFrontend()));
             condition.setConfigs(configs);
+            AlarmEffectTime effectTime = new AlarmEffectTime();
+            effectTime.setType("always");
+            condition.setEffectTime(effectTime);
             addAlarmConfigDTO.setCondition(condition);
             alarmConfigs.add(addAlarmConfigDTO);
         }

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

@@ -342,10 +342,10 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         expression = expression.replaceAll(" ", "");
         // 连续运算符处理
         if (expression.split("[\\+\\-\\*\\/]{2,}").length > 1) {
-            return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,包含连续运算符");
+            return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
         }
         if (org.apache.commons.lang3.StringUtils.contains(expression, "()")) {
-            return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,包含空括号");
+            return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
         }
 //        expression = expression.replaceAll("\\)\\(", "\\)*\\(");
 //        expression = expression.replaceAll("\\(\\-", "\\(0-");
@@ -357,7 +357,7 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
                 continue;
             }
             if (!variable.equals(split)) {
-                return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,包含非法变量或字符");
+                return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
             }
         }
         // 校验括号
@@ -368,7 +368,7 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
             char currChar = expression.charAt(i);
             if (i == 0) {
                 if (Pattern.matches("\\*|\\/", String.valueOf(currChar))) {
-                    return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,以错误运算符开头");
+                    return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
                 }
                 if (currChar == '+') {
                     resultExpression = expression.substring(1);
@@ -383,24 +383,24 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
                 if (stack.size() > 0) {
                     stack.pop();
                 } else {
-                    return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,括号不配对");
+                    return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
                 }
             }
             if (preChar != null && preChar == '(' && Pattern.matches("[\\+\\-\\*\\/]+", String.valueOf(currChar))) {
-                return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,左括号后是运算符");
+                return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
             }
             if (preChar != null && preChar == ')' && !Pattern.matches("[\\+\\-\\*\\/]+", String.valueOf(currChar))) {
-                return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,右括号后面不是运算符");
+                return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
             }
             if (i == expression.length() - 1) {
                 if (Pattern.matches("\\+|\\-|\\*|\\/", String.valueOf(currChar))) {
-                    return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,以运算符结尾");
+                    return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
                 }
             }
             preChar = currChar;
         }
         if (stack.size() > 0) {
-            return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,括号不配对");
+            return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法");
         }
         return ResultHelper.success();
     }

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

@@ -30,7 +30,7 @@ public class AddProjectAlarmRuleDTO {
     private String alarmItemName;
     
     @ApiModelProperty(value = "报警条件id", required = true)
-    @NotNull(message = "报警条件id不能为空") // todo 更新校验规则
+    //@NotNull(message = "报警条件id不能为空") // todo 更新校验规则
     private String alarmConditionId;
     
     @ApiModelProperty(value = "所属类型(0项目自定义、1集团标准)", required = true)

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

@@ -2,6 +2,7 @@ package com.persagy.apm.alarmservice.project.alarmrule.model.dto;
 
 import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.UpdateAlarmItemDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -44,7 +45,7 @@ public class UpdateProjectAlarmRuleDTO {
 
     @ApiModelProperty(value = "报警对象ids", required = true)
     @NotNull(message = "报警对象不能为空") // todo 更新校验规则
-    private List<AddProjectAlarmRuleObjRelDTO> addRelationList;
+    private List<UpdateAlarmItemDTO> addRelationList;
 
     @ApiModelProperty(value = "报警规则", required = true)
     @NotNull(message = "报警规则不能为空") // todo 更新校验规则

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

@@ -23,6 +23,7 @@ import com.persagy.apm.alarmservice.project.alarmrule.model.dto.*;
 import com.persagy.apm.alarmservice.project.alarmrule.service.IProjectAlarmRuleService;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.AddProjectAlarmRuleObjRelDTO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.QueryRuleObjRelDTO;
+import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto.UpdateAlarmItemDTO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.model.vo.ProjectVO;
 import com.persagy.apm.alarmservice.project.alarmruleobjrel.service.IProjectAlarmRuleObjRelService;
 import com.persagy.apm.common.constant.enums.ValidEnum;
@@ -215,7 +216,8 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
                 projectAlarmRule.setAlarmConditionId((String) map.get("id"));
             }
             //新增关联关系
-            projectAlarmRuleObjRelService.createBatchRelation(updateProjectAlarmRuleDTO.getAddRelationList());
+            List<AddProjectAlarmRuleObjRelDTO> addRelations = convert2AddProjectAlarmRuleObjRelDTO(updateProjectAlarmRuleDTO);
+            projectAlarmRuleObjRelService.createBatchRelation(addRelations);
 
             //同步更新设备报警条件 begin
             BatchUpdateAlarmConfigDTO batchUpdateAlarmConfigDTO = new BatchUpdateAlarmConfigDTO();
@@ -254,6 +256,23 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
 
     }
 
+    private List<AddProjectAlarmRuleObjRelDTO> convert2AddProjectAlarmRuleObjRelDTO(UpdateProjectAlarmRuleDTO updateProjectAlarmRuleDTO) {
+        List<UpdateAlarmItemDTO> addRelationList = updateProjectAlarmRuleDTO.getAddRelationList();
+        List<AddProjectAlarmRuleObjRelDTO> list = new ArrayList<>();
+        String projectId = updateProjectAlarmRuleDTO.getProjectId();
+        String id = updateProjectAlarmRuleDTO.getId();
+        for (UpdateAlarmItemDTO updateAlarmItemDTO : addRelationList) {
+            AddProjectAlarmRuleObjRelDTO addProjectAlarmRuleObjRelDTO = new AddProjectAlarmRuleObjRelDTO();
+            addProjectAlarmRuleObjRelDTO.setProjectAlarmRuleId(id);
+            addProjectAlarmRuleObjRelDTO.setObjId(updateAlarmItemDTO.getObjId());
+            addProjectAlarmRuleObjRelDTO.setProjectId(projectId);
+            addProjectAlarmRuleObjRelDTO.setOpen(1);
+            addProjectAlarmRuleObjRelDTO.setObjName(updateAlarmItemDTO.getObjName());
+            list.add(addProjectAlarmRuleObjRelDTO);
+        }
+        return list;
+    }
+
     public String getConditionId(String alarmItemCode) {
         //查询对应报警类型的集团规则,将ID添加到项目规则表
         QueryGroupAlarmRuleDTO queryAlarmConditionDTO = new QueryGroupAlarmRuleDTO();

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

@@ -0,0 +1,25 @@
+package com.persagy.apm.alarmservice.project.alarmruleobjrel.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-09-08 22:46:37
+ */
+@Data
+@ApiModel(value = "更新项目报警规则与监测对象的关联入参")
+public class UpdateAlarmItemDTO {
+    
+    @ApiModelProperty(value = "报警对象ID", required = true)
+    @NotNull(message = "报警对象名称不能为空") // todo 更新校验规则
+    private String objId;
+
+    @ApiModelProperty(value = "报警对象ID", required = true)
+    @NotNull(message = "报警对象名称不能为空") // todo 更新校验规则
+    private String objName;
+    
+}