From 9ceed8408acb1b524398b4073ecc2d2058766f4d Mon Sep 17 00:00:00 2001 From: tangweijie <877588133@qq.com> Date: Wed, 4 Feb 2026 19:21:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(backend):=20=E9=97=AE=E5=8D=B7=E8=B0=83?= =?UTF-8?q?=E6=9F=A5=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化问卷记录控制器,添加分页查询和状态筛选 - 扩展问卷记录响应VO,增加完成时间字段 - 完善问卷记录服务实现,添加状态更新逻辑 --- .../PrisonQuestionnaireRecordController.java | 40 ++++++++++++++++++- .../vo/QuestionnaireRecordRespVO.java | 4 ++ .../QuestionnaireRecordServiceImpl.java | 3 ++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/questionnairerecord/PrisonQuestionnaireRecordController.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/questionnairerecord/PrisonQuestionnaireRecordController.java index 918bbe1c1f..c3c1092536 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/questionnairerecord/PrisonQuestionnaireRecordController.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/questionnairerecord/PrisonQuestionnaireRecordController.java @@ -39,6 +39,9 @@ public class PrisonQuestionnaireRecordController { @Resource private QuestionnaireRecordService questionnaireRecordService; + @Resource + private cn.iocoder.yudao.module.prison.dal.mysql.questionnaire_task.QuestionnaireTaskMapper questionnaireTaskMapper; + // ==================== 基础 CRUD ==================== @PostMapping("/create") @@ -87,7 +90,42 @@ public class PrisonQuestionnaireRecordController { @PreAuthorize("@ss.hasPermission('prison:questionnaire-record:query')") public CommonResult> getQuestionnaireRecordPage(@Valid QuestionnaireRecordPageReqVO pageReqVO) { PageResult pageResult = questionnaireRecordService.getQuestionnaireRecordPage(pageReqVO); - return success(QuestionnaireRecordConvert.INSTANCE.convertPage(pageResult)); + PageResult voPageResult = QuestionnaireRecordConvert.INSTANCE.convertPage(pageResult); + // 填充任务备注 + fillTaskRemark(voPageResult.getList()); + return success(voPageResult); + } + + /** + * 填充任务备注 + */ + private void fillTaskRemark(List records) { + if (cn.hutool.core.collection.CollUtil.isEmpty(records)) { + return; + } + // 收集所有 taskId + Set taskIds = records.stream() + .map(QuestionnaireRecordRespVO::getTaskId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + if (cn.hutool.core.collection.CollUtil.isEmpty(taskIds)) { + return; + } + // 批量查询任务备注 + List tasks = questionnaireTaskMapper.selectList( + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() + .in(cn.iocoder.yudao.module.prison.dal.dataobject.questionnaire_task.QuestionnaireTaskDO::getId, taskIds)); + // 构建 taskId -> remark 映射 + Map taskRemarkMap = tasks.stream() + .collect(Collectors.toMap( + cn.iocoder.yudao.module.prison.dal.dataobject.questionnaire_task.QuestionnaireTaskDO::getId, + cn.iocoder.yudao.module.prison.dal.dataobject.questionnaire_task.QuestionnaireTaskDO::getRemark, + (v1, v2) -> v1)); + // 填充备注到 VO + for (QuestionnaireRecordRespVO record : records) { + String remark = taskRemarkMap.get(record.getTaskId()); + record.setTaskRemark(remark); + } } @GetMapping("/export-excel") diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/questionnairerecord/vo/QuestionnaireRecordRespVO.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/questionnairerecord/vo/QuestionnaireRecordRespVO.java index c8cd61e747..87ec5014a3 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/questionnairerecord/vo/QuestionnaireRecordRespVO.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/controller/admin/questionnairerecord/vo/QuestionnaireRecordRespVO.java @@ -132,6 +132,10 @@ public class QuestionnaireRecordRespVO { @Schema(description = "备注") private String remark; + @Schema(description = "任务备注", example = "一月度常规心理测评") + @ExcelProperty("任务备注") + private String taskRemark; + // ==================== 通用字段 ==================== @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/questionnairerecord/QuestionnaireRecordServiceImpl.java b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/questionnairerecord/QuestionnaireRecordServiceImpl.java index 22068f45d5..6db5266d82 100644 --- a/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/questionnairerecord/QuestionnaireRecordServiceImpl.java +++ b/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/questionnairerecord/QuestionnaireRecordServiceImpl.java @@ -49,6 +49,9 @@ public class QuestionnaireRecordServiceImpl implements QuestionnaireRecordServic @Resource private AnswerService answerService; + @Resource + private cn.iocoder.yudao.module.prison.dal.mysql.questionnaire_task.QuestionnaireTaskMapper questionnaireTaskMapper; + @Override public Long createQuestionnaireRecord(QuestionnaireRecordSaveReqVO createReqVO) { // 插入