Explorar o código

客观题全空不生成识别对照任务;新增根据考生id获取电子卡格式;轨迹新增评卷员工号和姓名;

yin hai 1 ano
pai
achega
0e18efc4fc

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

@@ -1,22 +1,30 @@
 package com.qmth.distributed.print.api.mark;
 
 
+import javax.annotation.Resource;
+
+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.RestController;
+
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.entity.ExamCard;
+import com.qmth.distributed.print.business.service.ExamCardService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.mark.dto.mark.manage.Task;
+import com.qmth.teachcloud.mark.entity.MarkStudent;
+import com.qmth.teachcloud.mark.entity.ScanAnswerCard;
+import com.qmth.teachcloud.mark.service.MarkStudentService;
 import com.qmth.teachcloud.mark.service.MarkTrackService;
+import com.qmth.teachcloud.mark.service.ScanAnswerCardService;
 import com.qmth.teachcloud.mark.service.TaskService;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-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.RestController;
-
-import javax.annotation.Resource;
 
 /**
  * <p>
@@ -35,6 +43,13 @@ public class MarkTrackController {
     private MarkTrackService markTrackService;
     @Resource
     private TaskService taskService;
+    @Resource
+    private ExamCardService examCardService;
+    @Resource
+    private MarkStudentService markStudentService;
+    @Resource
+    private ScanAnswerCardService scanAnswerCardService;
+
 
     /**
      * 轨迹图
@@ -46,4 +61,18 @@ public class MarkTrackController {
         return ResultUtil.ok(task);
     }
 
+    @ApiOperation(value = "考生扫描的电子卡格式")
+    @RequestMapping(value = "/getCard", method = RequestMethod.POST)
+    public Result getCard(@ApiParam(value = "考生ID", required = true) @RequestParam Long studentId) {
+        MarkStudent student = markStudentService.getById(studentId);
+        if(student.getCardNumber()!=null){
+            ScanAnswerCard scanAnswerCard=scanAnswerCardService.findByExamAndNumber(student.getExamId(),student.getCardNumber());
+            if(scanAnswerCard.getCardId()!=null){
+                ExamCard examCard = examCardService.getById(scanAnswerCard.getCardId());
+                return ResultUtil.ok(examCard);
+            }
+        }
+        return ResultUtil.ok();
+    }
+
 }

+ 14 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/manage/MarkerTrackDTO.java

@@ -13,14 +13,18 @@ public class MarkerTrackDTO extends TrackDTO {
     private Long userId;
     private Boolean headerMarkScore;
 
-    public MarkerTrackDTO(MarkTrack track) {
+    private String userName;
+
+    public MarkerTrackDTO(MarkTrack track,String userName) {
         super(track);
         this.userId = track.getUserId();
+        this.userName=userName;
     }
 
-    public MarkerTrackDTO(MarkHeaderTrack markHeaderTrack) {
+    public MarkerTrackDTO(MarkHeaderTrack markHeaderTrack,String userName) {
         super(markHeaderTrack);
         this.userId = markHeaderTrack.getUserId();
+        this.userName=userName;
         this.headerMarkScore = true;
     }
 
@@ -39,4 +43,12 @@ public class MarkerTrackDTO extends TrackDTO {
     public void setHeaderMarkScore(Boolean headerMarkScore) {
         this.headerMarkScore = headerMarkScore;
     }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
 }

+ 6 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanOmrTaskServiceImpl.java

@@ -92,6 +92,9 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
         MarkStudent student = studentService.getById(studentId);
         // 所有客观题空白
         boolean allObjectiveBlank = isAllBlank(paperIds);
+        if(allObjectiveBlank){
+            return null;
+        }
         List<OmrTaskDto> retList = new ArrayList<>();
         boolean multi_blank = false;
         boolean single_blank = false;
@@ -163,7 +166,7 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
                 // items.add(item);
                 // }
                 // }
-                if (ConditionType.QUESTION_MULTI_BLANK.equals(c)) {
+                if (ConditionType.QUESTION_MULTI_BLANK.equals(c) && ScanStatus.SCANNED.equals(student.getScanStatus())) {
                     List<MarkQuestion> questiongList = questionService
                             .listByExamIdAndPaperNumberAndPaperIndexAndPageIndex(student.getExamId(),
                                     student.getPaperNumber(), spe.getPaperIndex(), pageEntity.getPageIndex(),true);
@@ -190,8 +193,7 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
                         }
                     }
                 }
-                if (ConditionType.QUESTION_SINGLE_BLANK.equals(c) && ScanStatus.SCANNED.equals(student.getScanStatus())
-                        && !allObjectiveBlank) {
+                if (ConditionType.QUESTION_SINGLE_BLANK.equals(c) && ScanStatus.SCANNED.equals(student.getScanStatus())) {
                     List<MarkQuestion> questiongList = questionService
                             .listByExamIdAndPaperNumberAndPaperIndexAndPageIndex(student.getExamId(),
                                     student.getPaperNumber(), spe.getPaperIndex(), pageEntity.getPageIndex(),true);
@@ -219,8 +221,7 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
                         }
                     }
                 }
-                if (ConditionType.QUESTION_SINGLE_EXCEED.equals(c) && ScanStatus.SCANNED.equals(student.getScanStatus())
-                        && !allObjectiveBlank) {
+                if (ConditionType.QUESTION_SINGLE_EXCEED.equals(c) && ScanStatus.SCANNED.equals(student.getScanStatus())) {
                     List<MarkQuestion> questiongList = questionService
                             .listByExamIdAndPaperNumberAndPaperIndexAndPageIndex(student.getExamId(),
                                     student.getPaperNumber(), spe.getPaperIndex(), pageEntity.getPageIndex(),true);

+ 18 - 23
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/TaskServiceImpl.java

@@ -4,35 +4,23 @@ import java.util.*;
 
 import javax.annotation.Resource;
 
-import com.alibaba.fastjson.JSON;
-import com.qmth.teachcloud.mark.bean.mark.MarkConfigItem;
-import com.qmth.teachcloud.mark.entity.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import com.alibaba.fastjson.JSON;
 import com.qmth.teachcloud.common.entity.MarkQuestion;
+import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
+import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import com.qmth.teachcloud.mark.bean.mark.MarkConfigItem;
 import com.qmth.teachcloud.mark.dto.mark.ScoreItem;
 import com.qmth.teachcloud.mark.dto.mark.SpecialTagDTO;
-import com.qmth.teachcloud.mark.dto.mark.manage.MarkStepDTO;
-import com.qmth.teachcloud.mark.dto.mark.manage.MarkerSpecialTagDTO;
-import com.qmth.teachcloud.mark.dto.mark.manage.MarkerTrackDTO;
-import com.qmth.teachcloud.mark.dto.mark.manage.Task;
-import com.qmth.teachcloud.mark.dto.mark.manage.TrackDTO;
+import com.qmth.teachcloud.mark.dto.mark.manage.*;
+import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
-import com.qmth.teachcloud.mark.service.MarkGroupService;
-import com.qmth.teachcloud.mark.service.MarkHeaderTagService;
-import com.qmth.teachcloud.mark.service.MarkHeaderTrackService;
-import com.qmth.teachcloud.mark.service.MarkPaperService;
-import com.qmth.teachcloud.mark.service.MarkQuestionService;
-import com.qmth.teachcloud.mark.service.MarkSpecialTagService;
-import com.qmth.teachcloud.mark.service.MarkStudentService;
-import com.qmth.teachcloud.mark.service.MarkSubjectiveScoreService;
-import com.qmth.teachcloud.mark.service.MarkTaskService;
-import com.qmth.teachcloud.mark.service.MarkTrackService;
-import com.qmth.teachcloud.mark.service.TaskService;
+import com.qmth.teachcloud.mark.service.*;
 
 @Service
 public class TaskServiceImpl implements TaskService {
@@ -59,6 +47,8 @@ public class TaskServiceImpl implements TaskService {
     private MarkHeaderTagService markHeaderTagService;
     @Resource
     private MarkSpecialTagService markSpecialTagService;
+    @Resource
+    private SysUserService sysUserService;
 
     @Override
     public Task build(MarkArbitrateHistory markArbitrateHistory, MarkGroup markGroup) {
@@ -142,6 +132,7 @@ public class TaskServiceImpl implements TaskService {
             // 仲裁轨迹
             List<MarkHeaderTrack> headerTracks = markHeaderTrackService.listByStudentIdAndQuestionNumber(markStudent.getId(), questionNumber);
             List<String> questionList = new ArrayList<>();
+            Map<Long,String> userNameMap = new HashMap<>();
             // 不管单评还是多评显示所有评卷员给分轨迹
             for (MarkTask markTask : markTaskList) {
                 List<MarkTrack> tracks = markTrackService.listByTaskIdAndQuestionNumber(markTask.getId(), questionNumber);
@@ -152,7 +143,11 @@ public class TaskServiceImpl implements TaskService {
                 }
                 for (MarkTrack track : tracks) {
 //                    step.addTrack(new MarkerTrackDTO(track));
-                    step.addTrack(replaceTrackFromHeaderTrack(track, headerTracks));
+                    if(userNameMap.get(track.getUserId())==null){
+                        SysUser user = sysUserService.getByUserId(track.getUserId());
+                        userNameMap.put(track.getUserId(),user.getRealName()+"("+user.getLoginName()+")");
+                    }
+                    step.addTrack(replaceTrackFromHeaderTrack(track, headerTracks,userNameMap));
                 }
             }
             for (MarkHeaderTrack headerTrack : headerTracks) {
@@ -163,13 +158,13 @@ public class TaskServiceImpl implements TaskService {
         return list;
     }
 
-    private MarkerTrackDTO replaceTrackFromHeaderTrack(MarkTrack markTrack, List<MarkHeaderTrack> headerTracks) {
-        MarkerTrackDTO markerTrackDTO = new MarkerTrackDTO(markTrack);
+    private MarkerTrackDTO replaceTrackFromHeaderTrack(MarkTrack markTrack, List<MarkHeaderTrack> headerTracks,Map<Long,String> userNameMap) {
+        MarkerTrackDTO markerTrackDTO = new MarkerTrackDTO(markTrack,userNameMap.get(markTrack.getUserId()));
         if (CollectionUtils.isNotEmpty(headerTracks)) {
             Optional<MarkHeaderTrack> optional = headerTracks.stream().filter(m -> m.getStudentId().equals(markTrack.getStudentId()) && m.getQuestionNumber().equals(markTrack.getQuestionNumber())).findFirst();
             if (optional.isPresent()) {
                 MarkHeaderTrack markHeaderTrack = optional.get();
-                markerTrackDTO = new MarkerTrackDTO(markHeaderTrack);
+                markerTrackDTO = new MarkerTrackDTO(markHeaderTrack,userNameMap.get(markHeaderTrack.getUserId()));
             }
         }
         return markerTrackDTO;