|
@@ -18,6 +18,7 @@ import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
/**
|
|
|
* Created by IntelliJ IDEA.
|
|
@@ -83,8 +84,9 @@ public class RuleCalcUnit extends CalcUnit {
|
|
|
@Override
|
|
|
public List<CalcUnit> getSourceCalcUnits() {
|
|
|
List<IndexConfigModel> indexConfigModels = indexConfigService.selectIndexListByRuleNo(this.reqRule.getRuleNo());
|
|
|
- return indexConfigModels.stream()
|
|
|
+ List<CalcUnit> collect =indexConfigModels.stream()
|
|
|
.map(item -> new IndexCalcUnit(item.getIndexNo(), item.getIndexName(), Map.of(), item)).collect(Collectors.toList());
|
|
|
+ return collect;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -129,10 +131,12 @@ public class RuleCalcUnit extends CalcUnit {
|
|
|
// 所有规则计算的结果
|
|
|
Map<String, Object> indexResMap = new HashMap<>();
|
|
|
|
|
|
+ AtomicReference<Object> indexResult = new AtomicReference<>("");
|
|
|
sourceResults.forEach((calcUnit, calcResult) -> {
|
|
|
String key = indexParamMap.get(calcUnit.getCalcCode());
|
|
|
Object value = calcResult.get(calcUnit.getCalcCode());
|
|
|
indexResMap.put(key, value);
|
|
|
+ indexResult.set(value);
|
|
|
});
|
|
|
|
|
|
// 规则的模板
|
|
@@ -144,15 +148,18 @@ public class RuleCalcUnit extends CalcUnit {
|
|
|
// 执行脚本结果
|
|
|
Object res = ScriptUtil.executeScript("script-rule-" + getCalcCode(), script, indexResMap);
|
|
|
|
|
|
-
|
|
|
Map<String, Object> resMap = new HashMap<>();
|
|
|
|
|
|
- resMap.put("scriptRes",res);
|
|
|
- resMap.put("ruleNo", getCalcCode());
|
|
|
- resMap.put("indexRes", indexResMap);
|
|
|
- resMap.put("resultType", reqRule.getRuleResult());
|
|
|
- resMap.put("ruleDesc",reqRule.getTemplateDesc());
|
|
|
- resMap.put("ruleResult",TemplateUtil.execute("template-ruleConclusion-" + getCalcCode(),reqRule.getRuleConclusionTemplate(), indexResMap));
|
|
|
+ resMap.put("resCalc",res);//计算结果 true false
|
|
|
+ resMap.put("ruleNo", getCalcCode());//规则编号
|
|
|
+ resMap.put("indexRes", indexResMap);//指标结果
|
|
|
+ resMap.put("resultType", reqRule.getRuleResult());//规则的结果 0=无 1=拦截 2=预警
|
|
|
+ //resMap.put("ruleDesc",reqRule.getTemplateDesc());//规则描述
|
|
|
+ resMap.put("datasource",reqRule.getRuleDatasour());
|
|
|
+ //规则结论
|
|
|
+ Map<String,Object> tempMap=new HashMap<>()(resMap);
|
|
|
+ tempMap.putAll(indexResMap);
|
|
|
+ resMap.put("ruleResult",TemplateUtil.execute("template-ruleConclusion-" + getCalcCode(),reqRule.getRuleConclusionTemplate(), tempMap));
|
|
|
|
|
|
// 放计算结果
|
|
|
thisResult.put(this.getCalcCode(), resMap);
|