Browse Source

修复轨迹显示

ting.yin 4 years ago
parent
commit
a907ff9c5a

+ 25 - 14
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/MarkTrackController.java

@@ -15,6 +15,7 @@ import cn.com.qmth.stmms.biz.mark.service.MarkTrackService;
 import cn.com.qmth.stmms.biz.utils.OriginTag;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -25,6 +26,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -64,20 +68,28 @@ public class MarkTrackController extends BaseExamController {
         view.addObject("fileServer", fileService.getFileServer());
         ExamStudent student = studentService.findById(studentId);
         if (student != null && student.isUpload()) {
-            List<String> sliceUrls = fileService
-                    .getSliceUris(student.getExamId(), student.getSecretNumber(), 1, student.getSliceCount());
+            List<String> sliceUrls = fileService.getSliceUris(student.getExamId(), student.getSecretNumber(), 1,
+                    student.getSliceCount());
             view.addObject("urls", StringUtils.join(sliceUrls, ","));
 
-            JSONArray result = new JSONArray();
+            // JSONArray result = new JSONArray();
             Map<MarkGroup, List<OriginTag>> maps = studentService.getSliceTags(student, false);
+            List<OriginTag> tags = new ArrayList<OriginTag>();
             for (Entry<MarkGroup, List<OriginTag>> entry : maps.entrySet()) {
-                MarkGroup group = entry.getKey();
-                JSONObject item = new JSONObject();
-                item.accumulate("config", group.getPictureConfigList());
-                item.accumulate("tags", entry.getValue());
-                result.add(item);
+                // MarkGroup group = entry.getKey();
+                // JSONObject item = new JSONObject();
+                // item.accumulate("config", group.getPictureConfigList());
+                // item.accumulate("tags", entry.getValue());
+                // result.add(item);
+                tags.addAll(entry.getValue());
+            }
+            ObjectMapper mapper = new ObjectMapper();
+            try {
+                view.addObject("tags", mapper.writeValueAsString(tags));
+            } catch (JsonProcessingException e) {
+                e.printStackTrace();
+                log.error("MarkTrackController-轨迹坐标获取出错", e);
             }
-            view.addObject("tags", result.toString());
         }
         return view;
     }
@@ -121,11 +133,10 @@ public class MarkTrackController extends BaseExamController {
     private HashMap<String, Object> set(MarkLibrary library, ExamStudent student) {
         HashMap<String, Object> groups = new HashMap<String, Object>();
         MarkGroup group = groupService.findOne(student.getExamId(), student.getSubjectCode(), library.getGroupNumber());
-        group.setQuestionList(questionService
-                .findByExamAndSubjectAndObjectiveAndGroupNumber(student.getExamId(), student.getSubjectCode(), false,
-                        group.getNumber()));
-        List<String> picUrls = fileService
-                .getSliceUris(student.getExamId(), student.getSecretNumber(), 1, student.getSliceCount());
+        group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(student.getExamId(),
+                student.getSubjectCode(), false, group.getNumber()));
+        List<String> picUrls = fileService.getSliceUris(student.getExamId(), student.getSecretNumber(), 1,
+                student.getSliceCount());
         List<MarkTrack> markTracks = markTrackService.findByLibraryId(library.getId());
         List<MarkSpecialTag> markSpecialTagList = markSpecialTagService.findByLibraryId(library.getId());
         groups.put("picUrls", picUrls);

+ 27 - 5
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/studentTrack.jsp

@@ -8,6 +8,7 @@
     <meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/>
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/jquery.min.js"></script>
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/jquery-ui.min.js "></script>
+    <script type="text/javascript" src="${ctxStatic}/utils/image-utils.js"></script>
 </head>
 <body>
 <canvas id="canvas"></canvas>
@@ -18,7 +19,28 @@
     var tags = JSON.parse('${tags}');
     var ctx;
     $(document).ready(function () {
-        var images = [];
+    	var canvas = $('#canvas')[0];
+        ctx = canvas.getContext('2d');
+    	new ImageLoader({
+            server: imageServer,
+            flush: true,
+            strict: false,
+            split: [0,1]
+        }).combine(urls, canvas, [], function (layout) {
+            //阅卷轨迹
+            if (tags != undefined && tags.length > 0) {
+                ctx.font = "60px Arial";
+                ctx.fillStyle = 'red';
+                for (var j = 0; j < tags.length; j++) {
+                	var tag = tags[j];
+                    ctx.fillText(
+                        		tag.content,
+                        		tag.offsetX,
+                        		tag.offsetY+layout[tag.offsetIndex-1].top);
+                }
+            }
+        })
+/*         var images = [];
         var count = 0;
         for (var i = 0; i < urls.length; i++) {
             var image = new Image();
@@ -32,9 +54,9 @@
                     render(images);
                 }
             }
-        }
+        } */
     });
-
+    /*
     function render(images) {
         var maxWidth = 0;
         var totalHeight = 0;
@@ -102,7 +124,7 @@
         }
     }
     
-    function renderGroup(group, images) {
+   function renderGroup(group, images) {
         var configs = group.config;
         var tags = group.tags;
         if (configs.length == 0 || tags.length == 0) {
@@ -151,6 +173,6 @@
                 }
             }
         }
-    }
+    } */
 </script>
 </html>