Jelajahi Sumber

3.4.0 update

xiaofei 1 tahun lalu
induk
melakukan
be1e7f0a96

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/WorkResult.java

@@ -26,6 +26,8 @@ public class WorkResult extends BaseFlowData implements Serializable {
 
     @ApiModelProperty(value = "试卷编号")
     String paperNumber;
+    @ApiModelProperty(value = "课程ID")
+    Long courseId;
 
     @ApiModelProperty(value = "课程名称")
     String courseName;
@@ -196,6 +198,14 @@ public class WorkResult extends BaseFlowData implements Serializable {
         this.paperNumber = paperNumber;
     }
 
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
     public String getCourseName() {
         return courseName;
     }

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -1246,6 +1246,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
                     examStudent.setPaperNumber(s.getPaperNumber());
                     examStudent.setCoursePaperId(s.getCoursePaperId());
                     examStudent.setBasicStudentId(s.getId());
+                    examStudent.setStudentCode(s.getStudentCode());
                     examStudent.setCreateId(createId);
                     examStudent.setCreateTime(System.currentTimeMillis());
                     examStudentList.add(examStudent);

+ 12 - 1
distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml

@@ -67,7 +67,18 @@
         order by a.create_time desc
     </select>
     <select id="listPage" resultType="com.qmth.distributed.print.business.entity.ExamCard">
-        select ec.*,
+        select ec.id,
+               ec.title,
+               ec.make_method,
+               ec.status,
+               ec.type,
+               ec.create_method,
+               ec.enable,
+               ec.used,
+               ec.remark,
+               ec.card_rule_id,
+               ec.create_time,
+               ec.jpg_attachment,
                bc.code courseCode,
                bc.name courseName
                from exam_card ec

+ 11 - 4
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -675,6 +675,7 @@
                 et.id,
                 et.school_id schoolId,
                 et.org_id as orgId,
+                et.course_id courseId,
                 bc.code courseCode,
                 bc.name courseName,
                 et.specialty,
@@ -738,8 +739,9 @@
                 et.id,
                 et.school_id schoolId,
                 et.org_id as orgId,
-                et.course_code courseCode,
-                et.course_name courseName,
+                et.course_id courseId,
+                bc.code courseCode,
+                bc.name courseName,
                 et.specialty,
                 et.paper_number paperNumber,
                 et.card_rule_id cardRuleId,
@@ -791,6 +793,8 @@
                 basic_exam be ON et.exam_id = be.id
             LEFT JOIN
                 basic_semester bs ON be.semester_id = bs.id
+            LEFT JOIN
+                basic_course bc ON et.course_id = bc.id
             where
                   et.enable = true and be.enable = true and bs.enable = true
               and art.ASSIGNEE_ is null
@@ -802,8 +806,9 @@
               et.id,
               et.school_id schoolId,
               et.org_id as orgId,
-              et.course_code courseCode,
-              et.course_name courseName,
+              et.course_id courseId,
+              bc.code courseCode,
+              bc.name courseName,
               et.specialty,
               et.paper_number paperNumber,
               et.card_rule_id cardRuleId,
@@ -845,6 +850,8 @@
                  basic_exam be ON et.exam_id = be.id
                   LEFT JOIN
                  basic_semester bs ON be.semester_id = bs.id
+                    LEFT JOIN
+                    basic_course bc ON et.course_id = bc.id
           where
               et.enable = true and be.enable = true and bs.enable = true
             AND et.status = 'STAGE' AND et.flow_id is null

+ 7 - 0
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -74,6 +74,10 @@ ALTER TABLE `mark_document`
     CHANGE COLUMN `course_code` `course_code` VARCHAR(32) CHARACTER SET 'utf8mb4' NULL COMMENT '课程代码' ,
     CHANGE COLUMN `course_name` `course_name` VARCHAR(100) CHARACTER SET 'utf8mb4' NULL COMMENT '科目名称' ;
 
+ALTER TABLE `client_status`
+    CHANGE COLUMN `course_code` `course_code` VARCHAR(100) CHARACTER SET 'utf8mb4' NULL COMMENT '课程代码' ,
+    CHANGE COLUMN `course_name` `course_name` VARCHAR(200) CHARACTER SET 'utf8mb4' NULL COMMENT '课程名称' ;
+
 update exam_task a set a.course_id = (select bc.id from basic_course bc where a.school_id = bc.school_id and a.course_code = bc.code) where a.course_id is null;
 update exam_card a set a.course_id = (select bc.id from basic_course bc where a.school_id = bc.school_id and a.course_code = bc.code) where a.course_id is null;
 update exam_detail_course a set a.course_id = (select bc.id from basic_course bc where a.school_id = bc.school_id and a.course_code = bc.code) where a.course_id is null;
@@ -179,6 +183,9 @@ ALTER TABLE `mark_student`
 ALTER TABLE `scan_student_paper`
     ADD INDEX `index1`
     (`student_id` ASC, `paper_index` ASC) USING BTREE;
+
+ALTER TABLE `mark_paper`
+    ADD INDEX `index3`(`status` ASC) USING BTREE;
 -- drop table if exists exam_detail_course_paper_type;
 -- drop table if exists basic_template_org;
 -- drop table if exists cloud_user_push_status;

+ 68 - 66
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -88,81 +88,83 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
     public MenuResult getUserMenu(Long userId) {
         List<MenuPrivilegeDto> menuPrivilegeDtoList = new ArrayList<>();
         SysUser sysUser = commonCacheService.userCache(userId);
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         // 查询学校权限
-        List<TSchoolPrivilege> schoolPrivilegeList = commonCacheService.addSchoolPrivilegeCache(schoolId);
-        if (CollectionUtils.isNotEmpty(schoolPrivilegeList)) {
-            List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(userId);
-            List<SysRolePrivilege> sysRolePrivilegeList = new ArrayList<>();
-            for (SysUserRole s : sysUserRoleList) {
-                SysRole sysRole = commonCacheService.roleCache(s.getRoleId());
-                if (Objects.nonNull(sysRole) && sysRole.getEnable()) {
-                    sysRolePrivilegeList.addAll(commonCacheService.rolePrivilegeCache(sysUser.getSchoolId(), s.getRoleId()));
-                }
-            }
+        List<TSchoolPrivilege> schoolPrivilegeList = new ArrayList<>();
+        if (sysUser.getSchoolId() != null) {
+            schoolPrivilegeList = commonCacheService.addSchoolPrivilegeCache(sysUser.getSchoolId());
+        }
+        List<SysRolePrivilege> sysRolePrivilegeList = new ArrayList<>();
+        List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(userId);
 
-            Set<Long> privilegeIds = sysRolePrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toSet());
-            if (CollectionUtils.isNotEmpty(privilegeIds)) {
-                List<Long> schoolPrivilegeIds = schoolPrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toList());
-                List<Long> intersectionIds = (List<Long>) CollectionUtils.intersection(privilegeIds, schoolPrivilegeIds);
+        for (SysUserRole s : sysUserRoleList) {
+            SysRole sysRole = commonCacheService.roleCache(s.getRoleId());
+            if (Objects.nonNull(sysRole) && sysRole.getEnable()) {
+                sysRolePrivilegeList.addAll(commonCacheService.rolePrivilegeCache(sysUser.getSchoolId(), s.getRoleId()));
+            }
+        }
 
-                if (CollectionUtils.isNotEmpty(intersectionIds)) {
-                    QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
-                    sysPrivilegeQueryWrapper.lambda()
-                            .in(SysPrivilege::getId, intersectionIds)
-                            .eq(SysPrivilege::getEnable, true).eq(SysPrivilege::getFrontDisplay, true)
-                            .orderByAsc(SysPrivilege::getSequence);
-                    List<SysPrivilege> sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
-                    Gson gson = new Gson();
-                    List<MenuDto> menuDtoList = gson.fromJson(JacksonUtil.parseJson(sysPrivilegeList), new TypeToken<List<MenuDto>>() {
-                    }.getType());
-                    LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
-
-                    for (MenuDto m : menuDtoList) {
-                        if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU) {
-                            menuPrivilegeDtoList.add(gson.fromJson(gson.toJson(m), MenuPrivilegeDto.class));
+        Set<Long> privilegeIds = sysRolePrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toSet());
+        if (CollectionUtils.isNotEmpty(privilegeIds)) {
+            List<Long> schoolPrivilegeIds = schoolPrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toList());
+            List<Long> intersectionIds = sysUser.getSchoolId() != null ? (List<Long>) CollectionUtils.intersection(privilegeIds, schoolPrivilegeIds) : new ArrayList<>(privilegeIds);
+
+            if (CollectionUtils.isNotEmpty(intersectionIds)) {
+                QueryWrapper<SysPrivilege> sysPrivilegeQueryWrapper = new QueryWrapper<>();
+                sysPrivilegeQueryWrapper.lambda()
+                        .in(SysPrivilege::getId, intersectionIds)
+                        .eq(SysPrivilege::getEnable, true).eq(SysPrivilege::getFrontDisplay, true)
+                        .orderByAsc(SysPrivilege::getSequence);
+                List<SysPrivilege> sysPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
+                Gson gson = new Gson();
+                List<MenuDto> menuDtoList = gson.fromJson(JacksonUtil.parseJson(sysPrivilegeList), new TypeToken<List<MenuDto>>() {
+                }.getType());
+                LinkedMultiValueMap<Long, MenuDto> linkedMultiValueMap = new LinkedMultiValueMap<>();
+
+                for (MenuDto m : menuDtoList) {
+                    if (Objects.isNull(m.getParentId()) || m.getType() == PrivilegeEnum.MENU) {
+                        menuPrivilegeDtoList.add(gson.fromJson(gson.toJson(m), MenuPrivilegeDto.class));
+                    } else {
+                        if (!linkedMultiValueMap.containsKey(m.getParentId())) {
+                            linkedMultiValueMap.add(m.getParentId(), m);
                         } else {
-                            if (!linkedMultiValueMap.containsKey(m.getParentId())) {
-                                linkedMultiValueMap.add(m.getParentId(), m);
-                            } else {
-                                List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getParentId());
-                                menuDtos.add(m);
-                                linkedMultiValueMap.put(m.getParentId(), menuDtos);
-                            }
+                            List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getParentId());
+                            menuDtos.add(m);
+                            linkedMultiValueMap.put(m.getParentId(), menuDtos);
                         }
                     }
-                    for (MenuPrivilegeDto m : menuPrivilegeDtoList) {
-                        List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getId());
-                        List<MenuDto> urls = null, buttons = null, links = null, lists = null, conditions = null;
-                        if (Objects.nonNull(menuDtos)) {
-                            for (MenuDto menuDto : menuDtos) {
-                                if (menuDto.getType() == PrivilegeEnum.BUTTON) {
-                                    buttons = Objects.isNull(buttons) ? new ArrayList<>() : buttons;
-                                    buttons.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
-                                    m.setButtons(buttons);
-                                } else if (menuDto.getType() == PrivilegeEnum.LINK) {
-                                    links = Objects.isNull(links) ? new ArrayList<>() : links;
-                                    links.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
-                                    m.setLinks(links);
-                                } else if (menuDto.getType() == PrivilegeEnum.URL) {
-                                    urls = Objects.isNull(urls) ? new ArrayList<>() : urls;
-                                    urls.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
-                                    m.setUrls(urls);
-                                } else if (menuDto.getType() == PrivilegeEnum.LIST) {
-                                    lists = Objects.isNull(lists) ? new ArrayList<>() : lists;
-                                    lists.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
-                                    m.setLists(lists);
-                                } else if (menuDto.getType() == PrivilegeEnum.CONDITION) {
-                                    conditions = Objects.isNull(conditions) ? new ArrayList<>() : conditions;
-                                    conditions.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
-                                    m.setConditions(conditions);
-                                }
+                }
+                for (MenuPrivilegeDto m : menuPrivilegeDtoList) {
+                    List<MenuDto> menuDtos = linkedMultiValueMap.get(m.getId());
+                    List<MenuDto> urls = null, buttons = null, links = null, lists = null, conditions = null;
+                    if (Objects.nonNull(menuDtos)) {
+                        for (MenuDto menuDto : menuDtos) {
+                            if (menuDto.getType() == PrivilegeEnum.BUTTON) {
+                                buttons = Objects.isNull(buttons) ? new ArrayList<>() : buttons;
+                                buttons.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                                m.setButtons(buttons);
+                            } else if (menuDto.getType() == PrivilegeEnum.LINK) {
+                                links = Objects.isNull(links) ? new ArrayList<>() : links;
+                                links.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                                m.setLinks(links);
+                            } else if (menuDto.getType() == PrivilegeEnum.URL) {
+                                urls = Objects.isNull(urls) ? new ArrayList<>() : urls;
+                                urls.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                                m.setUrls(urls);
+                            } else if (menuDto.getType() == PrivilegeEnum.LIST) {
+                                lists = Objects.isNull(lists) ? new ArrayList<>() : lists;
+                                lists.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                                m.setLists(lists);
+                            } else if (menuDto.getType() == PrivilegeEnum.CONDITION) {
+                                conditions = Objects.isNull(conditions) ? new ArrayList<>() : conditions;
+                                conditions.add(gson.fromJson(gson.toJson(menuDto), MenuPrivilegeDto.class));
+                                m.setConditions(conditions);
                             }
                         }
                     }
                 }
             }
         }
+
         return new MenuResult(sysUser.getId(), menuPrivilegeDtoList);
     }
 
@@ -280,7 +282,7 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
                     BasicSchool tbSchool = Objects.nonNull(user.getSchoolId()) ? commonCacheService.schoolCache(user.getSchoolId()) : null;
                     SysOrg org = Objects.nonNull(user.getOrgId()) ? commonCacheService.orgCache(user.getOrgId()) : null;
                     List<SysPrivilege> sysPrivilegeList = new ArrayList<>();
-                    if(CollectionUtils.isNotEmpty(tSchoolPrivilegeList)) {
+                    if (CollectionUtils.isNotEmpty(tSchoolPrivilegeList)) {
                         List<Long> schoolPrivilegeIds = tSchoolPrivilegeList.stream().map(s -> s.getPrivilegeId()).collect(Collectors.toList());
                         if (CollectionUtils.isNotEmpty(schoolPrivilegeIds) && CollectionUtils.isNotEmpty(privilegeIds)) {
                             // 查询url
@@ -288,8 +290,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
                             sysPrivilegeQueryWrapper.lambda().in(SysPrivilege::getId, schoolPrivilegeIds);
                             List<SysPrivilege> schoolPrivilegeList = sysPrivilegeService.list(sysPrivilegeQueryWrapper);
                             Set<Long> relateIds = new HashSet<>();
-                            if(CollectionUtils.isNotEmpty(schoolPrivilegeList)){
-                                schoolPrivilegeList.stream().filter(m->StringUtils.isNotBlank(m.getRelated())).forEach(m->{
+                            if (CollectionUtils.isNotEmpty(schoolPrivilegeList)) {
+                                schoolPrivilegeList.stream().filter(m -> StringUtils.isNotBlank(m.getRelated())).forEach(m -> {
                                     for (String s : m.getRelated().split(",")) {
                                         relateIds.add(Long.parseLong(s.trim()));
                                     }

+ 20 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/manage/TrackDTO.java

@@ -2,6 +2,8 @@ package com.qmth.teachcloud.mark.dto.mark.manage;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.params.MarkHeaderGroupResult;
@@ -34,6 +36,9 @@ public class TrackDTO implements Serializable {
     private int offsetY;
 
     private boolean unanswered;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long userId;
+    private String userName;
 
     public TrackDTO() {
 
@@ -204,4 +209,19 @@ public class TrackDTO implements Serializable {
         this.unanswered = unanswered;
     }
 
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
 }

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

@@ -1217,7 +1217,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                 markSyncService.calcObjectiveScore(markPaper);
                 return true;
             } else {
-                throw ExceptionResultEnum.ERROR.exception("评卷员正在重置");
+                throw ExceptionResultEnum.ERROR.exception("客观题正在统分,请稍后再试");
             }
         }
         return true;

+ 26 - 20
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/TaskServiceImpl.java

@@ -133,41 +133,47 @@ public class TaskServiceImpl implements TaskService {
             // 仲裁轨迹
             List<MarkHeaderTrack> headerTracks = markHeaderTrackService.listByStudentIdAndQuestionNumber(markStudent.getId(), questionNumber);
             List<String> questionList = new ArrayList<>();
-            Map<Long,String> userNameMap = new HashMap<>();
+            Map<Long, String> userNameMap = new HashMap<>();
             // 不管单评还是多评显示所有评卷员给分轨迹
             for (MarkTask markTask : markTaskList) {
                 List<MarkTrack> tracks = markTrackService.listByTaskIdAndQuestionNumber(markTask.getId(), questionNumber);
-                if (!questionList.contains(questionNumber)) {
-                    questionList.add(questionNumber);
-                } else if (CollectionUtils.isNotEmpty(headerTracks)) {
-                    continue;
-                }
+//                if (!questionList.contains(questionNumber)) {
+//                    questionList.add(questionNumber);
+//                } else if (CollectionUtils.isNotEmpty(headerTracks)) {
+//                    continue;
+//                }
                 for (MarkTrack track : tracks) {
-//                    step.addTrack(new MarkerTrackDTO(track));
-                    if(userNameMap.get(track.getUserId())==null){
+                    if (userNameMap.get(track.getUserId()) == null) {
                         SysUser user = sysUserService.getByUserId(track.getUserId());
-                        userNameMap.put(track.getUserId(),user.getRealName()+"("+user.getLoginName()+")");
+                        userNameMap.put(track.getUserId(), user.getRealName() + "(" + user.getLoginName() + ")");
                     }
-                    step.addTrack(replaceTrackFromHeaderTrack(track, headerTracks,userNameMap));
+                    step.addTrack(replaceTrackFromHeaderTrack(track, headerTracks, userNameMap));
                 }
             }
             for (MarkHeaderTrack headerTrack : headerTracks) {
-                step.addHeaderTrack(new TrackDTO(headerTrack));
+                TrackDTO trackDTO = new TrackDTO(headerTrack);
+                SysUser sysUser = sysUserService.getByUserId(headerTrack.getUserId());
+                if (sysUser != null) {
+                    trackDTO.setUserId(sysUser.getId());
+                    trackDTO.setUserName(sysUser.getRealName() + "(" + sysUser.getLoginName() + ")");
+                }
+                step.addHeaderTrack(trackDTO);
             }
             list.add(step);
         }
         return list;
     }
 
-    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,userNameMap.get(markHeaderTrack.getUserId()));
-            }
-        }
+    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();
+//                SysUser user = sysUserService.getByUserId(markHeaderTrack.getUserId());
+//                markerTrackDTO = new MarkerTrackDTO(markHeaderTrack, user.getRealName() + "(" + user.getLoginName() + ")");
+//            }
+//        }
         return markerTrackDTO;
     }
 

+ 10 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/ScoreCalculateUtil.java

@@ -45,10 +45,16 @@ public class ScoreCalculateUtil {
         // log.debug("student answers: " + student.getAnswers());
         // log.debug("exam objective config: " + exam.getObjectiveBlock());
 
+        // 客观题未设置统分策略,不统分
+        long count = questionList.stream().filter(m -> m.getObjectivePolicy() == null).count();
+        if (count > 0) {
+            return;
+        }
+
         int index = -1;
         int lastMainNumber = 0;
         for (MarkQuestion question : questionList) {
-            if(StringUtils.isBlank(question.getAnswer())){
+            if (StringUtils.isBlank(question.getAnswer())) {
                 continue;
             }
             // log.debug("find objective block for " + block.getTitle() +
@@ -77,12 +83,12 @@ public class ScoreCalculateUtil {
                     if (!question.getAnswer().contains(String.valueOf(answer.charAt(i)))) {
                         correct = false;
                         break;
-                    }else{
-                        correctCount ++;
+                    } else {
+                        correctCount++;
                     }
                 }
                 if (correct & ObjectivePolicy.LEAK.equals(question.getObjectivePolicy())) {
-                    score = answer.length() < question.getAnswer().length() ? question.getObjectivePolicyScore()*correctCount: question
+                    score = answer.length() < question.getAnswer().length() ? question.getObjectivePolicyScore() * correctCount : question
                             .getTotalScore();
                 }
                 if (correct & ObjectivePolicy.LEAK_HALF.equals(question.getObjectivePolicy())) {

+ 27 - 5
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -247,7 +247,7 @@
             and t.student_code=#{query.studentCode}
         </if>
         <if test="query.studentName != null and query.studentName !=''">
-            and t.student_name=#{query.studentName}
+            and bes.student_name=#{query.studentName}
         </if>
         <if test="query.packageCode != null and query.packageCode !=''">
             and t.package_code=#{query.packageCode}
@@ -262,10 +262,10 @@
             and t.paper_number=#{query.coursePaperNumber}
         </if>
         <if test="query.examPlace != null and query.examPlace !=''">
-            and t.exam_place=#{query.examPlace}
+            and bes.exam_place=#{query.examPlace}
         </if>
         <if test="query.examRoom != null and query.examRoom !=''">
-            and t.exam_room=#{query.examRoom}
+            and bes.exam_room=#{query.examRoom}
         </if>
 
         <if test="query.absentSuspect != null">
@@ -296,7 +296,7 @@
             and t.miss_scan=#{query.missScan}
         </if>
         <if test="query.studentCodeOrName != null and query.studentCodeOrName !=''">
-            and (t.student_code=#{query.studentCodeOrName} or t.student_name=#{query.studentCodeOrName})
+            and (t.student_code=#{query.studentCodeOrName} or bes.student_name=#{query.studentCodeOrName})
         </if>
         <if test="dpr != null">
             <if test="dpr.requestUserId != null">
@@ -315,11 +315,32 @@
     </sql>
     <select id="queryPage"
             resultType="com.qmth.teachcloud.mark.bean.scananswer.AnswerQueryVo">
-        select t.*,t.scan_status status,t.paper_number coursePaperNumber,c.paper_count cardPaperCount
+        select t.id,
+               t.student_code,
+               bes.student_name,
+               bc.code courseCode,
+               bc.name courseName,
+               t.course_paper_id,
+               bes.exam_place,
+               bes.exam_room,
+               t.package_code,
+               t.absent_suspect,
+               t.omr_absent,
+               t.omr_absent_checked,
+               t.assigned,
+               t.invalid,
+               t.incomplete,
+               t.card_number,
+               t.is_absent,
+               t.scan_status status,
+               t.paper_number coursePaperNumber,
+               c.paper_count cardPaperCount
         from mark_student t
+        left join (select * from basic_exam_student where exam_id=#{query.examId}) bes on t.basic_student_id = bes.id
         left join scan_answer_card c on t.exam_id=c.exam_id and t.card_number=c.number
         left join mark_paper s on s.course_paper_id=t.course_paper_id and s.exam_id=t.exam_id
         left join sys_user su on t.create_id = su.id
+        left join basic_course bc on t.course_id = bc.id
         <include refid="queryWhereAndOrder"/>
         order by t.id
     </select>
@@ -327,6 +348,7 @@
         select
         t.id
         from mark_student t
+        left join (select * from basic_exam_student where exam_id=#{query.examId}) bes on t.basic_student_id = bes.id
         left join mark_paper s on s.course_paper_id=t.course_paper_id and s.exam_id=t.exam_id
         left join sys_user su on t.create_id = su.id
         <include refid="queryWhereAndOrder"/>

+ 5 - 3
teachcloud-mark/src/main/resources/mapper/ScanOmrTaskMapper.xml

@@ -35,9 +35,11 @@
 	<select id="listByExamIdAndStatusAndUserId" resultType="com.qmth.teachcloud.mark.dto.ScanStudentDto">
 		select 
 			s.id studentId,
-			s.student_name,
+			bes.student_name,
 			s.student_code
-		from mark_student s left join sys_user su on s.create_id = su.id
+		from mark_student s
+		    left join (select * from basic_exam_student where exam_id = #{examId}) bes on s.basic_student_id = bes.id
+		    left join sys_user su on s.create_id = su.id
 			<where>
 				<if test="examId != null">
 					and s.exam_id = #{examId}
@@ -49,7 +51,7 @@
 					and s.course_paper_id = #{coursePaperId}
 				</if>
 				<if test="studentCodeOrName != null and studentCodeOrName != ''">
-					and (s.student_code = #{studentCodeOrName} or s.student_name = #{studentCodeOrName})
+					and (s.student_code = #{studentCodeOrName} or bes.student_name = #{studentCodeOrName})
 				</if>
 					and exists (select 1 from mark_paper mp where s.exam_id = mp.exam_id and s.course_paper_id = mp.course_paper_id and s.paper_type = mp.paper_type and mp.status = #{markPaperStatus})
 					and exists(select 1

+ 3 - 1
teachcloud-mark/src/main/resources/mapper/ScanPackageMapper.xml

@@ -21,9 +21,11 @@
 	</resultMap>
 	<select id="page"
 		resultType="com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo">
-		select t.*,t.paper_number coursePaperNumber, ed.exam_room examRoom
+		select t.*,t.paper_number coursePaperNumber, ed.exam_room examRoom,
+		       bc.code courseCode, bc.name courseName
 		FROM mark_paper_package t
 		left join exam_detail ed on t.exam_id = ed.exam_id and t.package_code=ed.package_code
+		left join basic_course bc on t.course_id = bc.id
         where t.exam_id=#{req.examId}
         <if test="req.courseId != null">
 			and t.course_id = #{req.courseId}