规则命中返回配置

This commit is contained in:
andywang
2022-08-10 14:25:46 +08:00
parent f11ba7b1bc
commit 34f868b21b
7 changed files with 29 additions and 10 deletions

View File

@@ -12,4 +12,5 @@ public class SessionData {
private Long organId; // 组织id private Long organId; // 组织id
private Long engineId; // 引擎id private Long engineId; // 引擎id
private Integer reqType;//请求类型 private Integer reqType;//请求类型
private Integer ruleHitRspConfig; // 规则命中返回配置默认10未命中不返回1未命中返回
} }

View File

@@ -272,10 +272,7 @@ public class RuleServiceImpl extends ServiceImpl<RuleInfoMapper, RuleInfo> imple
@Override @Override
public List<JSONObject> setComplexRuleOutput(Long versionId, Map<String,Object> temp, Map<String, Object> input, String outType) { public List<JSONObject> setComplexRuleOutput(Long versionId, Map<String,Object> temp, Map<String, Object> input, String outType) {
List<JSONObject> jsonObjectList = outputService.setOutput(new StrategyOutput(versionId, StrategyType.COMPLEX_RULE,outType), temp); List<JSONObject> jsonObjectList = outputService.setOutput(new StrategyOutput(versionId, StrategyType.COMPLEX_RULE,outType), input, temp);
// for (JSONObject jsonObject : jsonObjectList) {
// input.putAll(jsonObject);
// }
return jsonObjectList; return jsonObjectList;
} }

View File

@@ -24,5 +24,7 @@ public interface StrategyOutputService extends IService<StrategyOutput> {
List<JSONObject> setOutput(StrategyOutput entity, Map<String,Object> input); List<JSONObject> setOutput(StrategyOutput entity, Map<String,Object> input);
List<JSONObject> setOutput(StrategyOutput entity, Map<String,Object> input, Map<String,Object> temp);
boolean judgeOutCondition(String condition,Map<String,Object> input); boolean judgeOutCondition(String condition,Map<String,Object> input);
} }

View File

@@ -130,6 +130,11 @@ public class StrategyOutputServiceImpl extends ServiceImpl<StrategyOutputMapper,
//设置输出传入map向map中放入输出并且返回输出列表 //设置输出传入map向map中放入输出并且返回输出列表
@Override @Override
public List<JSONObject> setOutput(StrategyOutput entity, Map<String, Object> input) { public List<JSONObject> setOutput(StrategyOutput entity, Map<String, Object> input) {
return setOutput(entity, input, null);
}
@Override
public List<JSONObject> setOutput(StrategyOutput entity, Map<String, Object> input, Map<String,Object> temp) {
List<StrategyOutput> strategyOutputList = this.queryByTactics(entity); List<StrategyOutput> strategyOutputList = this.queryByTactics(entity);
List<JSONObject> jsonList = new ArrayList<>(); List<JSONObject> jsonList = new ArrayList<>();
if (strategyOutputList != null && strategyOutputList.size() > 0) { if (strategyOutputList != null && strategyOutputList.size() > 0) {
@@ -161,6 +166,9 @@ public class StrategyOutputServiceImpl extends ServiceImpl<StrategyOutputMapper,
if(!field.getIsLocalVariable()){ if(!field.getIsLocalVariable()){
input.put(fieldEn, value); input.put(fieldEn, value);
} }
if(temp != null){
temp.put(fieldEn, value);
}
jsonList.add(json); jsonList.add(json);
} }
} }

View File

@@ -42,6 +42,7 @@ public class RiskEngineApi {
sessionData.setOrganId(bizData.getOrganId()); sessionData.setOrganId(bizData.getOrganId());
sessionData.setEngineId(bizData.getEngineId()); sessionData.setEngineId(bizData.getEngineId());
sessionData.setReqType(1); sessionData.setReqType(1);
sessionData.setRuleHitRspConfig(bizData.getRuleHitRspConfig());
RunnerSessionManager.setSession(sessionData); RunnerSessionManager.setSession(sessionData);
if(bizData.getFields() != null){ if(bizData.getFields() != null){

View File

@@ -15,4 +15,5 @@ public class DecisionApiBizData {
private Long organId; // 组织id private Long organId; // 组织id
private Long engineId; // 引擎id private Long engineId; // 引擎id
private Map<String, Object> fields; // 指标字段键值对 private Map<String, Object> fields; // 指标字段键值对
private Integer ruleHitRspConfig; // 规则命中返回配置0未命中不返回1未命中返回
} }

View File

@@ -12,6 +12,8 @@ import com.fibo.ddp.common.model.strategyx.guiderule.vo.RuleBlockVo;
import com.fibo.ddp.common.model.strategyx.guiderule.vo.RuleConditionVo; import com.fibo.ddp.common.model.strategyx.guiderule.vo.RuleConditionVo;
import com.fibo.ddp.common.model.strategyx.guiderule.vo.RuleVersionVo; import com.fibo.ddp.common.model.strategyx.guiderule.vo.RuleVersionVo;
import com.fibo.ddp.common.model.strategyx.scriptrule.RuleScriptVersion; import com.fibo.ddp.common.model.strategyx.scriptrule.RuleScriptVersion;
import com.fibo.ddp.common.service.common.runner.RunnerSessionManager;
import com.fibo.ddp.common.service.common.runner.SessionData;
import com.fibo.ddp.common.service.datax.datamanage.FieldService; import com.fibo.ddp.common.service.datax.datamanage.FieldService;
import com.fibo.ddp.common.service.datax.runner.CommonService; import com.fibo.ddp.common.service.datax.runner.CommonService;
import com.fibo.ddp.common.service.datax.runner.ExecuteUtils; import com.fibo.ddp.common.service.datax.runner.ExecuteUtils;
@@ -346,12 +348,16 @@ public class RuleSetNode implements EngineRunnerNode {
} }
String resultFieldEn = hitRuleBlock.getResultFieldEn(); String resultFieldEn = hitRuleBlock.getResultFieldEn();
String outputFieldEn = hitRuleBlock.getResultFieldEn();
if (resultFieldEn == null || "".equals(resultFieldEn)) { if (resultFieldEn == null || "".equals(resultFieldEn)) {
resultFieldEn = "rule_" + rule.getId() + "_" + ruleVersion.getId() + "_" + hitRuleBlock.getId() + "_hitResult"; resultFieldEn = "rule_" + rule.getId() + "_" + ruleVersion.getId() + "_" + hitRuleBlock.getId() + "_hitResult";
outputFieldEn = "ruleResult";
} }
String scoreFieldEn = hitRuleBlock.getScoreFieldEn(); String scoreFieldEn = hitRuleBlock.getScoreFieldEn();
String outputScoreEn = hitRuleBlock.getScoreFieldEn();
if (StringUtils.isBlank(scoreFieldEn)) { if (StringUtils.isBlank(scoreFieldEn)) {
scoreFieldEn = "rule_" + rule.getId() + "_" + ruleVersion.getId() + "_" + hitRuleBlock.getId() + "_score"; scoreFieldEn = "rule_" + rule.getId() + "_" + ruleVersion.getId() + "_" + hitRuleBlock.getId() + "_score";
outputScoreEn = "ruleScore";
} }
input.put(resultFieldEn, "未命中"); input.put(resultFieldEn, "未命中");
//根据执行的最终结果处理此规则输出内容 //根据执行的最终结果处理此规则输出内容
@@ -361,27 +367,30 @@ public class RuleSetNode implements EngineRunnerNode {
ruleMap.put("ruleResult", "命中"); ruleMap.put("ruleResult", "命中");
ruleMap.put("ruleScore", hitRuleBlock.getScore()); ruleMap.put("ruleScore", hitRuleBlock.getScore());
JSONObject scoreJson = new JSONObject(); JSONObject scoreJson = new JSONObject();
resultJson.put(resultFieldEn, "命中"); resultJson.put(outputFieldEn, "命中");
fieldList.add(resultJson); fieldList.add(resultJson);
// if (StringUtils.isNotBlank(ruleVersion.getScoreFieldEn())) { scoreJson.put(outputScoreEn, hitRuleBlock.getScore());
scoreJson.put(scoreFieldEn, hitRuleBlock.getScore());
fieldList.add(scoreJson); fieldList.add(scoreJson);
input.put(scoreFieldEn, hitRuleBlock.getScore()); input.put(scoreFieldEn, hitRuleBlock.getScore());
// }
input.put(resultFieldEn, "命中"); input.put(resultFieldEn, "命中");
//处理此规则需要输出的内容 //处理此规则需要输出的内容
fieldList.addAll(ruleService.setComplexRuleOutput(hitRuleBlock.getId(), temp, input, StrategyType.OutType.SUCCESS_OUT)); fieldList.addAll(ruleService.setComplexRuleOutput(hitRuleBlock.getId(), temp, input, StrategyType.OutType.SUCCESS_OUT));
ruleMap.put("fieldList", fieldList); ruleMap.put("fieldList", fieldList);
hitFlag = true; hitFlag = true;
ruleResultList.add(ruleMap);
} else { } else {
resultJson.put(resultFieldEn, "未命中"); resultJson.put(outputFieldEn, "未命中");
ruleMap.put("ruleScore", 0); ruleMap.put("ruleScore", 0);
input.put(scoreFieldEn, 0); input.put(scoreFieldEn, 0);
fieldList.add(resultJson); fieldList.add(resultJson);
fieldList.addAll(ruleService.setComplexRuleOutput(hitRuleBlock.getId(), temp, input, StrategyType.OutType.FAIL_OUT)); fieldList.addAll(ruleService.setComplexRuleOutput(hitRuleBlock.getId(), temp, input, StrategyType.OutType.FAIL_OUT));
ruleMap.put("fieldList", fieldList); ruleMap.put("fieldList", fieldList);
} SessionData sessionData = RunnerSessionManager.getSession();
if(sessionData.getRuleHitRspConfig() == null || sessionData.getRuleHitRspConfig() == 1){
ruleResultList.add(ruleMap); ruleResultList.add(ruleMap);
}
}
return hitFlag; return hitFlag;
} }