Przeglądaj źródła

add
研究队列手术信息

lifang 2 miesięcy temu
rodzic
commit
43f686cbe1
16 zmienionych plików z 341 dodań i 107 usunięć
  1. 18 34
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/BizReasearchQueueClinicController.java
  2. 2 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/BizReasearchQueueController.java
  3. 1 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/BizSMSController.java
  4. 66 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/vo/BizReasearchQueueClinicVO.java
  5. 35 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/vo/BizReasearchQueueQuestionAnswerVO.java
  6. 32 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizReasearchQueueAddClinicDTO.java
  7. 5 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizReasearchQueueClinicQueryDTO.java
  8. 29 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizReasearchQueueClinicQuestionAnswerRecordQueryDTO.java
  9. 3 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizQuestionAnswerMapper.java
  10. 4 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizQuestionAnswerPO.java
  11. 9 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/repository/BizReasearchQueueClinicRepository.java
  12. 10 20
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizReasearchQueueClinicService.java
  13. 1 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizReasearchQueueService.java
  14. 67 52
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizReasearchQueueClinicServiceImpl.java
  15. 5 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizReasearchQueueServiceImpl.java
  16. 54 0
      tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizReasearchQueueClinicMapper.xml

+ 18 - 34
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/BizReasearchQueueClinicController.java

@@ -1,33 +1,31 @@
 package cn.tr.module.smart.common.controller;
 
+import cn.tr.module.smart.common.controller.vo.BizReasearchQueueClinicVO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueAddClinicDTO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueClinicQuestionAnswerRecordQueryDTO;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.tr.core.validation.Insert;
-import cn.tr.core.validation.Update;
 import cn.tr.core.pojo.CommonResult;
 import lombok.AllArgsConstructor;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
-import cn.tr.module.smart.common.dto.BizReasearchQueueClinicDTO;
 import cn.tr.module.smart.common.service.IBizReasearchQueueClinicService;
 import cn.tr.module.smart.common.dto.BizReasearchQueueClinicQueryDTO;
 import java.util.*;
 import cn.tr.plugin.mybatis.base.BaseController;
 import org.springframework.web.bind.annotation.*;
-import cn.tr.module.api.sys.log.annotation.OperateLog;
 import cn.tr.core.pojo.TableDataInfo;
 /**
- * 队列-临床手术关联表控制器
+ * 研究队列中的手术控制器
  *
  * @author lf
  * @date  2025/10/15 08:27
  */
-@Api(tags = "队列-临床手术关联表",hidden = true)
+@Api(tags = "研究队列中的手术管理",hidden = true)
 @RestController
 @RequestMapping("/common/reasearchQueueClinic")
 @AllArgsConstructor
@@ -36,45 +34,31 @@ public class BizReasearchQueueClinicController extends BaseController{
     private final IBizReasearchQueueClinicService bizReasearchQueueClinicService;
 
     @ApiOperationSupport(author = "lf",order = 1)
-    @ApiOperation(value="根据条件查询队列-临床手术关联表",notes = "权限: 无")
+    @ApiOperation(value="根据条件查询研究队列中的手术",notes = "权限: 无")
     @PostMapping("/query/page")
-    public TableDataInfo<BizReasearchQueueClinicDTO> selectList(@RequestBody BizReasearchQueueClinicQueryDTO query) {
+    public TableDataInfo<BizReasearchQueueClinicVO> selectList(@RequestBody@Validated BizReasearchQueueClinicQueryDTO query) {
         startPage();
-        return getDataTable(bizReasearchQueueClinicService.selectBizReasearchQueueClinicList(query));
-    }
-
-    @ApiOperationSupport(author = "lf",order = 2)
-    @ApiOperation(value = "根据id查询队列-临床手术关联表",notes = "权限: common:reasearchQueueClinic:query")
-    @GetMapping("/detail/{id}")
-    @SaCheckPermission("common:reasearchQueueClinic:query")
-    public CommonResult<BizReasearchQueueClinicDTO> findById(@PathVariable("id") String id){
-        return CommonResult.success(bizReasearchQueueClinicService.selectBizReasearchQueueClinicById(id));
+        return getDataTable(bizReasearchQueueClinicService.stdSelectBizReasearchQueueClinicList(query));
     }
 
     @ApiOperationSupport(author = "lf",order = 3)
-    @ApiOperation(value="添加队列-临床手术关联表",notes = "权限: common:reasearchQueueClinic:add")
+    @ApiOperation(value="添加研究队列中的手术",notes = "权限: 无")
     @PostMapping("/add")
-    @OperateLog
-    @SaCheckPermission("common:reasearchQueueClinic:add")
-    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) BizReasearchQueueClinicDTO source) {
+    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) BizReasearchQueueAddClinicDTO source) {
         return CommonResult.success(bizReasearchQueueClinicService.insertBizReasearchQueueClinic(source));
     }
 
     @ApiOperationSupport(author = "lf",order = 4)
-    @ApiOperation(value="通过主键id编辑队列-临床手术关联表",notes = "权限: common:reasearchQueueClinic:edit")
-    @PostMapping("/edit")
-    @OperateLog
-    @SaCheckPermission("common:reasearchQueueClinic:edit")
-    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) BizReasearchQueueClinicDTO source) {
-        return CommonResult.success(bizReasearchQueueClinicService.updateBizReasearchQueueClinicById(source));
-    }
-
-    @ApiOperationSupport(author = "lf",order = 5)
-    @ApiOperation(value="删除队列-临床手术关联表",notes = "权限: common:reasearchQueueClinic:remove")
+    @ApiOperation(value="删除研究队列中的手术",notes = "权限: 无")
     @PostMapping("/removeByIds")
-    @OperateLog
-    @SaCheckPermission("common:reasearchQueueClinic:remove")
     public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
         return CommonResult.success(bizReasearchQueueClinicService.removeBizReasearchQueueClinicByIds(ids));
     }
+
+    @ApiOperationSupport(author = "lf",order = 5)
+    @ApiOperation(value="查看研究队列中的手术填写的术后问卷记录",notes = "权限: 无")
+    @PostMapping("/questionAnswerList")
+    public CommonResult<Object> questionAnswerList(@RequestBody BizReasearchQueueClinicQuestionAnswerRecordQueryDTO source) {
+        return CommonResult.success(bizReasearchQueueClinicService.stdSelectQuestionAnswerList(source));
+    }
 }

+ 2 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/BizReasearchQueueController.java

@@ -1,6 +1,8 @@
 package cn.tr.module.smart.common.controller;
 
 import cn.tr.module.smart.common.controller.vo.BizReasearchQueueVO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueAddClinicDTO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueClinicDTO;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.tr.core.validation.Insert;

+ 1 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/BizSMSController.java

@@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
 @AllArgsConstructor
 public class BizSMSController extends BaseController {
     private final IBizSmsService smsService;
+
     @ApiOperationSupport(author = "lf", order = 1)
     @ApiOperation(value = "发送手机验证码", notes = "权限: 无")
     @PostMapping("/send")

+ 66 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/vo/BizReasearchQueueClinicVO.java

@@ -0,0 +1,66 @@
+package cn.tr.module.smart.common.controller.vo;
+
+import cn.tr.core.validation.Update;
+import cn.tr.plugin.mybatis.pojo.BaseDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 队列-临床手术关联表传输对象
+ *
+ * @author lf
+ * @date  2025/10/15 08:27
+ **/
+@Data
+@ApiModel("队列-临床手术关联表传输对象")
+@ToString
+public class BizReasearchQueueClinicVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "id", position = 1)
+    private String id;
+
+    @ApiModelProperty(value = "临床id", position = 2)
+    private String clinicRoomId;
+
+    @ApiModelProperty(value = "患者名称", position = 2)
+    private String patientName;
+
+    @ApiModelProperty(value = "患者性别", position = 2)
+    private String patientGender;
+    /** 年龄 */
+    @ApiModelProperty(value = "年龄", position = 2)
+    private Integer patientAge;
+
+    @ApiModelProperty(value = "科室", position = 3)
+    private String deptId;
+
+    @ApiModelProperty("科室名称")
+    private String deptName;
+
+    /** 手术名称 */
+    @ApiModelProperty(value = "手术名称", position = 4)
+    private String clinicName;
+
+    @ApiModelProperty(value = "队列id", position = 3)
+    private String queueId;
+
+    @ApiModelProperty(value = "上一次推送的时间间隔", position = 4)
+    private Integer lastPushInterval;
+
+    @ApiModelProperty(value = "推送次数", position = 6)
+    private Integer pushCount;
+
+    @ApiModelProperty(value = "上一次的推送时间", position = 7)
+    private Date lastPushTime;
+
+    @ApiModelProperty(value = "回答次数", position = 8)
+    private Integer answerCount;
+
+}

+ 35 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/controller/vo/BizReasearchQueueQuestionAnswerVO.java

@@ -0,0 +1,35 @@
+package cn.tr.module.smart.common.controller.vo;
+
+import cn.tr.module.smart.common.entity.BizQuestionEntity;
+import cn.tr.module.smart.common.entity.BizWxAppletQuestionAnswerEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 问卷回答实体
+ *
+ * @author lf
+ * @date  2025/06/19 09:20
+ **/
+@Data
+public class BizReasearchQueueQuestionAnswerVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**   */
+    @ApiModelProperty(value = "记录id", position = 1)
+    private String id;
+
+    /** 回答的内容 */
+    @ApiModelProperty(value = "回答的内容", position = 2)
+    private List<BizWxAppletQuestionAnswerEntity> content;
+
+    /** 问卷问题 */
+    @ApiModelProperty(value = "问卷问题", position = 3)
+    private List<BizQuestionEntity> question;
+
+    /** 问卷回答时间 */
+    @ApiModelProperty(value = "问卷回答时间", position = 7)
+    private Date answerTime;
+}

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

@@ -0,0 +1,32 @@
+package cn.tr.module.smart.common.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.*;
+import java.io.Serializable;
+
+/**
+ * 队列-临床手术关联表传输对象
+ *
+ * @author lf
+ * @date  2025/10/15 08:27
+ **/
+@Data
+@ApiModel("研究队列中添加手术信息")
+@ToString
+public class BizReasearchQueueAddClinicDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "研究队列id", position = 1)
+    @NotBlank(message = "研究队列id不能为空")
+    private String id;
+
+    @ApiModelProperty("手术id集合,不能超过500")
+    @NotNull(message = "手术id集合不能为空")
+    private List<String> clinicIds;
+
+}

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

@@ -4,6 +4,8 @@ import lombok.ToString;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import javax.validation.constraints.NotNull;
 import java.util.*;
 /**
  * 队列-临床手术关联表查询参数
@@ -16,4 +18,7 @@ import java.util.*;
 @ToString
 public class BizReasearchQueueClinicQueryDTO  {
     private static final long serialVersionUID = 1L;
+    @ApiModelProperty("队列id")
+    @NotNull(message = "队列id不能为空")
+    private String queueId;
 }

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

@@ -0,0 +1,29 @@
+package cn.tr.module.smart.common.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 队列-临床手术关联表查询参数
+ *
+ * @author lf
+ * @date  2025/10/15 08:27
+ **/
+@Data
+@ApiModel("研究队列中的手术的随访记录查询参数")
+@ToString
+public class BizReasearchQueueClinicQuestionAnswerRecordQueryDTO {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "手术id",required = true)
+    @NotBlank(message = "手术id不能为空")
+    private String clinicId;
+
+    @ApiModelProperty(value = "队列id",required = true)
+    @NotBlank(message = "队列id不能为空")
+    private String queueId;
+}

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

@@ -1,5 +1,6 @@
 package cn.tr.module.smart.common.mapper;
 
+import cn.tr.module.smart.common.controller.vo.BizReasearchQueueQuestionAnswerVO;
 import cn.tr.module.smart.common.dto.BizQuestionAnswerDTO;
 import cn.tr.module.smart.common.entity.BizQuestionEntity;
 import cn.tr.module.smart.common.po.BizQuestionAnswerPO;
@@ -26,6 +27,8 @@ public interface BizQuestionAnswerMapper {
 
     BizQuestionAnswerDTO convertDto(BizQuestionAnswerPO source);
 
+    List<BizReasearchQueueQuestionAnswerVO> convertCommonVOList(List<BizQuestionAnswerPO> source);
+
     List<BizQuestionAnswerDTO> convertDtoList(List<BizQuestionAnswerPO> source);
 
     List<BizQuestionAnswerPO> convertPOList(List<BizQuestionAnswerDTO> source);

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

@@ -4,6 +4,7 @@ import cn.tr.module.smart.app.config.ContentListType;
 import cn.tr.module.smart.app.config.QuestionListType;
 import cn.tr.module.smart.common.entity.BizQuestionEntity;
 import cn.tr.module.smart.common.entity.BizWxAppletQuestionAnswerEntity;
+import cn.tr.plugin.mybatis.config.handler.JsonbListTypeHandler;
 import cn.tr.plugin.mybatis.config.handler.JsonbTypeHandler;
 import cn.tr.plugin.mybatis.pojo.TenantPO;
 import com.baomidou.mybatisplus.annotation.*;
@@ -60,6 +61,9 @@ public class BizQuestionAnswerPO extends TenantPO {
     @ApiModelProperty(value = "问卷类型", position = 8)
     private String questionType;
 
+    @ApiModelProperty("研究队列id")
+    private String reasearchQueueId;
+
     @TableField(updateStrategy = FieldStrategy.NEVER,fill = FieldFill.INSERT, jdbcType = JdbcType.VARCHAR)
     private Integer deleted;
 }

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

@@ -1,9 +1,17 @@
 package cn.tr.module.smart.common.repository;
 
+import cn.tr.module.smart.common.controller.vo.BizReasearchQueueClinicVO;
+import cn.tr.module.smart.common.controller.vo.BizReasearchQueueQuestionAnswerVO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueClinicQueryDTO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueClinicQuestionAnswerRecordQueryDTO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import cn.tr.module.smart.common.po.BizReasearchQueueClinicPO;
+
+import java.util.List;
+
 /**
  * 队列-临床手术关联表Mapper接口
  *
@@ -13,4 +21,5 @@ import cn.tr.module.smart.common.po.BizReasearchQueueClinicPO;
 @Repository
 @Mapper
 public interface BizReasearchQueueClinicRepository extends BaseMapper<BizReasearchQueueClinicPO> {
+    List<BizReasearchQueueClinicVO> stdSelectBizReasearchQueueClinicList(@Param("query") BizReasearchQueueClinicQueryDTO query);
 }

+ 10 - 20
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizReasearchQueueClinicService.java

@@ -1,7 +1,11 @@
 package cn.tr.module.smart.common.service;
 
-import cn.tr.module.smart.common.dto.BizReasearchQueueClinicDTO;
+import cn.tr.module.smart.common.controller.vo.BizReasearchQueueClinicVO;
+import cn.tr.module.smart.common.controller.vo.BizReasearchQueueQuestionAnswerVO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueAddClinicDTO;
 import cn.tr.module.smart.common.dto.BizReasearchQueueClinicQueryDTO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueClinicQuestionAnswerRecordQueryDTO;
+
 import java.util.*;
 
 /**
@@ -18,23 +22,7 @@ public interface IBizReasearchQueueClinicService{
      * @author   lf
      * @date      2025/10/15 08:27
      */
-    List<BizReasearchQueueClinicDTO> selectBizReasearchQueueClinicList(BizReasearchQueueClinicQueryDTO query);
-
-    /**
-     * 根据id查询队列-临床手术关联表
-     * @param    id 主键id
-     * @author   lf
-     * @date      2025/10/15 08:27
-     */
-    BizReasearchQueueClinicDTO selectBizReasearchQueueClinicById(String id);
-
-    /**
-     * 编辑队列-临床手术关联表
-     * @param   source 编辑实体类
-     * @author  lf
-     * @date     2025/10/15 08:27
-     */
-    boolean updateBizReasearchQueueClinicById(BizReasearchQueueClinicDTO source);
+    List<BizReasearchQueueClinicVO> stdSelectBizReasearchQueueClinicList(BizReasearchQueueClinicQueryDTO query);
 
     /**
      * 新增队列-临床手术关联表
@@ -42,7 +30,7 @@ public interface IBizReasearchQueueClinicService{
      * @author lf
      * @date  2025/10/15 08:27
      */
-    boolean insertBizReasearchQueueClinic(BizReasearchQueueClinicDTO source);
+    Boolean insertBizReasearchQueueClinic(BizReasearchQueueAddClinicDTO source);
 
     /**
      * 删除队列-临床手术关联表详情
@@ -50,5 +38,7 @@ public interface IBizReasearchQueueClinicService{
      * @author lf
      * @date    2025/10/15 08:27
      */
-    int removeBizReasearchQueueClinicByIds(Collection<String> ids);
+    Integer removeBizReasearchQueueClinicByIds(Collection<String> ids);
+
+    List<BizReasearchQueueQuestionAnswerVO> stdSelectQuestionAnswerList(BizReasearchQueueClinicQuestionAnswerRecordQueryDTO query);
 }

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

@@ -1,6 +1,7 @@
 package cn.tr.module.smart.common.service;
 
 import cn.tr.module.smart.common.controller.vo.BizReasearchQueueVO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueAddClinicDTO;
 import cn.tr.module.smart.common.dto.BizReasearchQueueDTO;
 import cn.tr.module.smart.common.dto.BizReasearchQueueQueryDTO;
 import java.util.*;

+ 67 - 52
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizReasearchQueueClinicServiceImpl.java

@@ -1,6 +1,14 @@
 package cn.tr.module.smart.common.service.impl;
 
 import cn.tr.core.exception.TRExcCode;
+import cn.tr.module.smart.common.controller.vo.BizReasearchQueueClinicVO;
+import cn.tr.module.smart.common.controller.vo.BizReasearchQueueQuestionAnswerVO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueAddClinicDTO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueClinicQuestionAnswerRecordQueryDTO;
+import cn.tr.module.smart.common.mapper.BizQuestionAnswerMapper;
+import cn.tr.module.smart.common.po.BizQuestionAnswerPO;
+import cn.tr.module.smart.common.repository.BizQuestionAnswerRepository;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import cn.hutool.core.collection.CollectionUtil;
@@ -9,11 +17,11 @@ import cn.tr.core.exception.ServiceException;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import cn.tr.module.smart.common.repository.BizReasearchQueueClinicRepository;
 import cn.tr.module.smart.common.po.BizReasearchQueueClinicPO;
-import cn.tr.module.smart.common.dto.BizReasearchQueueClinicDTO;
 import cn.tr.module.smart.common.dto.BizReasearchQueueClinicQueryDTO;
 import java.util.*;
+import java.util.stream.Collectors;
+
 import cn.tr.module.smart.common.service.IBizReasearchQueueClinicService;
-import cn.tr.module.smart.common.mapper.BizReasearchQueueClinicMapper;
 /**
  * 队列-临床手术关联表Service接口实现类
  *
@@ -21,72 +29,79 @@ import cn.tr.module.smart.common.mapper.BizReasearchQueueClinicMapper;
  * @date  2025/10/15 08:27
  **/
 @Service
-public class BizReasearchQueueClinicServiceImpl implements IBizReasearchQueueClinicService {
+public class BizReasearchQueueClinicServiceImpl extends ServiceImpl<BizReasearchQueueClinicRepository,BizReasearchQueueClinicPO> implements IBizReasearchQueueClinicService {
     @Autowired
-    private BizReasearchQueueClinicRepository baseRepository;
+    private BizQuestionAnswerRepository questionAnswerRepository;
 
 
     /**
-    * 根据条件查询队列-临床手术关联表
-    * @param    query 查询参数
-    * @author   lf
-    * @date      2025/10/15 08:27
-    */
+     * 根据条件查询队列-临床手术关联表
+     * @param    query 查询参数
+     * @author   lf
+     * @date      2025/10/15 08:27
+     */
     @Override
-    public List<BizReasearchQueueClinicDTO> selectBizReasearchQueueClinicList(BizReasearchQueueClinicQueryDTO query){
-        return BizReasearchQueueClinicMapper.INSTANCE.convertDtoList(
-                baseRepository.selectList(new LambdaQueryWrapper<BizReasearchQueueClinicPO>()
-                )
-        );
+    public List<BizReasearchQueueClinicVO> stdSelectBizReasearchQueueClinicList(BizReasearchQueueClinicQueryDTO query){
+        return baseMapper.stdSelectBizReasearchQueueClinicList(query);
     };
 
     /**
-    * 根据id查询队列-临床手术关联表
-    * @param    id 主键id
-    * @author   lf
-    * @date      2025/10/15 08:27
-    */
+     * 新增队列-临床手术关联表
+     * @param   source 新增实体类
+     * @author lf
+     * @date  2025/10/15 08:27
+     */
     @Override
-    public BizReasearchQueueClinicDTO selectBizReasearchQueueClinicById(String id){
-        return BizReasearchQueueClinicMapper.INSTANCE.convertDto(baseRepository.selectById(id));
-    };
-
-    /**
-    * 编辑队列-临床手术关联表
-    * @param   source 编辑实体类
-    * @author  lf
-    * @date     2025/10/15 08:27
-    */
     @Transactional(rollbackFor = Exception.class)
-    @Override
-    public boolean updateBizReasearchQueueClinicById(BizReasearchQueueClinicDTO source){
-            return baseRepository.updateById(BizReasearchQueueClinicMapper.INSTANCE.convertPO(source))!=0;
-    };
-
-    /**
-    * 新增队列-临床手术关联表
-    * @param   source 新增实体类
-    * @author lf
-    * @date  2025/10/15 08:27
-    */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public boolean insertBizReasearchQueueClinic(BizReasearchQueueClinicDTO source){
-        return baseRepository.insert(BizReasearchQueueClinicMapper.INSTANCE.convertPO(source))!=0;
+    public Boolean insertBizReasearchQueueClinic(BizReasearchQueueAddClinicDTO source){
+        List<String> clinicIds = source.getClinicIds();
+        String id = source.getId();
+        List<BizReasearchQueueClinicPO> existClinic = baseMapper.selectList(new LambdaQueryWrapper<BizReasearchQueueClinicPO>()
+                .in(BizReasearchQueueClinicPO::getClinicRoomId, clinicIds)
+                .eq(BizReasearchQueueClinicPO::getQueueId, id));
+        if(CollectionUtil.isNotEmpty(existClinic)){
+            clinicIds.removeAll(existClinic
+                    .stream()
+                    .map(BizReasearchQueueClinicPO::getClinicRoomId)
+                    .collect(Collectors.toList()));
+        }
+        List<BizReasearchQueueClinicPO> insertBatch = clinicIds.stream()
+                .map(clinicId -> {
+                    BizReasearchQueueClinicPO result = new BizReasearchQueueClinicPO();
+                    result.setClinicRoomId(clinicId);
+                    result.setQueueId(id);
+                    result.setPushCount(0);
+                    result.setAnswerCount(0);
+                    return result;
+                })
+                .collect(Collectors.toList());
+        this.saveBatch(insertBatch);
+        //todo 运行任务
+        return Boolean.TRUE;
     };
 
     /**
-    * 删除队列-临床手术关联表详情
-    * @param  ids 删除主键集合
-    * @author lf
-    * @date    2025/10/15 08:27
-    */
+     * 删除队列-临床手术关联表详情
+     * @param  ids 删除主键集合
+     * @author lf
+     * @date    2025/10/15 08:27
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int removeBizReasearchQueueClinicByIds(Collection<String> ids){
+    public Integer removeBizReasearchQueueClinicByIds(Collection<String> ids){
         if(CollectionUtil.isEmpty(ids)){
             throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"请选择要删除的数据");
         }
-        return baseRepository.deleteBatchIds(ids);
-    };
+        return baseMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public List<BizReasearchQueueQuestionAnswerVO> stdSelectQuestionAnswerList(BizReasearchQueueClinicQuestionAnswerRecordQueryDTO query){
+        return BizQuestionAnswerMapper.INSTANCE.convertCommonVOList(questionAnswerRepository.selectList(new LambdaQueryWrapper<BizQuestionAnswerPO>()
+                .eq(BizQuestionAnswerPO::getClinicId, query.getClinicId())
+                .eq(BizQuestionAnswerPO::getReasearchQueueId, query.getQueueId())
+                .orderByDesc(BizQuestionAnswerPO::getAnswerTime)));
+    }
+
+    ;
 }

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

@@ -5,7 +5,9 @@ import cn.tr.core.exception.TRExcCode;
 import cn.tr.core.strategy.LoginUserStrategy;
 import cn.tr.core.utils.ValidationUtils;
 import cn.tr.module.smart.common.controller.vo.BizReasearchQueueVO;
+import cn.tr.module.smart.common.dto.BizReasearchQueueAddClinicDTO;
 import cn.tr.module.smart.common.entity.BizReasearchPushPointEntity;
+import cn.tr.module.smart.common.repository.BizReasearchQueueClinicRepository;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -30,6 +32,8 @@ public class BizReasearchQueueServiceImpl implements IBizReasearchQueueService {
     @Autowired
     private BizReasearchQueueRepository baseRepository;
 
+    @Autowired
+    private BizReasearchQueueClinicRepository queueClinicRepository;
 
     /**
      * 根据条件查询研究队列
@@ -108,7 +112,7 @@ public class BizReasearchQueueServiceImpl implements IBizReasearchQueueService {
         return baseRepository.delete(new LambdaQueryWrapper<BizReasearchQueuePO>()
                 .in(BizReasearchQueuePO::getId,ids)
                 .eq(BizReasearchQueuePO::getOwner,currentUserId));
-    };
+    }
 
     private void validateSource(BizReasearchQueueDTO source){
         ValidationUtils.validate(source.getTimePoints());

+ 54 - 0
tr-modules/tr-module-smartFollowUp/src/main/resources/mapper/smart/BizReasearchQueueClinicMapper.xml

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.tr.module.smart.common.repository.BizReasearchQueueClinicRepository">
+
+    <resultMap id="stdResult" type="cn.tr.module.smart.common.controller.vo.BizReasearchQueueClinicVO">
+        <result property="id" column="id" />
+        <result property="clinicRoomId" column="clinic_room_id" />
+        <result property="patientName" column="patient_name" />
+        <result property="patientGender" column="patient_gender" />
+        <result property="patientAge" column="patient_age" />
+        <result property="deptId" column="dept_id" />
+        <result property="deptName" column="dept_name" />
+        <result property="clinicName" column="clinic_name" />
+        <result property="queueId" column="queue_id" />
+        <result property="lastPushInterval" column="last_push_interval" />
+        <result property="pushCount" column="push_count" />
+        <result property="lastPushTime" column="last_push_time" />
+        <result property="answerCount" column="answer_count" />
+    </resultMap>
+
+    <resultMap id="questionAnswerResult" type="cn.tr.module.smart.common.controller.vo.BizReasearchQueueQuestionAnswerVO">
+        <result property="id" column="id" />
+        <result property="content" column="content" typeHandler="cn.tr.module.smart.app.config.ContentListType"/>
+        <result property="question" column="question" typeHandler="cn.tr.module.smart.app.config.QuestionListType"/>
+        <result property="answerTime" column="answer_time" />
+    </resultMap>
+
+
+    <select id="stdSelectBizReasearchQueueClinicList" resultMap="stdResult">
+        SELECT
+        brqc.id,
+        brqc.clinic_room_id,
+        brqc.queue_id,
+        brqc.last_push_interval,
+        brqc.push_count,
+        brqc.last_push_time,
+        brqc.answer_count,
+        brqc.create_time,
+        brqc.update_time,
+        bcr.patient_name,
+        bcr.patient_gender,
+        bcr.patient_age,
+        bcr.dept_id,
+        bcr.dept_name,
+        bcr.clinic_name
+        FROM
+        biz_reasearch_queue_clinic brqc
+        LEFT JOIN biz_clinic_room bcr ON brqc.clinic_room_id = bcr.id
+        where brqc.queue_id = #{query.queueId}
+        order by brqc.create_time desc
+    </select>
+</mapper>