|
|
@@ -2,6 +2,7 @@ package org.jeecg.modules.medical.ruleengine;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
@@ -188,7 +189,7 @@ public class RuleEngine {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- public Result dealMidInterfaceEngin(String intefName, Map<String, Object> paramMap, MidIncidentWarningVO midIncidentWarningVO, String ipStr) {
|
|
|
+ public Result dealMidInterfaceEngin(String intefName, MidIncidentWarningVO midIncidentWarningVO, String ipStr) {
|
|
|
midIncidentWarningVOThreadLocal.set(midIncidentWarningVO);
|
|
|
try {
|
|
|
List<RuleAttr> ruleAttrList = interfRuleAttrList.get(intefName);
|
|
|
@@ -196,13 +197,19 @@ public class RuleEngine {
|
|
|
return Result.error("接口:" + intefName + " 未配置 对应的规则属性");
|
|
|
}
|
|
|
dictUtil.transferMidIncidentWarningVO(midIncidentWarningVO);
|
|
|
+ String jsonStr = JSON.toJSONString(midIncidentWarningVO);
|
|
|
+ log.info("事中提醒接收报文:{}", jsonStr);
|
|
|
+ JSONObject paramMap = JSON.parseObject(jsonStr);
|
|
|
List<Map<String, Object>> itemList = interfItemListPlugin.findProIntersection(paramMap, ruleAttrList);
|
|
|
-
|
|
|
MidIncidentAudit midIncidentAudit = insertMidWarning(midIncidentWarningVO);
|
|
|
insertLog(midIncidentWarningVO);
|
|
|
midIncidentAudit.setInterfName(intefName);
|
|
|
for (Map<String, Object> itemMap : itemList) {
|
|
|
Set<Integer> medicalInsRuleInfoIdList = itemCodeAndRuleIdMap.get(itemMap.get(Constant.MEDICAL_PROJECT_CODE_KEY));
|
|
|
+ if(CollectionUtil.isEmpty(medicalInsRuleInfoIdList)){
|
|
|
+ log.error("项目编码未匹配到对应的医保规则:{}", itemMap.get(Constant.MEDICAL_PROJECT_CODE_KEY));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
Object diagnose = itemMap.get(Constant.MEDICAL_DIAGNOSE_CODE_KEY);
|
|
|
if (null != diagnose) {
|
|
|
//获取诊断编码配置的规则ID,加入需要执行的规则
|
|
|
@@ -376,6 +383,10 @@ public class RuleEngine {
|
|
|
* @param paramMap
|
|
|
*/
|
|
|
public void runEngine(Map<String, Object> paramMap, Set<Integer> medicalInsRuleInfoIdList, MidIncidentAudit midIncidentAudit, String ipStr) {
|
|
|
+ if(CollectionUtil.isEmpty(medicalInsRuleInfoIdList)){
|
|
|
+ log.error("未有对应的规则,接口数据:{}", paramMap);
|
|
|
+ return;
|
|
|
+ }
|
|
|
LambdaQueryWrapper<RuleFactorRela> query = new LambdaQueryWrapper<RuleFactorRela>();
|
|
|
query.eq(RuleFactorRela::getDelFlag, CommonConstant.DEL_FLAG_0);
|
|
|
query.in(RuleFactorRela::getMedicalInsRuleInfoId, medicalInsRuleInfoIdList);
|
|
|
@@ -383,15 +394,16 @@ public class RuleEngine {
|
|
|
List<RuleFactorRela> ruleFactorRelaList = ruleFactorRelaService.list(query);
|
|
|
|
|
|
if (CollectionUtil.isNotEmpty(ruleFactorRelaList)) {
|
|
|
+ Map<Integer, List<RuleFactorRela>> ruleIdAndFatorEnchanceIdMap = ruleFactorRelaList.stream().collect(Collectors.groupingBy(RuleFactorRela::getMedicalInsRuleInfoId));
|
|
|
// Map<Integer, RuleFactorRela> factorEnchanceRuleIdMap = ruleFactorRelaList.stream().collect(Collectors.toMap(RuleFactorRela::getFactorEnhanceId, v -> v, (v1, v2) -> v1));
|
|
|
- List<Integer> factorEnchangeIdList = ruleFactorRelaList.stream().map(RuleFactorRela::getFactorEnhanceId).collect(Collectors.toList());
|
|
|
- List<FactorEnchance> factorEnchanceList = factorEnchanceService.lambdaQuery().in(FactorEnchance::getId, factorEnchangeIdList).list();
|
|
|
-
|
|
|
+ Set<Integer> factorEnchangeIdList = ruleFactorRelaList.stream().map(RuleFactorRela::getFactorEnhanceId).collect(Collectors.toSet());
|
|
|
+ List<FactorEnchance> factorEnchanceList = factorEnchanceService.listByIds(factorEnchangeIdList);
|
|
|
Map<Integer, List<FactorEnchance>> enchanceTypeMap = factorEnchanceList.stream().collect(Collectors.groupingBy(FactorEnchance::getFactorCatalog));
|
|
|
for (Integer medicalRuleInsInfoId : enchanceTypeMap.keySet()) {
|
|
|
MedicalInsRuleInfo medicalInsRuleInfo = medicalInsRuleInfoService.getById(medicalRuleInsInfoId);
|
|
|
List<FactorEnchance> factorEnchanceListTemp = enchanceTypeMap.get(medicalRuleInsInfoId);
|
|
|
paramMap.put(SystemEventAttrConstant.MEDICAL_INS_RULE_INFO_ID, medicalRuleInsInfoId);
|
|
|
+ List<RuleFactorRela> ruleFactorRelaSortList = ruleIdAndFatorEnchanceIdMap.get(medicalRuleInsInfoId);
|
|
|
// List<MedicalInsRuleProject> medicalInsRuleProjectList = medicalInsRuleProjectService.lambdaQuery().eq(MedicalInsRuleProject::getMedicineInsRuleInfoId, medicalRuleInsInfoId).list();
|
|
|
// if(CollectionUtil.isNotEmpty(medicalInsRuleProjectList)) {
|
|
|
// String projectJsonStr = JSON.toJSONString(medicalInsRuleProjectList);
|
|
|
@@ -400,7 +412,7 @@ public class RuleEngine {
|
|
|
//
|
|
|
// }
|
|
|
|
|
|
- factorEnchangeFactory.runFactorEnchange(medicalRuleInsInfoId, medicalInsRuleInfo, midIncidentAudit, paramMap, factorEnchangeIdList, factorEnchanceListTemp);
|
|
|
+ factorEnchangeFactory.runFactorEnchange(medicalRuleInsInfoId, medicalInsRuleInfo, midIncidentAudit, paramMap, ruleFactorRelaSortList, factorEnchanceListTemp);
|
|
|
}
|
|
|
}
|
|
|
webSocket.pushMessage(ipStr, JSON.toJSONString(midIncidentAudit));
|