浏览代码

增加web端切换医生接口,泵列表提供别名查询

wangzl 3 月之前
父节点
当前提交
70f39e2772

+ 3 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizDeviceQueryDTO.java

@@ -26,4 +26,7 @@ public class BizDeviceQueryDTO implements Serializable {
 
     @ApiModelProperty("是否绑定临床")
     private Boolean bindClinic;
+
+    @ApiModelProperty("泵别名")
+    private String alias;
 }

+ 3 - 2
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizClinicRoomDoctorUserService.java

@@ -1,7 +1,8 @@
 package cn.tr.module.smart.common.service;
 
 
-
+import cn.tr.module.smart.common.po.BizClinicRoomDoctorUserPO;
+import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * 诊室与医生绑定Service接口
@@ -9,7 +10,7 @@ package cn.tr.module.smart.common.service;
  * @author wangzl
  * @date  2025/07/18 16:55
  **/
-public interface IBizClinicRoomDoctorUserService{
+public interface IBizClinicRoomDoctorUserService extends IService<BizClinicRoomDoctorUserPO> {
 
     void stdInsertBizClinicRoomDoctor(String userId, String id);
 }

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

@@ -12,6 +12,7 @@ import cn.tr.module.smart.common.dto.BizClinicRoomQueryDTO;
 import cn.tr.module.smart.common.vo.BizClinicAndAssessmentVO;
 import cn.tr.module.smart.common.vo.BizClinicAndDeviceVO;
 import cn.tr.module.smart.common.vo.BizClinicAndQuestionVO;
+import cn.tr.module.smart.web.dto.BizClinicShiftDoctorDTO;
 import cn.tr.module.smart.web.dto.BizDeviceBindClinicDTO;
 import cn.tr.module.smart.web.vo.BizClinicVO;
 import cn.tr.module.smart.wx.controller.vo.BizAiAgentParamVO;
@@ -168,4 +169,11 @@ public interface IBizClinicRoomService {
      * @return
      */
     Boolean bindDevice(BizDeviceBindClinicDTO source);
+
+    /**
+     * @description: 手术切换医生
+     * @author wangzl
+     * @date 2025/9/11
+     */
+    Boolean shiftDoctor(BizClinicShiftDoctorDTO source);
 }

+ 2 - 5
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizClinicRoomDoctorUserServiceImpl.java

@@ -3,11 +3,9 @@ package cn.tr.module.smart.common.service.impl;
 import cn.tr.module.smart.common.po.BizClinicRoomDoctorUserPO;
 import cn.tr.module.smart.common.repository.BizClinicRoomDoctorUserRepository;
 import cn.tr.module.smart.common.service.IBizClinicRoomDoctorUserService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import java.util.Collection;
-import java.util.List;
 /**
  * 诊室与医生绑定Service接口实现类
  *
@@ -15,7 +13,7 @@ import java.util.List;
  * @date  2025/07/18 16:55
  **/
 @Service
-public class BizClinicRoomDoctorUserServiceImpl implements IBizClinicRoomDoctorUserService {
+public class BizClinicRoomDoctorUserServiceImpl extends ServiceImpl<BizClinicRoomDoctorUserRepository,BizClinicRoomDoctorUserPO> implements IBizClinicRoomDoctorUserService {
     @Autowired
     private BizClinicRoomDoctorUserRepository baseRepository;
 
@@ -27,5 +25,4 @@ public class BizClinicRoomDoctorUserServiceImpl implements IBizClinicRoomDoctorU
         baseRepository.insert(clinicRoomDoctorUserPO);
     }
 
-    ;
 }

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

@@ -32,6 +32,7 @@ import cn.tr.module.smart.common.service.*;
 import cn.tr.module.smart.common.vo.BizClinicAndAssessmentVO;
 import cn.tr.module.smart.common.vo.BizClinicAndDeviceVO;
 import cn.tr.module.smart.common.vo.BizClinicAndQuestionVO;
+import cn.tr.module.smart.web.dto.BizClinicShiftDoctorDTO;
 import cn.tr.module.smart.web.dto.BizDeviceBindClinicDTO;
 import cn.tr.module.smart.web.vo.BizClinicVO;
 import cn.tr.module.smart.wx.controller.vo.BizAiAgentParamVO;
@@ -40,6 +41,8 @@ import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
 import cn.tr.module.smart.wx.controller.vo.IdCardInfoVO;
 import cn.tr.module.smart.wx.dto.*;
 import cn.tr.module.smart.wx.utils.Id2Utils;
+import cn.tr.module.sys.user.po.SysUserPO;
+import cn.tr.module.sys.user.repository.SysUserRepository;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -91,8 +94,6 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
     @Autowired
     @Lazy
     private IBizClinicRoomDoctorUserService clinicRoomDoctorUserService;
-    @Autowired
-    private BizClinicRoomDoctorUserRepository roomDoctorUserRepository;
 
     @Autowired
     private BizInfusionClinicRepository infusionClinicRepository;
@@ -117,6 +118,9 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
 
     @Autowired
     private BizQuestionDeptRepository questionDeptRepository;
+
+    @Autowired
+    private SysUserRepository sysUserRepository;
     @Override
     public List<BizWxAppletClinicDetailVO> stdSelectWxAppletClinicList(BizWxAppletClinicQueryDTO query) {
         return baseRepository.stdSelectWxAppletClinicList(query);
@@ -409,7 +413,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
         BizClinicRoomPO clinicRoom = baseRepository.stdWxAppletSelectByPatientCodeAndClinicStartTime(patientCode, clinicStartTime);
         if (ObjectUtil.isNotNull(clinicRoom)) {
             //手术已经存在,判断该手术是否已被医生监护
-            BizClinicRoomDoctorUserPO clinicRoomDoctorUserPO = roomDoctorUserRepository.selectOne(new LambdaQueryWrapper<BizClinicRoomDoctorUserPO>()
+            BizClinicRoomDoctorUserPO clinicRoomDoctorUserPO = clinicRoomDoctorUserRepository.selectOne(new LambdaQueryWrapper<BizClinicRoomDoctorUserPO>()
                     .eq(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicRoom.getId())
                     .last("limit 1"));
             if (ObjectUtil.isNotNull(clinicRoomDoctorUserPO)) {
@@ -600,6 +604,37 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
         return Boolean.TRUE;
     }
 
+    /**
+     * @param source
+     * @description: 手术切换医生
+     * @author wangzl
+     * @date 2025/9/11
+     */
+    @Override
+    public Boolean shiftDoctor(BizClinicShiftDoctorDTO source) {
+        String doctorId = source.getDoctorId();
+        SysUserPO sysUserPO = sysUserRepository.selectById(doctorId);
+        if (ObjectUtil.isNull(sysUserPO)) {
+            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包含空值");
+                }
+        //先删除跟手术医生关联
+        clinicRoomDoctorUserRepository.delete(new LambdaQueryWrapper<BizClinicRoomDoctorUserPO>()
+                .in(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicIds));
+
+        List<BizClinicRoomDoctorUserPO> collect = clinicIds.stream().filter(Objects::nonNull)
+                .map(clinicId -> {
+                    BizClinicRoomDoctorUserPO po = new BizClinicRoomDoctorUserPO();
+                    po.setClinicRoomId(clinicId);
+                    po.setUserId(doctorId);
+                    return po;
+                }).collect(Collectors.toList());
+        return clinicRoomDoctorUserService.saveBatch(collect);
+    }
+
     /**
      * 微信小程序基于医生已填写的信息更新数据
      */

+ 9 - 2
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizClinicRoomController.java

@@ -7,6 +7,7 @@ import cn.tr.module.smart.common.dto.BizClinicRoomDTO;
 import cn.tr.module.smart.common.dto.BizClinicRoomQueryDTO;
 import cn.tr.module.smart.common.service.IBizClinicRoomService;
 import cn.tr.module.smart.common.service.IBizMpPublishTaskService;
+import cn.tr.module.smart.web.dto.BizClinicShiftDoctorDTO;
 import cn.tr.module.smart.web.dto.BizDeviceBindClinicDTO;
 import cn.tr.module.smart.web.vo.BizClinicVO;
 import cn.tr.plugin.mybatis.base.BaseController;
@@ -16,7 +17,6 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import cn.tr.module.smart.web.vo.BizClinicVO;
 /**
  * 诊疗室控制器
  *
@@ -48,10 +48,17 @@ public class BizClinicRoomController extends BaseController{
         return CommonResult.success(bizClinicRoomService.selectBizClinicRoomById(id));
     }
 
-    @ApiOperationSupport(author = "lf", order = 6)
+    @ApiOperationSupport(author = "lf", order = 3)
     @ApiOperation(value = "绑定泵的输注信息", notes = "权限: 无")
     @PostMapping("/bindDevice")
     public CommonResult<Boolean> bindDevice(@RequestBody@Validated BizDeviceBindClinicDTO source) {
         return CommonResult.success(bizClinicRoomService.bindDevice(source));
     }
+
+    @ApiOperationSupport(author = "wangzl", order = 4)
+    @ApiOperation(value = "手术信切换医生", notes = "权限: 无")
+    @PostMapping("/shiftDoctor")
+    public CommonResult<Boolean> shiftDoctor(@RequestBody@Validated BizClinicShiftDoctorDTO source) {
+        return CommonResult.success(bizClinicRoomService.shiftDoctor(source));
+    }
 }

+ 27 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/dto/BizClinicShiftDoctorDTO.java

@@ -0,0 +1,27 @@
+package cn.tr.module.smart.web.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * TODO
+ *
+ * @author wangzl
+ * @date 2025/9/11 9:32
+ */
+@Data
+@ApiModel("手术切换医生信息")
+public class BizClinicShiftDoctorDTO {
+
+    @ApiModelProperty(value = "医生ID",position = 1)
+    @NotBlank(message = "医生ID不能为空")
+    private String doctorId;
+
+    @ApiModelProperty(value = "手术ID")
+    private List<String> clinicIds;
+
+}

+ 3 - 0
tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizDeviceMapper.xml

@@ -126,6 +126,9 @@
             <if test="query.bindClinic != null and query.bindClinic == false">
                 and bcr.id is null
             </if>
+            <if test="query.alias != null and query.alias != ''">
+                and bd.alias like concat('%',#{query.alias},'%')
+            </if>
         </where>
     </select>