|
@@ -4,8 +4,13 @@ import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qmth.teachcloud.common.bean.dto.mark.manage.MarkGroupClassProgressDto;
|
|
|
+import com.qmth.teachcloud.common.bean.dto.mark.manage.MarkGroupProgressDto;
|
|
|
+import com.qmth.teachcloud.common.bean.dto.mark.manage.MarkGroupSummaryProgressDto;
|
|
|
+import com.qmth.teachcloud.common.bean.dto.mark.manage.MarkGroupTotalProgressDto;
|
|
|
import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkGroupDto;
|
|
|
import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkGroupTaskDto;
|
|
|
+import com.qmth.teachcloud.common.bean.dto.mark.setting.MarkUser;
|
|
|
import com.qmth.teachcloud.common.bean.dto.mark.setting.PictureConfig;
|
|
|
import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
|
|
|
import com.qmth.teachcloud.common.entity.MarkPaper;
|
|
@@ -13,8 +18,11 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.teachcloud.common.service.MarkPaperService;
|
|
|
import com.qmth.teachcloud.common.service.MarkQuestionService;
|
|
|
import com.qmth.teachcloud.mark.entity.MarkGroup;
|
|
|
+import com.qmth.teachcloud.mark.entity.MarkTask;
|
|
|
+import com.qmth.teachcloud.mark.entity.MarkUserClass;
|
|
|
import com.qmth.teachcloud.mark.mapper.MarkGroupMapper;
|
|
|
import com.qmth.teachcloud.mark.service.MarkGroupService;
|
|
|
+import com.qmth.teachcloud.mark.service.MarkTaskService;
|
|
|
import com.qmth.teachcloud.mark.service.MarkUserClassService;
|
|
|
import com.qmth.teachcloud.mark.service.MarkUserGroupService;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
@@ -25,6 +33,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -49,6 +59,9 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
|
|
|
@Resource
|
|
|
MarkUserClassService markUserClassService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ MarkTaskService markTaskService;
|
|
|
+
|
|
|
@Override
|
|
|
public MarkGroupTaskDto listGroupTaskByExamIdAndPaperNumber(Long examId, String paperNumber) {
|
|
|
MarkGroupTaskDto markGroupTaskDto = new MarkGroupTaskDto();
|
|
@@ -89,13 +102,17 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
|
|
|
queryWrapper.lambda().eq(MarkGroup::getExamId, examId)
|
|
|
.eq(MarkGroup::getPaperNumber, paperNumber)
|
|
|
.orderByAsc(MarkGroup::getNumber);
|
|
|
- return null;
|
|
|
+ return this.list(queryWrapper);
|
|
|
}
|
|
|
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public void deleteGroupByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber) {
|
|
|
-
|
|
|
+ UpdateWrapper<MarkGroup> updateWrapper = new UpdateWrapper<>();
|
|
|
+ updateWrapper.lambda().eq(MarkGroup::getExamId, examId)
|
|
|
+ .eq(MarkGroup::getPaperNumber, paperNumber)
|
|
|
+ .eq(MarkGroup::getNumber, groupNumber);
|
|
|
+ this.remove(updateWrapper);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -126,4 +143,84 @@ public class MarkGroupServiceImpl extends ServiceImpl<MarkGroupMapper, MarkGroup
|
|
|
markUserClassService.deleteByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MarkGroup getByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber) {
|
|
|
+ QueryWrapper<MarkGroup> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(MarkGroup::getExamId, examId)
|
|
|
+ .eq(MarkGroup::getPaperNumber, paperNumber)
|
|
|
+ .eq(MarkGroup::getNumber, groupNumber);
|
|
|
+ return this.getOne(queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MarkGroupSummaryProgressDto summaryGroupProgress(Long examId, String paperNumber) {
|
|
|
+ MarkGroupSummaryProgressDto markGroupSummaryProgressDto = new MarkGroupSummaryProgressDto();
|
|
|
+
|
|
|
+ // totalInfo
|
|
|
+ MarkGroupTotalProgressDto markGroupTotalProgressDto = new MarkGroupTotalProgressDto();
|
|
|
+ MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
+ markGroupTotalProgressDto.setStudentCount(markPaper.getStudentCount());
|
|
|
+ markGroupTotalProgressDto.setUploadCount(markPaper.getUploadCount());
|
|
|
+ markGroupTotalProgressDto.setAbsentCount(markPaper.getAbsentCount());
|
|
|
+
|
|
|
+ List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, null);
|
|
|
+ int taskCount = markTaskList.size();
|
|
|
+ int totalMarkedCount = markTaskService.markedCount(markTaskList);
|
|
|
+ markGroupTotalProgressDto.setPercent(markTaskService.calcPercent(totalMarkedCount, taskCount));
|
|
|
+ markGroupSummaryProgressDto.setTotalInfo(markGroupTotalProgressDto);
|
|
|
+
|
|
|
+ // classInfo
|
|
|
+ if (markPaper.getOpenMarkClass()) {
|
|
|
+ List<MarkGroupClassProgressDto> markGroupClassProgressDtoList = new ArrayList<>();
|
|
|
+ List<MarkUserClass> markUserClassList = markUserClassService.listByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
+ if (CollectionUtils.isNotEmpty(markUserClassList)) {
|
|
|
+ Map<String, List<MarkUserClass>> listMap = markUserClassList.stream().collect(Collectors.groupingBy(m -> m.getClassName()));
|
|
|
+ for (Map.Entry<String, List<MarkUserClass>> entry : listMap.entrySet()) {
|
|
|
+ MarkGroupClassProgressDto markGroupClassProgressDto = new MarkGroupClassProgressDto();
|
|
|
+ List<MarkTask> totalMarkTaskList = new ArrayList<>();
|
|
|
+ List<MarkUser> totalMarkUserList = new ArrayList<>();
|
|
|
+ for (MarkUserClass markUserClass : entry.getValue()) {
|
|
|
+ totalMarkTaskList.addAll(markTaskService.listByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markUserClass.getGroupNumber()));
|
|
|
+ totalMarkUserList.addAll(markUserGroupService.listGroupUserByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markUserClass.getGroupNumber()));
|
|
|
+ }
|
|
|
+ markGroupClassProgressDto.setClassName(entry.getKey());
|
|
|
+ markGroupClassProgressDto.setMarkerCount(totalMarkUserList.size());
|
|
|
+ markGroupClassProgressDto.setTaskCount(totalMarkTaskList.size());
|
|
|
+ markGroupClassProgressDto.setMarkedCount(markTaskService.markedCount(totalMarkTaskList));
|
|
|
+ markGroupClassProgressDto.setLeftCount(markGroupClassProgressDto.getTaskCount() - markGroupClassProgressDto.getMarkedCount());
|
|
|
+ // todo 正在评卷数
|
|
|
+// markGroupClassProgressDto.setCurrentCount();
|
|
|
+ markGroupClassProgressDto.setPercent(markTaskService.calcPercent(markGroupClassProgressDto.getMarkedCount(), markGroupClassProgressDto.getTaskCount()));
|
|
|
+ markGroupClassProgressDto.setArbitrateCount(markTaskService.waitArbitrateCount(totalMarkTaskList));
|
|
|
+ markGroupClassProgressDtoList.add(markGroupClassProgressDto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ markGroupSummaryProgressDto.setClassInfo(markGroupClassProgressDtoList);
|
|
|
+ }
|
|
|
+
|
|
|
+ // groupInfo
|
|
|
+ List<MarkGroupProgressDto> markGroupProgressDtoList = new ArrayList<>();
|
|
|
+ List<MarkGroup> markGroupList = this.listGroupByExamIdAndPaperNumber(examId, paperNumber);
|
|
|
+ for (MarkGroup markGroup : markGroupList) {
|
|
|
+ MarkGroupProgressDto markGroupProgressDto = new MarkGroupProgressDto();
|
|
|
+ markGroupProgressDto.setGroupNumber(markGroup.getNumber());
|
|
|
+ markGroupProgressDto.setGroupQuestions(markQuestionService.assembleGroupQuestionsByExamIdAndPaperNumberAndNumber(examId, paperNumber, markGroup.getNumber()));
|
|
|
+ List<MarkUser> markUserList = markUserGroupService.listGroupUserByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroup.getNumber());
|
|
|
+ markGroupProgressDto.setMarkerCount(markUserList.size());
|
|
|
+ markGroup.setQuestionList(markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroup.getNumber(), false));
|
|
|
+ markGroupProgressDto.setScoreList(markGroup.getScoreList());
|
|
|
+ List<MarkTask> groupNumberMarkTask = markTaskList.stream().filter(m -> m.getGroupNumber().equals(markGroup.getNumber())).collect(Collectors.toList());
|
|
|
+ markGroupProgressDto.setTaskCount(groupNumberMarkTask.size());
|
|
|
+ markGroupProgressDto.setMarkedCount(markTaskService.markedCount(groupNumberMarkTask));
|
|
|
+ markGroupProgressDto.setLeftCount(markGroupProgressDto.getTaskCount() - markGroupProgressDto.getMarkedCount());
|
|
|
+ // todo 正在评卷数
|
|
|
+// markGroupProgressDto.setCurrentCount();
|
|
|
+ markGroupProgressDto.setPercent(markTaskService.calcPercent(markGroupProgressDto.getMarkedCount(), markGroupProgressDto.getTaskCount()));
|
|
|
+ markGroupProgressDto.setArbitrateCount(markTaskService.waitArbitrateCount(groupNumberMarkTask));
|
|
|
+ markGroupProgressDtoList.add(markGroupProgressDto);
|
|
|
+ }
|
|
|
+ markGroupSummaryProgressDto.setGroupInfo(markGroupProgressDtoList);
|
|
|
+ return markGroupSummaryProgressDto;
|
|
|
+ }
|
|
|
}
|