浏览代码

推送并行处理

kongwz 4 年之前
父节点
当前提交
95191c517e

+ 67 - 0
src/main/java/com/diagbot/aggregate/PushDisAggregate.java

@@ -0,0 +1,67 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.facade.NeoFacade;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.NeoPushVO;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: kwz
+ * @time: 2020/10/22 15:24
+ */
+@Component
+@Slf4j
+public class PushDisAggregate {
+    @Autowired
+    private NeoFacade neoFacade;
+    @DataProvider("pushAll")
+    public List<String> getDis(
+            @InvokeParameter("allDis") List<String> allDis,
+            @InvokeParameter("pushVo") NeoPushVO pushVO,
+            @InvokeParameter("lis") List<Lis> lises,
+            @DataConsumer("pushDisBySymptomOrVital") List<String> disBySv,
+            @DataConsumer("pushDisByLis") List<String> disByLis,
+            @DataConsumer("pushDisByPr") List<String> disByPr
+    ){
+        List<String> allPushDis = new ArrayList<>();
+        addDis(allPushDis,disBySv);
+        addDis(allPushDis,disByLis);
+        addDis(allPushDis,disByPr);
+        return allPushDis;
+    }
+
+    private void addDis(List<String> allPushDis, List<String> disByLis) {
+        if (ListUtil.isNotEmpty(disByLis)) {
+            allPushDis.addAll(disByLis);
+        }
+    }
+
+    @DataProvider("pushDisBySymptomOrVital")
+    public List<String> pushDisBySym(@InvokeParameter("pushVo") NeoPushVO pushVO,@InvokeParameter("allDis") List<String> allDis) {
+        neoFacade.pushDisBySymptomOrVital(pushVO,allDis);
+        return allDis;
+    }
+
+    @DataProvider("pushDisByLis")
+    public List<String> pushDisByL(@InvokeParameter("allDis") List<String> allDis,@InvokeParameter("lis") List<Lis> lises) {
+        neoFacade.pushDisByLis(allDis,lises);
+        return allDis;
+    }
+
+    @DataProvider("pushDisByPr")
+    public List<String> pushDisByPacsRes(@InvokeParameter("pushVo") NeoPushVO pushVO,@InvokeParameter("allDis") List<String> allDis) {
+        neoFacade.pushDisByPacs(pushVO,allDis);
+        return allDis;
+    }
+
+}

+ 23 - 36
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -5,17 +5,7 @@ import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
-import com.diagbot.dto.BillNeoDTO;
-import com.diagbot.dto.CriticalNeoDTO;
-import com.diagbot.dto.HighRiskNeoDTO;
-import com.diagbot.dto.NeoPushDTO;
-import com.diagbot.dto.NodeNeoDTO;
-import com.diagbot.dto.OtherTipNeoDTO;
-import com.diagbot.dto.OtherTipPacsNeoDTO;
-import com.diagbot.dto.OtherTipTransfusionNeoDTO;
-import com.diagbot.dto.StandConvertCrfBatchDTO;
-import com.diagbot.dto.StandConvertCrfDTO;
-import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.DiseaseInfo;
 import com.diagbot.entity.DiseaseProperty;
 import com.diagbot.entity.node.LisRemind;
@@ -31,17 +21,9 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.vo.BillNeoVO;
-import com.diagbot.vo.CriticalNeoVO;
 import com.diagbot.vo.Drug;
-import com.diagbot.vo.NeoPushVO;
-import com.diagbot.vo.StandConvert;
-import com.diagbot.vo.StandConvertCrfVO;
-import com.diagbot.vo.neoPushEntity.ChiefPushVo;
-import com.diagbot.vo.neoPushEntity.Diag;
-import com.diagbot.vo.neoPushEntity.LisPushVo;
-import com.diagbot.vo.neoPushEntity.PacsPushVo;
-import com.diagbot.vo.neoPushEntity.PresentPushVo;
+import com.diagbot.vo.*;
+import com.diagbot.vo.neoPushEntity.*;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import io.github.lvyahui8.spring.facade.DataFacade;
@@ -55,13 +37,7 @@ import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -318,12 +294,23 @@ public class NeoFacade {
         }
 
 
-        // 症状、体征推送出的疾病
+        /*// 症状、体征推送出的疾病
         pushDisBySymptomOrVital(pushVO, allDis);
         //化验推出的疾病
         pushDisByLis(allDis, lises);
         //辅检推出的疾病
-        pushDisByPacs(pushVO, allDis);
+        pushDisByPacs(pushVO, allDis);*/
+
+        try {
+            Map<String, Object> invokeParams = new HashMap<>();
+            invokeParams.put("allDis", allDis);
+            invokeParams.put("pushVo", pushVO);
+            invokeParams.put("lis", lises);
+            allDis = DataFacade.get("pushAll", invokeParams, List.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "并行推送疾病出错" + e.getMessage());
+        }
+
         filterAndSort(pushDis, allDis, sex, age, pd,depts);
         pushDis = addDiagFromPresent(pushDis, presentDiags);
 
@@ -339,7 +326,7 @@ public class NeoFacade {
      * @param lises
      * @return
      */
-    private List<String> pushDisBySpecialLis(List<String> depts, Double age, Integer sex, PD pd, List<Lis> lises, List<String> presentDiags) {
+    public List<String> pushDisBySpecialLis(List<String> depts, Double age, Integer sex, PD pd, List<Lis> lises, List<String> presentDiags) {
         List<String> neoPushDTOS = new ArrayList<>();
         if (ListUtil.isNotEmpty(lises)) {
             List<String> lis_dis = lises.parallelStream()
@@ -359,7 +346,7 @@ public class NeoFacade {
      * @param lis_dis
      * @param presentDiags
      */
-    private List<String> addDiagFromPresent(List<String> lis_dis, List<String> presentDiags) {
+    public List<String> addDiagFromPresent(List<String> lis_dis, List<String> presentDiags) {
         List<String> lis_dis_new = Lists.newArrayList();
         if (ListUtil.isNotEmpty(lis_dis) && ListUtil.isNotEmpty(presentDiags)) {
             if (lis_dis.size() >= 10) {
@@ -393,7 +380,7 @@ public class NeoFacade {
      * @param pushVO
      * @param allDis
      */
-    private void pushDisByPacs(NeoPushVO pushVO, List<String> allDis) {
+    public void pushDisByPacs(NeoPushVO pushVO, List<String> allDis) {
         PacsPushVo pacsPushVo = pushVO.getPacsPushVo();
         if (pacsPushVo != null) {
             List<Item> pacs = pacsPushVo.getPacs();
@@ -411,7 +398,7 @@ public class NeoFacade {
      * @param allDis
      * @param lises
      */
-    private void pushDisByLis(List<String> allDis, List<Lis> lises) {
+    public void pushDisByLis(List<String> allDis, List<Lis> lises) {
         if (ListUtil.isNotEmpty(lises)) {
             List<String> lis_dis = lises.parallelStream()
                     .map(x -> nodeRepository.getDisByLis(x.getName(), x.getUniqueName() + x.getResult()))
@@ -426,7 +413,7 @@ public class NeoFacade {
      * @param pushVO
      * @param allDis
      */
-    private void pushDisBySymptomOrVital(NeoPushVO pushVO, List<String> allDis) {
+    public void pushDisBySymptomOrVital(NeoPushVO pushVO, List<String> allDis) {
         ChiefPushVo chiefPushVo = pushVO.getChiefPushVo();
         PresentPushVo presentPushVo = pushVO.getPresentPushVo();
         List<String> symptoms = new ArrayList<>();
@@ -448,7 +435,7 @@ public class NeoFacade {
         allDis.addAll(allDis_bySymptom);
     }
 
-    private void filterAndSort(List<String> dises, List<String> allDis, int gender_code, double age, PD pd, List<String> depts) {
+    public void filterAndSort(List<String> dises, List<String> allDis, int gender_code, double age, PD pd, List<String> depts) {
         //推送出的所有疾病进行性别和年龄的过滤
         List<Map<String, String>> diseases = null;
         Map<String, Double> dis_fbl = new HashMap<>();