Browse Source

add
术前问卷提交

18339543638 6 tháng trước cách đây
mục cha
commit
04337a7dbf
19 tập tin đã thay đổi với 471 bổ sung12 xóa
  1. 47 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizQuestionAnswerDTO.java
  2. 19 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/dto/BizQuestionAnswerQueryDTO.java
  3. 30 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/entity/BizQuestionEntity.java
  4. 26 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/entity/BizWxAppletQuestionAnswerEntity.java
  5. 18 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/enums/QuestionTypeEnums.java
  6. 31 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizQuestionAnswerMapper.java
  7. 3 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/mapper/BizQuestionMapper.java
  8. 58 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizQuestionAnswerPO.java
  9. 6 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizQuestionPO.java
  10. 16 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/repository/BizQuestionAnswerRepository.java
  11. 3 1
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizClinicRoomService.java
  12. 23 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/IBizQuestionAnswerService.java
  13. 4 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizClinicRoomServiceImpl.java
  14. 56 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizQuestionAnswerServiceImpl.java
  15. 80 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizQuestionAnswerController.java
  16. 15 3
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/BizWxAppletClinicController.java
  17. 1 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/vo/BizPreSurgeryQuestionVO.java
  18. 3 7
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/vo/BizWxDeptQuestionVO.java
  19. 32 0
      tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/dto/BizWxAppletCommitSurgeryQuestionDTO.java

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

@@ -0,0 +1,47 @@
+package cn.tr.module.smart.common.dto;
+
+import cn.tr.plugin.mybatis.pojo.BaseDTO;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import cn.tr.core.validation.Insert;
+import cn.tr.core.validation.Update;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import javax.validation.constraints.*;
+import java.util.*;
+/**
+ * 问卷回答传输对象
+ *
+ * @author lf
+ * @date  2025/06/19 09:20
+ **/
+@Data
+@ApiModel("问卷回答传输对象")
+@EqualsAndHashCode(callSuper = true)
+@ToString
+public class BizQuestionAnswerDTO extends BaseDTO  {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = " ", position = 1)
+     @NotBlank  (message = "主键不能为空",groups = {Update.class})
+    private String id;
+
+    @ApiModelProperty(value = "回答的内容", position = 2)
+    private List<String> content;
+
+    @ApiModelProperty(value = "问卷问题", position = 3)
+    private String question;
+
+    @ApiModelProperty(value = "手术id", position = 4)
+    private String clinicId;
+
+    @ApiModelProperty(value = "问卷组id", position = 5)
+    private String questionGroupId;
+
+    @ApiModelProperty(value = "问卷推送时间", position = 6)
+    private Date sendTime;
+
+    @ApiModelProperty(value = "问卷回答时间", position = 7)
+    private Date answerTime;
+
+}

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

@@ -0,0 +1,19 @@
+package cn.tr.module.smart.common.dto;
+
+import lombok.ToString;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.*;
+/**
+ * 问卷回答查询参数
+ *
+ * @author lf
+ * @date  2025/06/19 09:20
+ **/
+@Data
+@ApiModel("问卷回答查询参数")
+@ToString
+public class BizQuestionAnswerQueryDTO  {
+    private static final long serialVersionUID = 1L;
+}

+ 30 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/entity/BizQuestionEntity.java

@@ -0,0 +1,30 @@
+package cn.tr.module.smart.common.entity;
+
+import cn.tr.module.smart.common.enums.QuestionTypeEnums;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BizQuestionEntity {
+    /** 字段名称 */
+    @ApiModelProperty(value = "字段名称", position = 4)
+    private String fieldName;
+
+    /** 字段类型,字典(input_box_type)
+     * {@link QuestionTypeEnums}
+     *
+     *
+     * * */
+    @ApiModelProperty(value = "字段类型,字典(input_box_type)", position = 5)
+    private String inputBoxType;
+
+    /** options */
+    @ApiModelProperty(value = "options", position = 6)
+    private List<String> options;
+
+    /** 排序 */
+    @ApiModelProperty(value = "排序", position = 7)
+    private Integer sort;
+}

+ 26 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/entity/BizWxAppletQuestionAnswerEntity.java

@@ -0,0 +1,26 @@
+package cn.tr.module.smart.common.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import java.util.List;
+
+/**
+ * @Author zzy
+ * @Data 2025/6/4
+ * @Version 1.0
+ * @Description XXX
+ */
+@Data
+@ApiModel("微信小程序提交术前问卷")
+@ToString
+public class BizWxAppletQuestionAnswerEntity {
+
+    @ApiModelProperty("问题字段名称")
+    private String filedName;
+
+    @ApiModelProperty("问题回答")
+    private List<String> content;
+}

+ 18 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/enums/QuestionTypeEnums.java

@@ -0,0 +1,18 @@
+package cn.tr.module.smart.common.enums;
+
+public class QuestionTypeEnums {
+    /**
+     * 单选框
+     */
+    String SINGLE_SELECT="single_select";
+
+    /**
+     * 多选框
+     */
+    String MULTI_SELECT="single_select";
+
+    /**
+     * 文本输入框
+     */
+    String TEXT="text";
+}

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

@@ -0,0 +1,31 @@
+package cn.tr.module.smart.common.mapper;
+
+import cn.tr.module.smart.common.po.BizQuestionAnswerPO;
+import cn.tr.module.smart.common.dto.BizQuestionAnswerDTO;
+import cn.tr.module.smart.wx.dto.BizWxAppletCommitSurgeryQuestionDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 问卷回答映射工具
+*
+* @author lf
+* @date  2025/06/19 09:20
+**/
+@Mapper
+public interface BizQuestionAnswerMapper {
+    BizQuestionAnswerMapper INSTANCE = Mappers.getMapper(BizQuestionAnswerMapper.class);
+
+    BizQuestionAnswerPO convertPO(BizQuestionAnswerDTO source);
+
+    BizQuestionAnswerPO convertPO(BizWxAppletCommitSurgeryQuestionDTO source);
+
+    BizQuestionAnswerDTO convertDto(BizQuestionAnswerPO source);
+
+    List<BizQuestionAnswerDTO> convertDtoList(List<BizQuestionAnswerPO> source);
+
+    List<BizQuestionAnswerPO> convertPOList(List<BizQuestionAnswerDTO> source);
+
+}

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

@@ -1,5 +1,6 @@
 package cn.tr.module.smart.common.mapper;
 
+import cn.tr.module.smart.common.entity.BizQuestionEntity;
 import cn.tr.module.smart.common.po.BizQuestionPO;
 import cn.tr.module.smart.common.dto.BizQuestionDTO;
 import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
@@ -26,5 +27,7 @@ public interface BizQuestionMapper {
 
     List<BizQuestionPO> convertPOList(List<BizQuestionDTO> source);
 
+    List<BizQuestionEntity> convertEntityList(List<BizQuestionPO> source);
+
     List<BizWxDeptQuestionVO> convertWxDeptQuestionVOList(List<BizQuestionPO> list);
 }

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

@@ -0,0 +1,58 @@
+package cn.tr.module.smart.common.po;
+
+import cn.tr.module.smart.common.entity.BizQuestionEntity;
+import cn.tr.module.smart.common.entity.BizWxAppletQuestionAnswerEntity;
+import cn.tr.plugin.mybatis.config.handler.JsonbTypeHandler;
+import cn.tr.plugin.mybatis.pojo.TenantPO;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import java.util.*;
+/**
+ * 问卷回答实体
+ *
+ * @author lf
+ * @date  2025/06/19 09:20
+ **/
+@Data
+@TableName(value="biz_question_answer",autoResultMap = true)
+@EqualsAndHashCode(callSuper = true)
+@ToString
+public class BizQuestionAnswerPO extends TenantPO {
+
+    /**   */
+    @TableId
+    @ApiModelProperty(value = " ", position = 1)
+    private String id;
+
+    /** 回答的内容 */
+    @ApiModelProperty(value = "回答的内容", position = 2)
+    @TableField(typeHandler = JsonbTypeHandler.class)
+    private List<BizWxAppletQuestionAnswerEntity> content;
+
+    /** 问卷问题 */
+    @ApiModelProperty(value = "问卷问题", position = 3)
+    @TableField(typeHandler = JsonbTypeHandler.class)
+    private List<BizQuestionEntity> question;
+
+    /** 手术id */
+    @ApiModelProperty(value = "手术id", position = 4)
+    private String clinicId;
+
+    /** 问卷组id */
+    @ApiModelProperty(value = "问卷组id", position = 5)
+    private String questionGroupId;
+
+    /** 问卷推送时间 */
+    @ApiModelProperty(value = "问卷推送时间", position = 6)
+    private Date sendTime;
+
+    /** 问卷回答时间 */
+    @ApiModelProperty(value = "问卷回答时间", position = 7)
+    private Date answerTime;
+
+}

+ 6 - 1
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/po/BizQuestionPO.java

@@ -1,6 +1,7 @@
 package cn.tr.module.smart.common.po;
 
 
+import cn.tr.module.smart.common.enums.QuestionTypeEnums;
 import cn.tr.plugin.mybatis.config.handler.StringListTypeHandler;
 import cn.tr.plugin.mybatis.pojo.BasePO;
 import cn.tr.plugin.mybatis.pojo.TenantPO;
@@ -39,7 +40,11 @@ public class BizQuestionPO extends TenantPO {
     @ApiModelProperty(value = "字段名称", position = 4)
     private String fieldName;
 
-    /** 字段类型,字典(input_box_type) */
+    /** 字段类型,字典(input_box_type)
+     * {@link QuestionTypeEnums}
+     *
+     *
+     * * */
     @ApiModelProperty(value = "字段类型,字典(input_box_type)", position = 5)
     private String inputBoxType;
 

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

@@ -0,0 +1,16 @@
+package cn.tr.module.smart.common.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+import cn.tr.module.smart.common.po.BizQuestionAnswerPO;
+/**
+ * 问卷回答Mapper接口
+ *
+ * @author lf
+ * @date  2025/06/19 09:20
+ **/
+@Repository
+@Mapper
+public interface BizQuestionAnswerRepository extends BaseMapper<BizQuestionAnswerPO> {
+}

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

@@ -9,6 +9,7 @@ import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicVO;
 import cn.tr.module.smart.wx.dto.BizClinicAddOrEditDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicQueryDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicShiftCareDTO;
+import cn.tr.module.smart.wx.dto.BizWxAppletCommitSurgeryQuestionDTO;
 
 import java.util.*;
 
@@ -55,7 +56,6 @@ public interface IBizClinicRoomService{
      * @return
      */
     BizWxAppletClinicVO stdSelectWxAppletById(String id);
-
     /**
      * 微信端删除患者信息
      * @param ids
@@ -111,4 +111,6 @@ public interface IBizClinicRoomService{
      * @date 2025/6/10
      */
     List<WxDoctorClinicRoomVO> selectByClinicRoomAndPatientList(WxDoctorClinicRoomDTO source);
+
+
 }

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

@@ -0,0 +1,23 @@
+package cn.tr.module.smart.common.service;
+
+import cn.tr.module.smart.common.dto.BizQuestionAnswerDTO;
+import cn.tr.module.smart.common.dto.BizQuestionAnswerQueryDTO;
+import cn.tr.module.smart.wx.dto.BizWxAppletCommitSurgeryQuestionDTO;
+
+import java.util.*;
+
+/**
+ * 问卷回答Service接口
+ *
+ * @author lf
+ * @date  2025/06/19 09:20
+ **/
+public interface IBizQuestionAnswerService{
+
+    /**
+     * 提交问卷回答
+     * @param source
+     * @return
+     */
+    Boolean stdWxAppletCommitPreSurgeryQuestionnaireAnswer(BizWxAppletCommitSurgeryQuestionDTO source);
+}

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

@@ -13,12 +13,14 @@ import cn.tr.module.smart.common.po.BizClinicRoomWxUserPO;
 import cn.tr.module.smart.common.po.BizPatientPO;
 import cn.tr.module.smart.common.repository.BizClinicRoomWxUserRepository;
 import cn.tr.module.smart.common.repository.BizPatientRepository;
+import cn.tr.module.smart.common.repository.BizQuestionAnswerRepository;
 import cn.tr.module.smart.common.service.*;
 import cn.tr.module.smart.wx.controller.vo.BizPreSurgeryQuestionVO;
 import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicVO;
 import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
 import cn.tr.module.smart.wx.dto.BizClinicAddOrEditDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicQueryDTO;
+import cn.tr.module.smart.wx.dto.BizWxAppletCommitSurgeryQuestionDTO;
 import cn.tr.plugin.security.bo.UserLoginInfoBO;
 import cn.tr.plugin.security.context.LoginUserContextHolder;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -62,6 +64,8 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
     @Lazy
     private IBizClinicRoomWxUserService roomWxUserService;
 
+    @Autowired
+    private BizQuestionAnswerRepository answerRepository;
 
     @Autowired
     private IBizQuestionService bizQuestionService;

+ 56 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/common/service/impl/BizQuestionAnswerServiceImpl.java

@@ -0,0 +1,56 @@
+package cn.tr.module.smart.common.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.tr.core.exception.ServiceException;
+import cn.tr.core.exception.TRExcCode;
+import cn.tr.module.smart.common.entity.BizQuestionEntity;
+import cn.tr.module.smart.common.mapper.BizQuestionAnswerMapper;
+import cn.tr.module.smart.common.mapper.BizQuestionMapper;
+import cn.tr.module.smart.common.po.BizQuestionAnswerPO;
+import cn.tr.module.smart.common.po.BizQuestionPO;
+import cn.tr.module.smart.common.repository.BizQuestionRepository;
+import cn.tr.module.smart.wx.dto.BizWxAppletCommitSurgeryQuestionDTO;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import cn.tr.module.smart.common.repository.BizQuestionAnswerRepository;
+import cn.tr.module.smart.common.service.IBizQuestionAnswerService;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 问卷回答Service接口实现类
+ *
+ * @author lf
+ * @date  2025/06/19 09:20
+ **/
+@Service
+public class BizQuestionAnswerServiceImpl implements IBizQuestionAnswerService {
+    @Autowired
+    private BizQuestionAnswerRepository baseRepository;
+
+    @Autowired
+    private BizQuestionRepository questionRepository;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean stdWxAppletCommitPreSurgeryQuestionnaireAnswer(BizWxAppletCommitSurgeryQuestionDTO source) {
+        //做全量更新,删除原来的手术问卷信息
+        baseRepository.delete(new LambdaQueryWrapper<BizQuestionAnswerPO>()
+                .eq(BizQuestionAnswerPO::getClinicId,source.getClinicId()));
+        //新增
+        BizQuestionAnswerPO questionAnswer = BizQuestionAnswerMapper.INSTANCE.convertPO(source);
+        questionAnswer.setAnswerTime(new Date());
+        List<BizQuestionEntity> questionList = BizQuestionMapper.INSTANCE.convertEntityList(questionRepository.selectList(new LambdaQueryWrapper<BizQuestionPO>()
+                .eq(BizQuestionPO::getGroupId, source.getQuestionGroupId()))
+        );
+        if(CollectionUtil.isEmpty(questionList)){
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"问卷问题为空,提交失败");
+        }
+        questionAnswer.setQuestion(questionList);
+        baseRepository.insert(questionAnswer);
+        return Boolean.TRUE;
+    }
+}

+ 80 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/web/controller/BizQuestionAnswerController.java

@@ -0,0 +1,80 @@
+package cn.tr.module.smart.web.controller;
+
+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.BizQuestionAnswerDTO;
+import cn.tr.module.smart.common.service.IBizQuestionAnswerService;
+import cn.tr.module.smart.common.dto.BizQuestionAnswerQueryDTO;
+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/06/19 09:20
+ */
+@Api(tags = "问卷回答")
+@RestController
+@RequestMapping("/common/questionAnswer")
+@AllArgsConstructor
+public class BizQuestionAnswerController extends BaseController{
+
+    private final IBizQuestionAnswerService bizQuestionAnswerService;
+
+    @ApiOperationSupport(author = "lf",order = 1)
+    @ApiOperation(value="根据条件查询问卷回答",notes = "权限: 无")
+    @PostMapping("/query/page")
+    public TableDataInfo<BizQuestionAnswerDTO> selectList(@RequestBody BizQuestionAnswerQueryDTO query) {
+        startPage();
+        return getDataTable(bizQuestionAnswerService.selectBizQuestionAnswerList(query));
+    }
+
+    @ApiOperationSupport(author = "lf",order = 2)
+    @ApiOperation(value = "根据id查询问卷回答",notes = "权限: common:questionAnswer:query")
+    @GetMapping("/detail/{id}")
+    @SaCheckPermission("common:questionAnswer:query")
+    public CommonResult<BizQuestionAnswerDTO> findById(@PathVariable("id") String id){
+        return CommonResult.success(bizQuestionAnswerService.selectBizQuestionAnswerById(id));
+    }
+
+    @ApiOperationSupport(author = "lf",order = 3)
+    @ApiOperation(value="添加问卷回答",notes = "权限: common:questionAnswer:add")
+    @PostMapping("/add")
+    @OperateLog
+    @SaCheckPermission("common:questionAnswer:add")
+    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) BizQuestionAnswerDTO source) {
+        return CommonResult.success(bizQuestionAnswerService.insertBizQuestionAnswer(source));
+    }
+
+    @ApiOperationSupport(author = "lf",order = 4)
+    @ApiOperation(value="通过主键id编辑问卷回答",notes = "权限: common:questionAnswer:edit")
+    @PostMapping("/edit")
+    @OperateLog
+    @SaCheckPermission("common:questionAnswer:edit")
+    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) BizQuestionAnswerDTO source) {
+        return CommonResult.success(bizQuestionAnswerService.updateBizQuestionAnswerById(source));
+    }
+
+    @ApiOperationSupport(author = "lf",order = 5)
+    @ApiOperation(value="删除问卷回答",notes = "权限: common:questionAnswer:remove")
+    @PostMapping("/removeByIds")
+    @OperateLog
+    @SaCheckPermission("common:questionAnswer:remove")
+    public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
+        return CommonResult.success(bizQuestionAnswerService.removeBizQuestionAnswerByIds(ids));
+    }
+}

+ 15 - 3
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/BizWxAppletClinicController.java

@@ -7,11 +7,13 @@ import cn.tr.core.validation.Insert;
 import cn.tr.core.validation.Update;
 import cn.tr.module.smart.common.service.IBizClinicRoomService;
 import cn.tr.module.smart.common.service.IBizClinicRoomWxUserService;
+import cn.tr.module.smart.common.service.IBizQuestionAnswerService;
 import cn.tr.module.smart.wx.controller.vo.BizPreSurgeryQuestionVO;
 import cn.tr.module.smart.wx.dto.BizClinicAddOrEditDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicQueryDTO;
 import cn.tr.module.smart.wx.dto.BizWxAppletClinicShiftCareDTO;
 import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicVO;
+import cn.tr.module.smart.wx.dto.BizWxAppletCommitSurgeryQuestionDTO;
 import cn.tr.plugin.mybatis.base.BaseController;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
@@ -36,6 +38,7 @@ public class BizWxAppletClinicController extends BaseController{
 
     private final IBizClinicRoomService clinicRoomService;
     private final IBizClinicRoomWxUserService roomWxUserService;
+    private final IBizQuestionAnswerService questionAnswerService;
     @ApiOperationSupport(author = "lf",order = 1)
     @ApiOperation(value="查询当前用户所添加的所有患者手术记录(不分页)",notes = "权限: 无")
     @PostMapping("/query/list")
@@ -95,10 +98,19 @@ public class BizWxAppletClinicController extends BaseController{
         return CommonResult.success(clinicRoomService.selectPreSurgeryQuestionnaire(clinicId));
     }
 
-    @ApiOperationSupport(author = "zzy",order = 8)
-    @GetMapping("/validate/patientCode")
+    @ApiOperationSupport(author = "lf",order = 9)
+    @GetMapping("/validate/patientCode/{patientCode}")
     @ApiOperation(value = "住院号校验",notes = "权限: 无")
-    public CommonResult<Boolean> validatePaitentCoed(@PathVariable("clinicId") String clinicId){
+    @Deprecated
+    public CommonResult<Boolean> validatePatientCode(@PathVariable("patientCode") String patientCode){
+        return CommonResult.success(Boolean.TRUE);
+    }
+
+    @ApiOperationSupport(author = "lf",order = 10)
+    @PostMapping("/commit/preSurgeryQuestionnaire")
+    @ApiOperation(value = "提交术前问卷",notes = "权限: 无")
+    public CommonResult<Boolean> commitPreSurgeryQuestionnaireAnswer(@RequestBody@Validated BizWxAppletCommitSurgeryQuestionDTO source){
+        questionAnswerService.stdWxAppletCommitPreSurgeryQuestionnaireAnswer(source);
         return CommonResult.success(Boolean.TRUE);
     }
 }

+ 1 - 0
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/vo/BizPreSurgeryQuestionVO.java

@@ -1,5 +1,6 @@
 package cn.tr.module.smart.wx.controller.vo;
 
+import cn.tr.module.smart.common.entity.BizWxAppletQuestionAnswerEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 3 - 7
tr-modules/tr-module-smartFollowUp/src/main/java/cn/tr/module/smart/wx/controller/vo/BizWxDeptQuestionVO.java

@@ -1,15 +1,11 @@
 package cn.tr.module.smart.wx.controller.vo;
 
-import cn.tr.module.smart.common.dto.BizQuestionDTO;
-import cn.tr.plugin.mybatis.config.handler.StringListTypeHandler;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.ToString;
 
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -38,7 +34,6 @@ public class BizWxDeptQuestionVO {
 
     /** options */
     @ApiModelProperty(value = "options", position = 6)
-    @TableField(typeHandler = StringListTypeHandler.class)
     private List<String> options;
 
     /** 排序 */
@@ -46,5 +41,6 @@ public class BizWxDeptQuestionVO {
     private Integer sort;
 
 
-
+    @ApiModelProperty(value = "回答内容",position = 8)
+    private List<String> answer;
 }

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

@@ -0,0 +1,32 @@
+package cn.tr.module.smart.wx.dto;
+
+import cn.tr.module.smart.common.entity.BizWxAppletQuestionAnswerEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * @Author zzy
+ * @Data 2025/6/4
+ * @Version 1.0
+ * @Description XXX
+ */
+@Data
+@ApiModel("微信小程序提交术前问卷")
+@ToString
+public class BizWxAppletCommitSurgeryQuestionDTO {
+    @ApiModelProperty(value = "手术id",required = true)
+    @NotBlank(message = "手术id不能为空")
+    private String clinicId;
+
+    @ApiModelProperty(value = "术前问卷组id",required = true)
+    @NotBlank(message = "术前问卷组id")
+    private String questionGroupId;
+
+    @ApiModelProperty("术前问卷问题回答")
+    private List<BizWxAppletQuestionAnswerEntity> content;
+}