fuliqi
2024-06-04 394a460804ab0dee5f2afe95583e2cf38cda6a34
试卷类修改
11个文件已修改
446 ■■■■■ 已修改文件
src/main/java/com/ycl/jxkg/controller/admin/ExamPaperController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperPageRequestVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamResponseVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamTemplateVO.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/TaskExamCustomerAnswerImpl.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamPaperMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ExamTemplateMapper.xml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ExamPaperController.java
@@ -3,6 +3,7 @@
import com.ycl.jxkg.base.BaseApiController;
import com.ycl.jxkg.base.Result;
import com.ycl.jxkg.domain.entity.ExamPaper;
import com.ycl.jxkg.mapper.ExamPaperMapper;
import com.ycl.jxkg.service.ExamPaperService;
import com.ycl.jxkg.utils.DateTimeUtil;
import com.ycl.jxkg.utils.PageInfoHelper;
@@ -21,8 +22,9 @@
@RequestMapping(value = "/api/admin/exam/paper")
public class ExamPaperController extends BaseApiController {
    private final ExamPaperService examPaperService;
    private final ExamPaperService  examPaperService;
    private final ExamPaperMapper baseMapper;
    @RequestMapping(value = "/page", method = RequestMethod.POST)
    public Result<PageInfo<ExamResponseVO>> pageList(@RequestBody ExamPaperPageRequestVO model) {
        PageInfo<ExamPaper> pageInfo = examPaperService.page(model);
@@ -66,8 +68,7 @@
    @RequestMapping(value = "/delete/{id}", method = RequestMethod.POST)
    public Result delete(@PathVariable Integer id) {
        ExamPaper examPaper = examPaperService.getById(id);
        examPaperService.updateById(examPaper);
        baseMapper.deleteById(id);
        return Result.ok();
    }
}
src/main/java/com/ycl/jxkg/domain/entity/ExamPaper.java
@@ -27,19 +27,13 @@
    private Integer subjectId;
    /**
     * 试卷类型( 1固定试卷 4.时段试卷 6.任务试卷)
     * 试卷类型( 1固定试卷 2.随即试卷 3.随序试卷)
     */
    @TableField("paper_type")
    private Integer paperType;
    /**
     * 年级
     */
    @TableField("grade_level")
    private Integer gradeLevel;
    /**
     * 试卷总分(千分制)
     * 试卷总分
     */
    @TableField("score")
    private Integer score;
@@ -51,43 +45,16 @@
    private Integer questionCount;
    /**
     * 题目分数
     */
    @TableField("question_score")
    private Integer questionScore;
    /**
     * 建议时长(分钟)
     */
    @TableField("suggest_time")
    private Integer suggestTime;
    /**
     * 时段试卷 开始时间
     */
    @TableField("limit_start_time")
    private Date limitStartTime;
    /**
     * 时段试卷 结束时间
     */
    @TableField("limit_end_time")
    private Date limitEndTime;
    /**
     * 试卷框架 内容为JSON
     */
    @TableField("frame_text_content_id")
    private Integer frameTextContentId;
    @TableField("create_user")
    private Integer createUser;
    @TableField("create_time")
    private Date createTime;
    @TableField("task_exam_id")
    private Integer taskExamId;
    /**
     * 可见性,公开/私有
src/main/java/com/ycl/jxkg/domain/entity/ExamTemplate.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ycl.jxkg.domain.base.AbsEntity;
import io.swagger.models.auth.In;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 随机试卷模板表
@@ -13,22 +15,10 @@
@TableName("t_exam_template")
public class ExamTemplate extends AbsEntity {
    /**
     * 模板名
     *  试卷id
     * */
    @TableField("name")
    private String name;
    /**
     * 学科
     * */
    @TableField("subject_id")
    private Integer subjectId;
    /**
     * 建议考试时长
     * */
    @TableField("suggest_time")
    private Integer suggestTime;
    @TableField("exam_paper_id")
    private Integer examPaperId;
    /**
     * 单选题数量
@@ -66,27 +56,27 @@
    @TableField("calculation")
    private Integer calculation;
    /**
     * 总分
     * */
    @TableField("score")
    private Integer score;
    /** 单选每题分数 */
    @TableField("single_score")
    private BigDecimal singleScore;
    /**
     * 多选扣分类型
     * */
    @TableField("deduct_type")
    private String deductType;
    /** 多选每题分数 */
    @TableField("multiple_score")
    private BigDecimal multipleScore;
    /**
     * 创建时间
     * */
    @TableField("create_time")
    private Date createTime;
    /** 填空每题分数 */
    @TableField("gap_score")
    private BigDecimal gapScore;
    /**
     * 创建人
     * */
    @TableField("create_user")
    private Integer createUser;
    /** 判断每题分数 */
    @TableField("trueFalse_score")
    private BigDecimal trueFalseScore;
    /** 简答每题分数 */
    @TableField("shortAnswer_score")
    private BigDecimal shortAnswerScore;
    /** 计算每题分数 */
    @TableField("calculation_score")
    private BigDecimal calculationScore;
}
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamPaperPageRequestVO.java
@@ -9,6 +9,8 @@
    private Integer id;
    private String name;
    private Integer subjectId;
    private Integer level;
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamResponseVO.java
@@ -3,6 +3,8 @@
import lombok.Data;
import java.util.Date;
@Data
public class ExamResponseVO {
@@ -22,6 +24,5 @@
    private Integer paperType;
    private Integer frameTextContentId;
    private Integer suggestTime;
}
src/main/java/com/ycl/jxkg/domain/vo/admin/exam/ExamTemplateVO.java
@@ -18,14 +18,8 @@
@Data
public class ExamTemplateVO extends AbsVo {
    /** 模板名称 */
    private String name;
    /** 试卷科目 */
    private Integer subjectId;
    /** 考试时长(分钟) */
    private Integer suggestTime;
    /** 试卷id */
    private Integer examPaperId;
    /** 单选题数量 */
    private Integer singleChoice;
@@ -45,34 +39,22 @@
    /** 计算题数量 */
    private Integer calculation;
    /** 试卷总分 */
    private Integer score;
    /** 多选题扣分方式 */
    private String deductType;
    /** 创建人 */
    private Integer createUser;
    /** 创建时间 */
    private Date createTime;
    /**  */
    /** 单选每题分数 */
    private BigDecimal singleScore;
    /**  */
    /** 多选每题分数 */
    private BigDecimal multipleScore;
    /**  */
    /** 填空每题分数 */
    private BigDecimal gapScore;
    /**  */
    /** 判断每题分数 */
    private BigDecimal trueFalseScore;
    /**  */
    /** 简答每题分数 */
    private BigDecimal shortAnswerScore;
    /**  */
    /** 计算每题分数 */
    private BigDecimal calculationScore;
    public static ExamTemplateVO getVoByEntity(@NonNull ExamTemplate entity, ExamTemplateVO vo) {
src/main/java/com/ycl/jxkg/service/impl/ExamPaperAnswerServiceImpl.java
@@ -66,27 +66,28 @@
            if (null != examPaperAnswer)
                return null;
        }
        String frameTextContent = textContentService.getById(examPaper.getFrameTextContentId()).getContent();
        List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent, ExamPaperTitleItemObject.class);
        List<Integer> questionIds = examPaperTitleItemObjects.stream().flatMap(t -> t.getQuestionItems().stream().map(q -> q.getId())).collect(Collectors.toList());
        List<Question> questions = questionMapper.selectByIds(questionIds);
        //将题目结构的转化为题目答案
        List<ExamPaperQuestionCustomerAnswer> examPaperQuestionCustomerAnswers = examPaperTitleItemObjects.stream()
                .flatMap(t -> t.getQuestionItems().stream()
                        .map(q -> {
                            Question question = questions.stream().filter(tq -> tq.getId().equals(q.getId())).findFirst().get();
                            ExamPaperSubmitItemVO customerQuestionAnswer = examPaperSubmitVO.getAnswerItems().stream()
                                    .filter(tq -> tq.getQuestionId().equals(q.getId()))
                                    .findFirst()
                                    .orElse(null);
                            return ExamPaperQuestionCustomerAnswerFromVM(question, customerQuestionAnswer, examPaper, q.getItemOrder(), user, now);
                        })
                ).collect(Collectors.toList());
        ExamPaperAnswer examPaperAnswer = ExamPaperAnswerFromVM(examPaperSubmitVO, examPaper, examPaperQuestionCustomerAnswers, user, now);
        examPaperAnswerInfo.setExamPaper(examPaper);
        examPaperAnswerInfo.setExamPaperAnswer(examPaperAnswer);
        examPaperAnswerInfo.setExamPaperQuestionCustomerAnswers(examPaperQuestionCustomerAnswers);
        //TODO:待完成
//        String frameTextContent = textContentService.getById(examPaper.getFrameTextContentId()).getContent();
//        List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent, ExamPaperTitleItemObject.class);
//        List<Integer> questionIds = examPaperTitleItemObjects.stream().flatMap(t -> t.getQuestionItems().stream().map(q -> q.getId())).collect(Collectors.toList());
//        List<Question> questions = questionMapper.selectByIds(questionIds);
//        //将题目结构的转化为题目答案
//        List<ExamPaperQuestionCustomerAnswer> examPaperQuestionCustomerAnswers = examPaperTitleItemObjects.stream()
//                .flatMap(t -> t.getQuestionItems().stream()
//                        .map(q -> {
//                            Question question = questions.stream().filter(tq -> tq.getId().equals(q.getId())).findFirst().get();
//                            ExamPaperSubmitItemVO customerQuestionAnswer = examPaperSubmitVO.getAnswerItems().stream()
//                                    .filter(tq -> tq.getQuestionId().equals(q.getId()))
//                                    .findFirst()
//                                    .orElse(null);
//                            return ExamPaperQuestionCustomerAnswerFromVM(question, customerQuestionAnswer, examPaper, q.getItemOrder(), user, now);
//                        })
//                ).collect(Collectors.toList());
//
//        ExamPaperAnswer examPaperAnswer = ExamPaperAnswerFromVM(examPaperSubmitVO, examPaper, examPaperQuestionCustomerAnswers, user, now);
//        examPaperAnswerInfo.setExamPaper(examPaper);
//        examPaperAnswerInfo.setExamPaperAnswer(examPaperAnswer);
//        examPaperAnswerInfo.setExamPaperQuestionCustomerAnswers(examPaperQuestionCustomerAnswers);
        return examPaperAnswerInfo;
    }
@@ -119,18 +120,19 @@
        ExamPaperTypeEnum examPaperTypeEnum = ExamPaperTypeEnum.fromCode(examPaperAnswer.getPaperType());
        switch (examPaperTypeEnum) {
            case RandomOrder:
                //TODO:待完成
                //任务试卷批改完成后,需要更新任务的状态
                ExamPaper examPaper = examPaperMapper.selectById(examPaperAnswer.getExamPaperId());
                Integer taskId = examPaper.getTaskExamId();
                Integer userId = examPaperAnswer.getCreateUser();
                TaskExamCustomerAnswer taskExamCustomerAnswer = taskExamCustomerAnswerMapper.getByTUid(taskId, userId);
                TextContent textContent = textContentService.getById(taskExamCustomerAnswer.getTextContentId());
                List<TaskItemAnswerObject> taskItemAnswerObjects = JsonUtil.toJsonListObject(textContent.getContent(), TaskItemAnswerObject.class);
                taskItemAnswerObjects.stream()
                        .filter(d -> d.getExamPaperAnswerId().equals(examPaperAnswer.getId()))
                        .findFirst().ifPresent(taskItemAnswerObject -> taskItemAnswerObject.setStatus(examPaperAnswer.getStatus()));
                textContentService.jsonConvertUpdate(textContent, taskItemAnswerObjects, null);
                textContentService.updateById(textContent);
//                ExamPaper examPaper = examPaperMapper.selectById(examPaperAnswer.getExamPaperId());
//                Integer taskId = examPaper.getTaskExamId();
//                Integer userId = examPaperAnswer.getCreateUser();
//                TaskExamCustomerAnswer taskExamCustomerAnswer = taskExamCustomerAnswerMapper.getByTUid(taskId, userId);
//                TextContent textContent = textContentService.getById(taskExamCustomerAnswer.getTextContentId());
//                List<TaskItemAnswerObject> taskItemAnswerObjects = JsonUtil.toJsonListObject(textContent.getContent(), TaskItemAnswerObject.class);
//                taskItemAnswerObjects.stream()
//                        .filter(d -> d.getExamPaperAnswerId().equals(examPaperAnswer.getId()))
//                        .findFirst().ifPresent(taskItemAnswerObject -> taskItemAnswerObject.setStatus(examPaperAnswer.getStatus()));
//                textContentService.jsonConvertUpdate(textContent, taskItemAnswerObjects, null);
//                textContentService.updateById(textContent);
                break;
            default:
                break;
@@ -239,25 +241,26 @@
        Integer systemScore = examPaperQuestionCustomerAnswers.stream().mapToInt(a -> a.getCustomerScore()).sum();
        long questionCorrect = examPaperQuestionCustomerAnswers.stream().filter(a -> a.getCustomerScore().equals(a.getQuestionScore())).count();
        ExamPaperAnswer examPaperAnswer = new ExamPaperAnswer();
        examPaperAnswer.setPaperName(examPaper.getName());
        examPaperAnswer.setDoTime(examPaperSubmitVO.getDoTime());
        examPaperAnswer.setExamPaperId(examPaper.getId());
        examPaperAnswer.setCreateUser(user.getId());
        examPaperAnswer.setCreateTime(now);
        examPaperAnswer.setSubjectId(examPaper.getSubjectId());
        examPaperAnswer.setQuestionCount(examPaper.getQuestionCount());
        examPaperAnswer.setPaperScore(examPaper.getScore());
        examPaperAnswer.setPaperType(examPaper.getPaperType());
        examPaperAnswer.setSystemScore(systemScore);
        examPaperAnswer.setUserScore(systemScore);
        examPaperAnswer.setTaskExamId(examPaper.getTaskExamId());
        examPaperAnswer.setQuestionCorrect((int) questionCorrect);
        boolean needJudge = examPaperQuestionCustomerAnswers.stream().anyMatch(d -> QuestionTypeEnum.needSaveTextContent(d.getQuestionType()));
        if (needJudge) {
            examPaperAnswer.setStatus(ExamPaperAnswerStatusEnum.WaitJudge.getCode());
        } else {
            examPaperAnswer.setStatus(ExamPaperAnswerStatusEnum.Complete.getCode());
        }
        //TODO:待完成
//        examPaperAnswer.setPaperName(examPaper.getName());
//        examPaperAnswer.setDoTime(examPaperSubmitVO.getDoTime());
//        examPaperAnswer.setExamPaperId(examPaper.getId());
//        examPaperAnswer.setCreateUser(user.getId());
//        examPaperAnswer.setCreateTime(now);
//        examPaperAnswer.setSubjectId(examPaper.getSubjectId());
//        examPaperAnswer.setQuestionCount(examPaper.getQuestionCount());
//        examPaperAnswer.setPaperScore(examPaper.getScore());
//        examPaperAnswer.setPaperType(examPaper.getPaperType());
//        examPaperAnswer.setSystemScore(systemScore);
//        examPaperAnswer.setUserScore(systemScore);
//        examPaperAnswer.setTaskExamId(examPaper.getTaskExamId());
//        examPaperAnswer.setQuestionCorrect((int) questionCorrect);
//        boolean needJudge = examPaperQuestionCustomerAnswers.stream().anyMatch(d -> QuestionTypeEnum.needSaveTextContent(d.getQuestionType()));
//        if (needJudge) {
//            examPaperAnswer.setStatus(ExamPaperAnswerStatusEnum.WaitJudge.getCode());
//        } else {
//            examPaperAnswer.setStatus(ExamPaperAnswerStatusEnum.Complete.getCode());
//        }
        return examPaperAnswer;
    }
src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java
@@ -85,16 +85,16 @@
            frameTextContent.setContent(frameTextContentStr);
            frameTextContent.setCreateTime(now);
            textContentService.save(frameTextContent);
            examPaper.setFrameTextContentId(frameTextContent.getId());
            examPaper.setCreateTime(now);
            examPaper.setCreateUser(user.getId());
            examPaperFromVM(examPaperEditRequestVO, examPaper, titleItemsVM);
            examPaperMapper.insert(examPaper);
        } else {
            examPaper = examPaperMapper.selectById(examPaperEditRequestVO.getId());
            TextContent frameTextContent = textContentService.getById(examPaper.getFrameTextContentId());
            frameTextContent.setContent(frameTextContentStr);
            textContentService.updateById(frameTextContent);
            //TODO:待完成
//            TextContent frameTextContent = textContentService.getById(examPaper.getFrameTextContentId());
//            frameTextContent.setContent(frameTextContentStr);
//            textContentService.updateById(frameTextContent);
            examPaperFromVM(examPaperEditRequestVO, examPaper, titleItemsVM);
            examPaperMapper.updateById(examPaper);
        }
@@ -106,32 +106,32 @@
        ExamPaper examPaper = examPaperMapper.selectById(id);
        ExamPaperEditRequestVO vo = new ExamPaperEditRequestVO();
        BeanUtils.copyProperties(examPaper, vo);
        vo.setLevel(examPaper.getGradeLevel());
        TextContent frameTextContent = textContentService.getById(examPaper.getFrameTextContentId());
        List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent.getContent(), ExamPaperTitleItemObject.class);
        List<Integer> questionIds = examPaperTitleItemObjects.stream()
                .flatMap(t -> t.getQuestionItems().stream()
                        .map(q -> q.getId()))
                .collect(Collectors.toList());
        List<Question> questions = questionMapper.selectByIds(questionIds);
        List<ExamPaperTitleItemVO> examPaperTitleItemVOS = examPaperTitleItemObjects.stream().map(t -> {
            ExamPaperTitleItemVO tTitleVM = new ExamPaperTitleItemVO();
            BeanUtils.copyProperties(t, tTitleVM);
            List<QuestionEditRequestVO> questionItemsVM = t.getQuestionItems().stream().map(i -> {
                Question question = questions.stream().filter(q -> q.getId().equals(i.getId())).findFirst().get();
                QuestionEditRequestVO questionEditRequestVO = questionService.getQuestionEditRequestVM(question);
                questionEditRequestVO.setItemOrder(i.getItemOrder());
                return questionEditRequestVO;
            }).collect(Collectors.toList());
            tTitleVM.setQuestionItems(questionItemsVM);
            return tTitleVM;
        }).collect(Collectors.toList());
        vo.setTitleItems(examPaperTitleItemVOS);
        vo.setScore(ExamUtil.scoreToVM(examPaper.getScore()));
        if (ExamPaperTypeEnum.Random == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
            List<String> limitDateTime = Arrays.asList(DateTimeUtil.dateFormat(examPaper.getLimitStartTime()), DateTimeUtil.dateFormat(examPaper.getLimitEndTime()));
            vo.setLimitDateTime(limitDateTime);
        }
        //TODO:待完成
//        TextContent frameTextContent = textContentService.getById(examPaper.getFrameTextContentId());
//        List<ExamPaperTitleItemObject> examPaperTitleItemObjects = JsonUtil.toJsonListObject(frameTextContent.getContent(), ExamPaperTitleItemObject.class);
//        List<Integer> questionIds = examPaperTitleItemObjects.stream()
//                .flatMap(t -> t.getQuestionItems().stream()
//                        .map(q -> q.getId()))
//                .collect(Collectors.toList());
//        List<Question> questions = questionMapper.selectByIds(questionIds);
//        List<ExamPaperTitleItemVO> examPaperTitleItemVOS = examPaperTitleItemObjects.stream().map(t -> {
//            ExamPaperTitleItemVO tTitleVM = new ExamPaperTitleItemVO();
//            BeanUtils.copyProperties(t, tTitleVM);
//            List<QuestionEditRequestVO> questionItemsVM = t.getQuestionItems().stream().map(i -> {
//                Question question = questions.stream().filter(q -> q.getId().equals(i.getId())).findFirst().get();
//                QuestionEditRequestVO questionEditRequestVO = questionService.getQuestionEditRequestVM(question);
//                questionEditRequestVO.setItemOrder(i.getItemOrder());
//                return questionEditRequestVO;
//            }).collect(Collectors.toList());
//            tTitleVM.setQuestionItems(questionItemsVM);
//            return tTitleVM;
//        }).collect(Collectors.toList());
//        vo.setTitleItems(examPaperTitleItemVOS);
//        vo.setScore(ExamUtil.scoreToVM(examPaper.getScore()));
//        if (ExamPaperTypeEnum.Random == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
//            List<String> limitDateTime = Arrays.asList(DateTimeUtil.dateFormat(examPaper.getLimitStartTime()), DateTimeUtil.dateFormat(examPaper.getLimitEndTime()));
//            vo.setLimitDateTime(limitDateTime);
//        }
        return vo;
    }
@@ -159,21 +159,22 @@
    }
    private void examPaperFromVM(ExamPaperEditRequestVO examPaperEditRequestVO, ExamPaper examPaper, List<ExamPaperTitleItemVO> titleItemsVM) {
        Integer gradeLevel = subjectService.levelBySubjectId(examPaperEditRequestVO.getSubjectId());
        Integer questionCount = titleItemsVM.stream()
                .mapToInt(t -> t.getQuestionItems().size()).sum();
        Integer score = titleItemsVM.stream().
                flatMapToInt(t -> t.getQuestionItems().stream()
                        .mapToInt(q -> ExamUtil.scoreFromVM(q.getScore()))
                ).sum();
        examPaper.setQuestionCount(questionCount);
        examPaper.setScore(score);
        examPaper.setGradeLevel(gradeLevel);
        List<String> dateTimes = examPaperEditRequestVO.getLimitDateTime();
        if (ExamPaperTypeEnum.Random == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
            examPaper.setLimitStartTime(DateTimeUtil.parse(dateTimes.get(0), DateTimeUtil.STANDER_FORMAT));
            examPaper.setLimitEndTime(DateTimeUtil.parse(dateTimes.get(1), DateTimeUtil.STANDER_FORMAT));
        }
        //TODO:待完成
//        Integer gradeLevel = subjectService.levelBySubjectId(examPaperEditRequestVO.getSubjectId());
//        Integer questionCount = titleItemsVM.stream()
//                .mapToInt(t -> t.getQuestionItems().size()).sum();
//        Integer score = titleItemsVM.stream().
//                flatMapToInt(t -> t.getQuestionItems().stream()
//                        .mapToInt(q -> ExamUtil.scoreFromVM(q.getScore()))
//                ).sum();
//        examPaper.setQuestionCount(questionCount);
//        examPaper.setScore(score);
//        examPaper.setGradeLevel(gradeLevel);
//        List<String> dateTimes = examPaperEditRequestVO.getLimitDateTime();
//        if (ExamPaperTypeEnum.Random == ExamPaperTypeEnum.fromCode(examPaper.getPaperType())) {
//            examPaper.setLimitStartTime(DateTimeUtil.parse(dateTimes.get(0), DateTimeUtil.STANDER_FORMAT));
//            examPaper.setLimitEndTime(DateTimeUtil.parse(dateTimes.get(1), DateTimeUtil.STANDER_FORMAT));
//        }
    }
    private List<ExamPaperTitleItemObject> frameTextContentFromVM(List<ExamPaperTitleItemVO> titleItems) {
src/main/java/com/ycl/jxkg/service/impl/TaskExamCustomerAnswerImpl.java
@@ -26,34 +26,35 @@
    @Override
    public void insertOrUpdate(ExamPaper examPaper, ExamPaperAnswer examPaperAnswer, Date now) {
        Integer taskId = examPaper.getTaskExamId();
        Integer userId = examPaperAnswer.getCreateUser();
        TaskExamCustomerAnswer taskExamCustomerAnswer = taskExamCustomerAnswerMapper.getByTUid(taskId, userId);
        if (null == taskExamCustomerAnswer) {
            taskExamCustomerAnswer = new TaskExamCustomerAnswer();
            taskExamCustomerAnswer.setCreateTime(now);
            taskExamCustomerAnswer.setCreateUser(userId);
            taskExamCustomerAnswer.setTaskExamId(taskId);
            TaskItemAnswerObject taskItemAnswerObject = new TaskItemAnswerObject();
            taskItemAnswerObject.setExamPaperId(examPaperAnswer.getExamPaperId());
            taskItemAnswerObject.setExamPaperAnswerId(examPaperAnswer.getId());
            taskItemAnswerObject.setStatus(examPaperAnswer.getStatus());
            List<TaskItemAnswerObject> taskItemAnswerObjects = Arrays.asList(taskItemAnswerObject);
            TextContent textContent = textContentService.jsonConvertInsert(taskItemAnswerObjects, now, null);
            textContentService.save(textContent);
            taskExamCustomerAnswer.setTextContentId(textContent.getId());
            baseMapper.insert(taskExamCustomerAnswer);
        } else {
            TextContent textContent = textContentService.getById(taskExamCustomerAnswer.getTextContentId());
            List<TaskItemAnswerObject> taskItemAnswerObjects = JsonUtil.toJsonListObject(textContent.getContent(), TaskItemAnswerObject.class);
            TaskItemAnswerObject taskItemAnswerObject = new TaskItemAnswerObject();
            taskItemAnswerObject.setExamPaperId(examPaperAnswer.getExamPaperId());
            taskItemAnswerObject.setExamPaperAnswerId(examPaperAnswer.getId());
            taskItemAnswerObject.setStatus(examPaperAnswer.getStatus());
            taskItemAnswerObjects.add(taskItemAnswerObject);
            textContentService.jsonConvertUpdate(textContent, taskItemAnswerObjects, null);
            textContentService.updateById(textContent);
        }
        //TODO:待完成
//        Integer taskId = examPaper.getTaskExamId();
//        Integer userId = examPaperAnswer.getCreateUser();
//        TaskExamCustomerAnswer taskExamCustomerAnswer = taskExamCustomerAnswerMapper.getByTUid(taskId, userId);
//        if (null == taskExamCustomerAnswer) {
//            taskExamCustomerAnswer = new TaskExamCustomerAnswer();
//            taskExamCustomerAnswer.setCreateTime(now);
//            taskExamCustomerAnswer.setCreateUser(userId);
//            taskExamCustomerAnswer.setTaskExamId(taskId);
//            TaskItemAnswerObject taskItemAnswerObject = new TaskItemAnswerObject();
//            taskItemAnswerObject.setExamPaperId(examPaperAnswer.getExamPaperId());
//            taskItemAnswerObject.setExamPaperAnswerId(examPaperAnswer.getId());
//            taskItemAnswerObject.setStatus(examPaperAnswer.getStatus());
//            List<TaskItemAnswerObject> taskItemAnswerObjects = Arrays.asList(taskItemAnswerObject);
//            TextContent textContent = textContentService.jsonConvertInsert(taskItemAnswerObjects, now, null);
//            textContentService.save(textContent);
//            taskExamCustomerAnswer.setTextContentId(textContent.getId());
//            baseMapper.insert(taskExamCustomerAnswer);
//        } else {
//            TextContent textContent = textContentService.getById(taskExamCustomerAnswer.getTextContentId());
//            List<TaskItemAnswerObject> taskItemAnswerObjects = JsonUtil.toJsonListObject(textContent.getContent(), TaskItemAnswerObject.class);
//            TaskItemAnswerObject taskItemAnswerObject = new TaskItemAnswerObject();
//            taskItemAnswerObject.setExamPaperId(examPaperAnswer.getExamPaperId());
//            taskItemAnswerObject.setExamPaperAnswerId(examPaperAnswer.getId());
//            taskItemAnswerObject.setStatus(examPaperAnswer.getStatus());
//            taskItemAnswerObjects.add(taskItemAnswerObject);
//            textContentService.jsonConvertUpdate(textContent, taskItemAnswerObjects, null);
//            textContentService.updateById(textContent);
//        }
    }
    @Override
src/main/resources/mapper/ExamPaperMapper.xml
@@ -6,31 +6,25 @@
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="subject_id" jdbcType="INTEGER" property="subjectId"/>
        <result column="paper_type" jdbcType="INTEGER" property="paperType"/>
        <result column="grade_level" jdbcType="INTEGER" property="gradeLevel"/>
        <result column="score" jdbcType="INTEGER" property="score"/>
        <result column="question_count" jdbcType="INTEGER" property="questionCount"/>
        <result column="suggest_time" jdbcType="INTEGER" property="suggestTime"/>
        <result column="limit_start_time" jdbcType="TIMESTAMP" property="limitStartTime"/>
        <result column="limit_end_time" jdbcType="TIMESTAMP" property="limitEndTime"/>
        <result column="frame_text_content_id" jdbcType="INTEGER" property="frameTextContentId"/>
        <result column="visibility" jdbcType="INTEGER" property="visibility"/>
        <result column="deduct_type" jdbcType="INTEGER" property="deductType"/>
        <result column="create_user" jdbcType="INTEGER" property="createUser"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
        <result column="deleted" jdbcType="BIT" property="deleted"/>
        <result column="task_exam_id" jdbcType="INTEGER" property="taskExamId"/>
    </resultMap>
    <sql id="Base_Column_List">
        id
        , name, subject_id, paper_type, grade_level, score, question_count, suggest_time,
    limit_start_time, limit_end_time, frame_text_content_id, create_user, create_time,
    deleted, task_exam_id
        id, name, subject_id, paper_type, score, question_count, suggest_time,visibility
        ,deduct_type,create_user, create_time,deleted
    </sql>
    <resultMap id="PaperInfoResultMap" type="com.ycl.jxkg.domain.vo.student.dashboard.PaperInfo">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="name" jdbcType="VARCHAR" property="name"/>
        <result column="limit_start_time" jdbcType="TIMESTAMP" property="limitStartTime"/>
        <result column="limit_end_time" jdbcType="TIMESTAMP" property="limitEndTime"/>
    </resultMap>
@@ -43,8 +37,8 @@
            <if test="id != null ">
                and id= #{id}
            </if>
            <if test="level != null ">
                and grade_level= #{level}
            <if test="name != null and name != ''">
                and name like concat('%',#{name},'%')
            </if>
            <if test="subjectId != null ">
                and subject_id= #{subjectId}
@@ -62,8 +56,6 @@
        FROM t_exam_paper
        <where>
            and deleted=0
            and task_exam_id is null
            and grade_level= #{level}
            and paper_type=#{paperType}
        </where>
    </select>
src/main/resources/mapper/ExamTemplateMapper.xml
@@ -4,25 +4,19 @@
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.vo.admin.exam.ExamTemplateVO">
        <result column="name" property="name" />
        <result column="subject_id" property="subjectId" />
        <result column="suggest_time" property="suggestTime" />
        <result column="exam_paper_id" property="examPaperId" />
        <result column="single_choice" property="singleChoice" />
        <result column="multiple_choice" property="multipleChoice" />
        <result column="gap_filling" property="gapFilling" />
        <result column="true_false" property="trueFalse" />
        <result column="short_answer" property="shortAnswer" />
        <result column="calculation" property="calculation" />
        <result column="score" property="score" />
        <result column="deduct_type" property="deductType" />
        <result column="create_user" property="createUser" />
        <result column="create_time" property="createTime" />
        <result column="single_score" property="singleScore" />
        <result column="multiple_score" property="multipleScore" />
        <result column="gap_score" property="gapScore" />
        <result column="true_false_score" property="trueFalseScore" />
        <result column="short_answer_score" property="shortAnswerScore" />
        <result column="calculation__score" property="calculationScore" />
        <result column="calculation_score" property="calculationScore" />
    </resultMap>
@@ -33,19 +27,13 @@
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            TET.name,
            TET.subject_id,
            TET.suggest_time,
            TET.exam_paper_id,
            TET.single_choice,
            TET.multiple_choice,
            TET.gap_filling,
            TET.true_false,
            TET.short_answer,
            TET.calculation,
            TET.score,
            TET.deduct_type,
            TET.create_user,
            TET.create_time,
            TET.single_score,
            TET.multiple_score,
            TET.gap_score,
@@ -62,19 +50,13 @@
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
            TET.name,
            TET.subject_id,
            TET.suggest_time,
            TET.exam_paper_id,
            TET.single_choice,
            TET.multiple_choice,
            TET.gap_filling,
            TET.true_false,
            TET.short_answer,
            TET.calculation,
            TET.score,
            TET.deduct_type,
            TET.create_user,
            TET.create_time,
            TET.single_score,
            TET.multiple_score,
            TET.gap_score,