Bladeren bron

Merge remote-tracking branch 'origin/v1.0.0' into v1.0.0

易涛 3 jaren geleden
bovenliggende
commit
b703ae78bf

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

@@ -75,7 +75,6 @@ public class GroupAlarmRuleController {
 
     @ApiOperation(value = "更新集团报警规则")
     @PostMapping("/update")
-    @ApiIgnore
     public CommonResult<ApmResponseUpsertVO> updateGroupAlarmRule(
             @Valid @RequestBody UpdateGroupAlarmRuleDTO updateGroupAlarmRuleDTO) {
         groupAlarmRuleService.updateGroupAlarmRule(updateGroupAlarmRuleDTO);

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

@@ -24,6 +24,9 @@ public class GroupAlarmRule extends AuditableEntity<GroupAlarmRule> implements S
     
     @ApiModelProperty("报警条目编码")
     private String alarmItemCode;
+
+    @ApiModelProperty("报警类型名称")
+    private String alarmItemName;
     
     @ApiModelProperty("报警条件id")
     private String alarmConditionId;
@@ -31,6 +34,7 @@ public class GroupAlarmRule extends AuditableEntity<GroupAlarmRule> implements S
 
     public static String PROP_GROUP_ID = "group_id";
     public static String PROP_ALARM_ITEM_CODE = "alarm_item_code";
+    public static String PROP_ALARM_ITEM_NAME = "alarm_item_name";
     public static String PROP_ALARM_CONDITION_ID = "alarm_condition_id";
 
 }

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

@@ -20,10 +20,14 @@ public class AddGroupAlarmRuleDTO {
     @NotNull(message = "分组id不能为空") // todo 更新校验规则
     private String groupId;
     
-    @ApiModelProperty(value = "报警条目编码", required = true)
-    @NotNull(message = "报警条目编码不能为空") // todo 更新校验规则
+    @ApiModelProperty(value = "报警类型编码", required = true)
+    @NotNull(message = "报警类型编码不能为空") // todo 更新校验规则
     private String alarmItemCode;
 
+    @ApiModelProperty(value = "报警类型名称", required = true)
+    @NotNull(message = "报警类型名称不能为空") // todo 更新校验规则
+    private String alarmItemName;
+
     @ApiModelProperty(value = "报警规则", required = true)
     @NotNull(message = "报警规则不能为空") // todo 更新校验规则
     private AddAlarmConditionDTO alarmCondition;

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

@@ -15,19 +15,19 @@ import lombok.EqualsAndHashCode;
 @Data
 @ApiModel(value = "分页查询集团报警规则入参")
 public class PageQueryGroupAlarmRuleDTO extends PageDTO {
-    @ApiModelProperty(value = "主键", required = true)
-    private String id;
+//    @ApiModelProperty(value = "主键", required = true)
+//    private String id;
     
     @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;
+//    @ApiModelProperty(value = "报警条件id", required = true)
+//    private String alarmConditionId;
     
 }

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

@@ -24,10 +24,6 @@ public class UpdateGroupAlarmRuleDTO {
     @ApiModelProperty(value = "报警条目编码", required = true)
     @NotNull(message = "报警条目编码不能为空") // todo 更新校验规则
     private String alarmItemCode;
-    
-    @ApiModelProperty(value = "报警条件id", required = true)
-    @NotNull(message = "报警条件id不能为空") // todo 更新校验规则
-    private String alarmConditionId;
 
     @ApiModelProperty(value = "报警规则", required = true)
     @NotNull(message = "报警规则不能为空") // todo 更新校验规则

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

@@ -32,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -82,8 +83,7 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
             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);
+            List<String> infoCodeList = (List<String>) conditionMap.get("infoCode");
             condition.setInfoCode(infoCodeList);
             condition.setTriggerUphold(alarmCondition.getTriggerUphold());
             condition.setRules((List<String>) conditionMap.get("conditionMap"));
@@ -108,6 +108,7 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
      */
     private void setDefaultValue(GroupAlarmRule groupAlarmRule) {
         groupAlarmRule.setCreator(PoemsContext.getContext().getUserId());
+        groupAlarmRule.setTs(new Timestamp(System.currentTimeMillis()));
     }
 
     /**
@@ -237,18 +238,18 @@ public class GroupAlarmRuleServiceImpl extends ServiceImpl<GroupAlarmRuleMapper,
 
         // todo 需判断使用like还是eq
         if (StringUtils.isNotEmpty(pageQueryGroupAlarmRuleDTO.getGroupId())) {
-            queryWrapper.like(GroupAlarmRule.PROP_GROUP_ID, pageQueryGroupAlarmRuleDTO.getGroupId());
+            queryWrapper.eq(GroupAlarmRule.PROP_GROUP_ID, pageQueryGroupAlarmRuleDTO.getGroupId());
         }
 
         // todo 需判断使用like还是eq
-        if (StringUtils.isNotEmpty(pageQueryGroupAlarmRuleDTO.getAlarmItemCode())) {
-            queryWrapper.like(GroupAlarmRule.PROP_ALARM_ITEM_CODE, pageQueryGroupAlarmRuleDTO.getAlarmItemCode());
+        if (StringUtils.isNotEmpty(pageQueryGroupAlarmRuleDTO.getAlarmItemName())) {
+            queryWrapper.like(GroupAlarmRule.PROP_ALARM_ITEM_NAME, pageQueryGroupAlarmRuleDTO.getAlarmItemName());
         }
 
-        // todo 需判断使用like还是eq
-        if (StringUtils.isNotEmpty(pageQueryGroupAlarmRuleDTO.getAlarmConditionId())) {
-            queryWrapper.like(GroupAlarmRule.PROP_ALARM_CONDITION_ID, pageQueryGroupAlarmRuleDTO.getAlarmConditionId());
-        }
+//        // todo 需判断使用like还是eq
+//        if (StringUtils.isNotEmpty(pageQueryGroupAlarmRuleDTO.getAlarmConditionId())) {
+//            queryWrapper.like(GroupAlarmRule.PROP_ALARM_CONDITION_ID, pageQueryGroupAlarmRuleDTO.getAlarmConditionId());
+//        }
 
         return getBaseMapper().selectPage(pageParam, queryWrapper);
     }

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

@@ -88,7 +88,7 @@ public class AlarmConditionController {
     public CommonResult<Boolean> validate(
             @Valid @RequestBody ValidateAlarmConditionDTO validateAlarmConditionDTO) {
         List<Formula> formula = validateAlarmConditionDTO.getFrontend().getFormula();
-        return alarmConditionService.validate(formula);
+        return alarmConditionService.validate(validateAlarmConditionDTO);
 
     }
     //@ApiOperation(value = "报警条件列表, 分页查询")

+ 2 - 6
src/main/java/com/persagy/apm/alarmservice/project/alarmcondition/service/IAlarmConditionService.java

@@ -2,11 +2,7 @@ package com.persagy.apm.alarmservice.project.alarmcondition.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.persagy.apm.alarmservice.project.alarmcondition.model.AlarmCondition;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.Formula;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.PageQueryAlarmConditionDTO;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.QueryAlarmConditionDTO;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.UpdateAlarmConditionDTO;
+import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.*;
 import com.persagy.apm.common.response.CommonResult;
 
 import java.util.List;
@@ -78,5 +74,5 @@ public interface IAlarmConditionService  {
     */
     public IPage<AlarmCondition> pageQueryAlarmCondition(PageQueryAlarmConditionDTO pageQueryAlarmConditionDTO);
 
-    CommonResult<Boolean> validate(List<Formula> formulaString);
+    CommonResult<Boolean> validate(ValidateAlarmConditionDTO formulaString);
 }

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

@@ -6,15 +6,16 @@ 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.calculatemethod.model.CalculateMethod;
 import com.persagy.apm.alarmservice.group.calculatemethod.model.dto.CalculateMethodDTO;
+import com.persagy.apm.alarmservice.group.calculatemethod.service.ICalculateMethodService;
+import com.persagy.apm.alarmservice.group.monitorindicator.model.MonitorIndicator;
+import com.persagy.apm.alarmservice.group.monitorindicator.service.IMonitorIndicatorService;
 import com.persagy.apm.alarmservice.project.alarmcondition.dao.AlarmConditionMapper;
 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.Formula;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.AddAlarmConditionDTO;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.PageQueryAlarmConditionDTO;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.QueryAlarmConditionDTO;
-import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.UpdateAlarmConditionDTO;
+import com.persagy.apm.alarmservice.project.alarmcondition.model.dto.*;
 import com.persagy.apm.alarmservice.project.alarmcondition.service.IAlarmConditionService;
 import com.persagy.apm.common.constant.enums.ValidEnum;
 import com.persagy.apm.common.context.poems.PoemsContext;
@@ -23,6 +24,7 @@ import com.persagy.apm.common.response.CommonResult;
 import com.persagy.apm.common.utils.ResultHelper;
 import com.persagy.common.enums.ResponseCode;
 import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -39,6 +41,9 @@ import java.util.regex.Pattern;
 public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper, AlarmCondition>
         implements IAlarmConditionService {
 
+    @Autowired
+    private IMonitorIndicatorService monitorIndicatorService;
+
     /**
      * 创建报警条件
      *
@@ -50,7 +55,6 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
     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(frontend);
         //将前端公式转换成后台公式
         Map<String, Object> stringMap = frontend2Backend(frontend);
@@ -59,7 +63,7 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         // 设置默认值
         setDefaultValue(alarmCondition);
         save(alarmCondition);
-        stringMap.put("id",alarmCondition.getId());
+        stringMap.put("id", alarmCondition.getId());
         return stringMap;
     }
 
@@ -79,12 +83,12 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
                 StringBuffer displayFormula = new StringBuffer();
                 displayFormula.append(calculateMethodDTO.getMonitorIndicatorName()).append(calculateMethodDTO.getOperator());
                 for (Formula formula : formulas) {
-                    if(formula.getValue()!=null){
+                    if (formula.getValue() != null) {
                         nullString.append(formula.getValue()).append("==NaN").append(" || ");
                         notNullString.append(formula.getValue()).append("!=NaN").append(" && ");
                         tempFormula.append(formula.getValue());
                         infoCodesSet.add(formula.getValue());
-                    }else{
+                    } else {
                         tempFormula.append(formula.getLabel());
                     }
                     displayFormula.append(formula.getLabel());
@@ -110,9 +114,9 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         Map<String, Object> map = new HashMap();
         List<String> infoCodesList = new ArrayList<>();
         infoCodesList.addAll(infoCodesSet);
-        map.put("infoCode",infoCodesList);
-        map.put("backend",substring.toString());
-        map.put("displayFormula",displayFormulaList);
+        map.put("infoCode", infoCodesList);
+        map.put("backend", substring.toString());
+        map.put("displayFormula", displayFormulaList);
         return map;
     }
 
@@ -297,20 +301,28 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
     }
 
     @Override
-    public CommonResult<Boolean> validate(List<Formula> formulas) {
+    public CommonResult<Boolean> validate(ValidateAlarmConditionDTO validateAlarmConditionDTO) {
+        MonitorIndicator monitorIndicator = monitorIndicatorService.queryMonitorIndicatorDetail(validateAlarmConditionDTO.getFrontend().getMonitorIndicatorId());
+        List<Formula> formulas = validateAlarmConditionDTO.getFrontend().getFormula();
         StringBuffer displayFormula = new StringBuffer();
-        Set<String> infoCodesList = new HashSet<>();
+        String infoCodes = "";
         for (Formula formula : formulas) {
             if (formula.getValue() != null) {
                 String value = formula.getValue();
-                infoCodesList.add(value);
+                infoCodes = value;
                 displayFormula.append(value);
-            }else {
+            } else {
                 displayFormula.append(formula.getLabel());
             }
         }
-        List<String> infoCodes = new ArrayList<>();
-        infoCodes.addAll(infoCodesList);
+        MonitorIndicator indicator = monitorIndicatorService.queryMonitorIndicatorDetail(infoCodes);
+        String monitorUnit = monitorIndicator.getUnit();
+        String unit = indicator.getUnit();
+        if (monitorUnit != null && unit != null && !monitorUnit.equals(unit)) {
+            return ResultHelper.failure(ResponseCode.C0134.getCode(), "选择的指标与单位指标不一致");
+        } else if (monitorUnit == null || unit == null) {
+            return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式错误");
+        }
         return this.validate(displayFormula.toString(), infoCodes);
     }
 
@@ -318,10 +330,10 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
      * 使用正则来校验数学公式
      *
      * @param expression 数学公式,包含变量
-     * @param variables  内置变量集合
+     * @param
      * @return
      */
-    public static CommonResult validate(String expression, List<String> variables) {
+    public static CommonResult validate(String expression, String variable) {
 //        if (variables == null || variables.isEmpty()) {
 //            return ResultHelper.failure(ResponseCode.C0134.getCode(), "内置变量为空");
 //        }
@@ -329,10 +341,10 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
         expression = expression.replaceAll(" ", "");
         // 连续运算符处理
         if (expression.split("[\\+\\-\\*\\/]{2,}").length > 1) {
-            return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法,包含连续运算符");
+            return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,包含连续运算符");
         }
         if (org.apache.commons.lang3.StringUtils.contains(expression, "()")) {
-            return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法,包含空括号");
+            return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,包含空括号");
         }
 //        expression = expression.replaceAll("\\)\\(", "\\)*\\(");
 //        expression = expression.replaceAll("\\(\\-", "\\(0-");
@@ -343,8 +355,8 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
             if (org.apache.commons.lang3.StringUtils.isBlank(split) || Pattern.matches("[0-9]+", split)) {
                 continue;
             }
-            if (!variables.contains(split)) {
-                return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法,包含非法变量或字符");
+            if (!variable.equals(split)) {
+                return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,包含非法变量或字符");
             }
         }
         // 校验括号
@@ -355,7 +367,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(), "公式不合法,以错误运算符开头");
+                    return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,以错误运算符开头");
                 }
                 if (currChar == '+') {
                     resultExpression = expression.substring(1);
@@ -370,24 +382,24 @@ public class AlarmConditionServiceImpl extends ServiceImpl<AlarmConditionMapper,
                 if (stack.size() > 0) {
                     stack.pop();
                 } else {
-                    return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法,括号不配对");
+                    return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,括号不配对");
                 }
             }
             if (preChar != null && preChar == '(' && Pattern.matches("[\\+\\-\\*\\/]+", String.valueOf(currChar))) {
-                return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法,左括号后是运算符");
+                return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,左括号后是运算符");
             }
             if (preChar != null && preChar == ')' && !Pattern.matches("[\\+\\-\\*\\/]+", String.valueOf(currChar))) {
-                return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法,右括号后面不是运算符");
+                return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,右括号后面不是运算符");
             }
             if (i == expression.length() - 1) {
                 if (Pattern.matches("\\+|\\-|\\*|\\/", String.valueOf(currChar))) {
-                    return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法,以运算符结尾");
+                    return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,以运算符结尾");
                 }
             }
             preChar = currChar;
         }
         if (stack.size() > 0) {
-            return ResultHelper.failure(ResponseCode.C0134.getCode(), "公式不合法,括号不配对");
+            return ResultHelper.failure(ResponseCode.C0134.getCode(), expression + "公式不合法,括号不配对");
         }
         return ResultHelper.success();
     }

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

@@ -352,7 +352,7 @@ public class ProjectAlarmRuleServiceImpl extends ServiceImpl<ProjectAlarmRuleMap
 
     @Override
     public List<ProjectVO> getProject() {
-        InputStream inputStream = ProjectAlarmRuleServiceImpl.class.getClassLoader()
+        InputStream inputStream = ProjectAlarmRuleServiceImpl.class
                 .getResourceAsStream(File.separator + "json" + File.separator + "Project.json");
         if (inputStream == null) {
             return null;

+ 8 - 10
src/main/resources/mapper/GroupAlarmRuleMapper.xml

@@ -10,7 +10,7 @@
         <result column="creation_time" property="creationTime"/>
         <result column="modifier" property="modifier"/>
         <result column="modified_time" property="modifiedTime"/>
-        <result column="name" property="alarmItemName"/>
+        <result column="alarm_item_name" property="alarmItemName"/>
         <collection property="alarmCondition"
                     ofType="com.persagy.apm.alarmservice.project.alarmcondition.model.vo.AlarmConditionListItemVO">
             <result column="cid" property="id"/>
@@ -28,7 +28,7 @@
         select a.id,
         a.group_id,
         a.alarm_item_code,
-        c.name
+        a.alarm_item_name,
         a.creator,
         a.creation_time,
         a.modifier,
@@ -41,10 +41,9 @@
         b.alarm_level
         from group_alarm_rule a
         left join alarm_condition b on a.alarm_condition_id = b.id
-        left join monitor_indicator c on a.alarm_item_code = c.id
-        where a.group_id = #{groupId}
-        <if test="alarmItemName != null">
-            and c.name = #{alarmItemName}
+        where a.group_id = #{groupId} and a.valid = 1
+        <if test="alarmItemName != null and alarmItemName != ''">
+            and a.alarm_item_name = #{alarmItemName}
         </if>
         order by a.creation_time
         limit #{startIndex},#{size}
@@ -53,10 +52,9 @@
         select count(*)
         from group_alarm_rule a
         left join alarm_condition b on a.alarm_condition_id = b.id
-        left join monitor_indicator c on a.alarm_item_code = c.id
-        where a.group_id = #{groupId}
-        <if test="alarmItemName != null">
-            and c.name = #{alarmItemName}
+        where a.group_id = #{groupId} and a.valid = 1
+        <if test="alarmItemName != null and alarmItemName != ''">
+            and a.alarm_item_name = #{alarmItemName}
         </if>
     </select>
 </mapper>