Pārlūkot izejas kodu

优化事中审核推送websocket消息

0027005599 2 gadi atpakaļ
vecāks
revīzija
3e3c48da63

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

@@ -225,6 +225,7 @@ public class RuleEngine {
             insertLog(midIncidentWarningVO);
             midIncidentAudit.setInterfName(intefName);
             Set<String> auditDetailSet = new HashSet<>();
+            boolean sendFlag = false;
             for (Map<String, Object> itemMap : itemList) {
                 Set<Integer> medicalInsRuleInfoIdList = itemCodeAndRuleIdMap.get(itemMap.get(Constant.MEDICAL_PROJECT_CODE_KEY));
                 if (CollectionUtil.isEmpty(medicalInsRuleInfoIdList)) {
@@ -242,9 +243,13 @@ public class RuleEngine {
                         }
                     }
                 }
-                runMidEngine(auditDetailSet, itemMap, medicalInsRuleInfoIdList, midIncidentAudit, itemList);
+                sendFlag = runMidEngine(auditDetailSet, itemMap, medicalInsRuleInfoIdList, midIncidentAudit, itemList);
+            }
+            if(sendFlag) {
+                webSocket.pushMessage(ipStr, JSON.toJSONString(midIncidentAudit));
+            }else{
+                log.error("无违规,事中审核无需提醒 门诊/住院号:{}", midIncidentWarningVO.getVisit_no());
             }
-            webSocket.pushMessage(ipStr, JSON.toJSONString(midIncidentAudit));
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         } finally {
@@ -517,10 +522,10 @@ public class RuleEngine {
      *
      * @param paramMap
      */
-    public void runMidEngine(Set<String> auditDetailSet, Map<String, Object> paramMap, Set<Integer> medicalInsRuleInfoIdList, MidIncidentAudit midIncidentAudit, List<Map<String,Object>> itemList) {
+    public boolean runMidEngine(Set<String> auditDetailSet, Map<String, Object> paramMap, Set<Integer> medicalInsRuleInfoIdList, MidIncidentAudit midIncidentAudit, List<Map<String,Object>> itemList) {
         if (CollectionUtil.isEmpty(medicalInsRuleInfoIdList)) {
             log.error("未有对应的规则,接口数据:{}", paramMap);
-            return;
+            return false;
         }
         LambdaQueryWrapper<RuleFactorRela> query = new LambdaQueryWrapper<RuleFactorRela>();
         query.eq(RuleFactorRela::getDelFlag, CommonConstant.DEL_FLAG_0);
@@ -550,11 +555,11 @@ public class RuleEngine {
                 boolean auditFlag = factorEnchangeFactory.runFactorEnchange(medicalRuleInsInfoId, medicalInsRuleInfo, midIncidentAudit, paramMap, ruleFactorRelaSortList, factorEnchanceListTemp, itemList);
                 if (Constant.VALIDATION_HANDER_METHOD_RETURN.equals(medicalInsRuleInfo.getViolationHandingMethod()) && auditFlag) {
                     log.error("事中提醒数据:{} 规则名:{} 触发诊断类规则,直接全金额,后续规则无需再跑", paramMap, medicalInsRuleInfo);
-                    return;
+                    return auditFlag;
                 }
             }
         }
-
+        return false;
     }