Forráskód Böngészése

Merge remote-tracking branch 'origin/master_rule_engine' into master_rule_engine

yumeng 4 éve
szülő
commit
b305e39e9d

+ 14 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/entity/RuleGroup.java

@@ -1,6 +1,7 @@
 package cn.com.ctop.alarm.modules.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
@@ -11,6 +12,7 @@ import lombok.experimental.Accessors;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 规则组
@@ -51,6 +53,14 @@ public class RuleGroup {
     @Excel(name = "规则关系 当rule_type 为group时必填 and同时命中  or 命中一条", width = 15)
     @ApiModelProperty(value = "规则关系 当rule_type 为group时必填 and同时命中  or 命中一条")
     private String ruleRelationship;
+    /**
+     * 操作内容:SEND发送,PAUSE关停并发送
+     */
+    private String operate;
+    /**
+     * 预警发送方式: SMS:短信,WeChat:企业微信,EMAIL:电子邮件,TEL:电话
+     */
+    private String sendType;
 
     /**
      * 规则解释
@@ -66,4 +76,8 @@ public class RuleGroup {
      */
     @ApiModelProperty(value = "updateTime")
     private Date updateTime;
+
+    @TableField(exist = false)
+    private List<RuleBase> ruleBaseList;
+
 }

+ 5 - 4
module-alarm/src/main/java/cn/com/ctop/alarm/modules/mapper/RuleAccountThresholdMapper.java

@@ -1,17 +1,18 @@
 package cn.com.ctop.alarm.modules.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
 import cn.com.ctop.alarm.modules.entity.RuleAccountThreshold;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.List;
+
 /**
  * 规则关联账户 阈值
+ *
  * @author: jeecg-boot
- * @date:   2020-11-15
+ * @date: 2020-11-15
  * @cersion: V1.0
  */
 public interface RuleAccountThresholdMapper extends BaseMapper<RuleAccountThreshold> {
 
+    List<RuleAccountThreshold> selectByAccountId(Long accountId);
 }

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

@@ -2,4 +2,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.RuleAccountThresholdMapper">
 
+    <select id="selectByAccountId" resultType="cn.com.ctop.alarm.modules.entity.RuleAccountThreshold">
+       SELECT * FROM ctop_rule_account_threshold
+       WHERE account_id = #{accountId}
+    </select>
 </mapper>

+ 2 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IRuleGroupService.java

@@ -11,4 +11,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IRuleGroupService extends IService<RuleGroup> {
 
+    void checkRules();
+
 }

+ 103 - 2
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleGroupServiceImpl.java

@@ -1,19 +1,120 @@
 package cn.com.ctop.alarm.modules.service.impl;
 
+import cn.com.ctop.alarm.modules.entity.RuleAccountTemplate;
+import cn.com.ctop.alarm.modules.entity.RuleAccountThreshold;
 import cn.com.ctop.alarm.modules.entity.RuleGroup;
+import cn.com.ctop.alarm.modules.entity.RuleTemplate;
+import cn.com.ctop.alarm.modules.mapper.RuleAccountTemplateMapper;
+import cn.com.ctop.alarm.modules.mapper.RuleAccountThresholdMapper;
+import cn.com.ctop.alarm.modules.mapper.RuleBaseMapper;
 import cn.com.ctop.alarm.modules.mapper.RuleGroupMapper;
+import cn.com.ctop.alarm.modules.mapper.RuleIndicatorMapper;
+import cn.com.ctop.alarm.modules.mapper.RuleTemplateMapper;
 import cn.com.ctop.alarm.modules.service.IRuleGroupService;
+import cn.com.ctop.common.module.utils.Check;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 规则组
+ *
  * @author jeecg-boot
- * @date   2020-11-15
  * @version V1.0
+ * @date 2020-11-15
  */
 @Service
 public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup> implements IRuleGroupService {
 
+    @Autowired
+    private RuleBaseMapper ruleBaseMapper;
+    @Autowired
+    private RuleGroupMapper ruleGroupMapper;
+    @Autowired
+    private RuleIndicatorMapper ruleIndicatorMapper;
+    @Autowired
+    private RuleAccountThresholdMapper ruleAccountThresholdMapper;
+    @Autowired
+    private RuleAccountTemplateMapper ruleAccountTemplateMapper;
+    @Autowired
+    private RuleTemplateMapper ruleTemplateMapper;
+
+    @Override
+    public void checkRules() {
+        //账户绑定的规则模板
+        List<RuleAccountTemplate> ruleAccountTemplates = ruleAccountTemplateMapper.selectByMap(null);
+        //查询指标数据
+        List<JSONObject> dataList = getData();
+        //获取规则集
+        Map<Long, List<RuleGroup>> ruleGroupMap = getRuleGroupMap();
+        for (RuleAccountTemplate templates : ruleAccountTemplates) {
+            for (JSONObject data : dataList) {
+                if (templates.getAccountId() == data.getLong("accountId")) {
+                    List<RuleGroup> ruleGroups = ruleGroupMap.get(templates.getTemplateId());
+                    List<RuleAccountThreshold> list = ruleAccountThresholdMapper.selectByAccountId(templates.getAccountId());
+
+                }
+            }
+        }
+    }
+
+
+    /**
+     * 整理规则模板的数据,根据模板ID获取模板具体规则内容
+     *
+     * @param
+     * @return MAP key为模板ID,value是规则集
+     * @throws
+     * @author ZHAOXA
+     */
+    private Map<Long, List<RuleGroup>> getRuleGroupMap() {
+        Map<Long, List<RuleGroup>> map = new HashMap<>();
+        List<RuleTemplate> ruleTemplates = ruleTemplateMapper.selectByMap(null);
+        ruleTemplates.forEach(tem -> {
+            List<String> groupIds = strToList(tem.getGroupIds());
+            if (!Check.isNull(groupIds)) {
+                List<RuleGroup> ruleGroups = ruleGroupMapper.selectBatchIds(groupIds);
+                for (RuleGroup group : ruleGroups) {
+                    List<String> ruleIds = strToList(group.getRuleIds());
+                    if (!Check.isNull(ruleIds)) {
+                        group.setRuleBaseList(ruleBaseMapper.selectBatchIds(ruleIds));
+                    }
+                }
+                map.put(tem.getId(), ruleGroups);
+            }
+        });
+        return null;
+    }
+
+    //拆分逗号拼接数据
+    private List<String> strToList(String strings) {
+        if (Check.isNull(strings)) {
+            return null;
+        }
+        List<String> ids = new ArrayList<>();
+        String[] idArray = strings.split(",");
+        for (String id : idArray) {
+            ids.add(id);
+        }
+        return ids;
+    }
+
+    /**
+     * TODO 获取指标数据
+     *
+     * @param
+     * @return java.util.List<org.json.JSONObject>
+     * @throws
+     * @author ZHAOXA
+     */
+    private List<JSONObject> getData() {
+        return null;
+    }
+
 }