|
@@ -1158,7 +1158,7 @@ public class PrintCommonServiceImpl implements PrintCommonService {
|
|
|
String prefix = convertUtil.randomNumberPrefix(examShortCode, courseShortCode, map.get(String.valueOf(basicClazzId)), basicCardRule == null ? null : basicCardRule.getExamNumberDigit());
|
|
|
StringJoiner stringJoiner = new StringJoiner("-");
|
|
|
stringJoiner.add("ticketNumber").add(schoolId.toString()).add(semesterId);
|
|
|
- SerialNumberParams ticketNumberParams = new SerialNumberParams(SystemConstant.NUMBER_CACHE + stringJoiner , prefix, StringUtils.isBlank(prefix) ? 8 : basicCardRule.getExamNumberDigit() - prefix.length());
|
|
|
+ SerialNumberParams ticketNumberParams = new SerialNumberParams(SystemConstant.NUMBER_CACHE + stringJoiner, prefix, StringUtils.isBlank(prefix) ? 8 : basicCardRule.getExamNumberDigit() - prefix.length());
|
|
|
examStudent.setTicketNumber(createTicketNumber(ticketNumberParams));
|
|
|
examStudent.setSiteNumber(String.valueOf(atomicInteger.getAndIncrement()));
|
|
|
examStudent.setExtendFields(extendFields);
|
|
@@ -1237,34 +1237,42 @@ public class PrintCommonServiceImpl implements PrintCommonService {
|
|
|
|
|
|
@Override
|
|
|
public String createCourseSequence(Long schoolId, String courseCode) {
|
|
|
- String sequence = commonCacheService.addExamTaskSequence(schoolId, courseCode);
|
|
|
- if ("0".equals(sequence)) {
|
|
|
- QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getCourseCode, courseCode);
|
|
|
- List<ExamTask> examTasks = examTaskService.list(queryWrapper);
|
|
|
- if (examTasks != null && examTasks.size() > 0) {
|
|
|
- String maxSequence = examTasks.stream().max(Comparator.comparing(ExamTask::getSequence)).get().getSequence();
|
|
|
- if (StringUtils.isNotBlank(maxSequence)) {
|
|
|
- sequence = maxSequence;
|
|
|
+ boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_COURSE_CODE_SEQUENCE_PREFIX + schoolId + "-" + courseCode, SystemConstant.REDIS_LOCK_PAPER_NUMBER_TIME_OUT);
|
|
|
+ if (!lock) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("正在生成课程编号中,请稍候再试!");
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ String sequence = commonCacheService.addExamTaskSequence(schoolId, courseCode);
|
|
|
+ if ("0".equals(sequence)) {
|
|
|
+ QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getCourseCode, courseCode);
|
|
|
+ List<ExamTask> examTasks = examTaskService.list(queryWrapper);
|
|
|
+ if (examTasks != null && examTasks.size() > 0) {
|
|
|
+ String maxSequence = examTasks.stream().max(Comparator.comparing(ExamTask::getSequence)).get().getSequence();
|
|
|
+ if (StringUtils.isNotBlank(maxSequence)) {
|
|
|
+ sequence = maxSequence;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ return commonCacheService.updateExamTaskSequence(schoolId, courseCode, sequence);
|
|
|
+ } finally {
|
|
|
+ redisUtil.releaseLock(SystemConstant.REDIS_LOCK_COURSE_CODE_SEQUENCE_PREFIX + schoolId + "-" + courseCode);
|
|
|
}
|
|
|
- return commonCacheService.updateExamTaskSequence(schoolId, courseCode, sequence);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void updateGradeBatchStatus(Long schoolId,Long examId, String paperNumber, String paperType) {
|
|
|
+ public void updateGradeBatchStatus(Long schoolId, Long examId, String paperNumber, String paperType) {
|
|
|
QueryWrapper<GradeBatchPaper> gradeBatchPaperQueryWrapper = new QueryWrapper<>();
|
|
|
gradeBatchPaperQueryWrapper.lambda()
|
|
|
.eq(GradeBatchPaper::getSchoolId, schoolId)
|
|
|
- .eq(GradeBatchPaper::getExamId,examId)
|
|
|
+ .eq(GradeBatchPaper::getExamId, examId)
|
|
|
.eq(GradeBatchPaper::getPaperNumber, paperNumber)
|
|
|
.eq(GradeBatchPaper::getPaperType, paperType);
|
|
|
List<GradeBatchPaper> gradeBatchPaperList = gradeBatchPaperService.list(gradeBatchPaperQueryWrapper);
|
|
|
if (!gradeBatchPaperList.isEmpty()) {
|
|
|
for (GradeBatchPaper gradeBatchPaper : gradeBatchPaperList) {
|
|
|
QueryWrapper<GradeBatchPaper> queryWrapperList = new QueryWrapper<>();
|
|
|
- queryWrapperList.lambda().eq(GradeBatchPaper::getBatchId, gradeBatchPaper.getBatchId()).eq(GradeBatchPaper::getExamId,examId);
|
|
|
+ queryWrapperList.lambda().eq(GradeBatchPaper::getBatchId, gradeBatchPaper.getBatchId()).eq(GradeBatchPaper::getExamId, examId);
|
|
|
List<GradeBatchPaper> gradeBatchPaperAll = gradeBatchPaperService.list(queryWrapperList);
|
|
|
if (!gradeBatchPaperAll.isEmpty()) {
|
|
|
long count = gradeBatchPaperAll.stream().filter(m -> !GradeAnalyzePaperStatusEnum.READY_TO_CALCULATE.equals(m.getStatus())).count();
|