xiaofei 1 yıl önce
ebeveyn
işleme
ae4b566db6

+ 10 - 10
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/score/StudentScoreDetailDto.java

@@ -19,8 +19,8 @@ public class StudentScoreDetailDto {
     private String secretNumber;
     private String college;
     private String className;
-    private String objectiveScoreString;
-    private String subjectiveScoreString;
+    private String objectiveScore;
+    private String subjectiveScore;
     private String totalScoreString;
     private String subjectiveScoreList;
     private String checkUserId;
@@ -109,20 +109,20 @@ public class StudentScoreDetailDto {
         this.className = className;
     }
 
-    public String getObjectiveScoreString() {
-        return objectiveScoreString;
+    public String getObjectiveScore() {
+        return objectiveScore;
     }
 
-    public void setObjectiveScoreString(String objectiveScoreString) {
-        this.objectiveScoreString = objectiveScoreString;
+    public void setObjectiveScore(String objectiveScore) {
+        this.objectiveScore = objectiveScore;
     }
 
-    public String getSubjectiveScoreString() {
-        return subjectiveScoreString;
+    public String getSubjectiveScore() {
+        return subjectiveScore;
     }
 
-    public void setSubjectiveScoreString(String subjectiveScoreString) {
-        this.subjectiveScoreString = subjectiveScoreString;
+    public void setSubjectiveScore(String subjectiveScore) {
+        this.subjectiveScore = subjectiveScore;
     }
 
     public String getTotalScoreString() {

+ 6 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkStudent.java

@@ -5,6 +5,8 @@ import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import org.apache.commons.lang.math.RandomUtils;
 import org.apache.commons.lang3.StringUtils;
 
@@ -125,18 +127,22 @@ public class MarkStudent implements Serializable {
     private Long checkUserId;
 
     @ApiModelProperty(value = "客观总分")
+    @TableField(value = "objective_score", updateStrategy = FieldStrategy.IGNORED)
     private Double objectiveScore;
 
     @ApiModelProperty(value = "客观得分明细")
+    @TableField(value = "objective_score_list", updateStrategy = FieldStrategy.IGNORED)
     private String objectiveScoreList;
 
     @ApiModelProperty(value = "主观题状态")
     private SubjectiveStatus subjectiveStatus;
 
     @ApiModelProperty(value = "主观总分")
+    @TableField(value = "subjective_score", updateStrategy = FieldStrategy.IGNORED)
     private Double subjectiveScore;
 
     @ApiModelProperty(value = "主观得分明细")
+    @TableField(value = "objective_score_list", updateStrategy = FieldStrategy.IGNORED)
     private String subjectiveScoreList;
 
     @ApiModelProperty(value = "学院")

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTaskService.java

@@ -72,7 +72,7 @@ public interface MarkTaskService extends IService<MarkTask> {
 
 	boolean updateStatusByStudentIdAndGroupNumber(Long studentId, Integer groupNumber, MarkTaskStatus status);
 
-	int countByStudentIdAndMarkerIdAndIdNotEqual(Long studentId, Long userId, Long taskId);
+	int countByStudentIdAndMarkerIdAndIdNotEqual(Long studentId, Long examId, String paperNumber, Integer groupNumber, Long userId, Long taskId);
 
 	boolean updateMarkerResult(Long taskId, MarkTaskStatus marked, Long userId, Double markerScore, String scoreList,
 			Long now, int spent,MarkTaskStatus... inStatus);

+ 8 - 9
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -189,7 +189,7 @@ public class MarkServiceImpl implements MarkService {
 				markTaskService.resetById(markTask.getId(), null, null, null, MarkTaskStatus.WAITING);
 				lockService.waitlock(LockType.STUDENT, markTask.getStudentId());
 				updateStudentGroupStatus(studentId, examId, paperNumber, groupNumber, SubjectiveStatus.UNMARK);
-				markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0D, null);
+				markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
 				lockService.unlock(LockType.STUDENT, markTask.getStudentId());
 			}
 			markUserGroupService.resetById(markUserGroup.getId());
@@ -229,7 +229,7 @@ public class MarkServiceImpl implements MarkService {
 
 	private void resetStudentGroup(Long studentId, Long examId, String paperNumber, Integer groupNumber) {
 		updateStudentGroupStatus(studentId, examId, paperNumber, groupNumber, SubjectiveStatus.UNMARK);
-		markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0D, null);
+		markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
 	}
 
 	private void updateStudentGroupStatus(Long studentId, Long examId, String paperNumber, Integer groupNumber,
@@ -385,7 +385,7 @@ public class MarkServiceImpl implements MarkService {
 		} else {
 			updateStudentGroupStatus(studentId, group.getExamId(), group.getPaperNumber(), group.getNumber(),
 					SubjectiveStatus.UNMARK);
-			markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0D, null);
+			markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
 		}
 	}
 
@@ -395,7 +395,7 @@ public class MarkServiceImpl implements MarkService {
 				&& unGroupQuestionCount == 0) {
 			scoreCalculate(studentId);
 		} else {
-			markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, 0D, null);
+			markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
 		}
 	}
 
@@ -688,7 +688,7 @@ public class MarkServiceImpl implements MarkService {
 
 		// 循环所有主观得分明细
 		List<MarkSubjectiveScore> list = markSubjectiveScoreService.listByStudentIdAndGroupNumber(studentId, null);
-		list.sort(null);
+//		list.sort(null);
 		for (MarkSubjectiveScore ss : list) {
 			List<MarkSubjectiveScore> mainScoreList = mainScoreMap.get(ss.getMainNumber());
 			if (mainScoreList == null) {
@@ -714,7 +714,7 @@ public class MarkServiceImpl implements MarkService {
 			}
 			for (MarkSubjectiveScore subjectiveScore : mainScoreList) {
 				subjectiveScore.setMainScore(mainScore.doubleValue());
-				markSubjectiveScoreService.saveOrUpdate(subjectiveScore);
+				markSubjectiveScoreService.saveOrUpdateByMultiId(subjectiveScore);
 			}
 			scoreMap.put(mainNumber, mainScore.doubleValue());
 		}
@@ -725,8 +725,7 @@ public class MarkServiceImpl implements MarkService {
 			totalScore = totalScore.add(BigDecimal.valueOf(scoreMap.get(mainNumber)));
 		}
 		// 全部评完,更新考生主观题得分
-		markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.MARKED, totalScore.doubleValue(),
-				MarkStudent.buildScoreList(scoreList));
+		markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.MARKED, totalScore.doubleValue(), MarkStudent.buildScoreList(scoreList));
 	}
 
 	@Override
@@ -1094,7 +1093,7 @@ public class MarkServiceImpl implements MarkService {
 			return false;
 		}
 		// 是否多评情况下已处理过该考生评卷任务
-		if (markTaskService.countByStudentIdAndMarkerIdAndIdNotEqual(task.getStudentId(), userId, task.getId()) > 0) {
+		if (markTaskService.countByStudentIdAndMarkerIdAndIdNotEqual(task.getStudentId(), task.getExamId(), task.getPaperNumber(), task.getGroupNumber(), userId, task.getId()) > 0) {
 			return false;
 		}
 		// 未选做

+ 5 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -164,7 +164,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 	public void updateSubjectiveStatusAndScore(Long studentId, SubjectiveStatus status, Double score,
 			String scoreList) {
 		UpdateWrapper<MarkStudent> updateWrapper = new UpdateWrapper<>();
-		updateWrapper.lambda().set(MarkStudent::getSubjectiveStatus, status).set(MarkStudent::getSubjectiveScore, score)
+		updateWrapper.lambda().set(MarkStudent::getSubjectiveStatus, status)
+				.set(MarkStudent::getSubjectiveScore, score)
 				.set(MarkStudent::getSubjectiveScoreList, scoreList).eq(MarkStudent::getId, studentId);
 		this.update(updateWrapper);
 	}
@@ -480,14 +481,14 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 		}
 		calculateObjectiveScore(student);
 		if (student.getAbsent()) {// 转缺考
-			student.setObjectiveScore(0d);
+			student.setObjectiveScore(null);
 			student.setObjectiveScoreList(null);
 		}
 		if (!old.getAbsent() && student.getAbsent()) {// 正考转缺考
-			student.setSubjectiveScore(0d);
+			student.setSubjectiveScore(null);
 			student.setSubjectiveScoreList(null);
+			student.setSubjectiveStatus(SubjectiveStatus.UNMARK);
 			this.updateById(student);
-			this.updateSubjectiveStatusAndScore(student.getId(), SubjectiveStatus.UNMARK, 0D, null);
 		}
 		boolean success = this.updateScanInfo(student);
 		if (success) {

+ 4 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java

@@ -308,9 +308,12 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
     }
 
     @Override
-    public int countByStudentIdAndMarkerIdAndIdNotEqual(Long studentId, Long userId, Long taskId) {
+    public int countByStudentIdAndMarkerIdAndIdNotEqual(Long studentId, Long examId, String paperNumber, Integer groupNumber, Long userId, Long taskId) {
         QueryWrapper<MarkTask> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(MarkTask::getStudentId, studentId)
+                .eq(MarkTask::getExamId, examId)
+                .eq(MarkTask::getPaperNumber, paperNumber)
+                .eq(MarkTask::getGroupNumber, groupNumber)
                 .eq(MarkTask::getUserId, userId)
                 .ne(MarkTask::getId, taskId);
         return this.count(queryWrapper);

+ 4 - 1
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -154,7 +154,10 @@
 			mark_task t
 			WHERE
 			t.student_id = mt.student_id
-			AND t.id != mt.id
+			AND t.id = mt.id
+            AND t.exam_id = mt.exam_id
+            AND t.paper_number = mt.paper_number
+            AND t.group_number = mt.group_number
 			AND t.user_id = #{userId}
 			AND t.marker_score IS NOT NULL
 		)