|
@@ -6,27 +6,26 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qmth.teachcloud.common.bean.dto.mark.MarkUser;
|
|
|
+import com.qmth.teachcloud.common.bean.params.mark.setting.MarkClassUserParams;
|
|
|
+import com.qmth.teachcloud.common.bean.params.mark.setting.MarkGroupClassUserParams;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupClassProgressDto;
|
|
|
import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupDto;
|
|
|
-import com.qmth.teachcloud.common.bean.dto.mark.MarkUser;
|
|
|
+import com.qmth.teachcloud.mark.dto.mark.setting.MarkUserClassDetailDto;
|
|
|
import com.qmth.teachcloud.mark.dto.mark.setting.MarkUserClassDto;
|
|
|
-import com.qmth.teachcloud.common.bean.params.mark.setting.MarkClassUserParams;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkQuestionService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkStudentService;
|
|
|
import com.qmth.teachcloud.mark.entity.MarkGroup;
|
|
|
import com.qmth.teachcloud.mark.entity.MarkUserClass;
|
|
|
import com.qmth.teachcloud.mark.mapper.MarkUserClassMapper;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkGroupService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkUserClassService;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkUserGroupService;
|
|
|
+import com.qmth.teachcloud.mark.service.*;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -60,7 +59,7 @@ public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, M
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<MarkUserClassDto> listMarkUserClassByExamIdAndPaperNumber(Long examId, String paperNumber) {
|
|
|
+ public MarkUserClassDto listMarkUserClassByExamIdAndPaperNumber(Long examId, String paperNumber) {
|
|
|
// 课程下所有班级数据
|
|
|
List<String> paperNumberClassList = markStudentService.listClassByExamIdAndCourseCode(examId, paperNumber);
|
|
|
// 课程下所有分组
|
|
@@ -73,21 +72,23 @@ public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, M
|
|
|
return markGroupDto;
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
+ MarkUserClassDto markUserClassDto = new MarkUserClassDto();
|
|
|
+ markUserClassDto.setClassNames(paperNumberClassList);
|
|
|
|
|
|
- List<MarkUserClassDto> markUserClassDtoList = new ArrayList<>();
|
|
|
- for (String className : paperNumberClassList) {
|
|
|
- for (MarkGroupDto markGroupDto : markGroupDtoList) {
|
|
|
- MarkUserClassDto markUserClassDto = new MarkUserClassDto();
|
|
|
- markUserClassDto.setClassName(className);
|
|
|
- markUserClassDto.setGroupNumber(markGroupDto.getGroupNumber());
|
|
|
- markUserClassDto.setGroupQuestions(markGroupDto.getGroupQuestions());
|
|
|
- markUserClassDto.setMarkerList(markGroupDto.getMarkers());
|
|
|
- // 班级+分组绑定的评卷员集合
|
|
|
- markUserClassDto.setClassMarkerList(this.listClassMarkerByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, markGroupDto.getGroupNumber(), className));
|
|
|
- markUserClassDtoList.add(markUserClassDto);
|
|
|
+ List<MarkUserClassDetailDto> markUserClassDetailDtos = new ArrayList<>();
|
|
|
+ for (MarkGroupDto markGroupDto : markGroupDtoList) {
|
|
|
+ for (MarkUser marker : markGroupDto.getMarkers()) {
|
|
|
+ MarkUserClassDetailDto markUserClassDetailDto = new MarkUserClassDetailDto();
|
|
|
+ markUserClassDetailDto.setGroupNumber(markGroupDto.getGroupNumber());
|
|
|
+ markUserClassDetailDto.setGroupQuestions(markGroupDto.getGroupQuestions());
|
|
|
+ markUserClassDetailDto.setMarker(marker);
|
|
|
+ List<MarkUserClass> markUserClasses = this.baseMapper.listMarkerClassByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, markGroupDto.getGroupNumber(), marker.getUserId());
|
|
|
+ markUserClassDetailDto.setMarkerClassList(markUserClasses.stream().map(MarkUserClass::getClassName).collect(Collectors.toList()));
|
|
|
+ markUserClassDetailDtos.add(markUserClassDetailDto);
|
|
|
}
|
|
|
}
|
|
|
- return markUserClassDtoList;
|
|
|
+ markUserClassDto.setMarkerClass(markUserClassDetailDtos);
|
|
|
+ return markUserClassDto;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -100,20 +101,49 @@ public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, M
|
|
|
public boolean saveMarkClassUser(MarkClassUserParams markClassUserParams) {
|
|
|
Long examId = markClassUserParams.getExamId();
|
|
|
String paperNumber = markClassUserParams.getPaperNumber();
|
|
|
- String className = markClassUserParams.getClassName();
|
|
|
- Integer groupNumber = markClassUserParams.getGroupNumber();
|
|
|
+
|
|
|
+ // 校验分组、班级是否绑定完成
|
|
|
+ List<String> listUserClass = markStudentService.listClassByExamIdAndCourseCode(examId, paperNumber);
|
|
|
+ if (CollectionUtils.isNotEmpty(listUserClass)) {
|
|
|
+ Map<Integer, Set<String>> groupBindClassMap = new HashMap<>();
|
|
|
+ for (MarkGroupClassUserParams groupUserClassInfo : markClassUserParams.getGroupMarkerClass()) {
|
|
|
+ Integer groupNumber = groupUserClassInfo.getGroupNumber();
|
|
|
+ if (!groupBindClassMap.containsKey(groupNumber)) {
|
|
|
+ groupBindClassMap.put(groupNumber, new HashSet<>());
|
|
|
+ }
|
|
|
+ groupBindClassMap.get(groupNumber).addAll(groupUserClassInfo.getMarkerClassList());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!groupBindClassMap.isEmpty()) {
|
|
|
+ StringJoiner stringJoiner = new StringJoiner(";");
|
|
|
+ for (Map.Entry<Integer, Set<String>> entry : groupBindClassMap.entrySet()) {
|
|
|
+ List<String> groupAllClass = listUserClass;
|
|
|
+ groupAllClass.removeAll(entry.getValue());
|
|
|
+ if (CollectionUtils.isNotEmpty(groupAllClass)) {
|
|
|
+ stringJoiner.add(String.format("班级[%s]在分组[%s]中未被任何评卷员绑定", String.join(",", entry.getValue()), entry.getKey()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (stringJoiner.toString().length() > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(stringJoiner.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
List<MarkUserClass> markUserClasses = new ArrayList<>();
|
|
|
- for (MarkUser markUser : markClassUserParams.getClassMarkerList()) {
|
|
|
- MarkUserClass markUserClass = new MarkUserClass();
|
|
|
- markUserClass.setId(SystemConstant.getDbUuid());
|
|
|
- markUserClass.setExamId(examId);
|
|
|
- markUserClass.setPaperNumber(paperNumber);
|
|
|
- markUserClass.setGroupNumber(groupNumber);
|
|
|
- markUserClass.setClassName(className);
|
|
|
- markUserClass.setUserId(markUser.getUserId());
|
|
|
- markUserClasses.add(markUserClass);
|
|
|
+ for (MarkGroupClassUserParams groupUserClassInfo : markClassUserParams.getGroupMarkerClass()) {
|
|
|
+ for (String className : groupUserClassInfo.getMarkerClassList()) {
|
|
|
+ MarkUserClass markUserClass = new MarkUserClass();
|
|
|
+ markUserClass.setId(SystemConstant.getDbUuid());
|
|
|
+ markUserClass.setExamId(examId);
|
|
|
+ markUserClass.setPaperNumber(paperNumber);
|
|
|
+ markUserClass.setGroupNumber(groupUserClassInfo.getGroupNumber());
|
|
|
+ markUserClass.setClassName(className);
|
|
|
+ markUserClass.setUserId(groupUserClassInfo.getMarker().getUserId());
|
|
|
+ markUserClasses.add(markUserClass);
|
|
|
+ }
|
|
|
}
|
|
|
- this.deleteByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, groupNumber, className);
|
|
|
+ // 科目下所有数据同时提交
|
|
|
+ this.deleteByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, null, null);
|
|
|
this.saveBatch(markUserClasses);
|
|
|
return true;
|
|
|
}
|
|
@@ -123,8 +153,10 @@ public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, M
|
|
|
UpdateWrapper<MarkUserClass> updateWrapper = new UpdateWrapper<>();
|
|
|
LambdaUpdateWrapper<MarkUserClass> lambdaUpdateWrapper = updateWrapper.lambda();
|
|
|
lambdaUpdateWrapper.eq(MarkUserClass::getExamId, examId)
|
|
|
- .eq(MarkUserClass::getPaperNumber, paperNumber)
|
|
|
- .eq(MarkUserClass::getGroupNumber, groupNumber);
|
|
|
+ .eq(MarkUserClass::getPaperNumber, paperNumber);
|
|
|
+ if (groupNumber != null) {
|
|
|
+ lambdaUpdateWrapper.eq(MarkUserClass::getGroupNumber, groupNumber);
|
|
|
+ }
|
|
|
if (StringUtils.isNotBlank(className)) {
|
|
|
lambdaUpdateWrapper.eq(MarkUserClass::getClassName, className);
|
|
|
}
|