Pārlūkot izejas kodu

规则引擎功能开发第二版3

zhaoxian 4 gadi atpakaļ
vecāks
revīzija
b55ef4e0d4

+ 6 - 8
module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/AlarmEventRuleController.java

@@ -113,11 +113,10 @@ public class AlarmEventRuleController {
     @AutoLog(value = "预警事件规则表-添加")
     @ApiOperation(value = "预警事件规则表-添加", notes = "预警事件规则表-添加")
     @PostMapping(value = "/add")
-    public Result<AlarmEventRule> addAlarmEventRule(@RequestBody JSONObject obj) {
-        Result<AlarmEventRule> result = new Result<>();
+    public Result<Object> addAlarmEventRule(@RequestBody JSONObject obj) {
+        Result<Object> result = new Result<>();
         try {
-            alarmEventRuleService.addAlarmEventRule(obj);
-            result.success("添加成功!");
+            result = alarmEventRuleService.addAlarmEventRule(obj);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
             result.error500("操作失败");
@@ -134,11 +133,10 @@ public class AlarmEventRuleController {
     @AutoLog(value = "预警事件规则表-编辑")
     @ApiOperation(value = "预警事件规则表-编辑", notes = "预警事件规则表-编辑")
     @PostMapping(value = "/edit")
-    public Result<AlarmEventRule> editAlarmEventRule(@RequestBody JSONObject obj) {
-        Result<AlarmEventRule> result = new Result<>();
+    public Result<Object> editAlarmEventRule(@RequestBody JSONObject obj) {
+        Result<Object> result = new Result<>();
         try {
-            alarmEventRuleService.editAlarmEventRule(obj);
-            result.success("修改成功!");
+            result = alarmEventRuleService.editAlarmEventRule(obj);
         } catch (Exception e) {
             log.error(e.getMessage(), e);
             result.error500("操作失败");

+ 14 - 2
module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/AlarmEventSendController.java

@@ -102,8 +102,8 @@ public class AlarmEventSendController {
         return result;
     }
 
-    @GetMapping(value = "/test")
-    public Result<?> add(String type) {
+    @GetMapping(value = "/matchAlarmRules")
+    public Result<?> matchAlarmRules(String type) {
         Result<AlarmEventSend> result = new Result<>();
         try {
             alarmEventSendService.matchAlarmRules(type);
@@ -115,6 +115,18 @@ public class AlarmEventSendController {
         return result;
     }
 
+    @GetMapping(value = "/rechangeValue")
+    public Result<?> rechangeValue(String type) {
+        Result<AlarmEventSend> result = new Result<>();
+        try {
+            alarmEventSendService.getAlarmValue(type);
+            result.success("操作成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
     /**
      * 编辑
      *

+ 1 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/mapper/AlarmMetricValueMapper.java

@@ -14,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface AlarmMetricValueMapper extends BaseMapper<AlarmMetricValue> {
 
+    List<AlarmMetricValue> queryListByLevel(AlarmMetricValue alarmMetricValue);
 }

+ 9 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/mapper/xml/AlarmEventRuleMapper.xml

@@ -16,6 +16,15 @@
             <if test="checkFrequency != null and checkFrequency !='' ">
                 AND t1.check_frequency = #{checkFrequency}
             </if>
+            <if test="unitId != null and unitId !='' ">
+                AND t1.event_rule_id != #{unitId}
+            </if>
+            <if test="accountId != null and accountId !='' ">
+                AND t1.account_id = #{accountId}
+            </if>
+            <if test="eventRuleName != null and eventRuleName !='' ">
+                AND t1.event_rule_name = #{eventRuleName}
+            </if>
         </where>
         order by t1.create_time desc
     </select>

+ 8 - 1
module-alarm/src/main/java/cn/com/ctop/alarm/modules/mapper/xml/AlarmMetricValueMapper.xml

@@ -1,5 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.com.ctop.alarm.modules.mapper.AlarmMetricValueMapper">
-
+    <select id="queryListByLevel" parameterType="cn.com.ctop.alarm.modules.entity.AlarmMetricValue"
+            resultType="cn.com.ctop.alarm.modules.entity.AlarmMetricValue">
+        SELECT
+        *
+        FROM
+        ctop_alarm_metric_value t1
+        WHERE metric_value_level LIKE CONCAT("%",#{metricValueLevel},"%")
+    </select>
 </mapper>

+ 3 - 2
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IAlarmEventRuleService.java

@@ -4,6 +4,7 @@ import cn.com.ctop.alarm.modules.entity.AlarmEventRule;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.pagehelper.PageInfo;
+import org.jeecg.common.api.vo.Result;
 
 /**
  * @Description: 预警事件规则表
@@ -13,9 +14,9 @@ import com.github.pagehelper.PageInfo;
  */
 public interface IAlarmEventRuleService extends IService<AlarmEventRule> {
 
-    void addAlarmEventRule(JSONObject obj);
+    Result<Object> addAlarmEventRule(JSONObject obj);
 
-    void editAlarmEventRule(JSONObject obj);
+    Result<Object> editAlarmEventRule(JSONObject obj);
 
     AlarmEventRule selectById(Long id);
 

+ 3 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IAlarmEventSendService.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.alarm.modules.service;
 
 import cn.com.ctop.alarm.modules.entity.AlarmEventSend;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -12,4 +13,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface IAlarmEventSendService extends IService<AlarmEventSend> {
 
     void matchAlarmRules(String checkType);
+
+    JSONObject getAlarmValue(String type);
 }

+ 21 - 8
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/AlarmEventRuleServiceImpl.java

@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageInfo;
 import com.xxl.job.core.enums.NoEn;
 import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.vo.LoginUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -73,13 +74,20 @@ public class AlarmEventRuleServiceImpl extends ServiceImpl<AlarmEventRuleMapper,
     }
 
     @Override
-    public void addAlarmEventRule(JSONObject obj) {
+    public Result<Object> addAlarmEventRule(JSONObject obj) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("account_id", obj.getLong("accountId"));
+        map.put("event_rule_name", obj.getString("eventRuleName"));
+        if (!Check.isNull(alarmEventRuleMapper.selectByMap(map))) {
+            return Result.error(1, "添加失败,重复的规则名,请重新输入");
+        }
+
         //1。新增rule表
         AlarmEventRule rule = new AlarmEventRule();
         reSetRuleEntity(rule, obj);
         JSONArray metrics = obj.getJSONArray("alarmEventMetric");
         if (Check.isNull(metrics)) {
-            return;
+            return Result.error(1, "请选择具体规则指标");
         }
         rule.setEventRuleStatus(NoEn.NO1.valueStr());//默认新增为激活状态
         alarmEventRuleMapper.insert(rule);
@@ -96,10 +104,18 @@ public class AlarmEventRuleServiceImpl extends ServiceImpl<AlarmEventRuleMapper,
         if (!Check.isNull(rels)) {
             addRelByIds(rels, rule);
         }
+        return new Result<>().success("添加成功!");
     }
 
     @Override
-    public void editAlarmEventRule(JSONObject obj) {
+    public Result<Object> editAlarmEventRule(JSONObject obj) {
+        AlarmEventRule alarmEventRule = new AlarmEventRule();
+        alarmEventRule.setUnitId(obj.getLong("eventRuleId"));
+        alarmEventRule.setAccountId(obj.getLong("accountId"));
+        alarmEventRule.setEventRuleName(obj.getString("eventRuleName"));
+        if (!Check.isNull(alarmEventRuleMapper.selectListPage(alarmEventRule))) {
+            return Result.error(1, "修改失败,重复的规则名,请重新输入");
+        }
         //1.更改rule表
         AlarmEventRule rule = new AlarmEventRule();
         reSetRuleEntity(rule, obj);
@@ -110,7 +126,7 @@ public class AlarmEventRuleServiceImpl extends ServiceImpl<AlarmEventRuleMapper,
         //2.更改metric表
         JSONArray metrics = obj.getJSONArray("alarmEventMetric");
         if (Check.isNull(metrics)) {
-            return;
+            return Result.error(1, "请选择具体规则指标");
         }
         AlarmEventMetric metric = null;
         QueryWrapper<AlarmEventMetric> metricWrapper = null;
@@ -130,10 +146,7 @@ public class AlarmEventRuleServiceImpl extends ServiceImpl<AlarmEventRuleMapper,
             alarmRuleCampaignRelMapper.deleteByRuleId(rule.getEventRuleId());
             addRelByIds(rels, rule);
         }
-        /*//通过级别和状态判断应用
-        if (!Check.isNull(obj.getString("appStatus"))) {
-            addRelByStatus(rule, obj.getLong("accountId"));
-        }*/
+        return new Result<>().success("修改成功!");
     }
 
     @Override

+ 150 - 110
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/AlarmEventSendServiceImpl.java

@@ -12,6 +12,8 @@ import cn.com.ctop.alarm.modules.mapper.AlarmEventSendMapper;
 import cn.com.ctop.alarm.modules.mapper.AlarmMetricValueMapper;
 import cn.com.ctop.alarm.modules.mapper.AlarmRuleCampaignRelMapper;
 import cn.com.ctop.alarm.modules.service.IAlarmEventSendService;
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.service.IMessageTemplate;
 import cn.com.ctop.common.module.service.ISendMessageService;
 import cn.com.ctop.common.module.utils.Check;
@@ -19,9 +21,11 @@ import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCampaign;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroup;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouCampaignMapper;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouGroupMapper;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouUpdateService;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xxl.job.core.enums.NoEn;
+import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.db.DataSourceCachePool;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.HashOperations;
@@ -40,6 +44,7 @@ import java.util.Map;
  * @version V1.0
  * @date 2020-10-29
  */
+@Slf4j
 @Service
 public class AlarmEventSendServiceImpl extends ServiceImpl<AlarmEventSendMapper, AlarmEventSend> implements IAlarmEventSendService {
 
@@ -68,6 +73,12 @@ public class AlarmEventSendServiceImpl extends ServiceImpl<AlarmEventSendMapper,
     private KuaiShouCampaignMapper kuaiShouCampaignMapper;
 
     @Autowired
+    private IKuaiShouUpdateService kuaiShouUpdateService;
+
+    @Autowired
+    private ICtopOauthTokenService oauthTokenService;
+
+    @Autowired
     private KuaiShouGroupMapper kuaiShouGroupMapper;
 
     private static JSONObject alarmValue;
@@ -80,7 +91,11 @@ public class AlarmEventSendServiceImpl extends ServiceImpl<AlarmEventSendMapper,
      * @throws
      * @author ZHAOXA
      */
-    private JSONObject getAlarmValue() {
+    @Override
+    public JSONObject getAlarmValue(String type) {
+        if (NoEn.NO1.valueStr().equals(type)) {
+            alarmValue = null;
+        }
         if (Check.isNull(alarmValue)) {
             alarmValue = new JSONObject();
             List<AlarmMetricValue> valueList = alarmMetricValueMapper.selectList(null);
@@ -154,124 +169,139 @@ public class AlarmEventSendServiceImpl extends ServiceImpl<AlarmEventSendMapper,
      * @author ZHAOXA
      */
     private void matchRules(AlarmEventRule rule, JSONObject cost, String level) {
-        //目标值
-        String goal = cost.getString(rule.getMetricValueCode());
-        if (Check.isNull(goal)) {
-            log.warn("规则中指标不匹配");
-            return;
-        }
-        //总消耗
-        BigDecimal totalCost = cost.getBigDecimal("totalCost");
-        BigDecimal value = new BigDecimal(goal);
-        List<AlarmEventMetric> metrics = rule.getAlarmEventMetrics();
-        if (Check.isNull(metrics)) {
-            return;
-        }
-        //value配置数据
-        JSONObject alarmValue = getAlarmValue();
-        boolean flag = true;
-        StringBuffer _depletion = new StringBuffer();
-        StringBuffer _roi = new StringBuffer();
-        StringBuffer _value = new StringBuffer();
-        for (AlarmEventMetric metric : metrics) {
-            if (flag) {
-                //阈值
-                BigDecimal threshold = new BigDecimal(metric.getThreshold());
-                String judgeMethod = metric.getJudgeMethod();
-                String metricValue = metric.getMetricValueCode();
-                JSONObject valObj = alarmValue.getJSONObject(metricValue);
-                //模板
-                String msgTemplate = valObj.getString("msgTemplate");
-                //单位 元、%
-                String msgValueUnit = valObj.getString("msgValueUnit");
-                //阈值类型 1-字符串,2-数字(BigDecimal),3-百分数',
-                String showValue = getThreshold(valObj.getString("msgValueType"), threshold, msgValueUnit);
-                String judgment = "低于";
-                //大于等于
-                if ("GT_EQ".equals(judgeMethod)) {
-                    judgment = "高于";
-                    //判断阈值类型(cost-成本;depletion-消耗;roi)
-                    if (metricValue.contains("_depletion")) {
-                        flag = totalCost.compareTo(threshold) >= 0;
-                        getMsgTemplate(_depletion, msgTemplate, judgment, "消耗值", showValue);
-                    } else if (metricValue.contains("_roi")) {
-                        flag = value.compareTo(threshold) >= 0;
-                        getMsgTemplate(_roi, msgTemplate, judgment, "ROI", showValue);
-                    } else {
-                        flag = value.compareTo(threshold) >= 0;
-                        getMsgTemplate(_value, msgTemplate, judgment, "阈值", showValue);
-                    }
-                    //小于等于
-                } else if ("LT_EQ".equals(judgeMethod)) {
-                    if (metricValue.contains("_depletion")) {
-                        flag = totalCost.compareTo(threshold) <= 0;
-                        getMsgTemplate(_depletion, msgTemplate, judgment, "消耗值", showValue);
-                    } else if (metricValue.contains("_roi")) {
-                        flag = value.compareTo(threshold) <= 0;
-                        getMsgTemplate(_roi, msgTemplate, judgment, "ROI", showValue);
-                    } else {
-                        flag = value.compareTo(threshold) <= 0;
-                        getMsgTemplate(_value, msgTemplate, judgment, "阈值", showValue);
-                    }
-                    //介于 
-                } else if ("BETWEEN".equals(judgeMethod)) {
-                    BigDecimal minThreshold = new BigDecimal(metric.getMinThreshold());
-                    String minshowValue = getThreshold(valObj.getString("msgValueType"), minThreshold, msgValueUnit);
-                    if (metricValue.contains("_depletion")) {
-                        flag = (totalCost.compareTo(threshold) > 0) || (totalCost.compareTo(minThreshold) < 0);
-                        if (totalCost.compareTo(threshold) > 0) {
-                            judgment = "高于";
+        try {
+            //目标值
+            String goal = cost.getString(rule.getMetricValueCode());
+            if (Check.isNull(goal)) {
+                log.warn("规则中指标不匹配");
+                return;
+            }
+            //总消耗
+            BigDecimal totalCost = cost.getBigDecimal("totalCost");
+            BigDecimal value = new BigDecimal(goal);
+            List<AlarmEventMetric> metrics = rule.getAlarmEventMetrics();
+            if (Check.isNull(metrics)) {
+                return;
+            }
+            //value配置数据
+            JSONObject alarmValue = getAlarmValue(NoEn.NO0.valueStr());
+            boolean flag = true;
+            StringBuffer _depletion = new StringBuffer();
+            StringBuffer _roi = new StringBuffer();
+            StringBuffer _value = new StringBuffer();
+            for (AlarmEventMetric metric : metrics) {
+                if (flag) {
+                    //阈值
+                    BigDecimal threshold = new BigDecimal(metric.getThreshold());
+                    String judgeMethod = metric.getJudgeMethod();
+                    String metricValue = metric.getMetricValueCode();
+                    JSONObject valObj = alarmValue.getJSONObject(metricValue);
+                    //模板
+                    String msgTemplate = valObj.getString("msgTemplate");
+                    //单位 元、%
+                    String msgValueUnit = valObj.getString("msgValueUnit");
+                    //阈值类型 1-字符串,2-数字(BigDecimal),3-百分数',
+                    String showValue = getThreshold(valObj.getString("msgValueType"), threshold, msgValueUnit);
+                    String judgment = "低于";
+                    //大于等于
+                    if ("GT_EQ".equals(judgeMethod)) {
+                        judgment = "高于";
+                        //判断阈值类型(cost-成本;depletion-消耗;roi)
+                        if (metricValue.contains("_depletion")) {
+                            flag = totalCost.compareTo(threshold) >= 0;
+                            getMsgTemplate(_depletion, msgTemplate, judgment, "消耗值", showValue);
+                        } else if (metricValue.contains("_roi")) {
+                            flag = value.compareTo(threshold) >= 0;
+                            getMsgTemplate(_roi, msgTemplate, judgment, "ROI", showValue);
+                        } else {
+                            flag = value.compareTo(threshold) >= 0;
+                            getMsgTemplate(_value, msgTemplate, judgment, "阈值", showValue);
                         }
-                        getMsgTemplate(_depletion, msgTemplate, judgment, "消耗区间", minshowValue.concat("-").concat(showValue));
-                    } else if (metricValue.contains("_roi")) {
-                        flag = (value.compareTo(threshold) > 0) || (value.compareTo(minThreshold) < 0);
-                        if (value.compareTo(threshold) > 0) {
-                            judgment = "高于";
+                        //小于等于
+                    } else if ("LT_EQ".equals(judgeMethod)) {
+                        if (metricValue.contains("_depletion")) {
+                            flag = totalCost.compareTo(threshold) <= 0;
+                            getMsgTemplate(_depletion, msgTemplate, judgment, "消耗值", showValue);
+                        } else if (metricValue.contains("_roi")) {
+                            flag = value.compareTo(threshold) <= 0;
+                            getMsgTemplate(_roi, msgTemplate, judgment, "ROI", showValue);
+                        } else {
+                            flag = value.compareTo(threshold) <= 0;
+                            getMsgTemplate(_value, msgTemplate, judgment, "阈值", showValue);
                         }
-                        getMsgTemplate(_roi, msgTemplate, judgment, "ROI区间", minshowValue.concat("-").concat(showValue));
-                        continue;
-                    } else {
-                        flag = (value.compareTo(threshold) > 0) || (value.compareTo(minThreshold) < 0);
-                        if (value.compareTo(threshold) > 0) {
-                            judgment = "高于";
+                        //介于
+                    } else if ("BETWEEN".equals(judgeMethod)) {
+                        BigDecimal minThreshold = new BigDecimal(metric.getMinThreshold());
+                        String minshowValue = getThreshold(valObj.getString("msgValueType"), minThreshold, msgValueUnit);
+                        if (metricValue.contains("_depletion")) {
+                            flag = (totalCost.compareTo(threshold) > 0) || (totalCost.compareTo(minThreshold) < 0);
+                            if (totalCost.compareTo(threshold) > 0) {
+                                judgment = "高于";
+                            }
+                            getMsgTemplate(_depletion, msgTemplate, judgment, "消耗区间", minshowValue.concat("-").concat(showValue));
+                        } else if (metricValue.contains("_roi")) {
+                            flag = (value.compareTo(threshold) > 0) || (value.compareTo(minThreshold) < 0);
+                            if (value.compareTo(threshold) > 0) {
+                                judgment = "高于";
+                            }
+                            getMsgTemplate(_roi, msgTemplate, judgment, "ROI区间", minshowValue.concat("-").concat(showValue));
+                            continue;
+                        } else {
+                            flag = (value.compareTo(threshold) > 0) || (value.compareTo(minThreshold) < 0);
+                            if (value.compareTo(threshold) > 0) {
+                                judgment = "高于";
+                            }
+                            getMsgTemplate(_value, msgTemplate, judgment, "阈值区间", minshowValue.concat("-").concat(showValue));
                         }
-                        getMsgTemplate(_value, msgTemplate, judgment, "阈值区间", minshowValue.concat("-").concat(showValue));
+                        //等于
+                    } else if ("EQ".equals(judgeMethod)) {
+                        judgment = "等于";
+                        flag = value.compareTo(threshold) == 0;
+                        String name = StatusEnum.getEnumByCode(threshold.toString()).getName();
+                        getMsgTemplate(_value, msgTemplate, judgment, "阈值", name);
+                    } else {
+                        log.warn("缺失判断条件");
+                        break;
                     }
-                    //等于
-                } else if ("EQ".equals(judgeMethod)) {
-                    judgment = "等于";
-                    flag = value.compareTo(threshold) == 0;
-                    String name = StatusEnum.getEnumByCode(threshold.toString()).getName();
-                    getMsgTemplate(_value, msgTemplate, judgment, "阈值", name);
                 } else {
-                    log.warn("缺失判断条件");
                     break;
                 }
-            } else {
-                break;
             }
-        }
-        //规则满足,产生预警
-        if (flag) {
-            String detail = getDetail(_depletion, _roi, _value);
-            String msg = getMsg(level, detail, cost, rule);
-            if (!Check.isNull(msg)) {
-                if ("SEND".equals(rule.getProcessMethod())) {
-                    msg += "请您及时查看并调整!";
-                } else {
-                    msg += "现已被关停,请您及时查看并调整!";
+            //规则满足,产生预警
+            if (flag) {
+                String detail = getDetail(_depletion, _roi, _value);
+                String msg = getMsg(level, detail, cost, rule);
+                if (!Check.isNull(msg)) {
+                    sendMessageService.sendMessage(rule.getUserId(), msg);
+                    AlarmEventSend send = new AlarmEventSend();
+                    send.setAlarmDetail(msg);
+                    send.setAlarmStatus(NoEn.NO1.valueStr());
+                    send.setMetricValueCode(rule.getMetricValueCode());
+                    send.setEventRuleId(rule.getEventRuleId());
+                    send.setAlarmCondition(rule.getMetricValueName().concat("预警:").concat(detail.replace("<br/>", ";")));
+                    send.setUserId(rule.getUserId());
+                    alarmEventSendMapper.insert(send);
                 }
-                sendMessageService.sendMessage(rule.getUserId(), msg);
-                AlarmEventSend send = new AlarmEventSend();
-                send.setAlarmDetail(msg);
-                send.setAlarmStatus(NoEn.NO1.valueStr());
-                send.setMetricValueCode(rule.getMetricValueCode());
-                send.setEventRuleId(rule.getEventRuleId());
-                send.setAlarmCondition(rule.getMetricValueName().concat("预警:").concat(detail.replace("<br/>", ";")));
-                send.setUserId(rule.getUserId());
-                alarmEventSendMapper.insert(send);
             }
+        } catch (Exception e) {
+            log.error("匹配规则异常", e);
         }
+
+    }
+
+    private boolean shutDown(AlarmEventRule rule, String level) {
+        CtopOauthToken token = oauthTokenService.getTokenByAccountId(rule.getAccountId());
+        Map<String, Object> updateMap = new HashMap<>();
+        if (!Check.isNull(token)) {
+            if ("CAMPAIGN".equals(level)) {
+                updateMap = kuaiShouUpdateService.updateCampaignStatus(token.getAccessToken(), rule.getAccountId(), rule.getCampaignId(), NoEn.NO2.valueInt(), rule.getUserId());
+                log.info("---------规则关停快手计划:{}", rule.getCampaignId());
+            } else if ("UNIT".equals(level)) {
+                updateMap = kuaiShouUpdateService.updateUnitStatus(token.getAccessToken(), rule.getAccountId(), rule.getUnitId(), NoEn.NO2.valueInt(), rule.getUserId());
+                log.info("---------规则关停快手组:{}", rule.getUnitId());
+            }
+        }
+        return (boolean) updateMap.get("success");
     }
 
     /**
@@ -335,12 +365,22 @@ public class AlarmEventSendServiceImpl extends ServiceImpl<AlarmEventSendMapper,
         if ("ACCOUNT".equals(level)) {
             header.append(detail);
         } else if ("CAMPAIGN".equals(level)) {
-            header.append("计划ID:").append(rule.getCampaignId()).append("计划名称为:").append(rule.getCampaignName()).append("<br/>").append(detail);
+            header.append("计划ID:").append(rule.getCampaignId()).append("计划名称为:").append(rule.getCampaignName()).append("<br/>").append(detail);
         } else {
             header.append("计划ID:").append(rule.getCampaignId()).append(",计划名称为:").append(rule.getCampaignName()).append("<br/>")
                     .append("组ID:").append(rule.getUnitId()).append(",组名称为:").append(rule.getUnitName()).append("<br/>").append(detail);
         }
-        return header.toString();
+        String msg = null;
+        if ("PAUSE".equals(rule.getProcessMethod())) {
+            header.append("现已被关停,请您及时查看并调整!");
+            if (shutDown(rule, level)) {
+                msg = header.toString();
+            }
+        } else {
+            header.append("请您及时查看并调整!");
+            msg = header.toString();
+        }
+        return msg;
     }
 
 

+ 1 - 3
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/AlarmMetricValueServiceImpl.java

@@ -31,9 +31,7 @@ public class AlarmMetricValueServiceImpl extends ServiceImpl<AlarmMetricValueMap
     @Override
     public Result<Object> queryParentChildList(AlarmMetricValue alarmMetricValue) {
         Result<Object> result = new Result<>();
-        QueryWrapper<AlarmMetricValue> wrap = new QueryWrapper<>();
-        wrap.eq("metric_value_level", alarmMetricValue.getMetricValueLevel());
-        List<AlarmMetricValue> list = alarmMetricValueMapper.selectList(wrap);
+        List<AlarmMetricValue> list = alarmMetricValueMapper.queryListByLevel(alarmMetricValue);
         List<AlarmMetricValue> resultList = new ArrayList<>();
         Map<Integer, List<AlarmMetricValue>> map = new HashMap<>();
         List<Integer> parents = new ArrayList<>();