|
@@ -7,6 +7,8 @@ import com.diagbot.dto.RuleConditionInitDTO;
|
|
|
import com.diagbot.dto.RuleDTO;
|
|
|
import com.diagbot.dto.RuleInitDTO;
|
|
|
import com.diagbot.enums.RedisEnum;
|
|
|
+import com.diagbot.exception.CommonErrorCode;
|
|
|
+import com.diagbot.exception.CommonException;
|
|
|
import com.diagbot.facade.KlRuleFacade;
|
|
|
import com.diagbot.util.BeanUtil;
|
|
|
import com.diagbot.util.EntityUtil;
|
|
@@ -39,71 +41,74 @@ public class RuleAggregate {
|
|
|
@DataConsumer("getRuleInit") Map<String, List<RuleInitDTO>> ruleInits,
|
|
|
@DataConsumer("getRuleConditionInit") Map<Integer, Map<String, List<RuleConditionInitDTO>>> ruleConditionInits,
|
|
|
@DataConsumer("getRuleBaseInit") Map<Integer, List<RuleBaseInitDTO>> ruleBaseInits) {
|
|
|
- Map<String, RuleDTO> res = new HashMap();
|
|
|
- //结果判空第一层规则类型
|
|
|
- if (MapUtils.isNotEmpty(ruleInits)) {
|
|
|
- for (String ruleKey : ruleInits.keySet()) {
|
|
|
- RuleInitDTO ruleInitZeroDTO = ruleInits.get(ruleKey).get(0);
|
|
|
- RuleDTO ruleDTO = new RuleDTO();
|
|
|
- ruleDTO.setLibName(ruleInitZeroDTO.getLibName());
|
|
|
- ruleDTO.setLibType(ruleInitZeroDTO.getLibType());
|
|
|
- ruleDTO.setRuleType(ruleInitZeroDTO.getRuleType());
|
|
|
- Map<String, Integer> ruleConditionMap = new HashMap<>();
|
|
|
- for (RuleInitDTO ruleInitDTO : ruleInits.get(ruleKey)) {
|
|
|
- if (ruleInitDTO.getHasSubCond().equals(1)) {
|
|
|
- Map<String, List<RuleConditionInitDTO>> map = ruleConditionInits.get(ruleInitDTO.getRuleId());
|
|
|
- //结果判空第二层条件组别
|
|
|
- if (MapUtils.isNotEmpty(map)) {
|
|
|
- for (String ruleGroup : map.keySet()) {
|
|
|
- RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
|
|
|
- ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
|
|
|
- ruleConditionDTO.setRuleGroup(ruleGroup);
|
|
|
- //结果判空第三层条件明细
|
|
|
- if (ListUtil.isNotEmpty(map.get(ruleGroup))) {
|
|
|
- List<List<RuleBaseDTO>> ruleBaseList = new ArrayList<>();
|
|
|
- for (RuleConditionInitDTO ruleConditionInitDTO : map.get(ruleGroup)) {
|
|
|
- ruleConditionDTO.setMsg(ruleConditionInitDTO.getMsg());
|
|
|
- List<RuleBaseInitDTO> ruleBaseInitDTOList = ruleBaseInits.get(ruleConditionInitDTO.getRuleBaseId());
|
|
|
- if (ListUtil.isNotEmpty(ruleBaseInitDTOList)) {
|
|
|
- List<RuleBaseDTO> ruleBaseDTOList = BeanUtil.listCopyTo(ruleBaseInitDTOList, RuleBaseDTO.class);
|
|
|
- ruleBaseList.add(ruleBaseDTOList);
|
|
|
+ try {
|
|
|
+ Map<String, RuleDTO> res = new HashMap();
|
|
|
+ //结果判空第一层规则类型
|
|
|
+ if (MapUtils.isNotEmpty(ruleInits)) {
|
|
|
+ for (String ruleKey : ruleInits.keySet()) {
|
|
|
+ RuleInitDTO ruleInitZeroDTO = ruleInits.get(ruleKey).get(0);
|
|
|
+ RuleDTO ruleDTO = new RuleDTO();
|
|
|
+ ruleDTO.setLibName(ruleInitZeroDTO.getLibName());
|
|
|
+ ruleDTO.setLibType(ruleInitZeroDTO.getLibType());
|
|
|
+ ruleDTO.setRuleType(ruleInitZeroDTO.getRuleType());
|
|
|
+ Map<String, Integer> ruleConditionMap = new HashMap<>();
|
|
|
+ for (RuleInitDTO ruleInitDTO : ruleInits.get(ruleKey)) {
|
|
|
+ if (ruleInitDTO.getHasSubCond().equals(1)) {
|
|
|
+ Map<String, List<RuleConditionInitDTO>> map = ruleConditionInits.get(ruleInitDTO.getRuleId());
|
|
|
+ //结果判空第二层条件组别
|
|
|
+ if (MapUtils.isNotEmpty(map)) {
|
|
|
+ for (String ruleGroup : map.keySet()) {
|
|
|
+ RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
|
|
|
+ ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
|
|
|
+ ruleConditionDTO.setRuleGroup(ruleGroup);
|
|
|
+ //结果判空第三层条件明细
|
|
|
+ if (ListUtil.isNotEmpty(map.get(ruleGroup))) {
|
|
|
+ List<List<RuleBaseDTO>> ruleBaseList = new ArrayList<>();
|
|
|
+ for (RuleConditionInitDTO ruleConditionInitDTO : map.get(ruleGroup)) {
|
|
|
+ ruleConditionDTO.setMsg(ruleConditionInitDTO.getMsg());
|
|
|
+ List<RuleBaseInitDTO> ruleBaseInitDTOList = ruleBaseInits.get(ruleConditionInitDTO.getRuleBaseId());
|
|
|
+ if (ListUtil.isNotEmpty(ruleBaseInitDTOList)) {
|
|
|
+ List<RuleBaseDTO> ruleBaseDTOList = BeanUtil.listCopyTo(ruleBaseInitDTOList, RuleBaseDTO.class);
|
|
|
+ ruleBaseList.add(ruleBaseDTOList);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //笛卡尔积
|
|
|
- List<List<RuleBaseDTO>> ruleBaseGroup = new ArrayList<>();
|
|
|
- descartes(ruleBaseList, ruleBaseGroup, 0, new ArrayList<>());
|
|
|
- for (List<RuleBaseDTO> ruleBaseDTOList : ruleBaseGroup) {
|
|
|
- RuleConditionDTO ruleConditionDTO1 = new RuleConditionDTO();
|
|
|
- ruleConditionDTO1.setHasSubCond(ruleConditionDTO.getHasSubCond());
|
|
|
- ruleConditionDTO1.setRuleGroup(ruleConditionDTO.getRuleGroup());
|
|
|
- ruleConditionDTO1.setMsg(ruleConditionDTO.getMsg());
|
|
|
- ruleConditionDTO1.getRuleBaseDTOList().addAll(ruleBaseDTOList);
|
|
|
- if (!ruleConditionMap.containsKey(ruleConditionDTO1.toString())) {
|
|
|
- ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO1);
|
|
|
- ruleConditionMap.put(ruleConditionDTO1.toString(), 1);
|
|
|
+ //笛卡尔积
|
|
|
+ List<List<RuleBaseDTO>> ruleBaseGroup = new ArrayList<>();
|
|
|
+ descartes(ruleBaseList, ruleBaseGroup, 0, new ArrayList<>());
|
|
|
+ for (List<RuleBaseDTO> ruleBaseDTOList : ruleBaseGroup) {
|
|
|
+ RuleConditionDTO ruleConditionDTO1 = new RuleConditionDTO();
|
|
|
+ ruleConditionDTO1.setHasSubCond(ruleConditionDTO.getHasSubCond());
|
|
|
+ ruleConditionDTO1.setRuleGroup(ruleConditionDTO.getRuleGroup());
|
|
|
+ ruleConditionDTO1.setMsg(ruleConditionDTO.getMsg());
|
|
|
+ ruleConditionDTO1.getRuleBaseDTOList().addAll(ruleBaseDTOList);
|
|
|
+ if (!ruleConditionMap.containsKey(ruleConditionDTO1.toString())) {
|
|
|
+ ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO1);
|
|
|
+ ruleConditionMap.put(ruleConditionDTO1.toString(), 1);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- }
|
|
|
- } else {
|
|
|
- RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
|
|
|
- ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
|
|
|
- ruleConditionDTO.setMsg(ruleInitDTO.getMsg());
|
|
|
- //无条件
|
|
|
- ruleConditionDTO.setRuleGroup(ruleInitDTO.getRuleId() + "-1");
|
|
|
- ruleConditionDTO.getRuleBaseDTOList().add(new RuleBaseDTO());
|
|
|
- if (!ruleConditionMap.containsKey(ruleConditionDTO.toString())) {
|
|
|
- ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO);
|
|
|
- ruleConditionMap.put(ruleConditionDTO.toString(), 1);
|
|
|
+ } else {
|
|
|
+ RuleConditionDTO ruleConditionDTO = new RuleConditionDTO();
|
|
|
+ ruleConditionDTO.setHasSubCond(ruleInitDTO.getHasSubCond());
|
|
|
+ ruleConditionDTO.setMsg(ruleInitDTO.getMsg());
|
|
|
+ //无条件
|
|
|
+ ruleConditionDTO.setRuleGroup(ruleInitDTO.getRuleId() + "-1");
|
|
|
+ ruleConditionDTO.getRuleBaseDTOList().add(new RuleBaseDTO());
|
|
|
+ if (!ruleConditionMap.containsKey(ruleConditionDTO.toString())) {
|
|
|
+ ruleDTO.getRuleConditionDTOList().add(ruleConditionDTO);
|
|
|
+ ruleConditionMap.put(ruleConditionDTO.toString(), 1);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ res.put(RedisEnum.allRule.getName() + ruleDTO.getLibType() + "_" + ruleDTO.getLibName() + "_" + ruleDTO.getRuleType(), ruleDTO);
|
|
|
}
|
|
|
- res.put(RedisEnum.allRule.getName() + ruleDTO.getLibType() + "_" + ruleDTO.getLibName() + "_" + ruleDTO.getRuleType(), ruleDTO);
|
|
|
}
|
|
|
+ return res;
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "全部规则加载出错:" + e.getMessage());
|
|
|
}
|
|
|
- return res;
|
|
|
}
|
|
|
|
|
|
@DataProvider("getRuleInit")
|
|
@@ -112,19 +117,19 @@ public class RuleAggregate {
|
|
|
return EntityUtil.makeEntityListMap(list, "conceptGroup");
|
|
|
}
|
|
|
|
|
|
-// @DataProvider("getRuleInit")
|
|
|
-// public Map<String, List<RuleInitDTO>> getRuleInit(
|
|
|
-// @DataConsumer("getRuleInitNotHaveClass") List<RuleInitDTO> ruleNotHaveClass,
|
|
|
-// @DataConsumer("getRuleInitHaveClass") List<RuleInitDTO> ruleHaveClass) {
|
|
|
-// List<RuleInitDTO> list = new ArrayList<>();
|
|
|
-// if (ListUtil.isNotEmpty(ruleNotHaveClass)) {
|
|
|
-// list.addAll(ruleNotHaveClass);
|
|
|
-// }
|
|
|
-// if (ListUtil.isNotEmpty(ruleHaveClass)) {
|
|
|
-// list.addAll(ruleHaveClass);
|
|
|
-// }
|
|
|
-// return EntityUtil.makeEntityListMap(list, "conceptGroup");
|
|
|
-// }
|
|
|
+ // @DataProvider("getRuleInit")
|
|
|
+ // public Map<String, List<RuleInitDTO>> getRuleInit(
|
|
|
+ // @DataConsumer("getRuleInitNotHaveClass") List<RuleInitDTO> ruleNotHaveClass,
|
|
|
+ // @DataConsumer("getRuleInitHaveClass") List<RuleInitDTO> ruleHaveClass) {
|
|
|
+ // List<RuleInitDTO> list = new ArrayList<>();
|
|
|
+ // if (ListUtil.isNotEmpty(ruleNotHaveClass)) {
|
|
|
+ // list.addAll(ruleNotHaveClass);
|
|
|
+ // }
|
|
|
+ // if (ListUtil.isNotEmpty(ruleHaveClass)) {
|
|
|
+ // list.addAll(ruleHaveClass);
|
|
|
+ // }
|
|
|
+ // return EntityUtil.makeEntityListMap(list, "conceptGroup");
|
|
|
+ // }
|
|
|
|
|
|
@DataProvider("getRuleConditionInit")
|
|
|
public Map<Integer, Map<String, List<RuleConditionInitDTO>>> getRuleConditionInit() {
|