|
@@ -10,6 +10,7 @@ import com.google.common.collect.Lists;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
import com.qmth.distributed.print.business.bean.dto.ApprovalForm.*;
|
|
import com.qmth.distributed.print.business.bean.dto.ApprovalForm.*;
|
|
import com.qmth.distributed.print.business.bean.dto.*;
|
|
import com.qmth.distributed.print.business.bean.dto.*;
|
|
|
|
+import com.qmth.distributed.print.business.bean.dto.ExamObject.ExamObjectDto;
|
|
import com.qmth.distributed.print.business.bean.params.ExamDetailList;
|
|
import com.qmth.distributed.print.business.bean.params.ExamDetailList;
|
|
import com.qmth.distributed.print.business.bean.params.ExamDetailParams;
|
|
import com.qmth.distributed.print.business.bean.params.ExamDetailParams;
|
|
import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
|
|
import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
|
|
@@ -156,6 +157,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
@Resource
|
|
@Resource
|
|
FileStoreUtil fileStoreUtil;
|
|
FileStoreUtil fileStoreUtil;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ ExamTaskService examTaskService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<ExamTask> listByCourseCode(Long schoolId, String code) {
|
|
public List<ExamTask> listByCourseCode(Long schoolId, String code) {
|
|
QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
|
|
@@ -1687,68 +1691,15 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
throw ExceptionResultEnum.ERROR.exception("找不到教研室");
|
|
throw ExceptionResultEnum.ERROR.exception("找不到教研室");
|
|
}
|
|
}
|
|
String teachingRoomName = teachingRoom.getName();
|
|
String teachingRoomName = teachingRoom.getName();
|
|
- Long examStartTime = null;
|
|
|
|
- Long examEndTime = null;
|
|
|
|
// 流程id
|
|
// 流程id
|
|
Long flowId = examTask.getFlowId();
|
|
Long flowId = examTask.getFlowId();
|
|
|
|
|
|
// 2.ExamRoomInfo 部分
|
|
// 2.ExamRoomInfo 部分
|
|
- List<ExamRoomInfo> examRoomInfoList = new ArrayList<>();
|
|
|
|
- List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber);
|
|
|
|
- if (examPackageDetailDatasource.size() > 0) {
|
|
|
|
- Set<Long> examDetailIdSet = examPackageDetailDatasource.stream().map(ExamPackageDetail::getExamDetailId).collect(Collectors.toSet());
|
|
|
|
- for (Long examDetailId : examDetailIdSet) {
|
|
|
|
- // 一个考场下
|
|
|
|
- // 班级
|
|
|
|
- String classNames = "";
|
|
|
|
- int studentCount = 0;
|
|
|
|
- String printCount = "";
|
|
|
|
-
|
|
|
|
- List<ExamPackageDetail> examPackageDetailCell = examPackageDetailDatasource.stream()
|
|
|
|
- .filter(e -> examDetailId.equals(e.getExamDetailId()))
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
-
|
|
|
|
- List<BackupMethodEnum> backupMethodEnums = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupMethod).distinct().collect(Collectors.toList());
|
|
|
|
- if (backupMethodEnums.size() != 1 && backupMethodEnums.get(0) != BackupMethodEnum.ROOM) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份方式必须按考场");
|
|
|
|
- }
|
|
|
|
- List<Integer> backupCountList = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupCount).distinct().collect(Collectors.toList());
|
|
|
|
- if (backupCountList.size() != 1) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份数量异常");
|
|
|
|
- }
|
|
|
|
- // 试卷该考场备份数量
|
|
|
|
- Integer backupCount = backupCountList.get(0);
|
|
|
|
- // 班级主键','隔开
|
|
|
|
- String clazzIds = "";
|
|
|
|
- final String separator = ",";
|
|
|
|
- for (ExamPackageDetail examPackageDetail : examPackageDetailCell) {
|
|
|
|
- // 处理考试开始结束时间
|
|
|
|
- Long cellStartTime = examPackageDetail.getExamStartTime();
|
|
|
|
- Long cellEndTime = examPackageDetail.getExamEndTime();
|
|
|
|
- if (examStartTime == null || cellStartTime < examStartTime) {
|
|
|
|
- examStartTime = cellStartTime;
|
|
|
|
- }
|
|
|
|
- if (examEndTime == null || cellEndTime > examEndTime) {
|
|
|
|
- examEndTime = cellEndTime;
|
|
|
|
- }
|
|
|
|
- // 处理班级和数量
|
|
|
|
- Integer studentCellCount = examPackageDetail.getExamDetailCourseTotalSubjects();
|
|
|
|
- String clazzIdCell = examPackageDetail.getClazzIds();
|
|
|
|
- studentCount = studentCount + studentCellCount;
|
|
|
|
- clazzIds = clazzIds + clazzIdCell + separator;
|
|
|
|
- }
|
|
|
|
- clazzIds = clazzIds.substring(0, clazzIds.length() - separator.length());
|
|
|
|
- classNames = basicClazzService.findClazzNamesByClazzIds(clazzIds, separator);
|
|
|
|
- printCount = studentCount + " + " + backupCount;
|
|
|
|
-
|
|
|
|
- // 组装examRoom
|
|
|
|
- ExamRoomInfo examRoomInfo = new ExamRoomInfo();
|
|
|
|
- examRoomInfo.setClazzNames(classNames);
|
|
|
|
- examRoomInfo.setStudentCount(studentCount);
|
|
|
|
- examRoomInfo.setPrintCount(printCount);
|
|
|
|
- examRoomInfoList.add(examRoomInfo);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ List<PrintPlanStatusEnum> printPlanStatusEnumList = new ArrayList<>();
|
|
|
|
+ printPlanStatusEnumList.add(PrintPlanStatusEnum.PRINTING);
|
|
|
|
+ printPlanStatusEnumList.add(PrintPlanStatusEnum.PRINT_FINISH);
|
|
|
|
+ List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber,printPlanStatusEnumList);
|
|
|
|
+ ExamObjectDto examObjectDto = this.buildExamObjectDtoByPackageDatasource(examPackageDetailDatasource);
|
|
|
|
|
|
// 3.ApprovalInfo部分
|
|
// 3.ApprovalInfo部分
|
|
List<ApprovalInfo> approvalInfoList = new ArrayList<>();
|
|
List<ApprovalInfo> approvalInfoList = new ArrayList<>();
|
|
@@ -1786,12 +1737,12 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
basicInfo.setPaperName(paperName);
|
|
basicInfo.setPaperName(paperName);
|
|
basicInfo.setPaperNumber(paperNumber);
|
|
basicInfo.setPaperNumber(paperNumber);
|
|
basicInfo.setTeacherName(examTask.getTeacherName());
|
|
basicInfo.setTeacherName(examTask.getTeacherName());
|
|
- basicInfo.setExamStartTime(examStartTime);
|
|
|
|
- basicInfo.setExamEndTime(examEndTime);
|
|
|
|
|
|
+ basicInfo.setExamStartTime(examObjectDto.getExamStartTime());
|
|
|
|
+ basicInfo.setExamEndTime(examObjectDto.getExamEndTime());
|
|
|
|
|
|
|
|
|
|
examTaskApprovalFormDto.setBasicInfo(basicInfo);
|
|
examTaskApprovalFormDto.setBasicInfo(basicInfo);
|
|
- examTaskApprovalFormDto.setExamRoomInfoList(examRoomInfoList);
|
|
|
|
|
|
+ examTaskApprovalFormDto.setExamRoomInfoList(examObjectDto.getExamRoomInfoList());
|
|
examTaskApprovalFormDto.setApprovalInfoList(approvalInfoList);
|
|
examTaskApprovalFormDto.setApprovalInfoList(approvalInfoList);
|
|
|
|
|
|
return examTaskApprovalFormDto;
|
|
return examTaskApprovalFormDto;
|
|
@@ -1827,6 +1778,25 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
ConvertUtil.outputFile(response, inputStream, fileName + SystemConstant.PDF_PREFIX);
|
|
ConvertUtil.outputFile(response, inputStream, fileName + SystemConstant.PDF_PREFIX);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public ExamObjectDto findExamObjectDtoByPaperNumber(String paperNumber) {
|
|
|
|
+ Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
|
+ List<PrintPlanStatusEnum> printPlanStatusEnumList = new ArrayList<>();
|
|
|
|
+ printPlanStatusEnumList.add(PrintPlanStatusEnum.NEW);
|
|
|
|
+ printPlanStatusEnumList.add(PrintPlanStatusEnum.READY);
|
|
|
|
+ List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber,printPlanStatusEnumList);
|
|
|
|
+ ExamObjectDto examObjectDto = this.buildExamObjectDtoByPackageDatasource(examPackageDetailDatasource);
|
|
|
|
+
|
|
|
|
+ ExamTask examTask = examTaskService.getOne(new QueryWrapper<ExamTask>().lambda().eq(ExamTask::getPaperNumber,paperNumber).eq(ExamTask::getSchoolId,schoolId));
|
|
|
|
+ if (Objects.isNull(examTask)){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到命题任务");
|
|
|
|
+ }
|
|
|
|
+ examObjectDto.setPaperName(examTask.getPaperName());
|
|
|
|
+ examObjectDto.setPaperNumber(examTask.getPaperNumber());
|
|
|
|
+ return examObjectDto;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 简单校验提交参数
|
|
* 简单校验提交参数
|
|
*
|
|
*
|
|
@@ -1870,4 +1840,72 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private ExamObjectDto buildExamObjectDtoByPackageDatasource(List<ExamPackageDetail> examPackageDetailDatasource){
|
|
|
|
+ Long examStartTime = null;
|
|
|
|
+ Long examEndTime = null;
|
|
|
|
+ int printTotalCount = 0;
|
|
|
|
+ List<ExamRoomInfo> examRoomInfoList = new ArrayList<>();
|
|
|
|
+ if (examPackageDetailDatasource.size() > 0){
|
|
|
|
+ Set<Long> examDetailIdSet = examPackageDetailDatasource.stream().map(ExamPackageDetail::getExamDetailId).collect(Collectors.toSet());
|
|
|
|
+ for (Long examDetailId : examDetailIdSet) {
|
|
|
|
+ // 一个考场下
|
|
|
|
+ // 班级
|
|
|
|
+ String classNames = "";
|
|
|
|
+ int studentCount = 0;
|
|
|
|
+ String printCount = "";
|
|
|
|
+
|
|
|
|
+ List<ExamPackageDetail> examPackageDetailCell = examPackageDetailDatasource.stream()
|
|
|
|
+ .filter(e -> examDetailId.equals(e.getExamDetailId()))
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ List<BackupMethodEnum> backupMethodEnums = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupMethod).distinct().collect(Collectors.toList());
|
|
|
|
+ if (backupMethodEnums.size() != 1 && backupMethodEnums.get(0) != BackupMethodEnum.ROOM){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份方式必须按考场");
|
|
|
|
+ }
|
|
|
|
+ List<Integer> backupCountList = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupCount).distinct().collect(Collectors.toList());
|
|
|
|
+ if (backupCountList.size() != 1){
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份数量异常");
|
|
|
|
+ }
|
|
|
|
+ // 试卷该考场备份数量
|
|
|
|
+ Integer backupCount = backupCountList.get(0);
|
|
|
|
+ // 班级主键','隔开
|
|
|
|
+ String clazzIds = "";
|
|
|
|
+ final String separator = ",";
|
|
|
|
+ for (ExamPackageDetail examPackageDetail : examPackageDetailCell) {
|
|
|
|
+ // 处理考试开始结束时间
|
|
|
|
+ Long cellStartTime = examPackageDetail.getExamStartTime();
|
|
|
|
+ Long cellEndTime = examPackageDetail.getExamEndTime();
|
|
|
|
+ if (examStartTime == null || cellStartTime < examStartTime){
|
|
|
|
+ examStartTime = cellStartTime;
|
|
|
|
+ }
|
|
|
|
+ if (examEndTime == null || cellEndTime > examEndTime){
|
|
|
|
+ examEndTime = cellEndTime;
|
|
|
|
+ }
|
|
|
|
+ // 处理班级和数量
|
|
|
|
+ Integer studentCellCount = examPackageDetail.getExamDetailCourseTotalSubjects();
|
|
|
|
+ String clazzIdCell = examPackageDetail.getClazzIds();
|
|
|
|
+ studentCount = studentCount + studentCellCount;
|
|
|
|
+ clazzIds = clazzIds + clazzIdCell + separator;
|
|
|
|
+ }
|
|
|
|
+ clazzIds = clazzIds.substring(0,clazzIds.length() - separator.length());
|
|
|
|
+ classNames = basicClazzService.findClazzNamesByClazzIds(clazzIds,separator);
|
|
|
|
+ printCount = studentCount + " + " + backupCount;
|
|
|
|
+ printTotalCount = printTotalCount + studentCount + backupCount;
|
|
|
|
+
|
|
|
|
+ // 组装examRoom
|
|
|
|
+ ExamRoomInfo examRoomInfo = new ExamRoomInfo();
|
|
|
|
+ examRoomInfo.setClazzNames(classNames);
|
|
|
|
+ examRoomInfo.setStudentCount(studentCount);
|
|
|
|
+ examRoomInfo.setPrintCount(printCount);
|
|
|
|
+ examRoomInfoList.add(examRoomInfo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ExamObjectDto examObjectDto = new ExamObjectDto();
|
|
|
|
+ examObjectDto.setExamEndTime(examEndTime);
|
|
|
|
+ examObjectDto.setExamStartTime(examStartTime);
|
|
|
|
+ examObjectDto.setExamRoomInfoList(examRoomInfoList);
|
|
|
|
+ examObjectDto.setPrintTotalCount(printTotalCount);
|
|
|
|
+ return examObjectDto;
|
|
|
|
+ }
|
|
}
|
|
}
|