|
@@ -1,21 +1,19 @@
|
|
|
package cn.com.qmth.stmms.biz.utils;
|
|
|
|
|
|
-import java.text.ParseException;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
-
|
|
|
+import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
|
import com.google.common.collect.HashMultimap;
|
|
|
import com.google.common.collect.Multiset;
|
|
|
import com.google.common.collect.SetMultimap;
|
|
|
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
|
|
|
/**
|
|
|
* Redis zset替代方案,单JVM内部针对已领取未给分正评任务的管理工具
|
|
|
- *
|
|
|
+ *
|
|
|
* @author luoshi
|
|
|
- *
|
|
|
*/
|
|
|
public class FormalTaskUtil {
|
|
|
|
|
@@ -23,7 +21,7 @@ public class FormalTaskUtil {
|
|
|
|
|
|
/**
|
|
|
* 尝试领取某个任务
|
|
|
- *
|
|
|
+ *
|
|
|
* @param marker
|
|
|
* @param taskId
|
|
|
* @return
|
|
@@ -44,7 +42,7 @@ public class FormalTaskUtil {
|
|
|
|
|
|
/**
|
|
|
* 是否已领取某个任务
|
|
|
- *
|
|
|
+ *
|
|
|
* @param marker
|
|
|
* @param taskId
|
|
|
* @return
|
|
@@ -53,18 +51,23 @@ public class FormalTaskUtil {
|
|
|
String key = getKey(marker);
|
|
|
Set<TaskEntry> set = taskMap.get(key);
|
|
|
if (set != null) {
|
|
|
- for (TaskEntry entry : set) {
|
|
|
+ boolean success = false;
|
|
|
+ Set<TaskEntry> loopSet = new HashSet<>(set);
|
|
|
+ for (TaskEntry entry : loopSet) {
|
|
|
if (entry.getTaskId().equals(taskId) && entry.getMarkerId() == marker.getId()) {
|
|
|
- return true;
|
|
|
+ success = true;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
+ loopSet.clear();
|
|
|
+ return success;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除某个已完成的任务
|
|
|
- *
|
|
|
+ *
|
|
|
* @param marker
|
|
|
* @param taskId
|
|
|
*/
|
|
@@ -77,7 +80,7 @@ public class FormalTaskUtil {
|
|
|
|
|
|
/**
|
|
|
* 某个科目已领取未给分的任务总数
|
|
|
- *
|
|
|
+ *
|
|
|
* @param examId
|
|
|
* @param subjectCode
|
|
|
* @return
|
|
@@ -89,7 +92,7 @@ public class FormalTaskUtil {
|
|
|
|
|
|
/**
|
|
|
* 某个评卷员已领取未给分的任务总数
|
|
|
- *
|
|
|
+ *
|
|
|
* @param marker
|
|
|
* @return
|
|
|
*/
|
|
@@ -97,18 +100,20 @@ public class FormalTaskUtil {
|
|
|
Set<TaskEntry> set = taskMap.get(getKey(marker));
|
|
|
int count = 0;
|
|
|
if (set != null) {
|
|
|
- for (TaskEntry obj : set) {
|
|
|
+ Set<TaskEntry> loopSet = new HashSet<>(set);
|
|
|
+ for (TaskEntry obj : loopSet) {
|
|
|
if (obj.getMarkerId() == marker.getId()) {
|
|
|
count++;
|
|
|
}
|
|
|
}
|
|
|
+ loopSet.clear();
|
|
|
}
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 清除某个科目已领取未给分的任务
|
|
|
- *
|
|
|
+ *
|
|
|
* @param examId
|
|
|
* @param subjectCode
|
|
|
*/
|
|
@@ -120,7 +125,7 @@ public class FormalTaskUtil {
|
|
|
|
|
|
/**
|
|
|
* 清除某个评卷员已领取未给分的任务
|
|
|
- *
|
|
|
+ *
|
|
|
* @param marker
|
|
|
*/
|
|
|
public static void clear(Marker marker) {
|
|
@@ -138,7 +143,7 @@ public class FormalTaskUtil {
|
|
|
|
|
|
/**
|
|
|
* 获取当前已领取的任务快照
|
|
|
- *
|
|
|
+ *
|
|
|
* @param examId
|
|
|
* @param subjectCode
|
|
|
* @param groupNumber
|
|
@@ -186,7 +191,7 @@ public class FormalTaskUtil {
|
|
|
|
|
|
/**
|
|
|
* 获取当前时间戳
|
|
|
- *
|
|
|
+ *
|
|
|
* @return
|
|
|
* @throws ParseException
|
|
|
*/
|
|
@@ -196,7 +201,7 @@ public class FormalTaskUtil {
|
|
|
|
|
|
/**
|
|
|
* 时间戳相隔分钟
|
|
|
- *
|
|
|
+ *
|
|
|
* @return
|
|
|
* @throws ParseException
|
|
|
*/
|