فهرست منبع

Merge remote-tracking branch 'origin/dev/newDiagMode20220316' into debug

zhaops 3 سال پیش
والد
کامیت
aa7e9a038b

+ 33 - 0
src/main/java/com/diagbot/aggregate/AssemblePushAggregate.java

@@ -40,6 +40,7 @@ public class AssemblePushAggregate {
             @DataConsumer("retLis") List<PushBaseDTO> retLis,
             @DataConsumer("retPacs") List<PushBaseDTO> retPacs,
             @DataConsumer("retDiagMap") Map<String, List<PushBaseDTO>> retDiagMap,
+            @DataConsumer("retClickPosDis") List<PushBaseDTO> retClickPosDis,
             @DataConsumer("retOperation") List<PushBaseDTO> retOperation,
             @DataConsumer("retDrug") List<PushBaseDTO> retDrug,
             @DataConsumer("retScale") List<PushScaleDTO> retScale,
@@ -56,6 +57,10 @@ public class AssemblePushAggregate {
         if (MapUtils.isNotEmpty(retDiagMap)) {
             data.setDis(retDiagMap);
         }
+        //可点击可能诊断
+        if (ListUtil.isNotEmpty(retClickPosDis)) {
+            data.setClickAffDis(retClickPosDis);
+        }
         //手术
         if (ListUtil.isNotEmpty(retOperation)) {
             data.setOperations(retOperation);
@@ -167,6 +172,34 @@ public class AssemblePushAggregate {
         return retMap;
     }
 
+    @DataProvider("retClickPosDis")
+    public List<PushBaseDTO> retClickPosDis(@InvokeParameter("pushDTO") PushDTO data,
+                                            @InvokeParameter("hospitalId") Long hospitalId) {
+        //可点击可能诊断
+        List<PushBaseDTO> retClickPosDis = new ArrayList<>();
+        if (ListUtil.isNotEmpty(data.getClickPosDis())) {
+            retClickPosDis = data.getClickPosDis();
+            List<String> uniqueNameList = retClickPosDis.stream()
+                    .map(i -> i.getName())
+                    .collect(Collectors.toList());
+            Map<String, Map<String, Map<String, List<String>>>> uniqueNameMap
+                    = mappingConfigFacade.groupByUniqueNameWithName(uniqueNameList, ConceptTypeEnum.Disease.getKey(), hospitalId, StatusEnum.Enable.getKey());
+
+            if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
+                retClickPosDis.forEach(item -> {
+                    if (uniqueNameMap.get(item.getName()) != null) {
+                        item.setHisNameList(uniqueNameMap.get(item.getName())
+                                .values().stream()
+                                .map(i -> i.keySet())
+                                .flatMap(Collection::stream)
+                                .collect(Collectors.toList()));
+                    }
+                });
+            }
+        }
+        return retClickPosDis;
+    }
+
     @DataProvider("retOperation")
     public List<PushBaseDTO> retOperation(@InvokeParameter("pushDTO") PushDTO data,
                                           @InvokeParameter("hospitalId") Long hospitalId) {

+ 4 - 0
src/main/java/com/diagbot/dto/PushDTO.java

@@ -35,6 +35,10 @@ public class PushDTO {
     private List<PushBaseDTO> nurse = Lists.newArrayList();
     //诊断
     private Map<String, List<PushBaseDTO>> dis;
+    // 可点击可能诊断
+    private List<PushBaseDTO> clickPosDis = Lists.newArrayList();
+    // 可点击下的诊断
+    private List<PushBaseDTO> clickAffDis = Lists.newArrayList();
     //一般治疗
     private List<TreatDTO> treat = new ArrayList<>();
     //推送量表

+ 62 - 34
src/main/java/com/diagbot/facade/PlanDetailFacade.java

@@ -12,6 +12,7 @@ import com.diagbot.service.PlanDetailService;
 import com.diagbot.service.impl.PlanDetailServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
@@ -29,7 +30,6 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * @author wangfeng
@@ -49,29 +49,38 @@ public class PlanDetailFacade extends PlanDetailServiceImpl {
                 .eq("hospital_id", hospitalSetVO.getHospitalId())
                 .eq(StringUtil.isNotBlank(hospitalSetVO.getCode()), "code", hospitalSetVO.getCode())
                 .in("plan_id", hospitalSetVO.getPlanId())
-                .orderByAsc("plan_id", "order_no","id");
+                .orderByAsc("plan_id", "order_no", "id");
         List<PlanDetail> sysSetData = list(sysSetInfo);
         List<PlanDetailDTO> sysSetInfoData = BeanUtil.listCopyTo(sysSetData, PlanDetailDTO.class);
-        List<PlanDetailDTO> planDetailParent = new ArrayList<>();//父级数据
-        List<PlanDetailDTO> planDetailSub = new ArrayList<>();//子级数据
-        //分离数据,-1分父级菜单
-        for (PlanDetailDTO dataDeta : sysSetInfoData) {
-            if (dataDeta.getParentId() == (-1)) {
-                planDetailParent.add(dataDeta);
-            } else {
-                planDetailSub.add(dataDeta);
+        //添加菜单信息
+        Map<Long, List<PlanDetailDTO>> menuMap = EntityUtil.makeEntityListMap(sysSetInfoData, "parentId");
+        List<PlanDetailDTO> menuRes = menuMap.get(-1L);
+        if (ListUtil.isNotEmpty(menuRes)) {
+            for (PlanDetailDTO bean : menuRes) {
+                getSonMenu(bean, menuMap);
             }
         }
-        //把子级数据,放在父级下
-        Map<Long, List<PlanDetailDTO>> mapParentId = planDetailSub.stream().collect(Collectors.groupingBy(PlanDetailDTO::getParentId));
-        for (Long key : mapParentId.keySet()) {
-            for (PlanDetailDTO sysPlanInfos : planDetailParent) {
-                if (sysPlanInfos.getId().equals(key)) {
-                    sysPlanInfos.setPlanDetails(mapParentId.get(key));
-                }
+        return menuRes;
+    }
+
+    /**
+     * 递归获取菜单结构
+     *
+     * @param menu    当前菜单
+     * @param menuMap 菜单集
+     * @return 菜单结构
+     */
+    public List<PlanDetailDTO> getSonMenu(PlanDetailDTO menu,
+                                          Map<Long, List<PlanDetailDTO>> menuMap) {
+        List<PlanDetailDTO> res = new ArrayList<>();
+        List<PlanDetailDTO> list = menuMap.get(menu.getId());
+        if (ListUtil.isNotEmpty(list)) {
+            menu.setPlanDetails(list);
+            for (PlanDetailDTO bean : list) {
+                getSonMenu(bean, menuMap);
             }
         }
-        return planDetailParent;
+        return res;
     }
 
     public List<PlanDetailDTO> getByPlanIds(List<Long> planIds) {
@@ -111,24 +120,43 @@ public class PlanDetailFacade extends PlanDetailServiceImpl {
             planDetails.setModifier(SysUserUtils.getCurrentPrincipleID());
             planDetails.setGmtModified(now);
             planDetailService.save(planDetails);
-            List<PlanDetailSubSaveVO> data = planDetailSave.getPlanDetailSub();
-            if(ListUtil.isNotEmpty(data)){
-                List<PlanDetail> planDetailList = new ArrayList<>();
-                //再保存子类
-                for (PlanDetailSubSaveVO planDetailVO : data) {
-                    if(planDetailVO.getCode()!=null){
-                        PlanDetail planDetail = new PlanDetail();
-                        BeanUtil.copyProperties(planDetailVO, planDetail);
-                        planDetail.setPlanId(planDetailSaveVO.getPlanId());
-                        planDetail.setParentId(planDetails.getId());
-                        planDetail.setGmtCreate(now);
-                        planDetail.setCreator(SysUserUtils.getCurrentPrincipleID());
-                        planDetail.setModifier(SysUserUtils.getCurrentPrincipleID());
-                        planDetail.setGmtModified(now);
-                        planDetailList.add(planDetail);
+            List<HospitalPlanDetailSaveVO> data = planDetailSave.getPlanDetailSub();
+            if (ListUtil.isNotEmpty(data)) {
+                // List<PlanDetail> planDetailList = new ArrayList<>();
+                //再保存子类第二层
+                for (HospitalPlanDetailSaveVO planDetailVO : data) {
+                    if (planDetailVO.getCode() != null) {
+                        PlanDetail planDetail2 = new PlanDetail();
+                        BeanUtil.copyProperties(planDetailVO, planDetail2);
+                        planDetail2.setPlanId(planDetailSaveVO.getPlanId());
+                        planDetail2.setParentId(planDetails.getId());
+                        planDetail2.setGmtCreate(now);
+                        planDetail2.setCreator(UserUtils.getCurrentPrincipleID());
+                        planDetail2.setModifier(UserUtils.getCurrentPrincipleID());
+                        planDetail2.setGmtModified(now);
+                        planDetailService.save(planDetail2);
+                        List<HospitalPlanDetailSaveVO> data3 = planDetailVO.getPlanDetailSub();
+                        if (ListUtil.isNotEmpty(data3)) {
+                            List<PlanDetail> planDetailList = new ArrayList<>();
+                            //最后保存子类第三层
+                            for (HospitalPlanDetailSaveVO planDetail : data3) {
+                                if (planDetail.getCode() != null) {
+                                    PlanDetail planDetailVO3 = new PlanDetail();
+                                    BeanUtil.copyProperties(planDetail, planDetailVO3);
+                                    planDetailVO3.setPlanId(planDetailSaveVO.getPlanId());
+                                    planDetailVO3.setParentId(planDetail2.getId());
+                                    planDetailVO3.setGmtCreate(now);
+                                    planDetailVO3.setCreator(UserUtils.getCurrentPrincipleID());
+                                    planDetailVO3.setModifier(UserUtils.getCurrentPrincipleID());
+                                    planDetailVO3.setGmtModified(now);
+                                    planDetailList.add(planDetailVO3);
+                                }
+                                res = planDetailService.saveBatch(planDetailList);
+                            }
+                        }
                     }
                 }
-                res = planDetailService.saveBatch(planDetailList);
+                // res = planDetailService.saveBatch(planDetailList);
             }
         }
 

+ 26 - 27
src/main/java/com/diagbot/facade/PlanFacade.java

@@ -29,7 +29,6 @@ import com.diagbot.vo.HospitalPlanVO;
 import com.diagbot.vo.HospitalSetVO;
 import com.diagbot.vo.PlanDetailCancelVO;
 import com.diagbot.vo.PlanDetailSaveVO;
-import com.diagbot.vo.PlanDetailSubSaveVO;
 import com.diagbot.vo.PlanRevStopVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -145,21 +144,32 @@ public class PlanFacade extends PlanServiceImpl {
                 HospitalPlanDetailSaveVO dataNew = new HospitalPlanDetailSaveVO();
                 BeanUtil.copyProperties(data, dataNew);
                 dataNew.setPlanId(planId);
-                List<PlanDetailSubSaveVO> planDetailSubNew = new ArrayList<>();
-                List<PlanDetailSubSaveVO> planDetailSub = data.getPlanDetailSub();
-                if (ListUtil.isNotEmpty(planDetailSub)) {
-                    for (PlanDetailSubSaveVO dataSub : planDetailSub) {
-                        PlanDetailSubSaveVO dataSubNew = new PlanDetailSubSaveVO();
+                List<HospitalPlanDetailSaveVO> planDetailSubNew2 = new ArrayList<>();
+                List<HospitalPlanDetailSaveVO> planDetailSub2 = data.getPlanDetailSub();
+                if (ListUtil.isNotEmpty(planDetailSub2)) {
+                    for (HospitalPlanDetailSaveVO dataSub : planDetailSub2) {
+                        List<HospitalPlanDetailSaveVO> planDetailSubNew3 = new ArrayList<>();
+                        List<HospitalPlanDetailSaveVO> planDetailSub3 = dataSub.getPlanDetailSub();
+                        if (ListUtil.isNotEmpty(planDetailSub3)) {
+                            for (HospitalPlanDetailSaveVO dataSub3 : planDetailSub3) {
+                                HospitalPlanDetailSaveVO dataSubNew3 = new HospitalPlanDetailSaveVO();
+                                BeanUtil.copyProperties(dataSub, dataSubNew3);
+                                dataSubNew3.setPlanId(planId);
+                                planDetailSubNew3.add(dataSubNew3);
+                            }
+                        }
+                        HospitalPlanDetailSaveVO dataSubNew = new HospitalPlanDetailSaveVO();
                         BeanUtil.copyProperties(dataSub, dataSubNew);
                         dataSubNew.setPlanId(planId);
-                        planDetailSubNew.add(dataSubNew);
+                        dataSubNew.setPlanDetailSub(planDetailSubNew3);
+                        planDetailSubNew2.add(dataSubNew);
                     }
-                    dataNew.setPlanDetailSub(planDetailSubNew);
+                    dataNew.setPlanDetailSub(planDetailSubNew2);
+
                 }
                 planDetailParentNew.add(dataNew);
             }
         }
-
         planDetailSaveVO.setPlanDetailParent(planDetailParentNew);
         res = sysSetFacade.savePlanDetail(planDetailSaveVO);
         return res;
@@ -179,29 +189,18 @@ public class PlanFacade extends PlanServiceImpl {
             // 获取明细信息
             List<PlanDetailDTO> PlanDetailDatas = sysSetFacade.getByPlanIds(ids);
             List<PlanDetailDTO> sysSetInfoData = BeanUtil.listCopyTo(PlanDetailDatas, PlanDetailDTO.class);
-            List<PlanDetailDTO> planDetailParent = new ArrayList<>();//父级数据
-            List<PlanDetailDTO> planDetailSub = new ArrayList<>();//子级数据
-            //分离数据,-1分父级菜单
-            for (PlanDetailDTO dataDeta : sysSetInfoData) {
-                if (dataDeta.getParentId() == (-1)) {
-                    planDetailParent.add(dataDeta);
-                } else {
-                    planDetailSub.add(dataDeta);
-                }
-            }
-            //把子级数据,放在父级下
-            Map<Long, List<PlanDetailDTO>> mapParentId = planDetailSub.stream().collect(Collectors.groupingBy(PlanDetailDTO::getParentId));
-            for (Long key : mapParentId.keySet()) {
-                for (PlanDetailDTO sysPlanInfos : planDetailParent) {
-                    if (sysPlanInfos.getId().equals(key)) {
-                        sysPlanInfos.setPlanDetails(mapParentId.get(key));
-                    }
+            //添加菜单信息
+            Map<Long, List<PlanDetailDTO>> menuMap = EntityUtil.makeEntityListMap(sysSetInfoData, "parentId");
+            List<PlanDetailDTO> menuRes = menuMap.get(-1L);
+            if (ListUtil.isNotEmpty(menuRes)) {
+                for (PlanDetailDTO bean : menuRes) {
+                    sysSetFacade.getSonMenu(bean, menuMap);
                 }
             }
 
             Map<Long, List<PlanDetailDTO>> map = new HashMap<>();
             // 获取所有用户开通的产品信息
-            map = EntityUtil.makeEntityListMap(planDetailParent, "planId");
+            map = EntityUtil.makeEntityListMap(menuRes, "planId");
             if (map.size() > 0) {
                 for (PlanInfoPageDTO planInfo : planInfos) {
                     List<PlanDetailDTO> planDetails = map.get(planInfo.getId());

+ 49 - 1
src/main/java/com/diagbot/facade/PushFacade.java

@@ -1,5 +1,6 @@
 package com.diagbot.facade;
 
+import com.diagbot.biz.push.entity.Item;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.ConceptDetailDTO;
@@ -29,8 +30,10 @@ import org.springframework.stereotype.Component;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -55,6 +58,10 @@ public class PushFacade {
      * @param pushVO
      */
     public PushDTO push(PushVO pushVO) {
+        List<String> featureTypes = StringUtil.isNotBlank(pushVO.getFeatureType())
+                ? Arrays.asList(pushVO.getFeatureType().split(","))
+                : Lists.newArrayList();
+
         if (pushVO.getDiseaseName() != null
                 && StringUtil.isBlank(pushVO.getDiseaseName().getName())
                 && StringUtil.isBlank(pushVO.getDiseaseName().getUniqueName())) {
@@ -71,6 +78,23 @@ public class PushFacade {
         //------------------测试数据开始------------------
         //  PushDTO data = testDataPush();
         //------------------测试数据结束------------------
+
+        //已下诊断
+        data.setClickAffDis(Lists.newArrayList());
+        if (ListUtil.isNotEmpty(pushVO.getDiag())) {
+            Set<String> nameSet = new HashSet<>();
+            for (Item item : pushVO.getDiag()) {
+                if (nameSet.contains(item.getName())) {
+                    continue;
+                }
+                PushBaseDTO diagDto = new PushBaseDTO();
+                diagDto.setName(item.getUniqueName());
+                diagDto.setHisNameList(Arrays.asList(new String[] { item.getName() }));
+                nameSet.add(item.getName());
+                data.getClickAffDis().add(diagDto);
+            }
+        }
+
         //出参映射
         data = assembleFacade.assemblePushDTO(data, pushVO.getHospitalId());
         //是否有静态信息
@@ -80,7 +104,9 @@ public class PushFacade {
         }
         //一般治疗
         if (data != null) {
-            data.setTreat(retGeneraTreat(data, pushVO.getHospitalId()));
+            if (ListUtil.isNotEmpty(featureTypes) && featureTypes.contains("10")) {
+                data.setTreat(retGeneraTreat(data, pushVO.getHospitalId()));
+            }
         }
         return data;
     }
@@ -162,6 +188,12 @@ public class PushFacade {
                 }
             }
         }
+        if (ListUtil.isNotEmpty(pushDTO.getClickPosDis())) {
+            conceptBaseList.addAll(pushDTO.getClickPosDis());
+        }
+        if (ListUtil.isNotEmpty(pushDTO.getClickAffDis())) {
+            conceptBaseList.addAll(pushDTO.getClickAffDis());
+        }
         if (ListUtil.isNotEmpty(pushDTO.getMedicines())) {
             conceptBaseList.addAll(pushDTO.getMedicines());
         }
@@ -200,6 +232,22 @@ public class PushFacade {
                     }
                 }
             }
+            if (ListUtil.isNotEmpty(pushDTO.getClickPosDis())) {
+                pushDTO.getClickPosDis().forEach(item -> {
+                    item.setType(1);
+                    if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("1"))) {
+                        item.setHasInfo(1);
+                    }
+                });
+            }
+            if (ListUtil.isNotEmpty(pushDTO.getClickAffDis())) {
+                pushDTO.getClickAffDis().forEach(item -> {
+                    item.setType(1);
+                    if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("1"))) {
+                        item.setHasInfo(1);
+                    }
+                });
+            }
             if (ListUtil.isNotEmpty(pushDTO.getLis())) {
                 pushDTO.getLis().forEach(item -> {
                     item.setType(3);

+ 1 - 1
src/main/java/com/diagbot/vo/HospitalPlanDetailSaveVO.java

@@ -52,5 +52,5 @@ public class HospitalPlanDetailSaveVO {
      */
     private String remark;
 
-    private List<PlanDetailSubSaveVO> planDetailSub;
+    private List<HospitalPlanDetailSaveVO> planDetailSub;
 }