|
@@ -25,6 +25,7 @@ import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.util.ExamTaskUtil;
|
|
import com.qmth.teachcloud.common.util.ExamTaskUtil;
|
|
import com.qmth.teachcloud.common.util.RedisUtil;
|
|
import com.qmth.teachcloud.common.util.RedisUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
|
+import com.qmth.teachcloud.mark.service.MarkService;
|
|
import com.qmth.teachcloud.mark.service.ScanPaperService;
|
|
import com.qmth.teachcloud.mark.service.ScanPaperService;
|
|
import org.activiti.engine.TaskService;
|
|
import org.activiti.engine.TaskService;
|
|
import org.activiti.engine.task.Task;
|
|
import org.activiti.engine.task.Task;
|
|
@@ -90,6 +91,8 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
|
|
private ScanPaperService scanPaperService;
|
|
private ScanPaperService scanPaperService;
|
|
@Resource
|
|
@Resource
|
|
private BasicRoleDataPermissionService basicRoleDataPermissionService;
|
|
private BasicRoleDataPermissionService basicRoleDataPermissionService;
|
|
|
|
+ @Resource
|
|
|
|
+ private MarkService markService;
|
|
|
|
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
@@ -472,7 +475,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- // 已打印任务,必须先创作废,未打印任务,必须先撤回。才允许打回
|
|
|
|
|
|
+ // 已打印任务,必须先作废,未打印任务,必须先撤回。才允许打回
|
|
long count = examDetailList.stream().filter(m -> (ExamDetailStatusEnum.FINISH.equals(m.getStatus()) && m.getNormal()) || ExamDetailStatusEnum.WAITING.equals(m.getStatus())).count();
|
|
long count = examDetailList.stream().filter(m -> (ExamDetailStatusEnum.FINISH.equals(m.getStatus()) && m.getNormal()) || ExamDetailStatusEnum.WAITING.equals(m.getStatus())).count();
|
|
if (count > 0) {
|
|
if (count > 0) {
|
|
throw ExceptionResultEnum.ERROR.exception("印刷任务有已打印且未作废或者未撤回数据,无法打回");
|
|
throw ExceptionResultEnum.ERROR.exception("印刷任务有已打印且未作废或者未撤回数据,无法打回");
|
|
@@ -561,6 +564,10 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
|
|
updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.SUBMIT).eq(ExamTask::getId, examTaskDetail.getExamTaskId());
|
|
updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.SUBMIT).eq(ExamTask::getId, examTaskDetail.getExamTaskId());
|
|
examTaskService.update(updateWrapper);
|
|
examTaskService.update(updateWrapper);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 删除阅卷数据
|
|
|
|
+ markService.deleteInitMarkData(examTask.getExamId(), examTask.getPaperNumber());
|
|
|
|
+
|
|
mapVar.put(SystemConstant.SUCCESS, true);
|
|
mapVar.put(SystemConstant.SUCCESS, true);
|
|
return mapVar;
|
|
return mapVar;
|
|
}
|
|
}
|
|
@@ -640,6 +647,39 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
|
|
public boolean cancel(Long id, String cancelRemark) {
|
|
public boolean cancel(Long id, String cancelRemark) {
|
|
ExamTask examTask = examTaskService.getById(id);
|
|
ExamTask examTask = examTaskService.getById(id);
|
|
String paperNumber = examTask.getPaperNumber();
|
|
String paperNumber = examTask.getPaperNumber();
|
|
|
|
+
|
|
|
|
+ List<ExamDetail> examDetailList = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(examDetailList)) {
|
|
|
|
+ ExamTaskDetail taskDetail = this.getByExamTaskId(id);
|
|
|
|
+ if (StringUtils.isNotBlank(taskDetail.getExposedPaperType())) {
|
|
|
|
+ List<Long> examDetailIds = examDetailList.stream().map(ExamDetail::getId).collect(Collectors.toList());
|
|
|
|
+ QueryWrapper<ExamDetailCourse> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ queryWrapper.lambda().in(ExamDetailCourse::getExamDetailId, examDetailIds);
|
|
|
|
+ List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(queryWrapper);
|
|
|
|
+ for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
|
|
|
|
+ // 考场内任一课程有扫描数据,不允许打回
|
|
|
|
+ boolean isScanPaper = scanPaperService.isScanByExamIdAndPaperNumber(examTask.getExamId(), examDetailCourse.getPaperNumber());
|
|
|
|
+ if (isScanPaper) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("有课程已开始扫描,无法打回");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 已打印任务,必须先作废,未打印任务,必须先撤回。才允许打回
|
|
|
|
+ long count = examDetailList.stream().filter(m -> (ExamDetailStatusEnum.FINISH.equals(m.getStatus()) && m.getNormal()) || ExamDetailStatusEnum.WAITING.equals(m.getStatus())).count();
|
|
|
|
+ if (count > 0) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("印刷任务有已打印且未作废或者未撤回数据,无法打回");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ StringJoiner stringJoiner = new StringJoiner("_");
|
|
|
|
+ stringJoiner.add(String.valueOf(examTask.getExamId())).add(examTask.getPaperNumber()).add(String.valueOf(examDetailList.get(0).getExamStartTime())).add(String.valueOf(examDetailList.get(0).getExamEndTime()));
|
|
|
|
+ String key = stringJoiner.toString();
|
|
|
|
+ CreatePdfCacheUtil.deletePaperType(key);
|
|
|
|
+ for (ExamDetail examDetail : examDetailList) {
|
|
|
|
+ examDetailService.resetExamDetail(examDetail.getId(), true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
String paperNumberCancel = paperNumber + "-作废";
|
|
String paperNumberCancel = paperNumber + "-作废";
|
|
examTask.setPaperNumber(paperNumberCancel);
|
|
examTask.setPaperNumber(paperNumberCancel);
|
|
examTask.setStatus(ExamStatusEnum.CANCEL);
|
|
examTask.setStatus(ExamStatusEnum.CANCEL);
|
|
@@ -688,6 +728,9 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
|
|
.eq(TBSyncTask::getPaperNumber, paperNumber);
|
|
.eq(TBSyncTask::getPaperNumber, paperNumber);
|
|
tbSyncTaskService.update(tbSyncTaskUpdateWrapper);
|
|
tbSyncTaskService.update(tbSyncTaskUpdateWrapper);
|
|
|
|
|
|
|
|
+ // 删除阅卷数据
|
|
|
|
+ markService.deleteInitMarkData(examTask.getExamId(), examTask.getPaperNumber());
|
|
|
|
+
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|