xiaofei 1 gadu atpakaļ
vecāks
revīzija
4d6af1a49d

+ 1 - 2
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -715,7 +715,6 @@
                               ed.exam_id = mp.exam_id
                             AND edc.paper_number = mp.paper_number
                             AND mp.status = #{markStatus})
-        ORDER BY ed.id
-        GROUP BY ed.school_id, ed.exam_id, edc.course_code, edc.course_name, edc.paper_number, edc.course_paper_id, edc.paper_type, ed.create_id
+        GROUP BY ed.school_id , ed.exam_id , edc.course_code , edc.course_name , edc.paper_number , edc.course_paper_id , edcpt.paper_type , ed.create_id
     </select>
 </mapper>

+ 1 - 1
distributed-print/install/mysql/upgrade/3.3.0.sql

@@ -105,7 +105,7 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('978', '答题卡卡格式列表', '/api/scan/answer/card/list', 'URL', '970', '8', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('979', '创建/修改题卡卡格式', '/api/scan/answer/card/save', 'URL', '970', '9', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('980', '删除答题卡卡格式', '/api/scan/answer/card/delete', 'URL', '970', '10', 'AUTH', '1', '1', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('981', '答题卡适配卡格式上传', '/api/scan/answer/card/adapt/upload', 'URL', '970', '11', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('981', '答题卡适配卡格式上传', '/api/scan/answer/card/adapte/upload', 'URL', '970', '11', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('982', '答题卡卡格式查询', '/api/scan/answer/card/get', 'URL', '970', '12', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('983', '答题卡扫描批次创建', '/api/scan/answer/batch/create', 'URL', '970', '13', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('984', '答题卡扫描批次完成', '/api/scan/answer/batch/finish', 'URL', '970', '14', 'AUTH', '1', '1', '1');

+ 6 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkArbitrateController.java

@@ -67,8 +67,8 @@ public class MarkArbitrateController {
      */
     @ApiOperation(value = "左边的列表")
     @RequestMapping(value = "/getArbitrationList", method = RequestMethod.POST)
-    public Result getArbitrationList(@ApiParam(value = "仲裁历史ID", required = true) @RequestParam Long arbitrateId) {
-        List<MarkArbitrateMarkerDto> markArbitrateDtoList = markArbitrateHistoryService.listMarkerArbitrateRecord(arbitrateId);
+    public Result getArbitrationList(@ApiParam(value = "仲裁历史ID", required = true) @RequestParam Long historyId) {
+        List<MarkArbitrateMarkerDto> markArbitrateDtoList = markArbitrateHistoryService.listMarkerArbitrateRecord(historyId);
         return ResultUtil.ok(markArbitrateDtoList);
     }
 
@@ -77,8 +77,8 @@ public class MarkArbitrateController {
      */
     @ApiOperation(value = "获取配置信息")
     @RequestMapping(value = "/getSetting", method = RequestMethod.POST)
-    public Result getSetting(@ApiParam(value = "仲裁历史ID", required = true) @RequestParam Long arbitrateId) {
-        MarkArbitrateSettingDto markArbitrateSettingDto = markArbitrateHistoryService.getArbitrateSetting(arbitrateId);
+    public Result getSetting(@ApiParam(value = "仲裁历史ID", required = true) @RequestParam Long historyId) {
+        MarkArbitrateSettingDto markArbitrateSettingDto = markArbitrateHistoryService.getArbitrateSetting(historyId);
         return ResultUtil.ok(markArbitrateSettingDto);
     }
 
@@ -87,8 +87,8 @@ public class MarkArbitrateController {
      */
     @ApiOperation(value = "获取单个任务")
     @RequestMapping(value = "/getTask", method = RequestMethod.POST)
-    public Result getTask(@ApiParam(value = "仲裁历史ID", required = true) @RequestParam Long arbitrateId) {
-        Task task = markArbitrateHistoryService.getArbitrateTask(arbitrateId);
+    public Result getTask(@ApiParam(value = "仲裁历史ID", required = true) @RequestParam Long historyId) {
+        Task task = markArbitrateHistoryService.getArbitrateTask(historyId);
         return ResultUtil.ok(task);
     }
 

+ 22 - 16
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkController.java

@@ -2,15 +2,13 @@ package com.qmth.distributed.print.api.mark;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.qmth.boot.api.annotation.Aac;
+import com.qmth.teachcloud.mark.utils.TaskLock;
+import com.qmth.teachcloud.mark.utils.TaskLockUtil;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -42,6 +40,14 @@ public class MarkController {
     @Autowired
     private SysUserService userService;
 
+    @PostMapping(value = "/")
+    @Aac(auth = false)
+    public Object getTaskLock(@RequestParam Long examId, @RequestParam String paperNumber,
+                              @RequestParam Integer groupNumber) {
+        TaskLock taskLock = TaskLockUtil.getFormalTask(examId + "_" + paperNumber + "_" + groupNumber);
+        return taskLock.list();
+    }
+
     @RequestMapping(value = "/getSetting", method = RequestMethod.POST)
     public Result getSetting(@RequestParam Long examId, @RequestParam String paperNumber,
                              @RequestParam Integer groupNumber) {
@@ -67,34 +73,34 @@ public class MarkController {
     public Result getTask(@RequestParam Long examId, @RequestParam String paperNumber,
                           @RequestParam Integer groupNumber) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(markService.getTask(user.getId(), examId, paperNumber,groupNumber));
+        return ResultUtil.ok(markService.getTask(user.getId(), examId, paperNumber, groupNumber));
     }
 
     @RequestMapping(value = "/saveTask", method = RequestMethod.POST)
-    public Result saveTask(HttpServletRequest request,@RequestParam Long examId, @RequestParam String paperNumber,
-            @RequestParam Integer groupNumber, @RequestBody MarkResult markResult) {
+    public Result saveTask(HttpServletRequest request, @RequestParam Long examId, @RequestParam String paperNumber,
+                           @RequestParam Integer groupNumber, @RequestBody MarkResult markResult) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(markService.saveTask(examId,paperNumber,groupNumber,user.getId(),markResult));
+        return ResultUtil.ok(markService.saveTask(examId, paperNumber, groupNumber, user.getId(), markResult));
     }
 
     @RequestMapping(value = "/getHistory", method = RequestMethod.POST)
-    public Result getHistory(@RequestParam int pageNumber,@RequestParam int pageSize, @RequestParam String order, @RequestParam String sort,
-    		@RequestParam Long examId, @RequestParam String paperNumber,
-            @RequestParam Integer groupNumber,@RequestParam(required = false) String secretNumber, @RequestParam(required = false) Double markerScore) {
+    public Result getHistory(@RequestParam int pageNumber, @RequestParam int pageSize, @RequestParam String order, @RequestParam String sort,
+                             @RequestParam Long examId, @RequestParam String paperNumber,
+                             @RequestParam Integer groupNumber, @RequestParam(required = false) String secretNumber, @RequestParam(required = false) Double markerScore) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(markService.getHistory(user.getId(),pageNumber,pageSize,"DESC".equalsIgnoreCase(sort)?Sort.desc:Sort.asc, order,examId, paperNumber,groupNumber,secretNumber,markerScore));
+        return ResultUtil.ok(markService.getHistory(user.getId(), pageNumber, pageSize, "DESC".equalsIgnoreCase(sort) ? Sort.desc : Sort.asc, order, examId, paperNumber, groupNumber, secretNumber, markerScore));
     }
 
     @RequestMapping(value = "/updateSetting", method = RequestMethod.POST)
     public Result updateSetting(HttpServletRequest request, @RequestParam String uiSetting) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
-        userService.updateUiSetting(user.getId(),StringEscapeUtils.unescapeHtml(StringUtils.trimToNull(uiSetting)));
+        userService.updateUiSetting(user.getId(), StringEscapeUtils.unescapeHtml(StringUtils.trimToNull(uiSetting)));
         return ResultUtil.ok(true);
     }
 
     @RequestMapping(value = "/clear", method = RequestMethod.POST)
     public Result clear(@RequestParam Long examId, @RequestParam String paperNumber,
-            @RequestParam Integer groupNumber) {
+                        @RequestParam Integer groupNumber) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
         markService.clear(user.getId(), examId, paperNumber, groupNumber);
         return ResultUtil.ok(true);

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -361,7 +361,7 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
         if (markGroupDto.getDoubleEnable()) {
             if (markGroupDto.getDoubleRate() == null) {
                 throw ExceptionResultEnum.ERROR.exception("开启双评,双评比例必填");
-            } else if (markGroupDto.getDoubleRate() < markGroup.getDoubleRate()) {
+            } else if (markGroup.getDoubleRate() != null && markGroupDto.getDoubleRate() < markGroup.getDoubleRate()) {
                 throw ExceptionResultEnum.ERROR.exception("双评比例不能小于原值");
             }
             if (markGroupDto.getArbitrateThreshold() == null) {
@@ -371,6 +371,7 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
                 throw ExceptionResultEnum.ERROR.exception("开启双评,合分规则必填");
             }
         }
+        markGroup.setDoubleEnable(markGroupDto.getDoubleEnable());
         markGroup.setDoubleRate(markGroupDto.getDoubleRate());
         markGroup.setScorePolicy(markGroupDto.getScorePolicy());
         markGroup.setArbitrateThreshold(markGroupDto.getArbitrateThreshold());

+ 5 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -587,9 +587,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                         pageVo.setIndex(p.getPageIndex());
                         pageVo.setSheetUri(teachcloudCommonService.filePreview(p.getSheetPath()));
                         if (query.getWithOmrDetail() != null && query.getWithOmrDetail()) {
-                            pageVo.setAbsent(p.getAbsent().getResult());
-                            pageVo.setBreach(p.getBreach().getResult());
-                            pageVo.setQuestion(p.getQuestion().getResult());
+                            pageVo.setAbsent(p.getAbsent() != null ? p.getAbsent().getResult() : null);
+                            pageVo.setBreach(p.getBreach() != null ? p.getBreach().getResult() : null);
+                            pageVo.setQuestion(p.getQuestion() != null ? p.getQuestion().getResult() : null);
                             pageVo.setRecogData(p.getRecogData());
                         }
                         pages.add(pageVo);
@@ -710,6 +710,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         if (studentId != null) {
             Long userId = ServletUtil.getRequestUserId();
             MarkStudent markStudent = this.getById(studentId);
+            markService.releaseByStudent(markStudent);
             if (markService.applyStudent(markStudent, userId)) {
                 task = taskService.build(studentId);
             }
@@ -733,7 +734,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         } finally {
             lockService.unlock(LockType.STUDENT, markResult.getStudentId());
             lockService.unwatch(LockType.EXAM_SUBJECT, markStudent.getExamId(), markStudent.getPaperNumber());
-            releaseStudent(markStudent);
+            markService.releaseByStudent(markStudent);
         }
     }
 

+ 1 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanAnswerCardServiceImpl.java

@@ -221,6 +221,7 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
         } catch (IOException e) {
             throw new ParameterException("文件上传失败", e);
         }
+        card.setDpi(dpi);
         card.setAdapteMd5(md5);
         card.setAdapteUri(filePath);
         this.updateById(card);

+ 2 - 2
teachcloud-task/src/main/java/com/qmth/teachcloud/task/start/StartRunning.java

@@ -102,7 +102,7 @@ public class StartRunning implements CommandLineRunner {
         Map buildMarkTaskJobMap = new HashMap();
         buildMarkTaskJobMap.computeIfAbsent("name", v -> BuildMarkTaskJob.class.getName());
         quartzService.deleteJob(JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK_GROUP.name());
-//        quartzService.addJob(BuildMarkTaskJob.class, JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK_GROUP.name(), "0 */1 * * * ?", buildMarkTaskJobMap);
+        quartzService.addJob(BuildMarkTaskJob.class, JobEnum.BUILD_MARK_TASK.name(), JobEnum.BUILD_MARK_TASK_GROUP.name(), "0 */1 * * * ?", buildMarkTaskJobMap);
         log.info("增加评卷任务生成定时任务 end");
 
         // 每1分钟一次
@@ -110,7 +110,7 @@ public class StartRunning implements CommandLineRunner {
         Map initMarkDataJobMap = new HashMap();
         initMarkDataJobMap.computeIfAbsent("name", v -> InitMarkDataJob.class.getName());
         quartzService.deleteJob(JobEnum.INIT_MARK_DATA.name(), JobEnum.INIT_MARK_DATA_GROUP.name());
-        quartzService.addJob(InitMarkDataJob.class, JobEnum.INIT_MARK_DATA.name(), JobEnum.INIT_MARK_DATA_GROUP.name(), "0 */1 * * * ?", initMarkDataJobMap);
+        quartzService.addJob(InitMarkDataJob.class, JobEnum.INIT_MARK_DATA.name(), JobEnum.INIT_MARK_DATA_GROUP.name(), "0 */5 * * * ?", initMarkDataJobMap);
         log.info("增加初始化阅卷数据定时任务 end");
 
         log.info("服务器启动时执行 end");