ting.yin 5 роки тому
батько
коміт
29f05d03bb

+ 33 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/InspectedController.java

@@ -3,8 +3,10 @@ package cn.com.qmth.stmms.admin.exam;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -40,8 +42,10 @@ import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
 import cn.com.qmth.stmms.biz.mark.service.MarkSpecialTagService;
 import cn.com.qmth.stmms.biz.mark.service.MarkTrackService;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
+import cn.com.qmth.stmms.common.auth.annotation.RoleRequire;
 import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
+import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.utils.PictureUrlBuilder;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 
@@ -87,6 +91,9 @@ public class InspectedController extends BaseExamController {
             @RequestParam Integer groupNumber) {
         int examId = getSessionExamId(request);
         if (examId > 0) {
+            WebUser wu = RequestUtils.getWebUser(request);
+            releaseByUser(wu.getUser().getId());
+
             ModelAndView view = new ModelAndView("modules/exam/inspected");
             List<Integer> ids = new ArrayList<Integer>();
             MarkLibrarySearchQuery query = new MarkLibrarySearchQuery();
@@ -176,6 +183,19 @@ public class InspectedController extends BaseExamController {
         }
     }
 
+    @RequestMapping("/clear")
+    @ResponseBody
+    @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER })
+    public Object clear(HttpServletRequest request, @RequestParam(required = false) Integer libraryId) {
+        WebUser wu = RequestUtils.getWebUser(request);
+        if (libraryId != null) {
+            releaseTask(libraryId);
+        } else {
+            releaseByUser(wu.getUser().getId());
+        }
+        return true;
+    }
+
     private boolean setCurrent(Integer taskId, Integer userId) {
         Integer value = currentTaskMap.get(taskId);
         if (value == null) {
@@ -198,4 +218,17 @@ public class InspectedController extends BaseExamController {
             currentTaskMap.remove(taskId);
         }
     }
+
+    private void releaseByUser(Integer userId) {
+        Set<Integer> taskIds = new HashSet<>();
+        taskIds.addAll(currentTaskMap.keySet());
+        synchronized (currentTaskMap) {
+            for (Integer taskId : taskIds) {
+                Integer value = currentTaskMap.get(taskId);
+                if (value != null && value.equals(userId)) {
+                    currentTaskMap.remove(taskId);
+                }
+            }
+        }
+    }
 }

+ 11 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/inspected.jsp

@@ -115,6 +115,15 @@ $(document).ready(function() {
         return;
     }
     $(".tipsbox").css("display","none");
+    
+    window.onbeforeunload = function (){
+    	$.post('${ctx}/admin/exam/inspected/clear', {
+        	libraryId: student.id
+        }, function(result){
+            
+        });
+    }
+    
     process(1);
 });
 
@@ -137,7 +146,8 @@ function process(index){
         	student = result;
         	render();
     	}else{
-    		window.location.reload();
+    		//$('#progress').html(ids.length-current);
+            process(current+1);
     	}
     }).error(function() {
         alert('获取考生信息出错');