From d34df615e1f20c2a5bd3bcc0e1492bff9d649c42 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 17 六月 2024 14:25:14 +0800 Subject: [PATCH] 增加阅卷状态 --- src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | 92 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 81 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java index 2d6b213..a73b531 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java @@ -4,28 +4,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ycl.jxkg.context.WebContext; -import com.ycl.jxkg.domain.entity.Exam; -import com.ycl.jxkg.domain.entity.ExamSubmitTemp; -import com.ycl.jxkg.domain.entity.Question; -import com.ycl.jxkg.domain.vo.DoQuestionVO; -import com.ycl.jxkg.domain.vo.ExamSubmitVO; +import com.ycl.jxkg.domain.entity.*; +import com.ycl.jxkg.domain.vo.*; import com.ycl.jxkg.enums.QuestionTypeEnum; import com.ycl.jxkg.enums.general.ExamStatusEnum; import com.ycl.jxkg.enums.general.ExamSubmitTempStatusEnum; -import com.ycl.jxkg.mapper.ExamMapper; -import com.ycl.jxkg.mapper.ExamSubmitTempMapper; -import com.ycl.jxkg.mapper.QuestionMapper; +import com.ycl.jxkg.mapper.*; import com.ycl.jxkg.service.ExamService; import com.ycl.jxkg.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.jxkg.domain.form.ExamForm; -import com.ycl.jxkg.domain.vo.ExamVO; import com.ycl.jxkg.domain.query.ExamQuery; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import com.ycl.jxkg.utils.PageUtil; import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; +import org.springframework.util.StringUtils; import java.util.Date; import java.util.List; @@ -47,6 +42,8 @@ private final WebContext webContext; private final QuestionMapper questionMapper; private final ExamSubmitTempMapper examSubmitTempMapper; + private final ClassesUserMapper classesUserMapper; + private final ExamPaperMapper examPaperMapper; /** * 娣诲姞 @@ -114,6 +111,16 @@ public Result page(ExamQuery query) { IPage<ExamVO> page = PageUtil.getPage(query, ExamVO.class); baseMapper.getPage(page, query); + page.getRecords().stream().forEach(item -> { + if (! StringUtils.hasText(item.getClassName())) { + item.setClassName("鐝骇涓嶅瓨鍦ㄦ垨琚垹闄�"); + item.setClassesId(null); + } + if (! StringUtils.hasText(item.getExamPaperName())) { + item.setExamPaperName("璇曞嵎涓嶅瓨鍦ㄦ垨琚垹闄�"); + item.setExamPaperId(null); + } + }); return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -174,24 +181,87 @@ }); // 闃呭嵎鍚庢墠寰�exam_paper_answer淇濆瓨鑰冭瘯鎴愮哗銆佷互鍙婁繚瀛樺埌exam_paper_customer_answer // 鐜板湪鍙渶瑕佷繚瀛樺埌涓�寮犱复鏃惰〃 + // 璇ユ帴鍙f槸涓诲姩鎻愪氦锛屾墍浠ョ姸鎬侀兘璁剧疆涓哄畬鎴愶紝浠ヤ究鍚庣画鑰佸笀闃呭嵎 + saveTempExam(submitData, ExamSubmitTempStatusEnum.FINISH); + return Result.ok(); + } + + @Override + public Result timingSubmit(ExamSubmitVO submitData) { + saveTempExam(submitData, ExamSubmitTempStatusEnum.TEMP); + return Result.ok(); + } + + /** + * 淇濆瓨涓存椂璇曞嵎 + * + * @param submitData 鍓嶇浼犻�掔殑璇曞嵎鏁版嵁 + * @param status 璇曞嵎鐨勭姸鎬� + */ + public void saveTempExam(ExamSubmitVO submitData, ExamSubmitTempStatusEnum status) { ExamSubmitTemp one = new LambdaQueryChainWrapper<>(examSubmitTempMapper) .eq(ExamSubmitTemp::getExamId, submitData.getExamId()) .eq(ExamSubmitTemp::getUserId, webContext.getCurrentUser().getId()) .one(); if (Objects.nonNull(one)) { + if (ExamSubmitTempStatusEnum.FINISH.equals(one.getStatus())) { + return; + } one.setDoTime(submitData.getDoTime()); one.setExamSubmit(JSON.toJSONString(submitData.getQuestionList())); one.setCreateTime(new Date()); + one.setStatus(status); examSubmitTempMapper.updateById(one); } else { ExamSubmitTemp examSubmitTemp = new ExamSubmitTemp(); examSubmitTemp.setExamId(submitData.getExamId()); examSubmitTemp.setDoTime(submitData.getDoTime()); - examSubmitTemp.setStatus(ExamSubmitTempStatusEnum.FINISH); + examSubmitTemp.setStatus(status); examSubmitTemp.setUserId(webContext.getCurrentUser().getId()); examSubmitTemp.setExamSubmit(JSON.toJSONString(submitData.getQuestionList())); + examSubmitTemp.setMarkPaperStatus(ExamSubmitTempStatusEnum.TEMP); examSubmitTempMapper.insert(examSubmitTemp); } - return Result.ok(); + } + + @Override + public Result getMarkPaperInfo(Integer id) { + Exam exam = baseMapper.selectById(id); + if (Objects.isNull(exam)) { + throw new RuntimeException("璇ヨ�冭瘯涓嶅瓨鍦�"); + } + ExamPaper examPaper = examPaperMapper.selectById(exam.getExamPaperId()); + if (Objects.isNull(examPaper)) { + throw new RuntimeException("鑰冭瘯璇曞嵎涓嶅瓨鍦�"); + } + List<ExamSubmitTemp> examSubmitTempList = new LambdaQueryChainWrapper<>(examSubmitTempMapper) + .eq(ExamSubmitTemp::getExamId, id) + .list(); + // 鍙傝�冧汉鏁� + Integer joinExamNum = examSubmitTempList.size(); + // 鍙傝�冧絾鏈畬鎴愭彁浜や汉鏁� + Integer joinButNotFinishedNum = Math.toIntExact(examSubmitTempList.stream().filter(item -> ExamSubmitTempStatusEnum.TEMP.equals(item.getStatus())).count()); + + List<StudentExamInfoVO> studentExamList = classesUserMapper.getClassesUserList(exam.getClassesId()); + // 搴旇�冧汉鏁� + Integer shouldUserNum = studentExamList.size(); + + studentExamList.stream().forEach(item -> { + if (StringUtils.hasText(item.getExamSubmit())) { + item.setQuestionList(JSON.parseArray(item.getExamSubmit(), DoQuestionVO.class)); + } + }); + + MarkPaperVO markPaperVO = new MarkPaperVO(); + markPaperVO.setExamName(exam.getExamName()); + markPaperVO.setExamId(exam.getId()); + markPaperVO.setJoinButNotFinishNum(joinButNotFinishedNum); + markPaperVO.setShouldJoinNum(shouldUserNum); + markPaperVO.setStudentExamInfoVOList(studentExamList); + markPaperVO.setMissJoinNum(shouldUserNum - joinExamNum); + markPaperVO.setJoinNum(joinExamNum); + markPaperVO.setExamPaperName(examPaper.getName()); + markPaperVO.setSuggestTime(examPaper.getSuggestTime()); + return Result.ok().data(markPaperVO); } } -- Gitblit v1.8.0