瀏覽代碼

Merge remote-tracking branch 'origin/master'

lifang 3 月之前
父節點
當前提交
384ec30a4d

+ 8 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/app/controller/AppClinicRoomController.java

@@ -85,6 +85,7 @@ public class AppClinicRoomController extends BaseController {
     @ApiOperationSupport(author = "lf",order = 6)
     @ApiOperation(value="添加患者手术信息",notes = "权限: 无")
     @PostMapping("/add")
+    @Deprecated
     public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) BizClinicAddOrEditDTO source) {
         return CommonResult.success(clinicRoomService.stdAddDoctorApp(source));
     }
@@ -117,10 +118,16 @@ public class AppClinicRoomController extends BaseController {
         return CommonResult.success(clinicRoomService.stdAppSelectListByPatientCodeLast(source));
     }
     @ApiOperationSupport(author = "wangzl",order = 9)
-    @ApiOperation(value="绑定最新一条手术信息",notes = "权限: 无")
+    @ApiOperation(value="绑定手术信息",notes = "权限: 无")
     @PostMapping("/bindLastClinic")
     public CommonResult<Boolean> stdBindLastClinic(@RequestBody@Validated(Insert.class) BizClinicAddOrEditDTO source) {
         return CommonResult.success(clinicRoomService.stdBindLastClinic(source));
     }
 
+    @ApiOperationSupport(author = "wangzl",order = 10)
+    @ApiOperation(value="新增手术信息",notes = "权限: 无")
+    @PostMapping("/insert")
+    public CommonResult<Boolean> stdInsertDoctorApp(@RequestBody@Validated(Insert.class) BizClinicAddOrEditDTO source) {
+        return CommonResult.success(clinicRoomService.stdInsertDoctorApp(source));
+    }
 }

+ 8 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizClinicRoomService.java

@@ -189,4 +189,12 @@ public interface IBizClinicRoomService {
      * @date 2025/9/22
      */
     Boolean stdBindLastClinic(BizClinicAddOrEditDTO source);
+
+    /**
+     * @description: 医生端新增手术信息
+     * @author wangzl
+     * @date 2025/9/23
+     */
+    Boolean stdInsertDoctorApp(BizClinicAddOrEditDTO source);
+
 }

+ 60 - 16
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizClinicRoomServiceImpl.java

@@ -16,7 +16,6 @@ import cn.tr.module.smart.app.controller.vo.WxDoctorClinicRoomThumbnailVO;
 import cn.tr.module.smart.common.dto.BizClinicAddOrEditDTO;
 import cn.tr.module.smart.common.dto.BizClinicRoomDTO;
 import cn.tr.module.smart.common.dto.BizClinicRoomQueryDTO;
-import cn.tr.module.smart.common.dto.BizDeptDTO;
 import cn.tr.module.smart.common.entity.BizWxAppletQuestionAnswerEntity;
 import cn.tr.module.smart.common.enums.ClinicPhaseEnums;
 import cn.tr.module.smart.common.enums.InfusionBindType;
@@ -222,6 +221,12 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
     @Transactional(rollbackFor = Exception.class)
     public Boolean wxAppletFinishClinic(BizWxAppletFinishClinicDTO source) {
         BizClinicRoomPO clinicRoom = baseRepository.selectById(source.getClinicId());
+        if (ObjectUtil.isNull(clinicRoom)) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息不存在");
+        }
+        if (ClinicPhaseEnums.AFTER.equals(clinicRoom.getClinicStatus())) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术已结束,无法结束手术");
+        }
         if (ObjectUtil.compare(source.getClinicEndTime(), new Date()) > 0) {
             throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001
                     , String.format("手术结束时间[%s],不得大于当前时间[%s]"
@@ -370,9 +375,9 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
         }
         if (ObjectUtil.compare(clinicRoom.getClinicStartTime(), finishDTO.getClinicEndTime()) > 0) {
             throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001
-                    , String.format("手术结束时间[%s],不得早于开始时间[%s]"
-                    , DateUtil.formatDateTime(finishDTO.getClinicEndTime())
-                    ,DateUtil.formatDateTime(clinicRoom.getClinicStartTime())));
+                    , String.format("手术结束时间[%s],不得早于手术开始时间[%s]"
+                    , DateUtil.formatDateTime(finishDTO.getClinicEndTime()),
+                    DateUtil.formatDateTime(clinicRoom.getClinicStartTime())));
         }
         int update = baseRepository.update(null, new LambdaUpdateWrapper<BizClinicRoomPO>()
                 .set(BizClinicRoomPO::getClinicStatus, ClinicPhaseEnums.AFTER)
@@ -428,10 +433,16 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
             //若未监护,则证明该手术是由医生端发起的,添加监护信息(手术信息以医生输入为主,如果医生没有输入,则按照病人输入的来)
             clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
             //更新监护信息
-            updateClinicInfoBaseOnDoctorByWxApplet(clinicRoom, source);
-            clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
-            clinicRoom.setClinicStartTime(source.getClinicStartTime());
-            clinicRoom.setClinicEndTime(null);
+            //医生端只更新手术开始时间、科室、手术名称、手术状态
+            //如果手术时间大于当前时间,则手术状态改为术前
+            if(ObjectUtil.compare(new Date(), source.getClinicStartTime()) > 0){
+                clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
+                clinicRoom.setClinicEndTime(null);
+            }
+            clinicRoom.setClinicStartTime(clinicStartTime);
+            clinicRoom.setDeptId(source.getDeptId());
+            clinicRoom.setDeptName(source.getDeptName());
+            clinicRoom.setClinicName(source.getClinicName());
             baseRepository.updateById(clinicRoom);
         } else {
             //手术不存在,则新增手术信息
@@ -636,9 +647,9 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
             throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "医生信息不存在");
         }
         List<String> clinicIds = source.getClinicIds();
-        if(clinicIds.stream().anyMatch(Objects::isNull)){
-            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息id包含空值");
-        }
+                if(clinicIds.stream().anyMatch(Objects::isNull)){
+                    throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息id包含空值");
+                }
         //先删除跟手术医生关联
         clinicRoomDoctorUserRepository.delete(new LambdaQueryWrapper<BizClinicRoomDoctorUserPO>()
                 .in(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicIds));
@@ -682,16 +693,49 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
         }
         //若未监护,则证明该手术是由医生端发起的,添加监护信息(手术信息以医生输入为主,如果医生没有输入,则按照病人输入的来)
         clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
-        //更新监护信息
-        updateClinicInfoBaseOnDoctorByWxApplet(clinicRoom, source);
         //更新医生录入手术信息
-        clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
+        if (ObjectUtil.compare(source.getClinicStartTime(), new Date()) > 0) {
+            clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
+            clinicRoom.setClinicEndTime(null);
+        }
         clinicRoom.setClinicStartTime(clinicStartTime);
-        clinicRoom.setClinicEndTime(null);
         clinicRoom.setDeptId(source.getDeptId());
         clinicRoom.setDeptName(source.getDeptName());
         clinicRoom.setClinicName(source.getClinicName());
-        return baseRepository.updateById(clinicRoom)!=0;
+        return baseRepository.updateById(clinicRoom) != 0;
+    }
+
+    /**
+     * @param source
+     * @description: 医生端新增手术信息
+     * @author wangzl
+     * @date 2025/9/23
+     */
+    @Override
+    public Boolean stdInsertDoctorApp(BizClinicAddOrEditDTO source) {
+        String userId = LoginUserStrategy.tr.getCurrentUserId();
+        String patientCode = source.getPatientCode();
+        //1、先判断是否已经添加过了患者信息
+        BizPatientPO patient = patientRepository.selectOne(new LambdaQueryWrapper<BizPatientPO>()
+                .eq(BizPatientPO::getPatientCode, patientCode)
+                .last("limit 1"));
+        if (ObjectUtil.isNull(patient)) {
+            patient = patientService.insertBizPatientAndReturnObj(source);
+        }
+        BizClinicRoomPO clinicRoom = BizClinicRoomMapper.INSTANCE.convertPO(source);
+        clinicRoom.setPatientId(patient.getId());
+        clinicRoom.setFollowUpCount(0);
+        clinicRoom.setFollowUp(Boolean.FALSE);
+        clinicRoom.setLastModifyUserType(UserTypeEnums.APP_DOCTOR);
+        clinicRoom.setLastModifyUserBy(userId);
+        clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
+        this.baseRepository.insert(clinicRoom);
+        //更新患者绑定的最新手术id
+        patient.setCurrentClinicId(clinicRoom.getId());
+        patientRepository.updateById(patient);
+        //更新医生看护列表
+        clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
+        return Boolean.TRUE;
     }
 
     /**