Browse Source

预警规则匹配逻辑

zhaoxian 4 years ago
parent
commit
b7ac25848b

+ 6 - 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;
 
 /**
  * 规则组
@@ -65,4 +67,8 @@ public class RuleGroup {
      */
     @ApiModelProperty(value = "updateTime")
     private Date updateTime;
+
+    @TableField(exist = false)
+    private List<RuleBase> ruleBaseList;
+
 }

+ 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();
+
 }

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

@@ -1,19 +1,119 @@
 package cn.com.ctop.alarm.modules.service.impl;
 
+import cn.com.ctop.alarm.modules.entity.RuleAccountTemplate;
 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());
+                    //TODO
+
+                }
+            }
+        }
+    }
+
+
+    /**
+     * 整理规则模板的数据,根据模板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;
+    }
+
 }