|  | @@ -1,19 +1,124 @@
 | 
	
		
			
				|  |  |  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.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.IRuleTemplateService;
 | 
	
		
			
				|  |  | -import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +import cn.com.ctop.common.module.utils.Check;
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 规则模板
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @author jeecg-boot
 | 
	
		
			
				|  |  | - * @date   2020-11-15
 | 
	
		
			
				|  |  |   * @version V1.0
 | 
	
		
			
				|  |  | + * @date 2020-11-15
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class RuleTemplateServiceImpl extends ServiceImpl<RuleTemplateMapper, RuleTemplate> implements IRuleTemplateService {
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private IRuleBaseService ruleBaseService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private RuleBaseMapper ruleBaseMapper;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private IRuleGroupService ruleGroupService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 创建规则模板
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param requestJson
 | 
	
		
			
				|  |  | +     * @return
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public JSONObject creativeTemplate(JSONObject requestJson) {
 | 
	
		
			
				|  |  | +        System.err.println(requestJson);
 | 
	
		
			
				|  |  | +        JSONObject returnJson = new JSONObject();
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            Integer mediaType = requestJson.getInteger("mediaType");
 | 
	
		
			
				|  |  | +            if (Check.isNull(mediaType)) {
 | 
	
		
			
				|  |  | +                throw new Exception("请传入媒体类型");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            String templateName = requestJson.getString("templateName");
 | 
	
		
			
				|  |  | +            if (Check.isNull(templateName)) {
 | 
	
		
			
				|  |  | +                throw new Exception("请传入模板名称");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            QueryWrapper<RuleTemplate> queryQueryWrapper = new QueryWrapper<>();
 | 
	
		
			
				|  |  | +            queryQueryWrapper.eq("media_type", mediaType);
 | 
	
		
			
				|  |  | +            queryQueryWrapper.eq("template_name", templateName);
 | 
	
		
			
				|  |  | +            RuleTemplate ruleTemplate = this.getOne(queryQueryWrapper);
 | 
	
		
			
				|  |  | +            if (!Check.isNull(ruleTemplate)) {
 | 
	
		
			
				|  |  | +                throw new Exception("同媒体下模板名称不能相同");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            RuleTemplate template = new RuleTemplate();
 | 
	
		
			
				|  |  | +            template.setMediaType(mediaType);
 | 
	
		
			
				|  |  | +            template.setTemplateName(templateName);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            JSONArray groupIds = new JSONArray();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            JSONArray ruleList = requestJson.getJSONArray("ruleList"); // 模板规则详情
 | 
	
		
			
				|  |  | +            if (Check.isNull(ruleList)) {
 | 
	
		
			
				|  |  | +                throw new Exception("模板具体规则不能为空");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            for (int i = 0; i < ruleList.size(); i++) {
 | 
	
		
			
				|  |  | +                JSONObject ruleGroupJson = ruleList.getJSONObject(i);
 | 
	
		
			
				|  |  | +                if (!Check.isNull(ruleGroupJson)) {
 | 
	
		
			
				|  |  | +                    JSONArray ruleDetailArr = ruleGroupJson.getJSONArray("ruleDetail");
 | 
	
		
			
				|  |  | +                    if (!Check.isNull(ruleDetailArr)) {
 | 
	
		
			
				|  |  | +                        JSONArray ruleIds = new JSONArray();
 | 
	
		
			
				|  |  | +                        for (int j = 0; j < ruleDetailArr.size(); j++) {
 | 
	
		
			
				|  |  | +                            JSONObject ruleDetailJson = ruleDetailArr.getJSONObject(j);
 | 
	
		
			
				|  |  | +                            if (!Check.isNull(ruleDetailJson)) {
 | 
	
		
			
				|  |  | +                                RuleBase ruleBase = new RuleBase();
 | 
	
		
			
				|  |  | +                                ruleBase.setRuleName(ruleDetailJson.getString("ruleName"));
 | 
	
		
			
				|  |  | +                                ruleBase.setIndicatorCode(ruleDetailJson.getString("indicatorCode"));
 | 
	
		
			
				|  |  | +                                ruleBase.setRuleCondition(ruleDetailJson.getString("ruleCondition"));
 | 
	
		
			
				|  |  | +                                ruleBase.setThreshold(ruleDetailJson.getString("threshold"));
 | 
	
		
			
				|  |  | +                                ruleBase.setVariableType(ruleDetailJson.getInteger("variableType"));
 | 
	
		
			
				|  |  | +                                ruleBase.setRuleDimension(ruleDetailJson.getString("ruleDimension"));
 | 
	
		
			
				|  |  | +                                int insert = ruleBaseMapper.insert(ruleBase);
 | 
	
		
			
				|  |  | +                                if (insert > 0) {
 | 
	
		
			
				|  |  | +                                    ruleIds.add(ruleBase.getId());
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        RuleGroup ruleGroup = new RuleGroup();
 | 
	
		
			
				|  |  | +                        ruleGroup.setRuleIds(ruleIds.toJSONString());
 | 
	
		
			
				|  |  | +                        ruleGroup.setRuleType(ruleGroupJson.getString("ruleType"));
 | 
	
		
			
				|  |  | +                        ruleGroup.setRuleRelationship(ruleGroupJson.getString("ruleRelationship"));
 | 
	
		
			
				|  |  | +                        ruleGroup.setGroupName(ruleGroupJson.getString("groupName"));
 | 
	
		
			
				|  |  | +                        ruleGroup.setExplain(ruleGroupJson.getString("explain"));
 | 
	
		
			
				|  |  | +                        boolean save = ruleGroupService.save(ruleGroup);
 | 
	
		
			
				|  |  | +                        if (save) {
 | 
	
		
			
				|  |  | +                            groupIds.add(ruleGroup.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            template.setGroupIds(groupIds.toJSONString());
 | 
	
		
			
				|  |  | +            this.save(template);
 | 
	
		
			
				|  |  | +            returnJson.put("code", 0);
 | 
	
		
			
				|  |  | +            returnJson.put("message", "创建成功");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +            returnJson.put("code", -1);
 | 
	
		
			
				|  |  | +            returnJson.put("message", e.getMessage());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        return returnJson;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |