Эх сурвалжийг харах

Merge remote-tracking branch 'origin/dev_v3.3.1' into dev_v3.3.1

wangliang 1 жил өмнө
parent
commit
7f6950253f

+ 1 - 10
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/mark/setting/MarkGroupClassUserParams.java

@@ -6,22 +6,13 @@ import java.io.Serializable;
 import java.util.List;
 
 /**
- * 分班阅保存分组请求参数
+ * 分班阅保存请求参数
  */
 public class MarkGroupClassUserParams implements Serializable {
 
-    private Integer groupNumber;
     private MarkUser marker;
     private List<String> markerClassList;
 
-    public Integer getGroupNumber() {
-        return groupNumber;
-    }
-
-    public void setGroupNumber(Integer groupNumber) {
-        this.groupNumber = groupNumber;
-    }
-
     public MarkUser getMarker() {
         return marker;
     }

+ 17 - 17
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/setting/MarkUserClassDetailDto.java

@@ -6,26 +6,26 @@ import java.util.List;
 
 public class MarkUserClassDetailDto {
 
-    private Integer groupNumber;
-    private String groupQuestions;
+//    private Integer groupNumber;
+//    private String groupQuestions;
     private MarkUser marker;
     private List<String> markerClassList;
 
-    public Integer getGroupNumber() {
-        return groupNumber;
-    }
-
-    public void setGroupNumber(Integer groupNumber) {
-        this.groupNumber = groupNumber;
-    }
-
-    public String getGroupQuestions() {
-        return groupQuestions;
-    }
-
-    public void setGroupQuestions(String groupQuestions) {
-        this.groupQuestions = groupQuestions;
-    }
+//    public Integer getGroupNumber() {
+//        return groupNumber;
+//    }
+//
+//    public void setGroupNumber(Integer groupNumber) {
+//        this.groupNumber = groupNumber;
+//    }
+//
+//    public String getGroupQuestions() {
+//        return groupQuestions;
+//    }
+//
+//    public void setGroupQuestions(String groupQuestions) {
+//        this.groupQuestions = groupQuestions;
+//    }
 
     public MarkUser getMarker() {
         return marker;

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkUserClass.java

@@ -24,7 +24,7 @@ public class MarkUserClass implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @JsonSerialize(using = ToStringSerializer.class)
-    @TableId(value = "Id")
+    @TableId(value = "id")
     private Long Id;
 
     @JsonSerialize(using = ToStringSerializer.class)

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkUserClassMapper.java

@@ -21,7 +21,7 @@ import java.util.List;
 public interface MarkUserClassMapper extends BaseMapper<MarkUserClass> {
 
     List<MarkUser> listClassMarkerByExamIdAndPaperNumberAndGroupNumberAndClassName(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber, @Param("className") String className);
-    List<MarkUserClass> listMarkerClassByExamIdAndPaperNumberAndGroupNumberAndUserId(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber, @Param("userId") Long userId);
+    List<MarkUserClass> listMarkerClassByExamIdAndPaperNumberAndUserId(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("userId") Long userId);
 
     IPage<MarkGroupClassProgressDto> pageClassByExamIdAndPaperNumber(@Param("page") Page<MarkGroupClassProgressDto> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 }

+ 29 - 27
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -211,35 +211,37 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
         if (markPaper.getOpenMarkClass()) {
             Page<MarkGroupClassProgressDto> page = new Page<>(pageNumber, pageSize);
             IPage<MarkGroupClassProgressDto> markGroupClassProgressDtoIPage = markUserClassService.pageClassByExamIdAndPaperNumber(page, examId, paperNumber);
-            for (MarkGroupClassProgressDto markGroupClassProgressDto : markGroupClassProgressDtoIPage.getRecords()) {
-                Integer groupNumber = markGroupClassProgressDto.getGroupNumber();
-                List<MarkTask> totalMarkTaskList = new ArrayList<>();
-                List<MarkUser> totalMarkUserList = new ArrayList<>();
-                int count = 0;
-                totalMarkTaskList.addAll(markTaskService.listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndClassName(examId, paperNumber, groupNumber, null, markGroupClassProgressDto.getClassName()));
-                totalMarkUserList.addAll(markUserGroupService.listGroupUserByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, groupNumber, markGroupClassProgressDto.getClassName()));
-
-                MarkGroup markGroup = markGroupService.getByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, groupNumber);
-                markGroup.setQuestionList(markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, groupNumber, false));
-                List<MarkUser> markUserList = markUserClassService.listClassMarkerByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, groupNumber, markGroupClassProgressDto.getClassName());
-                for (MarkUser markUser : markUserList) {
-                    MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, groupNumber, markUser.getUserId());
-                    if (markUserGroup != null) {
-                        int markerCount = markService.applyCurrentCount(markGroup);
-                        count += markerCount;
+            List<MarkGroup> markGroupList = markGroupService.listGroupByExamIdAndPaperNumber(examId, paperNumber);
+            for (MarkGroup markGroup : markGroupList) {
+                Integer groupNumber = markGroup.getNumber();
+                for (MarkGroupClassProgressDto markGroupClassProgressDto : markGroupClassProgressDtoIPage.getRecords()) {
+                    List<MarkTask> totalMarkTaskList = new ArrayList<>();
+                    List<MarkUser> totalMarkUserList = new ArrayList<>();
+                    int count = 0;
+                    totalMarkTaskList.addAll(markTaskService.listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndClassName(examId, paperNumber, groupNumber, null, markGroupClassProgressDto.getClassName()));
+                    totalMarkUserList.addAll(markUserGroupService.listGroupUserByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, groupNumber, markGroupClassProgressDto.getClassName()));
+
+                    markGroup.setQuestionList(markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, groupNumber, false));
+                    List<MarkUser> markUserList = markUserClassService.listClassMarkerByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, groupNumber, markGroupClassProgressDto.getClassName());
+                    for (MarkUser markUser : markUserList) {
+                        MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, groupNumber, markUser.getUserId());
+                        if (markUserGroup != null) {
+                            int markerCount = markService.applyCurrentCount(markGroup);
+                            count += markerCount;
+                        }
                     }
-                }
 
-                // 待仲裁数量
-                int arbitrateCount = markArbitrateHistoryService.waitArbitrateCount(examId, paperNumber, groupNumber, markGroupClassProgressDto.getClassName());
-                markGroupClassProgressDto.setGroupQuestions(markGroup.getGroupQuestions());
-                markGroupClassProgressDto.setMarkerCount(totalMarkUserList.size());
-                markGroupClassProgressDto.setTaskCount(totalMarkTaskList.size());
-                markGroupClassProgressDto.setMarkedCount(markTaskService.markedCount(totalMarkTaskList));
-                markGroupClassProgressDto.setLeftCount(markGroupClassProgressDto.getTaskCount() - markGroupClassProgressDto.getMarkedCount());
-                markGroupClassProgressDto.setCurrentCount(count);
-                markGroupClassProgressDto.setPercent(Calculator.divide2String(Calculator.multiply(markGroupClassProgressDto.getMarkedCount(), 100), Double.valueOf(markGroupClassProgressDto.getTaskCount()), 2));
-                markGroupClassProgressDto.setArbitrateCount(arbitrateCount);
+                    // 待仲裁数量
+                    int arbitrateCount = markArbitrateHistoryService.waitArbitrateCount(examId, paperNumber, groupNumber, markGroupClassProgressDto.getClassName());
+                    markGroupClassProgressDto.setGroupQuestions(markGroup.getGroupQuestions());
+                    markGroupClassProgressDto.setMarkerCount(totalMarkUserList.size());
+                    markGroupClassProgressDto.setTaskCount(totalMarkTaskList.size());
+                    markGroupClassProgressDto.setMarkedCount(markTaskService.markedCount(totalMarkTaskList));
+                    markGroupClassProgressDto.setLeftCount(markGroupClassProgressDto.getTaskCount() - markGroupClassProgressDto.getMarkedCount());
+                    markGroupClassProgressDto.setCurrentCount(count);
+                    markGroupClassProgressDto.setPercent(Calculator.divide2String(Calculator.multiply(markGroupClassProgressDto.getMarkedCount(), 100), Double.valueOf(markGroupClassProgressDto.getTaskCount()), 2));
+                    markGroupClassProgressDto.setArbitrateCount(arbitrateCount);
+                }
             }
             return markGroupClassProgressDtoIPage;
         }

+ 27 - 33
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserClassServiceImpl.java

@@ -17,6 +17,7 @@ import com.qmth.teachcloud.mark.dto.mark.setting.MarkUserClassDetailDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkUserClassDto;
 import com.qmth.teachcloud.mark.entity.MarkGroup;
 import com.qmth.teachcloud.mark.entity.MarkUserClass;
+import com.qmth.teachcloud.mark.entity.MarkUserGroup;
 import com.qmth.teachcloud.mark.mapper.MarkUserClassMapper;
 import com.qmth.teachcloud.mark.service.*;
 import org.apache.commons.collections4.CollectionUtils;
@@ -66,26 +67,26 @@ public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, M
         List<MarkGroup> markGroupList = markGroupService.listGroupByExamIdAndPaperNumber(examId, paperNumber);
         List<MarkGroupDto> markGroupDtoList = markGroupList.stream().map(m -> {
             MarkGroupDto markGroupDto = new MarkGroupDto();
-            markGroupDto.setGroupNumber(m.getNumber());
-            markGroupDto.setMarkers(markUserGroupService.listGroupUserByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, m.getNumber(), null));
-            markGroupDto.setGroupQuestions(markQuestionService.assembleGroupQuestionsByExamIdAndPaperNumberAndNumber(examId, paperNumber, m.getNumber()));
+//            markGroupDto.setGroupNumber(m.getNumber());
+//            markGroupDto.setMarkers();
+//            markGroupDto.setGroupQuestions(markQuestionService.assembleGroupQuestionsByExamIdAndPaperNumberAndNumber(examId, paperNumber, m.getNumber()));
             return markGroupDto;
         }).collect(Collectors.toList());
 
+        List<MarkUser> markUserList = markUserGroupService.listGroupUserByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, null, null);
+
         MarkUserClassDto markUserClassDto = new MarkUserClassDto();
         markUserClassDto.setClassNames(paperNumberClassList);
 
         List<MarkUserClassDetailDto> markUserClassDetailDtos = new ArrayList<>();
-        for (MarkGroupDto markGroupDto : markGroupDtoList) {
-            for (MarkUser marker : markGroupDto.getMarkers()) {
-                MarkUserClassDetailDto markUserClassDetailDto = new MarkUserClassDetailDto();
-                markUserClassDetailDto.setGroupNumber(markGroupDto.getGroupNumber());
-                markUserClassDetailDto.setGroupQuestions(markGroupDto.getGroupQuestions());
-                markUserClassDetailDto.setMarker(marker);
-                List<MarkUserClass> markUserClasses = this.baseMapper.listMarkerClassByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, markGroupDto.getGroupNumber(), marker.getUserId());
-                markUserClassDetailDto.setMarkerClassList(markUserClasses.stream().map(MarkUserClass::getClassName).collect(Collectors.toList()));
-                markUserClassDetailDtos.add(markUserClassDetailDto);
-            }
+        for (MarkUser marker : markUserList) {
+            MarkUserClassDetailDto markUserClassDetailDto = new MarkUserClassDetailDto();
+//                markUserClassDetailDto.setGroupNumber(markGroupDto.getGroupNumber());
+//                markUserClassDetailDto.setGroupQuestions(markGroupDto.getGroupQuestions());
+            markUserClassDetailDto.setMarker(marker);
+            List<MarkUserClass> markUserClasses = this.baseMapper.listMarkerClassByExamIdAndPaperNumberAndUserId(examId, paperNumber, marker.getUserId());
+            markUserClassDetailDto.setMarkerClassList(markUserClasses.stream().map(MarkUserClass::getClassName).collect(Collectors.toList()));
+            markUserClassDetailDtos.add(markUserClassDetailDto);
         }
         markUserClassDto.setMarkerClass(markUserClassDetailDtos);
         return markUserClassDto;
@@ -102,29 +103,23 @@ public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, M
         Long examId = markClassUserParams.getExamId();
         String paperNumber = markClassUserParams.getPaperNumber();
 
-        // 校验分组、班级是否绑定完成
+        // 校验班级是否绑定完成
         List<String> listUserClass = markStudentService.listClassByExamIdAndCourseCode(examId, paperNumber);
         if (CollectionUtils.isNotEmpty(listUserClass)) {
-            Map<Integer, Set<String>> groupBindClassMap = new HashMap<>();
-            for (MarkGroupClassUserParams groupUserClassInfo : markClassUserParams.getGroupMarkerClass()) {
-                Integer groupNumber = groupUserClassInfo.getGroupNumber();
-                if (!groupBindClassMap.containsKey(groupNumber)) {
-                    groupBindClassMap.put(groupNumber, new HashSet<>());
-                }
-                groupBindClassMap.get(groupNumber).addAll(groupUserClassInfo.getMarkerClassList());
-            }
-
-            if (!groupBindClassMap.isEmpty()) {
-                StringJoiner stringJoiner = new StringJoiner(";");
-                for (Map.Entry<Integer, Set<String>> entry : groupBindClassMap.entrySet()) {
-                    List<String> groupAllClass = listUserClass;
-                    groupAllClass.removeAll(entry.getValue());
-                    if (CollectionUtils.isNotEmpty(groupAllClass)) {
-                        stringJoiner.add(String.format("班级[%s]在分组[%s]中未被任何评卷员绑定", String.join(",", entry.getValue()), entry.getKey()));
+            List<MarkGroup> markGroupList = markGroupService.listGroupByExamIdAndPaperNumber(examId, paperNumber);
+            for (MarkGroup markGroup : markGroupList) {
+                markGroup.setQuestionList(markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroup.getNumber(), false));
+                Set<String> groupBindClassSet = new HashSet<>();
+                List<MarkUserGroup> markUserGroupList = markUserGroupService.listByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroup.getNumber());
+                for (MarkGroupClassUserParams groupUserClassInfo : markClassUserParams.getGroupMarkerClass()) {
+                    if (markUserGroupList.stream().filter(m -> m.getUserId().equals(groupUserClassInfo.getMarker().getUserId())).count() > 0) {
+                        groupBindClassSet.addAll(groupUserClassInfo.getMarkerClassList());
                     }
                 }
-                if (stringJoiner.toString().length() > 0) {
-                    throw ExceptionResultEnum.ERROR.exception(stringJoiner.toString());
+
+                Collection<String> subtractList = CollectionUtils.subtract(listUserClass, groupBindClassSet);
+                if (CollectionUtils.isNotEmpty(subtractList)) {
+                    throw ExceptionResultEnum.ERROR.exception(String.format("班级[%s]在评阅题目[%s]中未被任何评卷员绑定", String.join(",", subtractList), markGroup.getGroupQuestions()));
                 }
             }
         }
@@ -136,7 +131,6 @@ public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, M
                 markUserClass.setId(SystemConstant.getDbUuid());
                 markUserClass.setExamId(examId);
                 markUserClass.setPaperNumber(paperNumber);
-                markUserClass.setGroupNumber(groupUserClassInfo.getGroupNumber());
                 markUserClass.setClassName(className);
                 markUserClass.setUserId(groupUserClassInfo.getMarker().getUserId());
                 markUserClasses.add(markUserClass);

+ 7 - 5
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -204,13 +204,15 @@
 		AND EXISTS (
 			SELECT mc.id
 			FROM
-			mark_user_class mc,
-			mark_student s
+			mark_user_class mc
+                join
+            mark_user_group mug on mc.exam_id = mug.exam_id and mc.paper_number = mug.paper_number and mc.user_id = mug.user_id
+                join
+			mark_student s on mt.student_id = s.id
 			WHERE
-			mt.student_id = s.id
-			AND	mc.exam_id = #{examId}
+			mc.exam_id = #{examId}
 			AND mc.paper_number = #{paperNumber}
-			AND mc.group_number = #{groupNumber}
+			AND mug.group_number = #{groupNumber}
 			AND mc.user_id = #{userId}
 			AND s.class_name = mc.class_name
 		)

+ 7 - 7
teachcloud-mark/src/main/resources/mapper/MarkUserClassMapper.xml

@@ -4,7 +4,7 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.qmth.teachcloud.mark.entity.MarkUserClass">
-        <id column="Id" property="Id" />
+        <id column="Id" property="id" />
         <result column="exam_id" property="examId" />
         <result column="paper_number" property="paperNumber" />
         <result column="group_number" property="groupNumber" />
@@ -21,28 +21,29 @@
         FROM
             mark_user_class muc
                 LEFT JOIN
+            mark_user_group mug ON muc.exam_id = mug.exam_id AND muc.paper_number = mug.paper_number AND muc.user_id = mug.user_id
+                LEFT JOIN
             sys_user su ON muc.user_id = su.id
                 LEFT JOIN
             sys_org so ON su.org_id = so.id
         WHERE
             muc.exam_id = #{examId}
           AND muc.paper_number = #{paperNumber}
-          AND muc.group_number = #{groupNumber}
+          AND mug.group_number = #{groupNumber}
           AND muc.class_name = #{className}
     </select>
     <select id="pageClassByExamIdAndPaperNumber"
             resultType="com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupClassProgressDto">
         SELECT
-            distinct class_name className,
-            group_number groupNumber
+            distinct class_name className
         FROM
             mark_user_class
         WHERE
             exam_id = #{examId}
           AND paper_number = #{paperNumber}
-        ORDER BY group_number, class_name
+        ORDER BY class_name
     </select>
-    <select id="listMarkerClassByExamIdAndPaperNumberAndGroupNumberAndUserId"
+    <select id="listMarkerClassByExamIdAndPaperNumberAndUserId"
             resultType="com.qmth.teachcloud.mark.entity.MarkUserClass">
         SELECT
             muc.*
@@ -51,7 +52,6 @@
         WHERE
             muc.exam_id = #{examId}
           AND muc.paper_number = #{paperNumber}
-          AND muc.group_number = #{groupNumber}
           AND muc.user_id = #{userId}
     </select>
 

+ 4 - 2
teachcloud-mark/src/main/resources/mapper/MarkUserGroupMapper.xml

@@ -53,7 +53,7 @@
     <select id="listGroupUserByExamIdAndPaperNumberAndGroupNumber"
             resultType="com.qmth.teachcloud.common.bean.dto.mark.MarkUser">
         SELECT
-            su.id userId,
+            distinct su.id userId,
             su.login_name loginName,
             su.real_name name,
             so.name orgName
@@ -66,7 +66,9 @@
         where
             mug.exam_id = #{examId}
             AND mug.paper_number = #{paperNumber}
-            AND mug.group_number = #{groupNumber}
+            <if test="groupNumber != null">
+                AND mug.group_number = #{groupNumber}
+            </if>
             <if test="className != null and className != ''">
                 AND EXISTS (select 1 from mark_user_class muc
                             where mug.exam_id = muc.exam_id