From ddc84c181e86b26d59e293ac08aaf130246cc542 Mon Sep 17 00:00:00 2001 From: Wangmin <wangmin.email@qq.com> Date: Wed, 26 Jul 2023 15:32:56 +0800 Subject: [PATCH] 答题完成修改开始记录状态、新增检查答题卡完整性 --- school-paper/src/main/java/com/ruoyi/school/paper/controller/TestPaperController.java | 11 +++++++++++ school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecord.java | 5 +++-- school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecordDetail.java | 1 - school-paper/src/main/java/com/ruoyi/school/paper/domain/vo/DbTestPaperRecordDetailVo.java | 2 +- school-paper/src/main/java/com/ruoyi/school/paper/service/ITestPaperService.java | 8 ++++++++ school-paper/src/main/java/com/ruoyi/school/paper/service/impl/TestPaperServiceImpl.java | 36 +++++++++++++++++++++++++++++++++++- school-paper/src/main/resources/mapper/school-paper/DbTestPaperRecordDetailMapper.xml | 2 +- 7 files changed, 59 insertions(+), 6 deletions(-) diff --git a/school-paper/src/main/java/com/ruoyi/school/paper/controller/TestPaperController.java b/school-paper/src/main/java/com/ruoyi/school/paper/controller/TestPaperController.java index acfacca..75a303d 100644 --- a/school-paper/src/main/java/com/ruoyi/school/paper/controller/TestPaperController.java +++ b/school-paper/src/main/java/com/ruoyi/school/paper/controller/TestPaperController.java @@ -70,5 +70,16 @@ public class TestPaperController extends BaseController { return toAjax(testPaperService.paperTestEnd(bo)); } + /** + * [小程序端]检查答题卡完整性 + * + * @param recordId 答题记录ID + * @return 结果 + */ + @Log(title = "检车答题卡完整性", businessType = BusinessType.OTHER) + @GetMapping("/check/{recordId}") + public R<Boolean> checkIntegrality(@PathVariable Long recordId) { + return R.ok(testPaperService.checkTestPaperIntegrality(recordId)); + } } diff --git a/school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecord.java b/school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecord.java index 6d7e5db..a46b110 100644 --- a/school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecord.java +++ b/school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecord.java @@ -36,9 +36,10 @@ public class DbTestPaperRecord extends BaseEntity { /** * 状态 * <ul> - * <ol>0:正在答题</ol> + * <ol>0:答题中</ol> * <ol>1:待批阅</ol> - * <ol>2:已批阅</ol> + * <ol>2:批阅中</ol> + * <ol>3:批阅完成</ol> * </ul> */ private Integer status; diff --git a/school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecordDetail.java b/school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecordDetail.java index ed14a9f..c40d398 100644 --- a/school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecordDetail.java +++ b/school-paper/src/main/java/com/ruoyi/school/paper/domain/DbTestPaperRecordDetail.java @@ -39,7 +39,6 @@ public class DbTestPaperRecordDetail extends BaseEntity { * 答案 */ private String answer; - /** * 图片答案 */ diff --git a/school-paper/src/main/java/com/ruoyi/school/paper/domain/vo/DbTestPaperRecordDetailVo.java b/school-paper/src/main/java/com/ruoyi/school/paper/domain/vo/DbTestPaperRecordDetailVo.java index 50c1d6d..f9877c2 100644 --- a/school-paper/src/main/java/com/ruoyi/school/paper/domain/vo/DbTestPaperRecordDetailVo.java +++ b/school-paper/src/main/java/com/ruoyi/school/paper/domain/vo/DbTestPaperRecordDetailVo.java @@ -48,7 +48,7 @@ public class DbTestPaperRecordDetailVo { /** * 图片答案 */ - @ExcelProperty(value = "答案") + @ExcelProperty(value = "图片答案") private String answerPic; /** diff --git a/school-paper/src/main/java/com/ruoyi/school/paper/service/ITestPaperService.java b/school-paper/src/main/java/com/ruoyi/school/paper/service/ITestPaperService.java index 7da220c..c357d83 100644 --- a/school-paper/src/main/java/com/ruoyi/school/paper/service/ITestPaperService.java +++ b/school-paper/src/main/java/com/ruoyi/school/paper/service/ITestPaperService.java @@ -42,4 +42,12 @@ public interface ITestPaperService { * @return 考试题目 */ TableDataInfo<TestQuestionItemVo> nextQuestion(TestPaperAnswerBo request, PageQuery pageQuery); + + /** + * 检查答题卡完整性 + * + * @param recordId 答题记录ID + * @return 答题完整性 + */ + boolean checkTestPaperIntegrality(Long recordId); } diff --git a/school-paper/src/main/java/com/ruoyi/school/paper/service/impl/TestPaperServiceImpl.java b/school-paper/src/main/java/com/ruoyi/school/paper/service/impl/TestPaperServiceImpl.java index e5b79c9..04c0831 100644 --- a/school-paper/src/main/java/com/ruoyi/school/paper/service/impl/TestPaperServiceImpl.java +++ b/school-paper/src/main/java/com/ruoyi/school/paper/service/impl/TestPaperServiceImpl.java @@ -152,7 +152,41 @@ public class TestPaperServiceImpl implements ITestPaperService { RedisUtils.deleteKeys(key); }); if (CollUtil.isNotEmpty(insertPaperRecords)) { - return paperRecordDetailService.saveBatch(insertPaperRecords); + if (!paperRecordDetailService.saveBatch(insertPaperRecords)) { + throw new ServiceException("答题记录保存失败"); + } + // 修改考试记录状态为待批阅 + testPaperRecord.setStatus(1); + if (!paperRecordService.updateByBo(BeanUtil.toBean(testPaperService, DbTestPaperRecordBo.class))) { + throw new ServiceException("考试记录状态修改失败"); + } + return true; + } + return true; + } + + /** + * 检查答题卡完整性 + * + * @param recordId 答题记录ID + * @return 答题完整性 + */ + @Override + public boolean checkTestPaperIntegrality(Long recordId) { + // 查询试卷对应所有的题目 + DbTestPaperRecord testPaperRecord = paperRecordService.getOne(Wrappers.<DbTestPaperRecord>lambdaQuery().eq(DbTestPaperRecord::getId, recordId)); + Objects.requireNonNull(testPaperRecord, "未检查到合法考试记录"); + DbQuestionBankTestPaperBo queryCondition = new DbQuestionBankTestPaperBo(); + queryCondition.setTestPaperId(testPaperRecord.getTestPaperId()); + List<DbQuestionBankTestPaperVo> questionList = bankTestPaperService.queryList(queryCondition); + for (DbQuestionBankTestPaperVo question : questionList) { + // 查询Redis中是否有该题的提交记录 + String key = String.format(TEST_PAPER_ANSWER_KEY_FORMAT, TEST_PAPER_ANSWER_KEY, recordId, question.getId()); + TestPaperAnswerItemBo cacheObject = RedisUtils.getCacheObject(key); + if (cacheObject == null || cacheObject.getId() == null || + (StringUtils.isEmpty(cacheObject.getAnswer()) && StringUtils.isEmpty(cacheObject.getAnswerPic()))) { + return false; + } } return true; } diff --git a/school-paper/src/main/resources/mapper/school-paper/DbTestPaperRecordDetailMapper.xml b/school-paper/src/main/resources/mapper/school-paper/DbTestPaperRecordDetailMapper.xml index 2401efd..5a44dd3 100644 --- a/school-paper/src/main/resources/mapper/school-paper/DbTestPaperRecordDetailMapper.xml +++ b/school-paper/src/main/resources/mapper/school-paper/DbTestPaperRecordDetailMapper.xml @@ -13,7 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <result property="good" column="good"/> <result property="remark" column="remark"/> <result property="status" column="status"/> - <result property="createTime" column="cerate_time"/> + <result property="createTime" column="create_time"/> <result property="createBy" column="create_by"/> <result property="updateTime" column="update_time"/> <result property="updateBy" column="update_by"/> -- libgit2 0.26.0