lihong 11 місяців тому
батько
коміт
4d6f47df55

+ 6 - 0
src/main/java/thyyxxk/webserver/dao/his/medicaladvice/patientinfo/ZkManageDao.java

@@ -177,4 +177,10 @@ public interface ZkManageDao {
     List<BigDecimal> detailTy(ZkBedVo param);
     @Select(" select top 1 * from zy_order_zk  where act_order_no=#{actOrderNo} ")
     ZyOrderZk selectZkOrder(BigDecimal actOrderNo);
+    @Insert(" insert into zy_zk_list (inpatient_no, admiss_times, f_ward_code, f_dept_code, ward_code, dept_code, zk_times, op_id, " +
+            "                        op_time, small_dept) " +
+            " select top 1 #{inpatientNo}, #{admissTimes}, #{origDept}, #{origDept}, #{wardCode}, #{wardCode},  case when max(trans_times) is null then 1 else max(trans_times)+1 end trans_times, #{opId},getdate(),#{zkDept}"
+            +"  from  zy_adt where  inpatient_no = #{inpatientNo} and admiss_times = #{admissTimes} "
+    )
+    int insertZyZkListNoActOrderNo(ZkBedVo item);
 }

+ 31 - 16
src/main/java/thyyxxk/webserver/service/medicaladvice/patientinfo/ZkManageService.java

@@ -44,6 +44,8 @@ public class ZkManageService {
     private AdjustBedDao adjustBedDao;
     @Resource
     private RedisLikeService redisLikeService;
+    //手术病室编码
+    private static final String SJ_DEPT_CODE = "8000130";
 
 
     public List<ZyActpatient> queryZkPatient(Map<String, String> query) {
@@ -66,22 +68,23 @@ public class ZkManageService {
         AssertUtil.isnotBlank(param.getWardCode(), "病室不能为空");
         AssertUtil.isnotBlank(param.getDeptCode(), "转科病室不能为空");
         AssertUtil.isnotBlank(param.getZkDept(), "小科室不能为空");
-        Map<String, Object> map = dao.selectZkYz(param);
-        if (CollUtil.isEmpty(map) || Convert.toInt(map.get("zk_count"), 0) == 0) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, StrUtil.format("{}病人没有转科医嘱,不可做转科处理!", param.getInpatientNo()));
-        }
-
-        ZyOrderZk zyOrderZk = dao.selectZkOrder(Convert.toBigDecimal(map.get("act_order_no")));
-        if(zyOrderZk == null){
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, StrUtil.format("{}病人没有转科医嘱详情,请确认!", param.getInpatientNo()));
-        }
+        if(!passZk(param)){
+            Map<String, Object> map = dao.selectZkYz(param);
+            if (CollUtil.isEmpty(map) || Convert.toInt(map.get("zk_count"), 0) == 0) {
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, StrUtil.format("{}病人没有转科医嘱,不可做转科处理!", param.getInpatientNo()));
+            }
+            ZyOrderZk zyOrderZk = dao.selectZkOrder(Convert.toBigDecimal(map.get("act_order_no")));
+            if(zyOrderZk == null){
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, StrUtil.format("{}病人没有转科医嘱详情,请确认!", param.getInpatientNo()));
+            }
 
-        if(!param.getDeptCode().equals(zyOrderZk.getNewWard()) || !param.getZkDept().equals(zyOrderZk.getNewDept())){
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, StrUtil.format("{}病人选择的转科病区或小科室不对,正确的转科医嘱为病区:[{}],小科室:[{}]!", param.getInpatientNo(),redisLikeService.getDeptName(zyOrderZk.getNewWard()),redisLikeService.getDeptName(zyOrderZk.getNewDept())));
-        }
-        Integer countZk = dao.selectZyZkList(param.getInpatientNo(), param.getAdmissTimes(), Convert.toBigDecimal(map.get("act_order_no")));
-        if (countZk > 0) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, StrUtil.format("{}病人已经转科,请不要重复操作!", param.getInpatientNo()));
+            if(!param.getDeptCode().equals(zyOrderZk.getNewWard()) || !param.getZkDept().equals(zyOrderZk.getNewDept())){
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, StrUtil.format("{}病人选择的转科病区或小科室不对,正确的转科医嘱为病区:[{}],小科室:[{}]!", param.getInpatientNo(),redisLikeService.getDeptName(zyOrderZk.getNewWard()),redisLikeService.getDeptName(zyOrderZk.getNewDept())));
+            }
+            Integer countZk = dao.selectZyZkList(param.getInpatientNo(), param.getAdmissTimes(), Convert.toBigDecimal(map.get("act_order_no")));
+            if (countZk > 0) {
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, StrUtil.format("{}病人已经转科,请不要重复操作!", param.getInpatientNo()));
+            }
         }
         Integer count = dao.countYd(param);
         Integer countTy = dao.sumTy(param);
@@ -102,6 +105,14 @@ public class ZkManageService {
         patientDao.zyReceiveOne(param.getInpatientNo(), param.getAdmissTimes(), infant);
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE,"药品和医嘱接收成功!");
     }
+
+    private boolean passZk(ZkBedVo param){
+        if(SJ_DEPT_CODE.equals(param.getDeptCode()) || SJ_DEPT_CODE.equals(param.getWardCode())){
+            return true;
+        }
+        return false;
+    }
+
     @Transactional(rollbackFor = Exception.class)
     public ResultVo<String> saveZkData(List<ZkBedVo> param) {
         List<ZkBedVo> data = param.stream().filter(item -> StrUtil.isNotBlank(item.getInpatientNo())).collect(Collectors.toList());
@@ -142,7 +153,11 @@ public class ZkManageService {
             dao.updateZkZyActpatien(item);
             dao.insertZyAdt(item);
             item.setOpId(userId);
-            dao.insertZyZkList(item);
+            if(SJ_DEPT_CODE.equals(item.getOrigDept()) || SJ_DEPT_CODE.equals(item.getWardCode())){
+                dao.insertZyZkListNoActOrderNo(item);
+            }else {
+                dao.insertZyZkList(item);
+            }
         }
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE,"保存成功");
     }