瀏覽代碼

优化方案配置修改

wangfeng 4 年之前
父節點
當前提交
e9aa96ea20

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -25,6 +26,12 @@ public class PlanInfoPagesDTO {
     private String planName;
 
     private String planCode;
+
+    private Integer planStatus;
+
+    private Date gmtCreate;
+
+    private String planDetail;
     /**
      * 备注
      */

+ 18 - 14
cdssman-service/src/main/java/com/diagbot/facade/PlanDetailFacade.java

@@ -108,22 +108,26 @@ public class PlanDetailFacade extends PlanDetailServiceImpl {
             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);
+            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(UserUtils.getCurrentPrincipleID());
+                        planDetail.setModifier(UserUtils.getCurrentPrincipleID());
+                        planDetail.setGmtModified(now);
+                        planDetailList.add(planDetail);
+                    }
+                }
+                res = planDetailService.saveBatch(planDetailList);
             }
-            res = planDetailService.saveBatch(planDetailList);
         }
 
         return res;

+ 94 - 21
cdssman-service/src/main/java/com/diagbot/facade/PlanFacade.java

@@ -19,10 +19,15 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.HospitalPlanCancelVO;
+import com.diagbot.vo.HospitalPlanDetailSaveVO;
+import com.diagbot.vo.HospitalPlanIdVO;
 import com.diagbot.vo.HospitalPlanPageVO;
 import com.diagbot.vo.HospitalPlanSaveVO;
 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;
@@ -51,6 +56,7 @@ public class PlanFacade extends PlanServiceImpl {
      * @return
      */
     public boolean savePlanInfoDatas(HospitalPlanSaveVO hospitalPlanSaveVO) {
+        Long planId = hospitalPlanSaveVO.getId();
         Date now = DateUtil.now();
         boolean res = false;
         // 校验名称是否相同
@@ -58,18 +64,23 @@ public class PlanFacade extends PlanServiceImpl {
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("hospital_id", hospitalPlanSaveVO.getHospitalId())
                 .eq("plan_name", hospitalPlanSaveVO.getPlanName())
-                .eq("plan_code", hospitalPlanSaveVO.getPlanCode())
                 .ne("id", hospitalPlanSaveVO.getId() == null ? -1 : hospitalPlanSaveVO.getId()));
         if (count > 0) {
-            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "相同【医院】下,方案名称已存在");
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该方案名称已存在");
+        }
+        int countTow = this.count(new QueryWrapper<Plan>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalPlanSaveVO.getHospitalId())
+                .eq("plan_code", hospitalPlanSaveVO.getPlanCode())
+                .ne("id", hospitalPlanSaveVO.getId() == null ? -1 : hospitalPlanSaveVO.getId()));
+        if (countTow > 0) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该方案编码已存在");
         }
         if (hospitalPlanSaveVO.getId() != null) {
             UpdateWrapper<Plan> planQuery = new UpdateWrapper<>();
             planQuery.eq("is_deleted", IsDeleteEnum.N.getKey())
                     .eq("id", hospitalPlanSaveVO.getId())
                     .set("gmt_modified", now)
-                    .set("gmt_create", now)
-                    .set("creator", UserUtils.getCurrentPrincipleID())
                     .set("modifier", UserUtils.getCurrentPrincipleID())
                     .set("hospital_id", hospitalPlanSaveVO.getHospitalId())
                     .set("plan_name", hospitalPlanSaveVO.getPlanName())
@@ -84,7 +95,35 @@ public class PlanFacade extends PlanServiceImpl {
             plan.setCreator(UserUtils.getCurrentPrincipleID());
             plan.setModifier(UserUtils.getCurrentPrincipleID());
             res = this.save(plan);
+            planId = plan.getId();
+        }
+        PlanDetailSaveVO planDetailSaveVO = new PlanDetailSaveVO();
+        planDetailSaveVO.setPlanId(planId);
+        planDetailSaveVO.setHospitalId(hospitalPlanSaveVO.getHospitalId());
+        List<HospitalPlanDetailSaveVO> planDetailParentNew = new ArrayList<>();
+        List<HospitalPlanDetailSaveVO> planDetailParent = hospitalPlanSaveVO.getPlanDetailParent();
+        if (ListUtil.isNotEmpty(planDetailParent)) {
+            for (HospitalPlanDetailSaveVO data : planDetailParent) {
+                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();
+                        BeanUtil.copyProperties(dataSub, dataSubNew);
+                        dataSubNew.setPlanId(planId);
+                        planDetailSubNew.add(dataSubNew);
+                    }
+                    dataNew.setPlanDetailSub(planDetailSubNew);
+                    planDetailParentNew.add(dataNew);
+                }
+            }
         }
+
+        planDetailSaveVO.setPlanDetailParent(planDetailParentNew);
+        res = planDetailFacade.savePlanDetail(planDetailSaveVO);
         return res;
     }
 
@@ -137,17 +176,26 @@ public class PlanFacade extends PlanServiceImpl {
     }
 
     public boolean cancelPlanData(HospitalPlanCancelVO hospitalPlanCancelVO) {
+        PlanDetailCancelVO planDetailCancelVO = new PlanDetailCancelVO();
+        planDetailCancelVO.setHospitalId(hospitalPlanCancelVO.getHospitalId());
+        planDetailCancelVO.setPlanId(hospitalPlanCancelVO.getPlanId());
         boolean res = false;
         // 1.先判断数据是否存在有效
-        checkPlan(hospitalPlanCancelVO.getPlanId());
+        Plan plan = checkPlan(hospitalPlanCancelVO.getPlanId());
+        if (plan.getPlanStatus() == 1) {
+            throw new CommonException(CommonErrorCode.FAIL, "该方案启用中,不能删除!");
+        }
         UpdateWrapper<Plan> planNew = new UpdateWrapper<>();
         planNew
                 .eq("id", hospitalPlanCancelVO.getPlanId())
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalPlanCancelVO.getHospitalId())
                 .set("is_deleted", IsDeleteEnum.Y.getKey())
                 .set("modifier", UserUtils.getCurrentPrincipleID())
                 .set("gmt_modified", DateUtil.now());
         res = update(new Plan(), planNew);
+        //再删除明细
+        planDetailFacade.cancelPlanDetail(planDetailCancelVO);
 
         return res;
     }
@@ -186,13 +234,13 @@ public class PlanFacade extends PlanServiceImpl {
         QueryWrapper<Plan> planFand = new QueryWrapper<>();
         planFand.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("plan_code", "plan_default")
-                .eq("hospital_id", 0L);
+                .eq("hospital_id", -1L);
         Plan plan = getOne(planFand, false);
         BeanUtil.copyProperties(plan, data);
         List<Long> planId = new ArrayList<>();
         planId.add(plan.getId());
         HospitalSetVO hospitalSetVO = new HospitalSetVO();
-        hospitalSetVO.setHospitalId(0L);
+        hospitalSetVO.setHospitalId(-1L);
         hospitalSetVO.setPlanId(planId);
         List<PlanDetailDTO> sysSetInfoData = planDetailFacade.getSysSetInfoData(hospitalSetVO);
         data.setPlanDetailDefault(sysSetInfoData);
@@ -200,7 +248,7 @@ public class PlanFacade extends PlanServiceImpl {
     }
 
     public List<PlanInfoPagesDTO> getSysPlanInfoData(HospitalPlanVO hospitalPlanVO) {
-        //查询该医院有没有相关方案配置, 要是没有取默认的
+        //查询该医院有没有相关方案配置
         List<PlanInfoPagesDTO> sysPlanInfoDTO = new ArrayList<>();
         QueryWrapper<Plan> sysPlanInfo = new QueryWrapper<>();
         sysPlanInfo.eq("is_deleted", IsDeleteEnum.N.getKey());
@@ -215,26 +263,51 @@ public class PlanFacade extends PlanServiceImpl {
             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());
+        }
+        if (ListUtil.isEmpty(planId)) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该医院没有配置方案,请先配置方案!");
+        }
+        HospitalSetVO hospitalSetVO = new HospitalSetVO();
+        hospitalSetVO.setHospitalId(hospitalId);
+        hospitalSetVO.setPlanId(planId);
+        List<PlanDetailDTO> sysSetInfoData = planDetailFacade.getSysSetInfoData(hospitalSetVO);
+        //把父级和子级数据sysSetInfoData放在方案下
+        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));
                 }
             }
-            hospitalId = -1L;
+        }
+
+        return sysPlanInfoDTO;
+    }
+
+    public List<PlanInfoPagesDTO> getPlanInfoIds(HospitalPlanIdVO hospitalPlanIdVO) {
+        //查询该医院有没有相关方案配置
+        List<PlanInfoPagesDTO> sysPlanInfoDTO = new ArrayList<>();
+        QueryWrapper<Plan> sysPlanInfo = new QueryWrapper<>();
+        sysPlanInfo.eq("is_deleted", IsDeleteEnum.N.getKey());
+        sysPlanInfo.eq("hospital_id", hospitalPlanIdVO.getHospitalId());
+        sysPlanInfo.eq("id", hospitalPlanIdVO.getId());
+        List<Plan> sysPlanInfoData = list(sysPlanInfo);
+        List<Long> planId = new ArrayList<>();
+        Long hospitalId = hospitalPlanIdVO.getHospitalId();
+        if (ListUtil.isNotEmpty(sysPlanInfoData)) {
+            sysPlanInfoDTO = BeanUtil.listCopyTo(sysPlanInfoData, PlanInfoPagesDTO.class);
+            for (PlanInfoPagesDTO data : sysPlanInfoDTO) {
+                planId.add(data.getId());
+            }
+        }
+        if(ListUtil.isEmpty(planId)){
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据不存在!");
         }
         HospitalSetVO hospitalSetVO = new HospitalSetVO();
         hospitalSetVO.setHospitalId(hospitalId);
         hospitalSetVO.setPlanId(planId);
         List<PlanDetailDTO> sysSetInfoData = planDetailFacade.getSysSetInfoData(hospitalSetVO);
-        //把父级数据放在方案下
+        //把父级和子级数据sysSetInfoData放在方案下
         Map<Long, List<PlanDetailDTO>> dataMap = sysSetInfoData.stream().collect(Collectors.groupingBy(PlanDetailDTO::getPlanId));
         for (Long key : dataMap.keySet()) {
             for (PlanInfoPagesDTO sysPlanInfos : sysPlanInfoDTO) {

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

@@ -3,6 +3,8 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * @author wangfeng
  * @Description:
@@ -11,8 +13,11 @@ import lombok.Setter;
 @Setter
 @Getter
 public class HospitalPlanCancelVO {
+    @NotNull(message = "请输入医院Id")
+    private Long hospitalId;
     /**
-     * 方案编号
+     * 方案id
      */
+    @NotNull(message = "请输入方案id")
     private Long planId;
 }

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

@@ -13,6 +13,7 @@ import java.util.List;
 @Setter
 @Getter
 public class HospitalPlanDetailSaveVO {
+    private Long planId;
     /**
      * 医院编码
      */

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/vo/HospitalPlanIdVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2020-09-17 9:57
+ */
+@Setter
+@Getter
+public class HospitalPlanIdVO {
+    @NotNull(message = "请输入id")
+    private Long id;
+    @NotNull(message = "请输入医院id")
+    private Long hospitalId;
+}

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

@@ -3,6 +3,10 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
 /**
  * @author wangfeng
  * @Description:
@@ -11,25 +15,29 @@ import lombok.Setter;
 @Setter
 @Getter
 public class HospitalPlanSaveVO {
-    private Long Id;
+    private Long id;
     /**
      * 医院编码
      */
+    @NotNull(message = "请输入医院id")
     private Long hospitalId;
 
     /**
      * 方案名称
      */
+    @NotBlank(message = "请输入方案名称")
     private String planName;
 
     /**
      * 方案编号
      */
+    @NotBlank(message = "请输入方案编号")
     private String planCode;
 
     /**
      * 方案启动1:启动,0:不启用
      */
+    @NotNull(message = "请输状态")
     private Integer planStatus;
 
     /**
@@ -37,4 +45,6 @@ public class HospitalPlanSaveVO {
      */
     private String remark;
 
+    private List<HospitalPlanDetailSaveVO> planDetailParent;
+
 }

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

@@ -8,6 +8,7 @@ import com.diagbot.dto.PlanInfoPagesDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.PlanFacade;
 import com.diagbot.vo.HospitalPlanCancelVO;
+import com.diagbot.vo.HospitalPlanIdVO;
 import com.diagbot.vo.HospitalPlanPageVO;
 import com.diagbot.vo.HospitalPlanSaveVO;
 import com.diagbot.vo.HospitalPlanVO;
@@ -92,5 +93,12 @@ public class PlanController {
         PlanInfoDefaultDTO data = planFacade.getPlansDefaults();
         return RespDTO.onSuc(data);
     }
+    @ApiOperation(value = "根据方案id获取配置信息[by:wangfeng]", notes = "id :方案编号  <br> ")
+    @PostMapping("/getPlanInfoIds")
+    @SysLogger("getPlanInfoIds")
+    public RespDTO<List<PlanInfoPagesDTO>> getPlanInfoIds(@Valid @RequestBody HospitalPlanIdVO hospitalPlanIdVO) {
+        List<PlanInfoPagesDTO> data = planFacade.getPlanInfoIds(hospitalPlanIdVO);
+        return RespDTO.onSuc(data);
+    }
 }
 

+ 22 - 11
cdssman-service/src/main/resources/mapper/PlanMapper.xml

@@ -18,18 +18,28 @@
     </resultMap>
     <select id="getPlanInfoPageAll" resultType="com.diagbot.dto.PlanInfoPagesDTO">
         SELECT
-        id as id,
-        hospital_id as hospitalId,
-        plan_name as planName,
-        plan_code as planCode,
-        plan_status as planStatus
-        FROM tran_plan u
-        WHERE u.is_deleted = 'N'
-        and hospital_id != -1
+        u.id AS id,
+        u.hospital_id AS hospitalId,
+        u.plan_name AS planName,
+        u.plan_code AS planCode,
+        u.plan_status AS planStatus,
+        u.gmt_create AS gmtCreate,
+        GROUP_CONCAT(
+        pd.NAME
+        ORDER BY
+        pd.order_no ASC
+        ) AS planDetail
+        FROM
+        tran_plan u
+        LEFT JOIN tran_plan_detail pd ON pd.plan_id = u.id AND pd.status = 1 AND pd.is_deleted = 'N'
+        AND pd.parent_id = -1
+        WHERE
+        u.is_deleted = 'N'
         <if test="hospitalId !=null">
-          and hospital_id =#{hospitalId}
+            and u.hospital_id =#{hospitalId}
         </if>
-        <if test="planName != null and planName =''">
+
+        <if test="planName != null and planName!=''">
             AND UPPER(u.plan_name) LIKE CONCAT('%', UPPER(trim(#{planName})), '%')
         </if>
         <if test="planCode != null and planCode != ''">
@@ -38,6 +48,7 @@
         <if test="planStatus != null">
             AND u.plan_status = #{planStatus}
         </if>
-        ORDER BY gmt_create DESC
+        GROUP BY u.id
+        ORDER BY planStatus DESC , gmtCreate DESC
     </select>
 </mapper>