ting.yin 4 년 전
부모
커밋
ba30c910ec

+ 32 - 2
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/utils/TaskLock.java

@@ -1,5 +1,8 @@
 package cn.com.qmth.stmms.biz.utils;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 链表模式实现的任务互斥锁工具
  */
@@ -96,7 +99,7 @@ public class TaskLock {
         long current = System.currentTimeMillis();
         LockNode node = head.next;
         while (node != null) {
-            if ((current - node.time) > expireTime) {
+            if ((current - node.time) > expireTime * 1000 * 60) {
                 node.remove();
                 count--;
             }
@@ -144,7 +147,17 @@ public class TaskLock {
         return count;
     }
 
-    private static class LockNode {
+    public List<LockNode> list() {
+        List<LockNode> list = new ArrayList<TaskLock.LockNode>();
+        LockNode node = head.next;
+        while (node != null) {
+            list.add(node);
+            node = node.next;
+        }
+        return list;
+    }
+
+    public static class LockNode {
 
         private LockNode previous;
 
@@ -190,6 +203,23 @@ public class TaskLock {
             this.next = node;
             node.previous = this;
         }
+
+        public Object getId() {
+            return id;
+        }
+
+        public int getNumber() {
+            return number;
+        }
+
+        public Object getOwner() {
+            return owner;
+        }
+
+        public long getTime() {
+            return time;
+        }
+
     }
 
 }

+ 14 - 14
stmms-web/src/main/java/cn/com/qmth/stmms/monitor/TaskMonitorController.java

@@ -1,23 +1,22 @@
 package cn.com.qmth.stmms.monitor;
 
 import java.util.Date;
-import java.util.Set;
+import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.springframework.beans.factory.annotation.Autowired;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import cn.com.qmth.stmms.biz.utils.FormalTaskUtil;
-import cn.com.qmth.stmms.biz.utils.TaskEntry;
 import cn.com.qmth.stmms.biz.utils.TaskLock;
+import cn.com.qmth.stmms.biz.utils.TaskLock.LockNode;
 import cn.com.qmth.stmms.biz.utils.TaskLockUtil;
 import cn.com.qmth.stmms.common.utils.DateUtils;
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
 
 @Controller("taskMonitor")
 @RequestMapping("/monitor/task")
@@ -29,14 +28,15 @@ public class TaskMonitorController {
             @RequestParam Integer groupNumber) {
         TaskLock taskLock = TaskLockUtil.getFormalTask(examId + "_" + subjectCode + "_" + groupNumber);
         JSONArray array = new JSONArray();
-        // for (TaskEntry entry : set) {
-        // JSONObject obj = new JSONObject();
-        // obj.accumulate("taskId", entry.getTaskId());
-        // obj.accumulate("markerId", entry.getMarkerId());
-        // obj.accumulate("time", DateUtils.formatDateTime(new
-        // Date(entry.getTimestamp())));
-        // array.add(obj);
-        // }
+        List<LockNode> list = taskLock.list();
+        for (LockNode node : list) {
+            JSONObject obj = new JSONObject();
+            obj.accumulate("taskId", node.getId());
+            obj.accumulate("number", node.getNumber());
+            obj.accumulate("markerId", node.getOwner());
+            obj.accumulate("time", DateUtils.formatDateTime(new Date(node.getTime())));
+            array.add(obj);
+        }
         return array;
     }