|
|
@@ -26,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author: Leonezhurui
|
|
|
@@ -84,6 +85,8 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
Assignment target = convertToPO(assignmentDTO);
|
|
|
target.setCourseId(courseId);
|
|
|
target.setTeacherId(user.getId());
|
|
|
+ target.setEngageNumber(0);
|
|
|
+ target.setCorrectNumber(0);
|
|
|
// TODO:权宜之计
|
|
|
// target.setTeacherId(Long.valueOf(user.getPid()));
|
|
|
target.setCreateTime(new Date());
|
|
|
@@ -206,6 +209,8 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
if(studentAssignmentMapper.findEngagementByStudentIdAndAssignmentId(studentId, assignmentId) != null){
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
// 1创建Engagement实体类,初始化基本信息
|
|
|
Engagement engagement = new Engagement();
|
|
|
engagement.setStudentId(studentId);
|
|
|
@@ -213,6 +218,10 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
engagement.setVersion(1); // 设置这是version
|
|
|
engagement.setStatus(AssignmentCompletionStatus.NOT_SUBMITTED); // 已经进入到页面编辑,但是还没有提交
|
|
|
|
|
|
+ Assignment assignment = assignmentMapper.selectById(assignmentId);
|
|
|
+ assignment.setEngageNumber(assignment.getEngageNumber() + 1);
|
|
|
+
|
|
|
+
|
|
|
// // 2通过FileUtil创建一个空的docx文件
|
|
|
// InputStream inputStream = fileUtil.createEmptyDocx();
|
|
|
//
|
|
|
@@ -223,7 +232,8 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
|
|
|
try {
|
|
|
int code = studentAssignmentMapper.insert(engagement);
|
|
|
- if (code == 0)
|
|
|
+ int code1 = assignmentMapper.updateById(assignment);
|
|
|
+ if (code == 0 || code1 == 0)
|
|
|
throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "参加作业失败");
|
|
|
} catch (Exception e) {
|
|
|
log.error(e.getMessage());
|
|
|
@@ -248,6 +258,8 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
return convertToVO(engagement);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ // 返回顺序: 先是未批改的,然后是批改的按照成绩从高到低返回
|
|
|
@Override
|
|
|
public IPage<EngagementVO> findEngagementPage(Page<Engagement> page, Long assignmentId) {
|
|
|
IPage<Engagement> engagements = studentAssignmentMapper.findEngagementByAssignmentId(page, assignmentId);
|
|
|
@@ -255,6 +267,8 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public EngagementDetailVO getDetailEngagement(Long studentId, Long assignmentId) {
|
|
|
// 1 获取用户详细信息
|
|
|
@@ -354,9 +368,13 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
engagement.setScore(correctDTO.getScore());
|
|
|
engagement.setRemark(correctDTO.getRemark());
|
|
|
|
|
|
+ assignment.setCorrectNumber(assignment.getCorrectNumber() + 1);
|
|
|
+
|
|
|
+
|
|
|
try {
|
|
|
int code = studentAssignmentMapper.updateById(engagement);
|
|
|
- if (code == 0)
|
|
|
+ int code1 = assignmentMapper.updateById(assignment);
|
|
|
+ if (code == 0 || code1 == 0)
|
|
|
throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "批改作业失败");
|
|
|
} catch (Exception e) {
|
|
|
log.error(e.getMessage());
|
|
|
@@ -365,6 +383,47 @@ public class AssignmentServiceImpl implements AssignmentService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public long getNextStudentId(Long assignmentId, Long studentId) {
|
|
|
+ List<Engagement> allRecords = studentAssignmentMapper.selectList(
|
|
|
+ new QueryWrapper<Engagement>()
|
|
|
+ .eq("assignment_id", assignmentId)
|
|
|
+ // 可以在此添加其他查询条件
|
|
|
+ );
|
|
|
+ // 对记录进行排序:status为4或6的记录排到最后,其他记录保持原始顺序
|
|
|
+ List<Engagement> sortedList = allRecords.stream()
|
|
|
+ .sorted(Comparator.comparing(
|
|
|
+ e -> e.getStatus() == AssignmentCompletionStatus.PUBLISHED ||
|
|
|
+ e.getStatus() == AssignmentCompletionStatus.CORRECTED
|
|
|
+ )).toList();
|
|
|
+
|
|
|
+ int currentIndex = -1;
|
|
|
+ for (int i = 0; i < sortedList.size(); i++) {
|
|
|
+ if (sortedList.get(i).getStudentId().equals(studentId)) {
|
|
|
+ currentIndex = i;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (currentIndex == allRecords.size() - 1 || currentIndex == -1) {
|
|
|
+ return sortedList.get(0).getStudentId();
|
|
|
+ }
|
|
|
+
|
|
|
+ return sortedList.get(currentIndex + 1).getStudentId();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EngageNumberVo getEngageNumber(Long assignmentId) {
|
|
|
+ Assignment assignment = assignmentMapper.selectById(assignmentId);
|
|
|
+ if(assignment == null){
|
|
|
+ throw MyException.create(HttpStatus.BAD_REQUEST, "作业不存在");
|
|
|
+ }
|
|
|
+ if(assignment.getEngageNumber() != null && assignment.getCorrectNumber() != null){
|
|
|
+ return new EngageNumberVo(assignment.getEngageNumber(), assignment.getCorrectNumber());
|
|
|
+ } else {
|
|
|
+ throw MyException.create(HttpStatus.BAD_REQUEST, "未建立作业统计");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private Assignment convertToPO(AssignmentDTO assignmentDTO) {
|
|
|
Assignment assignment = new Assignment();
|
|
|
BeanUtils.copyProperties(assignmentDTO, assignment);
|