wangfeng преди 4 години
родител
ревизия
00d87257e3

+ 4 - 0
cdssman-service/src/main/java/com/diagbot/dto/PlanDetailDTO.java

@@ -3,6 +3,8 @@ package com.diagbot.dto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author wangfeng
  * @Description:
@@ -22,6 +24,7 @@ public class PlanDetailDTO {
      * 方案编号
      */
     private Long planId;
+    private Long parentId;
 
     /**
      * 配置名称
@@ -55,4 +58,5 @@ public class PlanDetailDTO {
      */
     private String remark;
 
+    private List<PlanDetailDTO> planDetails;
 }

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/dto/PlanInfoPagesDTO.java

@@ -30,5 +30,5 @@ public class PlanInfoPagesDTO {
      */
     private String remark;
 
-    private List<PlanDetailDTO> planDetails;
+    private List<PlanDetailDTO> sysSetInfo;
 }

+ 10 - 0
cdssman-service/src/main/java/com/diagbot/entity/PlanDetail.java

@@ -61,6 +61,8 @@ public class PlanDetail implements Serializable {
      */
     private Long planId;
 
+    private Long parentId;
+
     /**
      * 配置名称
      */
@@ -90,6 +92,14 @@ public class PlanDetail implements Serializable {
 
     private String remark;
 
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
     public Long getId() {
         return id;
     }

+ 64 - 28
cdssman-service/src/main/java/com/diagbot/facade/PlanDetailFacade.java

@@ -20,12 +20,15 @@ import com.diagbot.vo.HospitalSetVO;
 import com.diagbot.vo.PlanDetailCancelVO;
 import com.diagbot.vo.PlanDetailRevStopVO;
 import com.diagbot.vo.PlanDetailSaveVO;
+import com.diagbot.vo.PlanDetailSubSaveVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author wangfeng
@@ -40,13 +43,33 @@ public class PlanDetailFacade extends PlanDetailServiceImpl {
 
     public List<PlanDetailDTO> getSysSetInfoData(HospitalSetVO hospitalSetVO) {
         QueryWrapper<PlanDetail> sysSetInfo = new QueryWrapper<>();
-        sysSetInfo.eq("is_deleted", IsDeleteEnum.N.getKey());
-        sysSetInfo.eq("hospital_id", hospitalSetVO.getHospitalId());
-        sysSetInfo.eq("plan_id", hospitalSetVO.getPlanId());
-        sysSetInfo.eq(StringUtil.isNotBlank(hospitalSetVO.getCode()), "code", hospitalSetVO.getCode());
+        sysSetInfo.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalSetVO.getHospitalId())
+                .eq(StringUtil.isNotBlank(hospitalSetVO.getCode()), "code", hospitalSetVO.getCode())
+                .in("plan_id", hospitalSetVO.getPlanId())
+                .orderByAsc("plan_id", "order_no");
         List<PlanDetail> sysSetData = list(sysSetInfo);
-        List<PlanDetailDTO> data = BeanUtil.listCopyTo(sysSetData, PlanDetailDTO.class);
-        return data;
+        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>> 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 planDetailParent;
     }
 
     public List<PlanDetailDTO> getByPlanIds(List<Long> planIds) {
@@ -66,31 +89,44 @@ public class PlanDetailFacade extends PlanDetailServiceImpl {
     }
 
     public boolean savePlanDetail(PlanDetailSaveVO planDetailSaveVO) {
+        boolean res = false;
         Date now = DateUtil.now();
-        UpdateWrapper<PlanDetail> planDetailUpdate = new UpdateWrapper<>();
-        planDetailUpdate.eq("plan_id", planDetailSaveVO.getPlanId())
+        QueryWrapper<PlanDetail> planDetailQuery = new QueryWrapper<>();
+        planDetailQuery.eq("plan_id", planDetailSaveVO.getPlanId())
                 .eq("hospital_id", planDetailSaveVO.getHospitalId())//医院id
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .set("is_deleted", IsDeleteEnum.Y.getKey())
-                .set("gmt_modified",now)
-                .set("gmt_create", now)
-                .set("creator",UserUtils.getCurrentPrincipleID())
-                .set("modifier",UserUtils.getCurrentPrincipleID());
-        update(new PlanDetail(), planDetailUpdate);
-        List<PlanDetail> planDetailList = new ArrayList<>();
-        List<HospitalPlanDetailSaveVO> planDetailData = planDetailSaveVO.getPlanDetail();
-        Long planId = planDetailSaveVO.getPlanId();
-        for (HospitalPlanDetailSaveVO planDetailVO : planDetailData) {
-            PlanDetail planDetail = new PlanDetail();
-            BeanUtil.copyProperties(planDetailVO, planDetail);
-            planDetail.setPlanId(planId);
-            planDetail.setGmtCreate(now);
-            planDetail.setCreator(UserUtils.getCurrentPrincipleID());
-            planDetail.setModifier(UserUtils.getCurrentPrincipleID());
-            planDetail.setGmtModified(now);
-            planDetailList.add(planDetail);
+                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        // 删除所有的配置
+        res = remove(planDetailQuery);
+        //先保存父类
+        List<PlanDetail> planDetailParentNew = new ArrayList<>();
+        List<HospitalPlanDetailSaveVO> planDetailParent = planDetailSaveVO.getPlanDetailParent();
+        for (HospitalPlanDetailSaveVO planDetailSave : planDetailParent) {
+            PlanDetail planDetails = new PlanDetail();
+            BeanUtil.copyProperties(planDetailSave, planDetails);
+            planDetails.setParentId(-1L);
+            planDetails.setGmtCreate(now);
+            planDetails.setCreator(UserUtils.getCurrentPrincipleID());
+            planDetails.setModifier(UserUtils.getCurrentPrincipleID());
+            planDetails.setGmtModified(now);
+            List<PlanDetailSubSaveVO> data = planDetailSave.getPlanDetailSub();
+            planDetailService.save(planDetails);
+            List<PlanDetail> planDetailList = new ArrayList<>();
+            //再保存子类
+            for (PlanDetailSubSaveVO planDetailVO : data) {
+                PlanDetail planDetail = new PlanDetail();
+                BeanUtil.copyProperties(planDetailVO, planDetail);
+                planDetail.setPlanId(planDetailSaveVO.getPlanId());
+                planDetail.setParentId(planDetails.getId());
+                planDetail.setGmtCreate(now);
+                planDetail.setCreator(UserUtils.getCurrentPrincipleID());
+                planDetail.setModifier(UserUtils.getCurrentPrincipleID());
+                planDetail.setGmtModified(now);
+                planDetailList.add(planDetail);
+            }
+            res = planDetailService.saveBatch(planDetailList);
         }
-        return planDetailService.saveBatch(planDetailList);
+
+        return res;
     }
 
     public boolean cancelPlanDetail(PlanDetailCancelVO planDetailCancelVO) {

+ 77 - 3
cdssman-service/src/main/java/com/diagbot/facade/PlanFacade.java

@@ -15,10 +15,13 @@ 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.UserUtils;
 import com.diagbot.vo.HospitalPlanCancelVO;
 import com.diagbot.vo.HospitalPlanPageVO;
 import com.diagbot.vo.HospitalPlanSaveVO;
+import com.diagbot.vo.HospitalPlanVO;
+import com.diagbot.vo.HospitalSetVO;
 import com.diagbot.vo.PlanRevStopVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -28,6 +31,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author wangfeng
@@ -95,14 +99,35 @@ public class PlanFacade extends PlanServiceImpl {
             }
             // 获取明细信息
             List<PlanDetailDTO> PlanDetailDatas = planDetailFacade.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>> map = new HashMap<>();
             // 获取所有用户开通的产品信息
-            map = EntityUtil.makeEntityListMap(PlanDetailDatas, "planId");
+            map = EntityUtil.makeEntityListMap(planDetailParent, "planId");
             if (map.size() > 0) {
                 for (PlanInfoPagesDTO planInfo : planInfos) {
                     List<PlanDetailDTO> planDetails = map.get(planInfo.getId());
                     if (ListUtil.isNotEmpty(planDetails)) {
-                        planInfo.setPlanDetails(planDetails);
+                        planInfo.setSysSetInfo(planDetails);
                     }
                 }
             }
@@ -158,8 +183,57 @@ public class PlanFacade extends PlanServiceImpl {
     public List<PlanInfoPagesDTO> getPlansDefaults() {
         List<Plan> list = this.list(new QueryWrapper<Plan>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("hospital_id", -1));
+                .eq("hospital_id", 0
+                ));
         List<PlanInfoPagesDTO> data = BeanUtil.listCopyTo(list,PlanInfoPagesDTO.class);
         return data;
     }
+
+    public List<PlanInfoPagesDTO> getSysPlanInfoData(HospitalPlanVO hospitalPlanVO) {
+        //查询该医院有没有相关方案配置, 要是没有取默认的
+        List<PlanInfoPagesDTO> sysPlanInfoDTO = new ArrayList<>();
+        QueryWrapper<Plan> sysPlanInfo = new QueryWrapper<>();
+        sysPlanInfo.eq("is_deleted", IsDeleteEnum.N.getKey());
+        sysPlanInfo.eq("hospital_id", hospitalPlanVO.getHospitalId());
+        sysPlanInfo.eq(StringUtil.isNotBlank(hospitalPlanVO.getPlanCode()), "plan_code", hospitalPlanVO.getPlanCode());
+        sysPlanInfo.eq("plan_status", StatusEnum.Enable.getKey());
+        List<Plan> sysPlanInfoData = list(sysPlanInfo);
+        List<Long> planId = new ArrayList<>();
+        Long hospitalId = hospitalPlanVO.getHospitalId();
+        if (ListUtil.isNotEmpty(sysPlanInfoData)) {
+            sysPlanInfoDTO = BeanUtil.listCopyTo(sysPlanInfoData, PlanInfoPagesDTO.class);
+            for (PlanInfoPagesDTO data : sysPlanInfoDTO) {
+                planId.add(data.getId());
+            }
+        } else {
+            QueryWrapper<Plan> sysPlandefault = new QueryWrapper<>();
+            sysPlandefault.eq("is_deleted", IsDeleteEnum.N.getKey());
+            sysPlandefault.eq("hospital_id", -1);
+            sysPlandefault.eq(StringUtil.isNotBlank(hospitalPlanVO.getPlanCode()), "plan_code", hospitalPlanVO.getPlanCode());
+            sysPlandefault.eq("plan_status", StatusEnum.Enable.getKey());
+            List<Plan> sysPlandefaultData = list(sysPlandefault);
+            if (ListUtil.isNotEmpty(sysPlandefaultData)) {
+                sysPlanInfoDTO = BeanUtil.listCopyTo(sysPlandefaultData, PlanInfoPagesDTO.class);
+                for (PlanInfoPagesDTO data : sysPlanInfoDTO) {
+                    planId.add(data.getId());
+                }
+            }
+            hospitalId = -1L;
+        }
+        HospitalSetVO hospitalSetVO = new HospitalSetVO();
+        hospitalSetVO.setHospitalId(hospitalId);
+        hospitalSetVO.setPlanId(planId);
+        List<PlanDetailDTO> sysSetInfoData = planDetailFacade.getSysSetInfoData(hospitalSetVO);
+        //把父级数据放在方案下
+        Map<Long, List<PlanDetailDTO>> dataMap = sysSetInfoData.stream().collect(Collectors.groupingBy(PlanDetailDTO::getPlanId));
+        for (Long key : dataMap.keySet()) {
+            for (PlanInfoPagesDTO sysPlanInfos : sysPlanInfoDTO) {
+                if (sysPlanInfos.getId().equals(key)) {
+                    sysPlanInfos.setSysSetInfo(dataMap.get(key));
+                }
+            }
+        }
+
+        return sysPlanInfoDTO;
+    }
 }

+ 4 - 0
cdssman-service/src/main/java/com/diagbot/vo/HospitalPlanDetailSaveVO.java

@@ -3,6 +3,8 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author wangfeng
  * @Description:
@@ -47,4 +49,6 @@ public class HospitalPlanDetailSaveVO {
      * 备注
      */
     private String remark;
+
+    private List<PlanDetailSubSaveVO> planDetailSub;
 }

+ 3 - 1
cdssman-service/src/main/java/com/diagbot/vo/HospitalSetVO.java

@@ -3,6 +3,8 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author wangfeng
  * @Description:
@@ -12,6 +14,6 @@ import lombok.Setter;
 @Getter
 public class HospitalSetVO  {
     private Long hospitalId;
-    private Long planId;
+    private List<Long> planId;
     private String code;
 }

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/vo/PlanDetailSaveVO.java

@@ -14,5 +14,5 @@ import java.util.List;
 public class PlanDetailSaveVO {
     private Long hospitalId;
     private Long planId;
-    private  List<HospitalPlanDetailSaveVO> planDetail;
+    private  List<HospitalPlanDetailSaveVO> planDetailParent;
 }

+ 53 - 0
cdssman-service/src/main/java/com/diagbot/vo/PlanDetailSubSaveVO.java

@@ -0,0 +1,53 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-08-13 17:31
+ */
+@Setter
+@Getter
+public class PlanDetailSubSaveVO {
+    private Long planId;
+    /**
+     * 医院编码
+     */
+    private Long hospitalId;
+
+    /**
+     * 配置名称
+     */
+    private String name;
+
+
+
+    private String value;
+
+    /**
+     * 是否显示(1是,0否)
+     */
+    private Integer status;
+
+    /**
+     * 显示个数
+     */
+    private Integer number;
+
+    /**
+     * 显示顺序
+     */
+    private Integer orderNo;
+    /**
+     * 配置编码
+     */
+    private String code;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}
+

+ 9 - 0
cdssman-service/src/main/java/com/diagbot/web/PlanController.java

@@ -9,6 +9,7 @@ import com.diagbot.facade.PlanFacade;
 import com.diagbot.vo.HospitalPlanCancelVO;
 import com.diagbot.vo.HospitalPlanPageVO;
 import com.diagbot.vo.HospitalPlanSaveVO;
+import com.diagbot.vo.HospitalPlanVO;
 import com.diagbot.vo.PlanRevStopVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -49,6 +50,14 @@ public class PlanController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "根据医院获取方案配置信息[by:wangfeng]", notes = "hospitalid :医院id  必填<br> ")
+    @PostMapping("/getSysPlanInfoDatas")
+    @SysLogger("getSysPlanInfoDatas")
+    public RespDTO<List<PlanInfoPagesDTO>> getSysPlanInfoDatas(@Valid @RequestBody HospitalPlanVO hospitalPlanVO) {
+        List<PlanInfoPagesDTO> data = planFacade.getSysPlanInfoData(hospitalPlanVO);
+        return RespDTO.onSuc(data);
+    }
+
     @ApiOperation(value = "保存更新方案配置信息[by:wangfeng]", notes = "保存更新方案配置信息")
     @PostMapping("/savePlanInfoDatas")
     @SysLogger("savePlanInfoDatas")

+ 1 - 0
cdssman-service/src/main/resources/mapper/PlanDetailMapper.xml

@@ -12,6 +12,7 @@
         <result column="modifier" property="modifier" />
         <result column="hospital_id" property="hospitalId" />
         <result column="plan_id" property="planId" />
+        <result column="parent_id" property="parentId" />
         <result column="name" property="name" />
         <result column="status" property="status" />
         <result column="number" property="number" />