From 472fd8635ca93be557fc2fd254366ce7633e4a95 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 01 七月 2024 21:22:19 +0800
Subject: [PATCH] 阅卷接口
---
src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java | 2 +-
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | 44 +++++++++++++++++++++++---------------------
src/main/java/com/ycl/jxkg/controller/admin/ExamController.java | 4 ++--
src/main/resources/mapper/ClassesUserMapper.xml | 2 +-
4 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ExamController.java b/src/main/java/com/ycl/jxkg/controller/admin/ExamController.java
index de5f575..9e46068 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/ExamController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/ExamController.java
@@ -99,8 +99,8 @@
@PostMapping("/mark/paper")
@ApiOperation(value = "鎻愪氦鎵规敼", notes = "鎻愪氦鎵规敼")
- public Result submitMarkPaper(@RequestBody ExamPaperMarkVO examPaperMark) {
- return examService.submitMarkPaper(examPaperMark);
+ public Result submitMarkPaper(@RequestBody ExamPaperMarkVO form) {
+ return examService.submitMarkPaper(form);
}
@GetMapping("/monitor/list")
diff --git a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java
index ec6adfd..e9b91b7 100644
--- a/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java
@@ -40,7 +40,7 @@
* @param classesId
* @return
*/
- List<StudentExamInfoVO> getClassesUserList(@Param("classesId") Integer classesId);
+ List<StudentExamInfoVO> getClassesUserList(@Param("examId") Integer examId,@Param("classesId") Integer classesId);
/**
* 鏍规嵁瀛︾敓鑾峰彇鐝骇
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 e4f46d6..db9c5b8 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -68,6 +68,7 @@
private final ExamPaperScoreMapper examPaperScoreMapper;
private final ExamPaperScoreService examPaperScoreService;
private static final String ANSWER_SPLIT = ",";
+
/**
* 娣诲姞
*
@@ -95,7 +96,7 @@
// 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
// 鍒ゆ柇鑰冭瘯鐘舵��
- if (! ExamStatusEnum.NOT_START.equals(entity.getStatus())) {
+ if (!ExamStatusEnum.NOT_START.equals(entity.getStatus())) {
throw new RuntimeException("鍙兘淇敼杩樻湭寮�濮嬬殑鑰冭瘯");
}
BeanUtils.copyProperties(form, entity);
@@ -410,10 +411,8 @@
// 闃呭嵎鍚庢墠寰�exam_paper_answer淇濆瓨鑰冭瘯鎴愮哗銆佷互鍙婁繚瀛樺埌exam_paper_customer_answer
// 鐜板湪鍙渶瑕佷繚瀛樺埌涓�寮犱复鏃惰〃
// 璇ユ帴鍙f槸涓诲姩鎻愪氦锛屾墍浠ョ姸鎬侀兘璁剧疆涓哄畬鎴愶紝浠ヤ究鍚庣画鑰佸笀闃呭嵎
- saveTempExam(submitData, ExamSubmitTempStatusEnum.finish);
-
- //TODO:鑰冭瘯鐘舵�佽瀹氫负缁撴潫
-
+ //TODO:鏆傛椂鏀逛负temp鏂逛究娴嬭瘯
+ saveTempExam(submitData, ExamSubmitTempStatusEnum.temp);
return Result.ok();
}
@@ -449,9 +448,8 @@
Date now = new Date();
one.setExamSubmit(JSON.toJSONString(submitData.getTitleList()));
one.setUpdateTime(now);
- long doTimeL = now.getTime() - one.getCreateTime().getTime();
- Integer doTime = (int) doTimeL;
- one.setDoTime(doTime);
+ int doTimeInSeconds = (int) (now.getTime() - one.getCreateTime().getTime()) / 1000;
+ one.setDoTime(doTimeInSeconds);
one.setStatus(status);
examSubmitTempMapper.updateById(one);
} else {
@@ -477,7 +475,7 @@
throw new RuntimeException("鑰冭瘯璇曞嵎涓嶅瓨鍦�");
}
List<ExamSubmitTemp> examSubmitTempList = new LambdaQueryChainWrapper<>(examSubmitTempMapper)
- .eq(ExamSubmitTemp::getDeleted,0)
+ .eq(ExamSubmitTemp::getDeleted, 0)
.eq(ExamSubmitTemp::getExamId, id)
.list();
// 鍙傝�冧汉鏁�
@@ -485,7 +483,7 @@
// 鍙傝�冧絾鏈畬鎴愭彁浜や汉鏁�
Integer joinButNotFinishedNum = Math.toIntExact(examSubmitTempList.stream().filter(item -> ExamSubmitTempStatusEnum.temp.equals(item.getStatus())).count());
- List<StudentExamInfoVO> studentExamList = classesUserMapper.getClassesUserList(exam.getClassesId());
+ List<StudentExamInfoVO> studentExamList = classesUserMapper.getClassesUserList(exam.getId(), exam.getClassesId());
// 搴旇�冧汉鏁�
Integer shouldUserNum = studentExamList.size();
@@ -600,7 +598,7 @@
if (StringUtils.isEmpty(doQuestionVO.getQuestionAnswer())) {
return Result.fail(SystemCode.InnerError.getCode(), "棰樼洰id涓猴細" + doQuestionVO.getId() + "鐨勯鐩己灏戠瓟妗堬紝璇峰厛瀹屽杽");
}
- trueOrFalse(score,doQuestionVO, navbarVO, doQuestionVO.getQuestionAnswer().equals(doQuestionVO.getAnswer()));
+ score = trueOrFalse(score, doQuestionVO, navbarVO, doQuestionVO.getQuestionAnswer().equals(doQuestionVO.getAnswer()));
}
/* 濡傛灉鏄閫� */
else if (QuestionTypeEnum.MultipleChoice.getCode().equals(questionType)) {
@@ -616,7 +614,7 @@
List<String> questionAnswerList = Arrays.asList(questionAnswer.split(","));
//瀛︾敓绛旀涓虹┖锛屽垽鏂负閿�
if (CollectionUtils.isEmpty(answerList)) {
- trueOrFalse(score,doQuestionVO, navbarVO, false);
+ score = trueOrFalse(score, doQuestionVO, navbarVO, false);
num++;
navbar.add(navbarVO);
continue;
@@ -627,7 +625,7 @@
Set<String> set2 = new HashSet<>(questionAnswerList);
//绛旀瀹屽叏涓�鑷达紝婊″垎
if (set1.equals(set2)) {
- trueOrFalse(score,doQuestionVO, navbarVO, true);
+ score = trueOrFalse(score, doQuestionVO, navbarVO, true);
num++;
navbar.add(navbarVO);
continue;
@@ -637,20 +635,20 @@
}
//濡傛灉澶氶�夊緱鍒嗙被鍨嬩负 绛旈敊涓嶅緱鍒�
if (Integer.valueOf(DeductTypeEnum.AllCorrect.getCode()).equals(paperMarkVO.getDeductType())) {
- trueOrFalse(score,doQuestionVO, navbarVO, false);
+ score = trueOrFalse(score, doQuestionVO, navbarVO, false);
}
//濡傛灉澶氶�夊緱鍒嗙被鍨嬩负 婕忛�夊緱鍥哄畾鍒嗗��,鍖呭惈閿欒閫夐」涓嶅緱鍒�
else if (Integer.valueOf(DeductTypeEnum.PartCorrect.getCode()).equals(paperMarkVO.getDeductType())) {
//瀛︾敓绛旀绉婚櫎鎵�鏈夋纭瓟妗堬紝濡傛灉杩樻湁鍏冪礌璇存槑鍖呭惈閿欒閫夐」
answerList.removeAll(questionAnswerList);
if (!CollectionUtils.isEmpty(answerList)) {
- trueOrFalse(score,doQuestionVO, navbarVO, false);
+ score = trueOrFalse(score, doQuestionVO, navbarVO, false);
} else {
navbarVO.setRight(false);
doQuestionVO.setRight(false);
//婕忛�夊緱鍥哄畾鍒�
- score = score.add(paperMarkVO.getDeductScore());
doQuestionVO.setScore(paperMarkVO.getDeductScore());
+ score = score.add(doQuestionVO.getScore());
}
}
//濡傛灉澶氶�夊緱鍒嗙被鍨嬩负 姣忓涓�棰樺緱鐩稿簲鍒嗗��,鍖呭惈閿欒閫夐」涓嶅緱鍒�
@@ -658,12 +656,13 @@
//瀛︾敓绛旀绉婚櫎鎵�鏈夋纭瓟妗堬紝濡傛灉杩樻湁鍏冪礌璇存槑鍖呭惈閿欒閫夐」
answerList.removeAll(questionAnswerList);
if (!CollectionUtils.isEmpty(answerList)) {
- trueOrFalse(score,doQuestionVO, navbarVO, false);
+ score = trueOrFalse(score, doQuestionVO, navbarVO, false);
} else {
navbarVO.setRight(false);
doQuestionVO.setRight(false);
//婕忛�夊緱鍒�
doQuestionVO.setScore(paperMarkVO.getDeductScore().multiply(new BigDecimal(answerCount)));
+ score = score.add(doQuestionVO.getScore());
}
}
}
@@ -681,7 +680,7 @@
List<String> questionAnswerList = Arrays.asList(questionAnswer.split(","));
//瀛︾敓绛旀涓虹┖锛屽垽鏂负閿�
if (CollectionUtils.isEmpty(answerList)) {
- trueOrFalse(score,doQuestionVO, navbarVO, false);
+ score = trueOrFalse(score, doQuestionVO, navbarVO, false);
num++;
navbar.add(navbarVO);
continue;
@@ -690,7 +689,7 @@
int questionAnswerCount = questionAnswerList.size();
//绛旀瀹屽叏涓�鑷达紝婊″垎
if (answerList.equals(questionAnswerList)) {
- trueOrFalse(score,doQuestionVO, navbarVO, true);
+ score = trueOrFalse(score, doQuestionVO, navbarVO, true);
} else {
navbarVO.setRight(false);
doQuestionVO.setRight(false);
@@ -708,6 +707,7 @@
//濉┖寰楀垎
BigDecimal gapScore = scoreEach.multiply(new BigDecimal(count));
doQuestionVO.setScore(gapScore);
+ score = score.add(doQuestionVO.getScore());
}
}
@@ -717,11 +717,12 @@
}
paperMarkVO.setTitleItems(titleItems);
paperMarkVO.setNavbar(navbar);
+ paperMarkVO.setScore(score + "");
return null;
}
//璁剧疆鍏ㄥ鎴栧叏閿�
- private void trueOrFalse(BigDecimal score,DoQuestionVO doQuestionVO, ExamPaperMarkNavbarVO orderVO, Boolean isCorrect) {
+ private BigDecimal trueOrFalse(BigDecimal score, DoQuestionVO doQuestionVO, ExamPaperMarkNavbarVO orderVO, Boolean isCorrect) {
if (isCorrect) {
//姝g‘
orderVO.setRight(isCorrect);
@@ -734,6 +735,7 @@
doQuestionVO.setRight(isCorrect);
doQuestionVO.setScore(BigDecimal.ZERO);
}
+ return score;
}
//灏佽闃呭嵎杩斿洖鏁版嵁
@@ -771,7 +773,7 @@
long questionCorrect = 0;
long questionCount = 0;
if (!CollectionUtils.isEmpty(examPaperMark.getNavbar())) {
- questionCorrect = examPaperMark.getNavbar().stream().filter(ExamPaperMarkNavbarVO::getRight).count();
+ questionCorrect = examPaperMark.getNavbar().stream().filter(vo -> vo.getRight()!=null && vo.getRight()).count();
questionCount = examPaperMark.getNavbar().size();
}
examPaperScore.setQuestionCorrect(Integer.valueOf(questionCorrect + ""));
diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml
index 02f28b8..c3cc51f 100644
--- a/src/main/resources/mapper/ClassesUserMapper.xml
+++ b/src/main/resources/mapper/ClassesUserMapper.xml
@@ -67,7 +67,7 @@
INNER JOIN t_user TU ON TU.id = TCU.user_id AND TCU.classes_id = #{classesId}
LEFT JOIN t_exam_submit_temp EST ON EST.user_id = TU.id
WHERE
- TCU.deleted = 0 and EST.deleted = 0
+ TCU.deleted = 0 and EST.deleted = 0 and EST.exam_id = #{examId}
</select>
<select id="getClassesByUserId" resultType="java.lang.Integer">
--
Gitblit v1.8.0