|
@@ -1,15 +1,15 @@
|
|
|
package cn.com.qmth.stmms.biz.mark.thread;
|
|
|
|
|
|
-import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
|
+import cn.com.qmth.stmms.biz.lock.LockService;
|
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
|
import cn.com.qmth.stmms.biz.utils.SpringContextHolder;
|
|
|
-import cn.com.qmth.stmms.common.utils.Callback;
|
|
|
+import cn.com.qmth.stmms.common.enums.LockType;
|
|
|
|
|
|
/**
|
|
|
* 评卷员计算评卷质量指标工作包装线程
|
|
@@ -23,23 +23,23 @@ public class MarkQualityThread implements Runnable {
|
|
|
|
|
|
private List<Marker> markers;
|
|
|
|
|
|
- private Callback callback;
|
|
|
+ private String lockKey;
|
|
|
|
|
|
- public MarkQualityThread(Marker marker, Callback callback) {
|
|
|
- this.markers = new LinkedList<>();
|
|
|
- this.markers.add(marker);
|
|
|
- this.callback = callback;
|
|
|
- }
|
|
|
-
|
|
|
- public MarkQualityThread(List<Marker> markers, Callback callback) {
|
|
|
+ public MarkQualityThread(List<Marker> markers, String lockKey) {
|
|
|
this.markers = markers;
|
|
|
- this.callback = callback;
|
|
|
+ this.lockKey = lockKey;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void run() {
|
|
|
+ LockService lockService = SpringContextHolder.getBean(LockService.class);
|
|
|
MarkService markService = SpringContextHolder.getBean(MarkService.class);
|
|
|
|
|
|
+ if (!lockService.trylock(LockType.BATCH_QUALITY, lockKey)) {
|
|
|
+ log.info("mark quality thread lock faile for key=" + lockKey);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (markers != null && markService != null) {
|
|
|
for (Marker marker : markers) {
|
|
|
try {
|
|
@@ -49,8 +49,6 @@ public class MarkQualityThread implements Runnable {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (callback != null) {
|
|
|
- callback.invoke();
|
|
|
- }
|
|
|
+ lockService.unlock(LockType.BATCH_QUALITY, lockKey);
|
|
|
}
|
|
|
}
|