浏览代码

推送逻辑修改

zhoutg 4 年之前
父节点
当前提交
84ce622e9a

+ 7 - 10
src/main/java/com/diagbot/aggregate/PushNewAggregate.java

@@ -73,15 +73,7 @@ public class PushNewAggregate {
      */
     @DataProvider("pushDiagnose")
     public PushDTO pushDiagnose(@InvokeParameter("wordCrfDTO") WordCrfDTO wordCrfDTO) {
-        long start = System.currentTimeMillis();
-        PushDTO pushDTO = null;
-        try {
-            pushDTO = pushProcess.pushDiagnose(wordCrfDTO);
-        } catch (Exception e) {
-            log.error("【诊断依据推理出错】", e);
-            CoreUtil.getDebugStr("【诊断依据推理出错】", e, pushDTO.getDebug());
-        }
-        CoreUtil.getDebugStr(start, "推送诊断耗时_诊断依据", pushDTO.getDebug());
+        PushDTO pushDTO = pushProcess.pushDiagnose(wordCrfDTO);
         return pushDTO;
     }
 
@@ -92,8 +84,13 @@ public class PushNewAggregate {
      * @return
      */
     @DataProvider("pushBigData")
-    public PushDTO bill(@InvokeParameter("pushNewVO") PushNewVO pushNewVO) {
+    public PushDTO pushBigData(@InvokeParameter("pushNewVO") PushNewVO pushNewVO,
+                               @InvokeParameter("wordCrfDTO") WordCrfDTO wordCrfDTO) {
         PushDTO pushDTO = new PushDTO();
+        // 有界面诊断不需要推送可能诊断
+        if (pushProcess.hasDisease(wordCrfDTO)) {
+            return pushDTO;
+        }
         Map<String, List<PushBaseDTO>> dis = new LinkedHashMap<>();
         pushDTO.setDis(dis);
         long start = System.currentTimeMillis();

+ 4 - 5
src/main/java/com/diagbot/facade/PushFacade.java

@@ -137,10 +137,10 @@ public class PushFacade {
         ParamUtil.dealLis(wordCrfDTO.getLis());
 
         // 是否有界面诊断
-        boolean hasDiseaseFlag = ListUtil.isNotEmpty(wordCrfDTO.getDiag()) ? true : false;
-
-        // 无界面诊断,走诊断依据和大数据推理
-        if (!hasDiseaseFlag) {
+        boolean hasDiseaseFlag = pushProcess.hasDisease(wordCrfDTO);
+        if (hasDiseaseFlag) { // 有界面诊断,走诊断依据推送警惕,不推确诊和拟诊
+            pushDTO = pushProcess.pushDiagnose(wordCrfDTO);
+        } else { // 无界面诊断,诊断依据推送确诊、拟诊、警惕 + 大数据推送可能诊断
             try {
                 Map<String, Object> invokeParams = new HashMap<>();
                 invokeParams.put("wordCrfDTO", wordCrfDTO);
@@ -288,5 +288,4 @@ public class PushFacade {
     public PushNewDTO testPushFac(PushNewVO pushNewVO) {
         return pushNewServiceClient.pushNew(pushNewVO);
     }
-
 }

+ 44 - 7
src/main/java/com/diagbot/process/PushProcess.java

@@ -55,12 +55,12 @@ import com.diagbot.vo.neoPushEntity.Diag;
 import com.diagbot.vo.neoPushEntity.DiagVo;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -77,6 +77,7 @@ import java.util.stream.Collectors;
  * @time 19:42
  */
 @Component
+@Slf4j
 public class PushProcess {
 
     @Autowired
@@ -405,11 +406,30 @@ public class PushProcess {
     }
 
     /**
-     * 根据诊断依据推送疾病
+     * 根据诊断依据推送疾病总入口
      *
      * @param wordCrfDTO
+     * @return
      */
     public PushDTO pushDiagnose(WordCrfDTO wordCrfDTO) {
+        long start = System.currentTimeMillis();
+        PushDTO pushDTO = null;
+        try {
+            pushDTO = pushDiagnoseProcess(wordCrfDTO);
+        } catch (Exception e) {
+            log.error("【诊断依据推理出错】", e);
+            CoreUtil.getDebugStr("【诊断依据推理出错】", e, pushDTO.getDebug());
+        }
+        CoreUtil.getDebugStr(start, "推送诊断耗时_诊断依据", pushDTO.getDebug());
+        return pushDTO;
+    }
+
+    /**
+     * 根据诊断依据推送疾病
+     *
+     * @param wordCrfDTO
+     */
+    public PushDTO pushDiagnoseProcess(WordCrfDTO wordCrfDTO) {
         PushDTO pushDTO = new PushDTO();
         // 读取所有的诊断依据规则——已去重
         List<BaseDiagnoseDTO> diagnoselist = redisUtil.get(RedisEnum.allBaseDiagnose.getName());
@@ -495,6 +515,7 @@ public class PushProcess {
             List<PushBaseDTO> protocolList = new ArrayList<>(); // 拟诊
             List<PushBaseDTO> definiteList = new ArrayList<>(); // 确诊
             List<PushBaseDTO> vigilantList = new ArrayList<>(); // 警惕
+
             for (DiagnoseDTO diagnoseDTO : diagnoseDTOList) {
                 PushBaseDTO pushBaseDTO = new PushBaseDTO();
                 pushBaseDTO.setName(diagnoseDTO.getLibName());
@@ -510,11 +531,14 @@ public class PushProcess {
                         break;
                 }
             }
-            if (ListUtil.isNotEmpty(protocolList)) {
-                pushDiagnoseDTO.put("拟诊", protocolList);
-            }
-            if (ListUtil.isNotEmpty(definiteList)) {
-                pushDiagnoseDTO.put("确诊", definiteList);
+            // 有界面诊断,不需要拟诊和确诊
+            if (hasDisease(wordCrfDTO)) {
+                if (ListUtil.isNotEmpty(protocolList)) {
+                    pushDiagnoseDTO.put("拟诊", protocolList);
+                }
+                if (ListUtil.isNotEmpty(definiteList)) {
+                    pushDiagnoseDTO.put("确诊", definiteList);
+                }
             }
             if (ListUtil.isNotEmpty(vigilantList)) {
                 pushDiagnoseDTO.put("警惕", vigilantList);
@@ -735,6 +759,19 @@ public class PushProcess {
         return reverseVO;
     }
 
+    /**
+     * 是否有界面诊断
+     *
+     * @param wordCrfDTO
+     * @return
+     */
+    public Boolean hasDisease(WordCrfDTO wordCrfDTO) {
+        if (ListUtil.isNotEmpty(wordCrfDTO.getDiag())) {
+            return true;
+        }
+        return false;
+    }
+
     private void reversePushPackage(int length, PushDTO pushDTO, List<String> ruleTypeList, Map<String, List<String>> typeWords, NeoPushVO pushVO, Map<String, List<PushBaseDTO>> dis) {
         NeoPushDTO reversePush = neoFacade.getReversePush(pushVO);
         // 症状