Explorar el Código

医生端绑定泵信息,查询泵列表接口提交

wangzl hace 2 meses
padre
commit
af9ae73290

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

@@ -5,15 +5,10 @@ import cn.hutool.core.util.StrUtil;
 import cn.tr.core.pojo.CommonResult;
 import cn.tr.core.pojo.TableDataInfo;
 import cn.tr.core.validation.Insert;
-import cn.tr.module.smart.app.controller.dto.AppDoctorBindClinicDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicFinishDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicQueryByPatientCodeDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicRoomDTO;
-import cn.tr.module.smart.app.controller.vo.AppDoctorInfusionHistoryVO;
-import cn.tr.module.smart.app.controller.vo.WxDoctorClinicRoomThumbnailVO;
-import cn.tr.module.smart.app.controller.vo.DoctorClinicRoomVO;
-import cn.tr.module.smart.common.service.IBizClinicRoomService;
+import cn.tr.module.smart.app.controller.dto.*;
+import cn.tr.module.smart.app.controller.vo.*;
 import cn.tr.module.smart.common.dto.BizClinicAddOrEditDTO;
+import cn.tr.module.smart.common.service.IBizClinicRoomService;
 import cn.tr.module.smart.wx.dto.BizMpPublishInfoDTO;
 import cn.tr.plugin.mybatis.base.BaseController;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -24,7 +19,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.*;
+import java.util.List;
 /**
  * @author wangzl
  * @description: TODO
@@ -139,8 +134,9 @@ public class AppClinicRoomController extends BaseController {
     @ApiOperationSupport(author = "wangzl", order = 11)
     @ApiOperation(value = "查询手术信息列表", notes = "权限: 无")
     @PostMapping("/queryClinicList")
-    public CommonResult<List<WxDoctorClinicRoomThumbnailVO>> queryClinicList(@RequestBody AppDoctorClinicQueryByPatientCodeDTO source) {
-        return CommonResult.success(clinicRoomService.queryClinicList(source));
+    public TableDataInfo<WxDoctorClinicRoomThumbnailVO> queryClinicList(@RequestBody AppDoctorClinicQueryByPatientCodeDTO source) {
+        startPage();
+        return getDataTable(clinicRoomService.queryClinicList(source));
     }
     @ApiOperationSupport(author = "wangzl", order = 12)
     @ApiOperation(value = "绑定手术信息", notes = "权限: 无")
@@ -148,4 +144,19 @@ public class AppClinicRoomController extends BaseController {
     public CommonResult<Boolean> bindClinic(@RequestBody AppDoctorBindClinicDTO source) {
         return CommonResult.success(clinicRoomService.bindClinic(source));
     }
+
+    @ApiOperationSupport(author = "wangzl", order = 13)
+    @ApiOperation(value = "查询泵列表", notes = "权限: 无")
+    @PostMapping("/deviceList")
+    public TableDataInfo<AppBizDeviceListVO> queryPumpList(@RequestBody AppDeviceListQueryDTO source) {
+        startPage();
+        return getDataTable(clinicRoomService.queryPumpList(source));
+    }
+
+    @ApiOperationSupport(author = "wangzl", order = 14)
+    @ApiOperation(value = "绑定泵信息", notes = "权限: 无")
+    @PostMapping("/bindDevice")
+    public CommonResult<Boolean> bindDevice(@RequestBody AppDoctorBindPumpDTO source) {
+        return CommonResult.success(clinicRoomService.bindDevice(source));
+    }
 }

+ 24 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/app/controller/dto/AppDeviceListQueryDTO.java

@@ -0,0 +1,24 @@
+package cn.tr.module.smart.app.controller.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+/**
+ * TODO
+ *
+ * @author wangzl
+ * @date 2025/10/11 7:50
+ */
+@Data
+@ApiModel("医生端崩列表查询参数")
+@ToString
+public class AppDeviceListQueryDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("泵号,泵别名检索")
+    private String condition;
+}

+ 29 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/app/controller/dto/AppDoctorBindPumpDTO.java

@@ -0,0 +1,29 @@
+package cn.tr.module.smart.app.controller.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * TODO
+ *
+ * @author wangzl
+ * @date 2025/10/11 8:34
+ */
+@Data
+@ApiModel("绑定泵信息")
+@ToString
+public class AppDoctorBindPumpDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("泵Id")
+    private String deviceIds;
+
+    @ApiModelProperty("手术ID")
+    private String clinicId;
+
+}

+ 53 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/app/controller/vo/AppBizDeviceListVO.java

@@ -0,0 +1,53 @@
+package cn.tr.module.smart.app.controller.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * TODO
+ *
+ * @author wangzl
+ * @date 2025/10/11 7:49
+ */
+@Data
+@ApiModel("医生端泵信息列表")
+public class AppBizDeviceListVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("泵类型")
+    private String deviceType;
+
+    @ApiModelProperty("别名")
+    private String alias;
+
+    @ApiModelProperty("泵Id")
+    private String deviceId;
+
+    @ApiModelProperty(value = "剩余电量")
+    private Integer electricQuantity;
+
+    @ApiModelProperty(value = "泵运行状态")
+    private String deviceRunState;
+
+    @ApiModelProperty(value = "报警信息")
+    private String deviceAlarm;
+
+    @ApiModelProperty(value = "电量偏低提醒")
+    private Boolean warnLowBattery;
+
+    @ApiModelProperty(value = "输注即将结束提醒")
+    private Boolean warnWillFinished;
+
+    @ApiModelProperty(value = "镇痛不足提醒")
+    private Boolean warnAnalgesicPoor;
+
+    @ApiModelProperty(value = "加减档提示")
+    private String warnFlow;
+
+    @ApiModelProperty(value = "输注总量")
+    private Integer totalDose;
+}

+ 4 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/repository/BizDeviceRepository.java

@@ -1,5 +1,7 @@
 package cn.tr.module.smart.common.repository;
 
+import cn.tr.module.smart.app.controller.dto.AppDeviceListQueryDTO;
+import cn.tr.module.smart.app.controller.vo.AppBizDeviceListVO;
 import cn.tr.module.smart.common.dto.BizDeviceDTO;
 import cn.tr.module.smart.common.dto.BizDeviceQueryDTO;
 import cn.tr.module.smart.common.po.BizDevicePO;
@@ -27,4 +29,6 @@ public interface BizDeviceRepository extends BaseMapper<BizDevicePO> {
 
 
     List<BizDeviceAndClinicDetailVO> selectDeviceDetailAndClinicList(@Param("query")BizDeviceAndClinicDetailQueryDTO queryDTO);
+
+    List<AppBizDeviceListVO> queryPumpList(@Param("query") AppDeviceListQueryDTO query);
 }

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

@@ -1,9 +1,7 @@
 package cn.tr.module.smart.common.service;
 
-import cn.tr.module.smart.app.controller.dto.AppDoctorBindClinicDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicFinishDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicQueryByPatientCodeDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicRoomDTO;
+import cn.tr.module.smart.app.controller.dto.*;
+import cn.tr.module.smart.app.controller.vo.AppBizDeviceListVO;
 import cn.tr.module.smart.app.controller.vo.AppDoctorInfusionHistoryVO;
 import cn.tr.module.smart.app.controller.vo.DoctorClinicRoomVO;
 import cn.tr.module.smart.app.controller.vo.WxDoctorClinicRoomThumbnailVO;
@@ -216,4 +214,18 @@ public interface IBizClinicRoomService {
      * @date 2025/10/10
      */
     Boolean bindClinic(AppDoctorBindClinicDTO source);
+
+    /**
+     * @description: 医生端泵列表查询
+     * @author wangzl
+     * @date 2025/10/11
+     */
+    List<AppBizDeviceListVO> queryPumpList(AppDeviceListQueryDTO source);
+
+    /**
+     * @description: 医生端绑定泵信息
+     * @author wangzl
+     * @date 2025/10/11
+     */
+    Boolean bindDevice(AppDoctorBindPumpDTO source);
 }

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

@@ -8,10 +8,8 @@ import cn.tr.core.exception.ServiceException;
 import cn.tr.core.exception.TRExcCode;
 import cn.tr.core.strategy.LoginUserStrategy;
 import cn.tr.module.mobile.repository.ImGroupUserRepository;
-import cn.tr.module.smart.app.controller.dto.AppDoctorBindClinicDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicFinishDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicQueryByPatientCodeDTO;
-import cn.tr.module.smart.app.controller.dto.AppDoctorClinicRoomDTO;
+import cn.tr.module.smart.app.controller.dto.*;
+import cn.tr.module.smart.app.controller.vo.AppBizDeviceListVO;
 import cn.tr.module.smart.app.controller.vo.AppDoctorInfusionHistoryVO;
 import cn.tr.module.smart.app.controller.vo.DoctorClinicRoomVO;
 import cn.tr.module.smart.app.controller.vo.WxDoctorClinicRoomThumbnailVO;
@@ -816,6 +814,44 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
         return clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctors(userId, clinicIds);
     }
 
+    /**
+     * @param source
+     * @description: 医生端泵列表查询
+     * @author wangzl
+     * @date 2025/10/11
+     */
+    @Override
+    public List<AppBizDeviceListVO> queryPumpList(AppDeviceListQueryDTO source) {
+        return deviceRepository.queryPumpList(source);
+    }
+
+    /**
+     * @param source
+     * @description: 医生端绑定泵信息
+     * @author wangzl
+     * @date 2025/10/11
+     */
+    @Override
+    public Boolean bindDevice(AppDoctorBindPumpDTO source) {
+        BizDevicePO bizDevicePO = deviceRepository.selectById(source.getDeviceIds());
+        if (ObjectUtil.isNull(bizDevicePO)) {
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "泵信息不存在");
+        }
+        //如果同一台手术绑定了泵,则进行解绑重新绑定新泵
+        BizInfusionClinicPO bizInfusionClinicPO = infusionClinicRepository.selectOne(new LambdaQueryWrapper<BizInfusionClinicPO>()
+                .eq(BizInfusionClinicPO::getClinicId, source.getClinicId())
+                .last("limit 1"));
+        if(ObjectUtil.isNotNull(bizInfusionClinicPO)){
+            infusionClinicRepository.deleteById(bizInfusionClinicPO.getId());
+        }
+        BizInfusionClinicPO bizInfusionClinic = new BizInfusionClinicPO();
+        bizInfusionClinic.setClinicId(source.getClinicId());
+        bizInfusionClinic.setInfusionId(bizDevicePO.getInfusionId());
+        bizInfusionClinic.setType(InfusionBindType.manualBind);
+        bizInfusionClinic.setDeviceId(bizDevicePO.getDeviceId());
+        return infusionClinicRepository.insert(bizInfusionClinic)!=0;
+    }
+
     /**
      * 微信小程序基于医生已填写的信息更新数据
      */

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

@@ -157,6 +157,44 @@
         </where>
         order by bih.infusion_start_time desc
     </select>
+    <resultMap id="DeviceList" type="cn.tr.module.smart.app.controller.vo.AppBizDeviceListVO">
+        <result property="deviceId" column="device_id"/>
+        <result property="alias" column="alias"/>
+        <result property="deviceType" column="device_type"/>
+        <result property="electricQuantity" column="electric_quantity"/>
+        <result property="deviceRunState" column="device_run_state"/>
+        <result property="deviceAlarm" column="device_alarm"/>
+        <result property="warnLowBattery" column="warn_low_battery"/>
+        <result property="warnWillFinished" column="warn_will_finished"/>
+        <result property="warnAnalgesicPoor" column="warn_analgesic_poor"/>
+        <result property="warnFlow" column="warn_flow"/>
+        <result property="totalDose" column="total_dose"/>
+    </resultMap>
+    <select id="queryPumpList"  resultMap="DeviceList">
+        SELECT
+            bd.device_id,
+            bd.alias,
+            bih.device_type,
+            bih.electric_quantity,
+            bih.device_run_state,
+            bih.device_alarm,
+            bih.warn_low_battery,
+            bih.warn_will_finished,
+            bih.warn_analgesic_poor,
+            bih.warn_flow,
+            bih.total_dose
+        FROM
+            biz_device bd
+                JOIN biz_infusion_history bih ON bd.infusion_id = bih.
+                ID LEFT JOIN biz_infusion_clinic bic ON bih.ID = bic.infusion_id
+        <where>
+            bic.clinic_id is null
+            <if test="query.condition != null and query.condition != ''">
+                and (bd.device_id LIKE concat('%',#{query.condition,jdbcType=VARCHAR},'%')
+                or bd.alias like concat('%',#{query.condition,jdbcType=VARCHAR},'%'))
+            </if>
+        </where>
+    </select>
 
 
 </mapper>