|
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
|
+import com.qmth.boot.core.concurrent.service.ConcurrentService;
|
|
import com.qmth.distributed.print.business.entity.ExamDetail;
|
|
import com.qmth.distributed.print.business.entity.ExamDetail;
|
|
import com.qmth.distributed.print.business.entity.ExamTaskWhole;
|
|
import com.qmth.distributed.print.business.entity.ExamTaskWhole;
|
|
import com.qmth.distributed.print.business.enums.ExamTaskWholeStatusEnum;
|
|
import com.qmth.distributed.print.business.enums.ExamTaskWholeStatusEnum;
|
|
@@ -23,6 +24,7 @@ import com.qmth.teachcloud.common.enums.UploadFileEnum;
|
|
import com.qmth.teachcloud.common.service.BasicAttachmentService;
|
|
import com.qmth.teachcloud.common.service.BasicAttachmentService;
|
|
import com.qmth.teachcloud.common.service.FileUploadService;
|
|
import com.qmth.teachcloud.common.service.FileUploadService;
|
|
import com.qmth.teachcloud.common.util.FileUtil;
|
|
import com.qmth.teachcloud.common.util.FileUtil;
|
|
|
|
+import com.qmth.teachcloud.mark.enums.LockType;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -49,11 +51,14 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
|
|
@Resource
|
|
@Resource
|
|
private FileUploadService fileUploadService;
|
|
private FileUploadService fileUploadService;
|
|
@Resource
|
|
@Resource
|
|
|
|
+ private ConcurrentService concurrentService;
|
|
|
|
+ @Resource
|
|
private AsyncCreateWholePdfTemplateService asyncCreateWholePdfTemplateService;
|
|
private AsyncCreateWholePdfTemplateService asyncCreateWholePdfTemplateService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void checkAndCreateTask(Long examId, Long courseId, String paperNumber) {
|
|
public void checkAndCreateTask(Long examId, Long courseId, String paperNumber) {
|
|
String key = examId + valueOf(courseId) + paperNumber;
|
|
String key = examId + valueOf(courseId) + paperNumber;
|
|
|
|
+ concurrentService.getReadWriteLock(LockType.EXAM_TASK_WHOLE + "-" + key).writeLock().lock();
|
|
try {
|
|
try {
|
|
if (examTaskWholeList.contains(key)) {
|
|
if (examTaskWholeList.contains(key)) {
|
|
return;
|
|
return;
|
|
@@ -90,6 +95,7 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
|
|
throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|
|
throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|
|
} finally {
|
|
} finally {
|
|
examTaskWholeList.remove(key);
|
|
examTaskWholeList.remove(key);
|
|
|
|
+ concurrentService.getReadWriteLock(LockType.EXAM_TASK_WHOLE + "-" + key).writeLock().lock();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|