Procházet zdrojové kódy

修改engagementCorrect方法,根据作业原始状态设置不同批改后状态

zhi.li102 před 1 rokem
rodič
revize
0e5efa935a

+ 30 - 2
src/main/java/com/njuzr/eaibackend/service/impl/AssignmentServiceImpl.java

@@ -332,6 +332,30 @@ public class AssignmentServiceImpl implements AssignmentService {
         }
     }
 
+    /**
+     * 补交作业,更新文件版本和作业状态为已补交
+     *
+     * @param studentId
+     * @param assignmentId
+     */
+    @Override
+    public void engagementLateSubmit(Long studentId, Long assignmentId) {
+        Engagement engagement = studentAssignmentMapper.findEngagementByStudentIdAndAssignmentId(studentId, assignmentId);
+        if (engagement == null)
+            throw MyException.create(HttpStatus.BAD_REQUEST, "参与作业情况不存在");
+        int originalVersion = engagement.getVersion();
+        engagement.setVersion(originalVersion + 1);
+        engagement.setStatus(AssignmentCompletionStatus.LATE_SUBMITTED);
+        try {
+            int code = studentAssignmentMapper.updateById(engagement);
+            if (code == 0)
+                throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新文件版本失败");
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新文件版本失败");
+        }
+    }
+
 
     /**
      * 作业暂存,更新文件版本,不修改作业状态
@@ -384,9 +408,13 @@ public class AssignmentServiceImpl implements AssignmentService {
         if (!Objects.equals(assignment.getTeacherId(), teacherId))
             throw MyException.create(HttpStatus.BAD_REQUEST, "无权限批改");
 
-        if(engagement.getStatus() != AssignmentCompletionStatus.CORRECTED){
+        if(engagement.getStatus() != AssignmentCompletionStatus.CORRECTED && engagement.getStatus() != AssignmentCompletionStatus.LATE_SUBMITTED_CORRECTED){
             assignment.setCorrectNumber(assignment.getCorrectNumber() + 1);
-            engagement.setStatus(AssignmentCompletionStatus.CORRECTED);
+            if(engagement.getStatus() == AssignmentCompletionStatus.SUBMITTED){
+                engagement.setStatus(AssignmentCompletionStatus.CORRECTED);
+            } else if(engagement.getStatus() == AssignmentCompletionStatus.LATE_SUBMITTED){
+                engagement.setStatus(AssignmentCompletionStatus.LATE_SUBMITTED_CORRECTED);
+            }
         }
         engagement.setScore(correctDTO.getScore());
         engagement.setRemark(correctDTO.getRemark());