Selaa lähdekoodia

线上版本-采集日志记录bug-20201019

xiaof 4 vuotta sitten
vanhempi
commit
9d4b9a6228

+ 12 - 4
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/ImageApi.java

@@ -18,6 +18,7 @@ import javax.annotation.Resource;
 import java.util.HashSet;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
 
 /**
  * Created by zhengmin on 2017/2/24.
@@ -47,16 +48,23 @@ public class ImageApi {
     @Resource
     ImageServerConfig imageServerConfig;
 
-    private ExecutorService executor = Executors.newFixedThreadPool(10);
+    private ExecutorService executor = Executors.newFixedThreadPool(1);
 
     private HashSet<String> papers = new HashSet<String>();
 
+    LinkedBlockingQueue<RotateTask> queue = new LinkedBlockingQueue<>();
+
     @RequestMapping(value = "{paperId}/rotate", method = RequestMethod.GET)
     public ResponseEntity rotate(@PathVariable Long paperId, @RequestParam int degree) {
         Paper paper = paperRepo.findOne(paperId);
-        if (!papers.contains(paper.getExamNumber())) {
-            executor.submit(new RotateTask(paper, degree, paperRepo, systemConfig, papers, imageConfig, studentRepo, ossUtil, aliYunOssConfig, imageServerConfig));
-            papers.add(paper.getExamNumber());
+//        if (!papers.contains(paper.getExamNumber())) {
+//            executor.submit(new RotateTask(paper, degree, paperRepo, systemConfig, papers, imageConfig, studentRepo, ossUtil, aliYunOssConfig, imageServerConfig));
+//            papers.add(paper.getExamNumber());
+//        }
+        RotateTask rotateTask = new RotateTask(paper, degree, paperRepo, systemConfig, papers, imageConfig, studentRepo, ossUtil, aliYunOssConfig, imageServerConfig);
+        queue.offer(rotateTask);
+        while (queue.size() > 0) {
+            executor.submit(queue.poll());
         }
         return new ResponseEntity(HttpStatus.OK);
     }

+ 1 - 1
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/util/RotateTask.java

@@ -56,7 +56,7 @@ public class RotateTask implements Runnable {
             String imagePath = null;
             String imageNew = null;
             String sliceMD5 = null;
-            synchronized (paper.getId()) {
+            synchronized (this) {
                 LOGGER.info("准备生成缩略和裁切旋转图:{}", start);
                 if (ParamCache.paramMap.get(paper.getWorkId()).getImageEncrypt() == 1) {
                     try {

+ 5 - 5
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/controller/MarkLogController.java

@@ -194,11 +194,11 @@ public class MarkLogController {
         Integer subjectId = Integer.valueOf(request.getParameter("subjectId"));
         //准考证号
         String examNumber = request.getParameter("examNumber");
+        Subject subject = Subject.values()[subjectId - 1];
         //试卷信息
-        List<Paper> paperList = paperRepo.findByWorkIdAndExamNumber(workId, examNumber);
+        Paper paper = paperRepo.findByWorkIdAndSubjectAndExamNumber(workId, subject, examNumber);
 
         Integer operType = MarkLogOperType.COLLECT.getId();
-        Subject subject = Subject.values()[subjectId - 1];
 
         Work work = workRepo.findOne(workId);
 
@@ -212,15 +212,15 @@ public class MarkLogController {
         markLog.setOperType(operType);
         markLog.setWorkId(workId);
         markLog.setWorkName(work.getName());
-        if (paperList != null && paperList.size() > 0) {
-            Paper paper = paperList.get(0);
+        if (paper != null ) {
             markLog.setPaperId(paper.getId());
         }
+
         markLog.setStage(MarkStage.INIT);
         //识别方式
         String manual = request.getParameter("manual");
         //增加考生不存在备注
-        markLog.setRemark(paperList == null || paperList.size() == 0 ? "考生不存在" : "0".equals(manual) ? "正常扫描" : "1".equals(manual) ? "手工绑定" : null);
+        markLog.setRemark(paper == null ? "考生不存在" : "0".equals(manual) ? "正常扫描" : "1".equals(manual) ? "手工绑定" : null);
         //操作时间
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String time = request.getParameter("time");