|
@@ -71,11 +71,54 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public boolean enable(ExamTaskDetail examTaskDetail) {
|
|
|
- // 正在生成pdf不能禁用
|
|
|
-
|
|
|
// 禁用,解决试卷关联关系,并且解除生成pdf绑定
|
|
|
if (!examTaskDetail.getEnable()) {
|
|
|
+ // 正在生成pdf不能禁用
|
|
|
+ ExamTask examTask = examTaskService.getById(examTaskDetail.getId());
|
|
|
+ List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber());
|
|
|
+ if (!examDetails.isEmpty()) {
|
|
|
+ Map<Long, List<Long>> map = examDetails.stream().collect(Collectors.groupingBy(ExamDetail::getPrintPlanId, Collectors.mapping(ExamDetail::getId, Collectors.toList())));
|
|
|
+ for (Map.Entry<Long, List<Long>> listEntry : map.entrySet()) {
|
|
|
+ boolean b = tbTaskService.countByPrintPlanIdAndEntityId(examTask.getSchoolId(), listEntry.getKey(), listEntry.getValue());
|
|
|
+ if (!b) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("有关联该任务的考场正在生成打印pdf,不能禁用卷库");
|
|
|
+ }
|
|
|
|
|
|
+ // 解除所有考场该任务绑定关系
|
|
|
+ // 更新exam_detail
|
|
|
+ List<Long> examDetailIds = listEntry.getValue();
|
|
|
+ UpdateWrapper<ExamDetail> examDetailUpdateWrapper = new UpdateWrapper<>();
|
|
|
+ examDetailUpdateWrapper.lambda()
|
|
|
+ .set(ExamDetail::getStatus, ExamDetailStatusEnum.NEW)
|
|
|
+ .set(ExamDetail::getAttachmentId, null)
|
|
|
+ .set(ExamDetail::getAttachmentPath, null)
|
|
|
+ .set(ExamDetail::getPagesA3, null)
|
|
|
+ .set(ExamDetail::getPagesA4,null)
|
|
|
+ .in(ExamDetail::getId, examDetailIds);
|
|
|
+ examDetailService.update(examDetailUpdateWrapper);
|
|
|
+ // 更新绑定关系
|
|
|
+ List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByPrintPlanIdAndCourseCodeAndPaperNumber(examTask.getSchoolId(), listEntry.getKey(), examTask.getCourseCode(), examTask.getPaperNumber());
|
|
|
+ List<Long> examDetailCourseIds = examDetailCourses.stream().map(m->m.getId()).collect(Collectors.toList());
|
|
|
+ UpdateWrapper<ExamDetailCourse> examDetailCourseUpdateWrapper = new UpdateWrapper<>();
|
|
|
+ examDetailCourseUpdateWrapper.lambda()
|
|
|
+ .set(ExamDetailCourse::getPaperType, null)
|
|
|
+ .set(ExamDetailCourse::getPaperPagesA3, null)
|
|
|
+ .set(ExamDetailCourse::getCardPagesA3,null)
|
|
|
+ .in(ExamDetailCourse::getId, examDetailCourseIds);
|
|
|
+ examDetailCourseService.update(examDetailCourseUpdateWrapper);
|
|
|
+
|
|
|
+ // 全部任务都取消,更新计划状态
|
|
|
+ //所有考场都撤回,印刷任务状态改为就绪
|
|
|
+ QueryWrapper<ExamDetail> examDetailQueryWrapper = new QueryWrapper<>();
|
|
|
+ examDetailQueryWrapper.lambda().eq(ExamDetail::getPrintPlanId, listEntry.getKey()).notIn(ExamDetail::getStatus, ExamDetailStatusEnum.NEW, ExamDetailStatusEnum.READY);
|
|
|
+ List<ExamDetail> examDetailList = examDetailService.list(examDetailQueryWrapper);
|
|
|
+ if (examDetailList.isEmpty()) {
|
|
|
+ UpdateWrapper<ExamPrintPlan> printPlanUpdateWrapper = new UpdateWrapper<>();
|
|
|
+ printPlanUpdateWrapper.lambda().set(ExamPrintPlan::getStatus, PrintPlanStatusEnum.READY).eq(ExamPrintPlan::getId, listEntry.getKey());
|
|
|
+ examPrintPlanService.update(printPlanUpdateWrapper);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
UpdateWrapper<ExamTaskDetail> updateWrapper = new UpdateWrapper<>();
|
|
|
updateWrapper.lambda().set(ExamTaskDetail::getEnable, examTaskDetail.getEnable()).eq(ExamTaskDetail::getExamTaskId, examTaskDetail.getId());
|
|
@@ -114,12 +157,16 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
|
|
|
examStudentService.updatePaperType(examDetailCourses, paperParam.getRelatePaperType());
|
|
|
|
|
|
// 重新生成pdf
|
|
|
- List<Long> examDetailCourseIds = examDetailCourses.stream().map(m -> m.getId()).collect(Collectors.toList());
|
|
|
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
- Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, paperParam.getPrintPlanId(), sysUser, null);
|
|
|
- map.computeIfAbsent("examDetailCourseIds", v -> examDetailCourseIds);
|
|
|
- map.computeIfAbsent("paperType", v -> paperParam.getRelatePaperType());
|
|
|
- asyncCreatePdfTempleteService.createPdf(map, null);
|
|
|
+// List<Long> examDetailCourseIds = examDetailCourses.stream().map(m -> m.getId()).collect(Collectors.toList());
|
|
|
+ for (ExamDetailCourse examDetailCours : examDetailCourses) {
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
+ Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, paperParam.getPrintPlanId(), sysUser, null);
|
|
|
+ map.computeIfAbsent("examDetailId", v -> examDetailCours.getExamDetailId());
|
|
|
+ map.computeIfAbsent("examDetailCourseIds", v -> examDetailCours.getId());
|
|
|
+ map.computeIfAbsent("paperType", v -> paperParam.getRelatePaperType());
|
|
|
+ asyncCreatePdfTempleteService.createPdf(map, null);
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|