|
@@ -1476,17 +1476,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
}
|
|
}
|
|
|
|
|
|
if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
|
|
if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
|
|
- QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
|
|
|
|
- taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId)
|
|
|
|
- .eq(ExamTask::getExamId, examId)
|
|
|
|
- .eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
|
|
|
|
- if (Objects.nonNull(examTask.getId())) {
|
|
|
|
- taskQueryWrapper.lambda().ne(ExamTask::getId, examTask.getId());
|
|
|
|
- }
|
|
|
|
- ExamTask task = this.getOne(taskQueryWrapper);
|
|
|
|
- if (task != null) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]在当前考试下已存在"));
|
|
|
|
- }
|
|
|
|
|
|
+ validPaperNumberExists(schoolId, examTask);
|
|
} else {
|
|
} else {
|
|
// 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
|
|
// 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
|
|
String paperNumber = printCommonService.createPaperNumber(schoolId, examId);
|
|
String paperNumber = printCommonService.createPaperNumber(schoolId, examId);
|
|
@@ -1574,6 +1564,32 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
return examTask;
|
|
return examTask;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 校验输入的试卷编号是否存在
|
|
|
|
+ *
|
|
|
|
+ * @param schoolId
|
|
|
|
+ * @param examTask
|
|
|
|
+ */
|
|
|
|
+ public void validPaperNumberExists(Long schoolId, ExamTask examTask) {
|
|
|
|
+ boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_PAPER_NUMBER_PREFIX + schoolId + examTask.getPaperNumber(), SystemConstant.REDIS_LOCK_PAPER_NUMBER_TIME_OUT);
|
|
|
|
+ if (!lock) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("正在校验试卷编号中,请稍候再试!");
|
|
|
|
+ }
|
|
|
|
+ try {
|
|
|
|
+ QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
|
|
|
|
+ if (Objects.nonNull(examTask.getId())) {
|
|
|
|
+ taskQueryWrapper.lambda().ne(ExamTask::getId, examTask.getId());
|
|
|
|
+ }
|
|
|
|
+ ExamTask task = this.getOne(taskQueryWrapper);
|
|
|
|
+ if (task != null) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
|
|
|
|
+ }
|
|
|
|
+ } finally {
|
|
|
|
+ redisUtil.releaseLock(SystemConstant.REDIS_LOCK_PAPER_NUMBER_PREFIX + schoolId + examTask.getPaperNumber());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public String findCardTitle(Long cardRuleId) {
|
|
public String findCardTitle(Long cardRuleId) {
|
|
String title = "通用题卡";
|
|
String title = "通用题卡";
|
|
@@ -1619,17 +1635,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
|
|
}
|
|
}
|
|
|
|
|
|
if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
|
|
if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
|
|
- QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
|
|
|
|
- taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId)
|
|
|
|
- .eq(ExamTask::getExamId, examTask.getExamId())
|
|
|
|
- .eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
|
|
|
|
- if (Objects.nonNull(examTask.getId())) {
|
|
|
|
- taskQueryWrapper.lambda().ne(ExamTask::getId, examTask.getId());
|
|
|
|
- }
|
|
|
|
- ExamTask task = this.getOne(taskQueryWrapper);
|
|
|
|
- if (task != null) {
|
|
|
|
- throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]在当前考试下已存在"));
|
|
|
|
- }
|
|
|
|
|
|
+ validPaperNumberExists(schoolId, examTask);
|
|
} else {
|
|
} else {
|
|
// 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
|
|
// 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
|
|
String paperNumber = printCommonService.createPaperNumber(schoolId, examTask.getExamId());
|
|
String paperNumber = printCommonService.createPaperNumber(schoolId, examTask.getExamId());
|