Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

lenovodn 2 лет назад
Родитель
Сommit
27cc618577

+ 18 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/SystemEventAttrConstant.java

@@ -115,4 +115,22 @@ public class SystemEventAttrConstant {
      */
     public static final String PRE_ADVANCEWARNINGAUDIT_ID_KEY = "pre_advancewarningaudit_id";
 
+    /**
+     * 原始的HIS接口医嘱明细列表
+     */
+    public static final String ADVICE_DETAILS_LIST_KEY = "source_advice_details_list";
+
+    /**
+     * 费用类别统计
+     */
+    public static final String EXPENSE_CATEGORY_COUNT = "expense_category_count";
+    /**
+     * 费用类别分组列表前缀
+     */
+    public static final String EXPENSE_CATEGORY_GROUP = "expense_category_group";
+
+    /**
+     * 费用类别项目
+     */
+    public static final String EXPENSE_CATEGORY = "expense_category";
 }

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/OperaterEnum.java

@@ -10,7 +10,7 @@ import java.math.BigDecimal;
  * 9:存在于,10:不存在于,11:数组包含,12:数组不包含,13:为空,14:不为空
  */
 public enum OperaterEnum {
-    EQ(1,"=="),NOTEQ(2,"<>"),GT(3,">"),LT(4,"<"),
+    EQ(1,"=="),NOTEQ(2,"!="),GT(3,">"),LT(4,"<"),
     GET(5,">="),LET(6,"<="),MEMBER(7,"isMember"),NOTMEMER(8,"isNotMember"),
     ADD(21, "+"),MULTIPLY(22,"*"),DIVIDE(23,"/"),SUBSTRACT(20,"-");
     private Integer operater;

+ 2 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/RuleEngine.java

@@ -388,6 +388,7 @@ public class RuleEngine {
                         }
                     }
                 }
+                paramMap.put(SystemEventAttrConstant.ADVICE_DETAILS_LIST_KEY, itemList);
                 sendFlag = runMidEngine(auditDetailSet, itemMap, medicalInsRuleInfoIdList, midIncidentAudit, itemList);
             }
 
@@ -772,6 +773,7 @@ public class RuleEngine {
                 paramMap.put(SystemEventAttrConstant.MEDICAL_INS_RULE_INFO_NAME, medicalInsRuleInfo.getRuleName());
                 List<RuleFactorRela> ruleFactorRelaSortList = ruleIdAndFatorEnchanceIdMap.get(medicalRuleInsInfoId);
                 getRuleProjectIntoMap(medicalInsRuleInfo, paramMap);
+                paramMap.put(SystemEventAttrConstant.ADVICE_DETAILS_LIST_KEY, itemList);
                 boolean auditFlag = factorEnchangeFactory.runFactorEnchange(medicalRuleInsInfoId, medicalInsRuleInfo, afterIncidentAudit, paramMap, ruleFactorRelaSortList, factorEnchanceListTemp, itemList);
                 if (Constant.VALIDATION_HANDER_METHOD_RETURN.equals(medicalInsRuleInfo.getViolationHandingMethod()) && auditFlag) {
                     log.error("事后提醒数据:{} 规则名:{} 触发诊断类规则,直接全金额,后续规则无需再跑", paramMap, medicalInsRuleInfo);

+ 15 - 14
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/SPELUtil.java

@@ -324,7 +324,7 @@ public class SPELUtil {
 
 
     public static void main(String[] args) {
-//        SPELUtil spelUtil = new SPELUtil();
+        SPELUtil spelUtil = new SPELUtil();
 //        Map<String, Object> inMap = new HashMap<>();
 //        inMap.put("1123", "342343");
 //        inMap.put("1124", 2);
@@ -342,19 +342,20 @@ public class SPELUtil {
 //        System.out.println(spelUtil.isMemberLeftLong(3L, lList));
 ////        String condStr = "isMemberLeftObject(#medical_diagnose_code,#medical_ins_medicalDiagnoseCodeList) && #change_class<>#medical_ins_changeClass";
 //        String condStr = "#isMemberListAndList(#medical_diagnose_code,#medical_ins_medicalDiagnoseCodeList) ";
+
+        Map<String, Object> itemMap1 = new HashMap<>();
+        itemMap1.put("medical_diagnose_code", Arrays.asList("1", "2", "3"));
+        itemMap1.put("medical_ins_medicalDiagnoseCodeList", Arrays.asList("3", "5", "6"));
+        String condStr = "'1' != '1'";
+        System.out.println(spelUtil.runSpelExpression(itemMap1, condStr));
+//        String test ="A0123123";
+//        System.out.println(isNumeric(test));
+//        String[] rolesArr = new String []{"correlationMedicalDiagnoseCode","111"};
+//        boolean cMedicalDiagnoseCodeFlag = Arrays.stream(rolesArr).anyMatch(role -> role.equals("correlationMedicalDiagnoseCode"));
+//        System.out.println(cMedicalDiagnoseCodeFlag);
 //
-//        Map<String, Object> itemMap1 = new HashMap<>();
-//        itemMap1.put("medical_diagnose_code", Arrays.asList("1", "2", "3"));
-//        itemMap1.put("medical_ins_medicalDiagnoseCodeList", Arrays.asList("3", "5", "6"));
-//        System.out.println(spelUtil.runSpelExpression(itemMap1, condStr));
-        String test ="A0123123";
-        System.out.println(isNumeric(test));
-        String[] rolesArr = new String []{"correlationMedicalDiagnoseCode","111"};
-        boolean cMedicalDiagnoseCodeFlag = Arrays.stream(rolesArr).anyMatch(role -> role.equals("correlationMedicalDiagnoseCode"));
-        System.out.println(cMedicalDiagnoseCodeFlag);
-
-        String srcStr = "sfdsalfjasldfjsadlfjsald;fj1123";
-        String key = "fdsalf";
-        System.out.println(startWithKey(srcStr, key));
+//        String srcStr = "sfdsalfjasldfjsadlfjsald;fj1123";
+//        String key = "fdsalf";
+//        System.out.println(startWithKey(srcStr, key));
     }
 }

+ 68 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/ruleengine/plugin/GroupbyExpenseCategoryPlugin.java

@@ -0,0 +1,68 @@
+package org.jeecg.modules.medical.ruleengine.plugin;
+
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.modules.medical.Constant;
+import org.jeecg.modules.medical.SystemEventAttrConstant;
+import org.jeecg.modules.medical.entity.FactorAttrRela;
+import org.jeecg.modules.medical.entity.FactorEnchance;
+import org.jeecg.modules.medical.ruleengine.PluginInterface;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 对费用类别进行分组统计,并设置
+ */
+@Slf4j
+@Component("groupbyExpenseCategoryPlugin")
+public class GroupbyExpenseCategoryPlugin implements PluginInterface {
+    @Override
+    public void plugin(Map<String, Object> localMap, Map<Integer, List<FactorAttrRela>> ioTypeMap, FactorEnchance factorEnchance, Integer medicalInsRuleInfoId) {
+        try {
+            Object adviceList = localMap.get(SystemEventAttrConstant.ADVICE_DETAILS_LIST_KEY);
+            if (null != adviceList) {
+                List<Map<String, Object>> adviceMapList = (List<Map<String, Object>>) adviceList;
+                Map<String, Integer> expenseCategoryIntMap = new HashMap<>();
+                Map<String, List<String>> expenseCategoryProjectCodeMap = new HashMap<>();
+                for (Map<String, Object> adviceMap : adviceMapList) {
+                    String expenseCategory = adviceMap.getOrDefault(SystemEventAttrConstant.EXPENSE_CATEGORY, "").toString();
+                    String expenseCategoryKey = SystemEventAttrConstant.EXPENSE_CATEGORY_COUNT + "_" + expenseCategory;
+                    String expenseCategoryProjectCodeKey = SystemEventAttrConstant.EXPENSE_CATEGORY_GROUP+"_"+expenseCategory;
+                    if (StringUtils.isNotBlank(expenseCategory)) {
+                        if (expenseCategoryIntMap.containsKey(expenseCategoryKey)) {
+                            int exInt = expenseCategoryIntMap.get(expenseCategoryKey).intValue() + 1;
+                            expenseCategoryIntMap.put(expenseCategoryKey, exInt);
+                        } else {
+                            expenseCategoryIntMap.put(expenseCategoryKey, 1);
+                        }
+                        if(null != adviceMap.get(Constant.PROJECT_CODE_KEY)) {
+                            if (expenseCategoryProjectCodeMap.containsKey(expenseCategory)) {
+                                expenseCategoryProjectCodeMap.get(expenseCategoryProjectCodeKey).add(adviceMap.get(Constant.PROJECT_CODE_KEY).toString());
+                            } else {
+                                List tempList = new ArrayList();
+                                tempList.add(adviceMap.get(Constant.PROJECT_CODE_KEY).toString());
+                                expenseCategoryProjectCodeMap.put(expenseCategoryProjectCodeKey, tempList);
+                            }
+                        }
+                    }
+
+
+                }
+                if (CollectionUtil.isNotEmpty(expenseCategoryIntMap)) {
+                    localMap.putAll(expenseCategoryIntMap);
+                }
+
+                if (CollectionUtil.isNotEmpty(expenseCategoryProjectCodeMap)) {
+                    localMap.putAll(expenseCategoryProjectCodeMap);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+    }
+}