瀏覽代碼

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

syh 4 年之前
父節點
當前提交
9e99e754cf
共有 15 個文件被更改,包括 447 次插入101 次删除
  1. 89 18
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleAccountTemplateController.java
  2. 50 35
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleGroupController.java
  3. 12 5
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleIndicatorController.java
  4. 28 0
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleTemplateController.java
  5. 1 0
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/entity/RuleAccountTemplate.java
  6. 1 0
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/entity/RuleIndicator.java
  7. 4 0
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/mapper/RuleIndicatorMapper.java
  8. 17 0
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/mapper/xml/RuleIndicatorMapper.xml
  9. 4 1
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IRuleAccountTemplateService.java
  10. 10 0
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IRuleIndicatorService.java
  11. 2 0
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IRuleTemplateService.java
  12. 80 4
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleAccountTemplateServiceImpl.java
  13. 43 37
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleGroupServiceImpl.java
  14. 12 0
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleIndicatorServiceImpl.java
  15. 94 1
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleTemplateServiceImpl.java

+ 89 - 18
module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleAccountTemplateController.java

@@ -1,8 +1,12 @@
 package cn.com.ctop.alarm.modules.controller;
 
 import cn.com.ctop.alarm.modules.entity.RuleAccountTemplate;
+import cn.com.ctop.alarm.modules.entity.RuleTemplate;
 import cn.com.ctop.alarm.modules.service.IRuleAccountTemplateService;
+import cn.com.ctop.alarm.modules.service.IRuleAccountThresholdService;
+import cn.com.ctop.alarm.modules.service.IRuleTemplateService;
 import cn.com.ctop.common.module.annotation.AutoLog;
+import cn.com.ctop.common.module.utils.Check;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -31,6 +35,7 @@ import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -48,6 +53,90 @@ import java.util.Map;
 public class RuleAccountTemplateController {
     @Autowired
     private IRuleAccountTemplateService ruleAccountTemplateService;
+    @Autowired
+    private IRuleTemplateService templateService;
+    @Autowired
+    private IRuleAccountThresholdService accountThresholdService;
+
+    @GetMapping(value = "/checkAccountTemplate")
+    public Result<JSONObject> checkAccountTemplate(Long accountId) {
+        Result<JSONObject> result = new Result<>();
+        JSONObject returnJson = new JSONObject();
+        QueryWrapper<RuleAccountTemplate> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("account_id", accountId);
+        queryWrapper.orderByDesc("create_time");
+        queryWrapper.last("limit 1");
+        RuleAccountTemplate ruleAccountTemplate = ruleAccountTemplateService.getOne(queryWrapper);
+        if (!Check.isNull(ruleAccountTemplate)) {
+            RuleTemplate ruleTemplate = templateService.getById(ruleAccountTemplate.getTemplateId());
+            returnJson.put("isApplication", true);
+            if (!Check.isNull(ruleTemplate)) {
+                returnJson.put("templateName", ruleTemplate.getTemplateName());
+            }
+        } else {
+            returnJson.put("isApplication", false);
+        }
+
+        result.setSuccess(true);
+        result.setResult(returnJson);
+        return result;
+    }
+
+
+    /**
+     * 推送 模板应用到某个账户
+     *
+     * @param ruleAccountTemplate
+     * @return
+     */
+    @PostMapping(value = "/pushTemplateToAccount")
+    public Result pushTemplateToAccount(@RequestBody RuleAccountTemplate ruleAccountTemplate) {
+        Result result = new Result<>();
+        try {
+            if (Check.isNull(ruleAccountTemplate.getAccountId())) {
+                throw new Exception("请选择需要推送的账户");
+            }
+
+            if (Check.isNull(ruleAccountTemplate.getTemplateId())) {
+                throw new Exception("请选择需要推送的模板");
+            }
+
+            JSONObject returnJson = ruleAccountTemplateService.pushTemplateToAccount(ruleAccountTemplate.getAccountId(), ruleAccountTemplate.getTemplateId());
+            result.setSuccess(true);
+            result.setResult(returnJson);
+        } catch (Exception e) {
+            result.setSuccess(false);
+            result.setMessage(e.getMessage());
+        }
+        return result;
+    }
+
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "规则模板-通过id删除")
+    @ApiOperation(value = "规则模板-通过id删除", notes = "规则模板-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            RuleAccountTemplate accountTemplate = ruleAccountTemplateService.getById(id);
+            if (!Check.isNull(accountTemplate)) {
+                Map<String, Object> deleteMap = new HashMap<>();
+                deleteMap.put("account_id", accountTemplate.getAccountId());
+                accountThresholdService.removeByMap(deleteMap);
+                ruleAccountTemplateService.removeById(id);
+            }
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
 
     /**
      * 分页列表查询
@@ -134,24 +223,6 @@ public class RuleAccountTemplateController {
         return result;
     }
 
-    /**
-     * 通过id删除
-     *
-     * @param id
-     * @return
-     */
-    @AutoLog(value = "规则模板-通过id删除")
-    @ApiOperation(value = "规则模板-通过id删除", notes = "规则模板-通过id删除")
-    @DeleteMapping(value = "/delete")
-    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
-        try {
-            ruleAccountTemplateService.removeById(id);
-        } catch (Exception e) {
-            log.error("删除失败", e.getMessage());
-            return Result.error("删除失败!");
-        }
-        return Result.ok("删除成功!");
-    }
 
     /**
      * 批量删除

+ 50 - 35
module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleGroupController.java

@@ -1,9 +1,11 @@
 package cn.com.ctop.alarm.modules.controller;
 
 import cn.com.ctop.alarm.modules.entity.RuleGroup;
+import cn.com.ctop.alarm.modules.entity.RuleTemplate;
 import cn.com.ctop.alarm.modules.service.IRuleAccountThresholdService;
 import cn.com.ctop.alarm.modules.service.IRuleBaseService;
 import cn.com.ctop.alarm.modules.service.IRuleGroupService;
+import cn.com.ctop.alarm.modules.service.IRuleTemplateService;
 import cn.com.ctop.common.module.annotation.AutoLog;
 import cn.com.ctop.common.module.utils.Check;
 import com.alibaba.fastjson.JSON;
@@ -34,10 +36,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 规则组
@@ -57,6 +56,8 @@ public class RuleGroupController {
     private IRuleBaseService ruleBaseService;
     @Autowired
     private IRuleAccountThresholdService ruleAccountThresholdService;
+    @Autowired
+    private IRuleTemplateService ruleTemplateService;
 
 
     /**
@@ -92,6 +93,51 @@ public class RuleGroupController {
 
 
     /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "规则组-通过id删除")
+    @ApiOperation(value = "规则组-通过id删除", notes = "规则组-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            RuleGroup ruleGroup = ruleGroupService.getById(id);
+            if (!Check.isNull(ruleGroup)) {
+                JSONArray ruleIds = JSONArray.parseArray(ruleGroup.getRuleIds());
+                for (int i = 0; i < ruleIds.size(); i++) {
+                    Long ruleId = ruleIds.getLong(i);
+                    ruleBaseService.removeById(ruleId);
+                    Map<String, Object> deleteMap = new HashMap<>();
+                    deleteMap.put("rule_id", ruleId);
+                    ruleAccountThresholdService.removeByMap(deleteMap);
+                }
+                Long templateId = ruleGroup.getTemplateId();
+                RuleTemplate ruleTemplate = ruleTemplateService.getById(templateId);
+                if (!Check.isNull(ruleTemplate)) {
+                    JSONArray groupIds = JSONArray.parseArray(ruleTemplate.getGroupIds());
+                    Iterator<Object> o = groupIds.iterator();
+                    while (o.hasNext()) {
+                        System.err.println(o.next());
+                        String groupId = String.valueOf(o.next());
+                        if (groupId.equals(id)) {
+                            o.remove();
+                        }
+                    }
+                    ruleTemplate.setGroupIds(groupIds.toJSONString());
+                    ruleTemplateService.updateById(ruleTemplate);
+                }
+                ruleGroupService.removeById(id);
+            }
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
      * 分页列表查询
      *
      * @param ruleGroup
@@ -161,37 +207,6 @@ public class RuleGroupController {
         return result;
     }
 
-    /**
-     * 通过id删除
-     *
-     * @param id
-     * @return
-     */
-
-
-    @AutoLog(value = "规则组-通过id删除")
-    @ApiOperation(value = "规则组-通过id删除", notes = "规则组-通过id删除")
-    @DeleteMapping(value = "/delete")
-    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
-        try {
-            RuleGroup ruleGroup = ruleGroupService.getById(id);
-            if (!Check.isNull(ruleGroup)) {
-                JSONArray ruleIds = JSONArray.parseArray(ruleGroup.getRuleIds());
-                for (int i = 0; i < ruleIds.size(); i++) {
-                    Long ruleId = ruleIds.getLong(i);
-                    ruleBaseService.removeById(ruleId);
-                    Map<String, Object> deleteMap = new HashMap<>();
-                    deleteMap.put("rule_id", ruleId);
-                    ruleAccountThresholdService.removeByMap(deleteMap);
-                }
-                ruleGroupService.removeById(id);
-            }
-        } catch (Exception e) {
-            log.error("删除失败", e.getMessage());
-            return Result.error("删除失败!");
-        }
-        return Result.ok("删除成功!");
-    }
 
     /**
      * 批量删除

+ 12 - 5
module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleIndicatorController.java

@@ -5,6 +5,7 @@ import cn.com.ctop.alarm.modules.service.IRuleIndicatorService;
 import cn.com.ctop.common.module.annotation.AutoLog;
 import cn.com.ctop.common.module.utils.Check;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.Api;
@@ -52,26 +53,32 @@ public class RuleIndicatorController {
     @AutoLog(value = "规则指标信息-分页列表查询")
     @ApiOperation(value = "规则指标信息-分页列表查询", notes = "规则指标信息-分页列表查询")
     @GetMapping(value = "/list")
-    public Result<JSONObject> queryPageList(RuleIndicator ruleIndicator) {
-        Result<JSONObject> result = new Result<>();
+    public Result<JSONArray> queryPageList(RuleIndicator ruleIndicator) {
+        Result<JSONArray> result = new Result<>();
         Integer mediaType = ruleIndicator.getMediaType();
         QueryWrapper<RuleIndicator> queryWrapper = new QueryWrapper();
         queryWrapper.eq("media_type", mediaType);
         queryWrapper.groupBy("dimension");
         List<RuleIndicator> list = ruleIndicatorService.list(queryWrapper);
-        JSONObject dataJson = new JSONObject();
+        JSONArray dataArr = new JSONArray();
         for (RuleIndicator indicator : list) {
             String dimension = indicator.getDimension();
+            JSONObject dimensionJson = new JSONObject();
             QueryWrapper<RuleIndicator> queryWrapperData = new QueryWrapper();
             queryWrapperData.eq("media_type", mediaType);
             queryWrapperData.eq("dimension", dimension);
             List<RuleIndicator> dataList = ruleIndicatorService.list(queryWrapperData);
             if (!Check.isNull(dataList)) {
-                dataJson.put(dimension, dataList);
+                dimensionJson.put("dimension", dimension);
+                // 获取指标名称
+                String dimensionName = ruleIndicatorService.getRuleIndicatorNameByMediaTypeAndDimension(mediaType, dimension);
+                dimensionJson.put("dimensionName", dimensionName);
+                dimensionJson.put("dimensionList", dataList);
+                dataArr.add(dimensionJson);
             }
         }
         result.setSuccess(true);
-        result.setResult(dataJson);
+        result.setResult(dataArr);
         return result;
     }
 

+ 28 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/controller/RuleTemplateController.java

@@ -63,6 +63,31 @@ public class RuleTemplateController {
 
 
     /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "规则模板-通过id查询")
+    @ApiOperation(value = "规则模板-通过id查询", notes = "规则模板-通过id查询")
+    @GetMapping(value = "/queryDetailById")
+    public Result<JSONObject> queryDetailById(@RequestParam(name = "id", required = true) String id) {
+        Result<JSONObject> result = new Result<>();
+        try {
+            JSONObject ruleTemplateJson = ruleTemplateService.queryDetailById(id);
+            result.setSuccess(true);
+            result.setResult(ruleTemplateJson);
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+            result.setMessage(e.getMessage());
+        }
+
+        return result;
+    }
+
+
+    /**
      * 分页列表查询
      *
      * @param ruleTemplate
@@ -186,6 +211,9 @@ public class RuleTemplateController {
                 if (!Check.isNull(groupList)) {
                     for (RuleGroup group : groupList) {
                         JSONArray ruleIds = JSONArray.parseArray(group.getRuleIds());
+                        if (Check.isNull(ruleIds)) {
+                            continue;
+                        }
                         for (int i = 0; i < ruleIds.size(); i++) {
                             Long ruleId = ruleIds.getLong(i);
                             ruleBaseService.removeById(ruleId);

+ 1 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/entity/RuleAccountTemplate.java

@@ -44,6 +44,7 @@ public class RuleAccountTemplate {
     @Excel(name = "模板id", width = 15)
     @ApiModelProperty(value = "模板id")
     private Long templateId;
+
     /**
      * createTime
      */

+ 1 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/entity/RuleIndicator.java

@@ -56,6 +56,7 @@ public class RuleIndicator {
     @Excel(name = "数据类型", width = 15)
     @ApiModelProperty(value = "数据类型")
     private String dataType;
+    private String modelType;
     /**
      * 数据单位
      */

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

@@ -2,6 +2,7 @@ package cn.com.ctop.alarm.modules.mapper;
 
 import cn.com.ctop.alarm.modules.entity.RuleIndicator;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 规则指标信息
@@ -12,4 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface RuleIndicatorMapper extends BaseMapper<RuleIndicator> {
 
+    String getRuleIndicatorNameByMediaTypeAndDimension(@Param("mediaType") Integer mediaType, @Param("dimension") String dimension);
+
+    String getDataTypeByRuleDimensionAndIndicatorCode(@Param("ruleDimension") String ruleDimension,@Param("indicatorCode") String indicatorCode);
 }

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

@@ -2,4 +2,21 @@
 <!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.RuleIndicatorMapper">
 
+    <select id="getRuleIndicatorNameByMediaTypeAndDimension" resultType="java.lang.String">
+      select  dimension_name
+      from ctop_rule_media_dimension
+      where  media_type = #{mediaType}
+      and dimension = #{dimension}
+      limit 1
+    </select>
+
+    <select id="getDataTypeByRuleDimensionAndIndicatorCode" resultType="java.lang.String">
+      select  data_type
+      from ctop_rule_indicator
+      where  code = #{indicatorCode}
+      and dimension = #{ruleDimension}
+      limit 1
+    </select>
+
+
 </mapper>

+ 4 - 1
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IRuleAccountTemplateService.java

@@ -1,14 +1,17 @@
 package cn.com.ctop.alarm.modules.service;
 
 import cn.com.ctop.alarm.modules.entity.RuleAccountTemplate;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * @Description: 规则模板
  * @Author: jeecg-boot
- * @Date:   2020-11-15
+ * @Date: 2020-11-15
  * @Version: V1.0
  */
 public interface IRuleAccountTemplateService extends IService<RuleAccountTemplate> {
 
+    // 推送模板到账户下
+    JSONObject pushTemplateToAccount(Long accountId, Long templateId) throws Exception;
 }

+ 10 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/IRuleIndicatorService.java

@@ -11,4 +11,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IRuleIndicatorService extends IService<RuleIndicator> {
 
+    String getRuleIndicatorNameByMediaTypeAndDimension(Integer mediaType, String dimension);
+
+    /**
+     * 根据数据维度和指标查询 数据类型
+     *
+     * @param ruleDimension
+     * @param indicatorCode
+     * @return
+     */
+    String getDataTypeByRuleDimensionAndIndicatorCode(String ruleDimension, String indicatorCode);
 }

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

@@ -13,4 +13,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface IRuleTemplateService extends IService<RuleTemplate> {
 
     JSONObject createTemplate(JSONObject requestJson);
+
+    JSONObject queryDetailById(String id) throws Exception;
 }

+ 80 - 4
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleAccountTemplateServiceImpl.java

@@ -1,19 +1,95 @@
 package cn.com.ctop.alarm.modules.service.impl;
 
-import cn.com.ctop.alarm.modules.entity.RuleAccountTemplate;
+import cn.com.ctop.alarm.modules.entity.*;
 import cn.com.ctop.alarm.modules.mapper.RuleAccountTemplateMapper;
-import cn.com.ctop.alarm.modules.service.IRuleAccountTemplateService;
+import cn.com.ctop.alarm.modules.service.*;
+import cn.com.ctop.common.module.utils.Check;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 规则模板
+ *
  * @author jeecg-boot
- * @date   2020-11-15
  * @version V1.0
+ * @date 2020-11-15
  */
 @Service
 public class RuleAccountTemplateServiceImpl extends ServiceImpl<RuleAccountTemplateMapper, RuleAccountTemplate> implements IRuleAccountTemplateService {
+    @Autowired
+    private RuleAccountTemplateMapper ruleAccountTemplateMapper;
+    @Autowired
+    private IRuleTemplateService ruleTemplateService;
+    @Autowired
+    private IRuleGroupService ruleGroupService;
+    @Autowired
+    private IRuleBaseService ruleBaseService;
+    @Autowired
+    private IRuleAccountThresholdService ruleAccountThresholdService;
+
+    /**
+     * 推送模板到账会下
+     *
+     * @param accountId
+     * @param templateId
+     * @return
+     */
+    @Override
+    public JSONObject pushTemplateToAccount(Long accountId, Long templateId) throws Exception {
+
+        RuleTemplate ruleTemplate = ruleTemplateService.getById(templateId);
+        if (Check.isNull(ruleTemplate)) {
+            throw new Exception("推送失败,未获取到模板信息");
+
+        }
+        JSONArray groupIds = JSONArray.parseArray(ruleTemplate.getGroupIds());
+        if (Check.isNull(groupIds)) {
+            throw new Exception("推送失败,模板下战暂无可用规则");
+        }
+        Map<String, Object> deleteMap = new HashMap<>();
+        deleteMap.put("account_id", accountId);
+        ruleAccountTemplateMapper.deleteByMap(deleteMap);
+        ruleAccountThresholdService.removeByMap(deleteMap);
+        RuleAccountTemplate template = new RuleAccountTemplate();
+        template.setAccountId(accountId);
+        template.setTemplateId(templateId);
+        int insert = ruleAccountTemplateMapper.insert(template);
+        if (insert == 0) {
+            throw new Exception("推送失败,请联系相关技术人员");
+        }
+        JSONObject returnJson = new JSONObject();
+        Integer groupCount = 0;
+        for (int i = 0; i < groupIds.size(); i++) {
+            Long groupId = groupIds.getLong(i);
+            RuleGroup ruleGroup = ruleGroupService.getById(groupId);
+            if (Check.isNull(ruleGroup)) {
+                continue;
+            }
+            groupCount += 1;
+            JSONArray ruleIds = JSONArray.parseArray(ruleGroup.getRuleIds());
+            if (Check.isNull(ruleIds)) {
+                continue;
+            }
+            for (int j = 0; j < ruleIds.size(); j++) {
+                Long ruleId = ruleIds.getLong(j);
+                RuleBase ruleBase = ruleBaseService.getById(ruleId);
+                if (Check.isNull(ruleBase)) {
+                    continue;
+                }
+                RuleAccountThreshold threshold = new RuleAccountThreshold();
+                threshold.setAccountId(accountId);
+                threshold.setRuleId(ruleBase.getId());
+                ruleAccountThresholdService.save(threshold);
+            }
 
+        }
+        returnJson.put("groupCount", groupCount);
+        return returnJson;
+    }
 }

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

@@ -1,20 +1,11 @@
 package cn.com.ctop.alarm.modules.service.impl;
 
 import cn.com.ctop.alarm.modules.constant.MatchLogic;
-import cn.com.ctop.alarm.modules.entity.RuleAccountTemplate;
-import cn.com.ctop.alarm.modules.entity.RuleAccountThreshold;
-import cn.com.ctop.alarm.modules.entity.RuleBase;
-import cn.com.ctop.alarm.modules.entity.RuleGroup;
-import cn.com.ctop.alarm.modules.entity.RuleIndicator;
-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.entity.*;
+import cn.com.ctop.alarm.modules.mapper.*;
 import cn.com.ctop.alarm.modules.service.IRuleAccountTemplateService;
 import cn.com.ctop.alarm.modules.service.IRuleGroupService;
+import cn.com.ctop.common.module.service.ISendMessageService;
 import cn.com.ctop.common.module.utils.Check;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -56,6 +47,8 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
     private IRuleGroupService ruleGroupService;
     @Autowired
     private IRuleAccountTemplateService ruleAccountTemplateService;
+    @Autowired
+    private ISendMessageService sendMessageService;
 
     @Override
     public void checkRules() {
@@ -130,17 +123,18 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
             }
             //执行发送
             if (flag) {
-//                MatchLogic.getMsg()
                 boolean isPause = "PAUSE".equals(ruleGroup.getOperate());
-                String sendType = ruleGroup.getSendType();
-                if(isPause){
+                if (isPause) {
                     //关停操作 TODO
 
                 }
+                //TODO
+                String msg = MatchLogic.getMsg(null, null, null, null);
+                String sendType = ruleGroup.getSendType();
                 if ("SMS".equals(sendType)) {
 
                 } else if ("WeChat".equals(sendType)) {
-
+                    sendMessageService.sendMessage("", msg);
                 } else if ("EMAIL".equals(sendType)) {
 
                 } else if ("TEL".equals(sendType)) {
@@ -153,18 +147,6 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
         }
     }
 
-    private boolean checkThreshold(String threshold, RuleBase ruleBase, JSONObject indicator) {
-        //条件
-        String condition = ruleBase.getRuleCondition();
-        //指标
-        String indicatorCode = ruleBase.getIndicatorCode();
-        //维度
-        String ruleDimension = ruleBase.getRuleDimension();
-
-        return true;
-    }
-
-
     //整理阈值数据
     public JSONObject getThreshold(List<RuleAccountThreshold> thresholdList) {
         if (Check.isNull(thresholdList)) {
@@ -220,13 +202,20 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
 
     //拆分逗号拼接数据
     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);
+        List<String> ids = null;
+        try {
+            if (Check.isNull(strings)) {
+                return null;
+            }
+            JSONObject job = new JSONObject();
+            job.put("list", strings);
+            ids = new ArrayList<>();
+            JSONArray idList = job.getJSONArray("list");
+            for (Object id : idList) {
+                ids.add(String.valueOf(id));
+            }
+        } catch (Exception e) {
+            log.error("ids格式转换异常", e);
         }
         return ids;
     }
@@ -255,7 +244,7 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
     public JSONObject createRuleGroup(com.alibaba.fastjson.JSONObject requestJson) {
         JSONObject returnJson = new JSONObject();
         try {
-            String templateId = requestJson.getString("templateId");
+            Long templateId = requestJson.getLong("templateId");
             if (Check.isNull(templateId)) {
                 throw new Exception("请选择需要创建的规则模板id");
             }
@@ -293,10 +282,17 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                         if (!Check.isNull(accountList)) {
                             for (RuleAccountTemplate accountTemplate : accountList) {
                                 Long accountId = accountTemplate.getAccountId();
+                                QueryWrapper<RuleAccountThreshold> thresholdQueryWrapper = new QueryWrapper<>();
+                                thresholdQueryWrapper.eq("account_id", accountId);
+                                thresholdQueryWrapper.eq("rule_id", ruleBase.getId());
+                                thresholdQueryWrapper.last("limit 1");
+                                RuleAccountThreshold accountThreshold = ruleAccountThresholdMapper.selectOne(thresholdQueryWrapper);
+                                if (!Check.isNull(accountThreshold)) {
+                                    continue;
+                                }
                                 RuleAccountThreshold threshold = new RuleAccountThreshold();
                                 threshold.setAccountId(accountId);
                                 threshold.setRuleId(ruleBase.getId());
-                                // threshold.setThreshoId(ruleDetailJson.getString("threshold"));
                                 ruleAccountThresholdMapper.insert(threshold);  // 默认将新建的规则同步到已应用的账户下
                             }
                         }
@@ -306,11 +302,21 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                 RuleGroup ruleGroup = new RuleGroup();
                 ruleGroup.setRuleIds(ruleIds.toJSONString());
                 ruleGroup.setRuleType(groupJson.getString("ruleType"));
+                ruleGroup.setTemplateId(templateId);
                 ruleGroup.setRuleRelationship(groupJson.getString("ruleRelationship"));
                 ruleGroup.setGroupName(groupJson.getString("groupName"));
                 ruleGroup.setRemark(groupJson.getString("remark"));
                 boolean save = ruleGroupService.save(ruleGroup); // 新增规则组
                 if (save) {
+
+                    for (int j = 0; j < ruleIds.size(); j++) {
+                        Long ruleId = ruleIds.getLong(j);
+                        RuleBase updateRuleBase = new RuleBase();
+                        updateRuleBase.setId(ruleId);
+                        updateRuleBase.setGroupId(ruleGroup.getId());
+                        ruleBaseMapper.updateById(updateRuleBase);
+                    }
+
                     JSONArray groupIds = JSONArray.parseArray(template.getGroupIds());
                     groupIds.add(ruleGroup.getId());
                     template.setGroupIds(groupIds.toJSONString());

+ 12 - 0
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleIndicatorServiceImpl.java

@@ -4,6 +4,7 @@ import cn.com.ctop.alarm.modules.entity.RuleIndicator;
 import cn.com.ctop.alarm.modules.mapper.RuleIndicatorMapper;
 import cn.com.ctop.alarm.modules.service.IRuleIndicatorService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 /**
@@ -15,5 +16,16 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class RuleIndicatorServiceImpl extends ServiceImpl<RuleIndicatorMapper, RuleIndicator> implements IRuleIndicatorService {
+    @Autowired
+    private RuleIndicatorMapper ruleIndicatorMapper;
 
+    @Override
+    public String getRuleIndicatorNameByMediaTypeAndDimension(Integer mediaType, String dimension) {
+        return ruleIndicatorMapper.getRuleIndicatorNameByMediaTypeAndDimension(mediaType, dimension);
+    }
+
+    @Override
+    public String getDataTypeByRuleDimensionAndIndicatorCode(String ruleDimension, String indicatorCode) {
+        return ruleIndicatorMapper.getDataTypeByRuleDimensionAndIndicatorCode(ruleDimension, indicatorCode);
+    }
 }

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

@@ -2,11 +2,13 @@ package cn.com.ctop.alarm.modules.service.impl;
 
 import cn.com.ctop.alarm.modules.entity.RuleBase;
 import cn.com.ctop.alarm.modules.entity.RuleGroup;
+import cn.com.ctop.alarm.modules.entity.RuleIndicator;
 import cn.com.ctop.alarm.modules.entity.RuleTemplate;
 import cn.com.ctop.alarm.modules.mapper.RuleBaseMapper;
 import cn.com.ctop.alarm.modules.mapper.RuleTemplateMapper;
 import cn.com.ctop.alarm.modules.service.IRuleBaseService;
 import cn.com.ctop.alarm.modules.service.IRuleGroupService;
+import cn.com.ctop.alarm.modules.service.IRuleIndicatorService;
 import cn.com.ctop.alarm.modules.service.IRuleTemplateService;
 import cn.com.ctop.common.module.utils.Check;
 import com.alibaba.fastjson.JSONArray;
@@ -34,6 +36,12 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
     @Autowired
     private IRuleGroupService ruleGroupService;
 
+    @Autowired
+    private RuleTemplateMapper ruleTemplateMapper;
+
+    @Autowired
+    private IRuleIndicatorService ruleIndicatorService;
+
     /**
      * 创建规则模板
      *
@@ -42,7 +50,6 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
      */
     @Override
     public JSONObject createTemplate(JSONObject requestJson) {
-        System.err.println(requestJson);
         JSONObject returnJson = new JSONObject();
         try {
             Integer mediaType = requestJson.getInteger("mediaType");
@@ -146,4 +153,90 @@ public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, Rul
 
         return returnJson;
     }
+
+
+    /**
+     * 获取模板详情
+     *
+     * @param id
+     * @return
+     */
+
+
+    @Override
+    public JSONObject queryDetailById(String id) throws Exception {
+        JSONObject returnJson = new JSONObject();
+        RuleTemplate template = ruleTemplateMapper.selectById(id);
+        if (Check.isNull(ruleTemplateMapper)) {
+            throw new Exception("获取模板基本信息为空");
+        }
+
+        returnJson.put("templateId", template.getId());
+        returnJson.put("templateName", template.getTemplateName());
+        returnJson.put("mediaType", template.getMediaType());
+        JSONArray groupIds = JSONArray.parseArray(template.getGroupIds());
+        if (Check.isNull(groupIds)) {
+            throw new Exception("未获取规则集");
+        }
+
+
+        JSONArray ruleList = new JSONArray();
+        for (int i = 0; i < groupIds.size(); i++) {
+            Long groupId = groupIds.getLong(i);
+            RuleGroup group = ruleGroupService.getById(groupId);
+            if (Check.isNull(group)) {
+                continue;
+            }
+            JSONObject groupJson = new JSONObject();
+            groupJson.put("groupId", group.getId());
+            groupJson.put("groupName", group.getGroupName());
+            groupJson.put("ruleType", group.getRuleType());
+            groupJson.put("ruleRelationship", group.getRuleRelationship());
+            groupJson.put("remark", group.getRemark());
+            groupJson.put("operate", group.getOperate());
+            groupJson.put("sendType", group.getSendType());
+            JSONArray ruleIds = JSONArray.parseArray(group.getRuleIds());
+            if (Check.isNull(ruleIds)) {
+                continue;
+            }
+            JSONArray ruleDetail = new JSONArray();
+            for (int j = 0; j < ruleIds.size(); j++) {
+                Long ruleId = ruleIds.getLong(j);
+                RuleBase ruleBase = ruleBaseService.getById(ruleId);
+                if (Check.isNull(ruleBase)) {
+                    continue;
+                }
+                JSONObject ruleJson = new JSONObject();
+                ruleJson.put("ruleId", ruleBase.getId());
+                ruleJson.put("ruleName", ruleBase.getRuleName());
+                ruleJson.put("indicatorCode", ruleBase.getIndicatorCode());
+                ruleJson.put("ruleCondition", ruleBase.getRuleCondition());
+                ruleJson.put("threshold", ruleBase.getThreshold());
+                ruleJson.put("ruleDimension", ruleBase.getRuleDimension());
+                ruleJson.put("variableType", ruleBase.getVariableType());
+                /**
+                 * 查询指标对应信息
+                 */
+                QueryWrapper<RuleIndicator> indicatorQueryWrapper = new QueryWrapper<>();
+                indicatorQueryWrapper.eq("code", ruleBase.getIndicatorCode());
+                indicatorQueryWrapper.eq("dimension", ruleBase.getRuleDimension());
+                indicatorQueryWrapper.last("limit 1");
+                RuleIndicator ruleIndicator = ruleIndicatorService.getOne(indicatorQueryWrapper);
+                if (!Check.isNull(ruleIndicator)) {
+                    ruleJson.put("dataType", ruleIndicator.getDataType());
+                    ruleJson.put("dictId", ruleIndicator.getDictId());
+                    ruleJson.put("dataUnit", ruleIndicator.getDataUnit());
+                    ruleJson.put("name", ruleIndicator.getName());
+                    ruleJson.put("modelType", ruleIndicator.getModelType());
+                }
+
+                ruleDetail.add(ruleJson);
+            }
+            groupJson.put("ruleDetail", ruleDetail);
+            ruleList.add(groupJson);
+        }
+
+        returnJson.put("ruleList", ruleList);
+        return returnJson;
+    }
 }