Kaynağa Gözat

3.4.2 update

xiaofei 7 ay önce
ebeveyn
işleme
d63bb5b7bf
22 değiştirilmiş dosya ile 131 ekleme ve 66 silme
  1. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicCardRule.java
  2. 11 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamCard.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamCardMapper.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskDetailMapper.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamCardService.java
  6. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicCardRuleServiceImpl.java
  7. 6 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java
  8. 7 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java
  9. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  10. 1 0
      distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml
  11. 20 12
      distributed-print-business/src/main/resources/mapper/ExamTaskDetailMapper.xml
  12. 3 3
      distributed-print/install/mysql/init/teachcloud_db.sql
  13. 4 0
      distributed-print/install/mysql/upgrade/3.4.1.sql
  14. 2 0
      distributed-print/install/mysql/upgrade/3.4.2.sql
  15. 3 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java
  16. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  17. 1 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PaperTypeEnum.java
  18. 41 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/AbInfoVo.java
  19. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java
  20. 13 23
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java
  21. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserGroupServiceImpl.java
  22. 6 3
      teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicCardRule.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.enums.ExamNumberStyleEnum;
-import com.qmth.distributed.print.business.enums.PaperTypeEnum;
+import com.qmth.teachcloud.common.enums.PaperTypeEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamCard.java

@@ -119,6 +119,9 @@ public class ExamCard extends BaseEntity implements Serializable {
     @TableField(value = "page_size")
     private String pageSize;
 
+    @TableField(value = "open_ab")
+    private Boolean openAb;
+
     @TableField(exist = false)
     private List<SysOrg> orgs;
     @TableField(exist = false)
@@ -328,6 +331,14 @@ public class ExamCard extends BaseEntity implements Serializable {
         this.pageSize = pageSize;
     }
 
+    public Boolean getOpenAb() {
+        return openAb;
+    }
+
+    public void setOpenAb(Boolean openAb) {
+        this.openAb = openAb;
+    }
+
     public List<String> getImageUrls() {
         return imageUrls;
     }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamCardMapper.java

@@ -21,7 +21,7 @@ public interface ExamCardMapper extends BaseMapper<ExamCard> {
 
     List<ExamCard> listGenericCard(@Param("schoolId") Long schoolId, @Param("type") String type, @Param("cardRuleId") Long cardRuleId);
 
-    List<ExamCard> listCustom(@Param("schoolId") Long schoolId, @Param("courseId") Long courseId, @Param("type") String type, @Param("cardRuleId") Long cardRuleId, @Param("paperId") Long paperId, @Param("userId") Long userId);
+    List<ExamCard> listCustom(@Param("schoolId") Long schoolId, @Param("courseId") Long courseId, @Param("type") String type, @Param("cardRuleId") Long cardRuleId, @Param("paperId") Long paperId, @Param("userId") Long userId, @Param("openAb") Boolean openAb);
 
     IPage<ExamCard> listPage(@Param("page") Page<ExamCard> page, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseId") Long courseId, @Param("paperNumber") String paperNumber, @Param("cardType") String cardType, @Param("title") String title, @Param("createMethod") String createMethod, @Param("enable") Boolean enable, @Param("createStartTime") Long createStartTime, @Param("createEndTime") Long createEndTime, @Param("dpr") DataPermissionRule dpr);
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskDetailMapper.java

@@ -24,7 +24,7 @@ public interface ExamTaskDetailMapper extends BaseMapper<ExamTaskDetail> {
 
     List<ExamTaskDetailDto> listPage(@Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("relateType") String relateType, @Param("printPlanIdList") List<Long> printPlanIdList, @Param("courseId") Long courseId, @Param("paperNumber") String paperNumber, @Param("userName") String userName, @Param("dpr") DataPermissionRule dpr);
 
-    List<String> listExamDetailCourse(@Param("schoolId") Long schoolId, @Param("paperType") String paperType, @Param("printPlanId") Long printPlanId, @Param("courseId") Long courseId, @Param("paperNumber") String paperNumber);
+    List<String> listExamDetailCourse(@Param("schoolId") Long schoolId, @Param("serialNumber") String serialNumber, @Param("printPlanId") Long printPlanId, @Param("courseId") Long courseId, @Param("paperNumber") String paperNumber);
     /**
      * 根据examTaskId下载pdf
      *

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamCardService.java

@@ -23,7 +23,7 @@ public interface ExamCardService extends IService<ExamCard> {
 
     Map<String, String> saveExamCard(ExamCardParams examCardParams) throws Exception;
 
-    List<ExamCard> listSelectCard(Long examId, Long courseId, String paperNumber, Long paperId);
+    List<ExamCard> listSelectCard(Long examId, Long courseId, String paperNumber, Long paperId, Boolean openAb);
 
     IPage<ExamCard> listPage(Long semesterId, Long examId, Long courseId, String paperNumber, String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize);
 

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

@@ -12,7 +12,7 @@ import com.qmth.distributed.print.business.entity.ExamCard;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.enums.CardRequiredFieldsEnum;
 import com.qmth.distributed.print.business.enums.ExamNumberStyleEnum;
-import com.qmth.distributed.print.business.enums.PaperTypeEnum;
+import com.qmth.teachcloud.common.enums.PaperTypeEnum;
 import com.qmth.distributed.print.business.mapper.BasicCardRuleMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;

+ 6 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -462,7 +462,12 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
                 List<MarkStudent> markStudentList = new ArrayList<>();
                 Set<String> secretNumberSet = new HashSet<>();
                 MarkPaper finalMarkPaper = markPaper;
-                entry.getValue().forEach(m -> markStudentList.add(markStudentService.assembleByBasicExamStudent(m, finalMarkPaper, secretNumberSet)));
+                entry.getValue().forEach(m -> {
+                    MarkStudent markStudent = markStudentService.assembleByBasicExamStudent(m, finalMarkPaper, secretNumberSet);
+                    if (markStudent != null) {
+                        markStudentList.add(markStudent);
+                    }
+                });
                 if (CollectionUtils.isNotEmpty(markStudentList)) {
                     markStudentService.saveOrUpdateBatch(markStudentList);
                     markPaperService.updateStudentCountByExamIdAndPaperNumber(examId, entry.getKey());

+ 7 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -123,11 +123,6 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
 
                 examCard = new ExamCard();
                 examCard.setSchoolId(schoolId);
-                //            if (Objects.isNull(examCardParams.getTemplateId())) {
-                //                examCard.setOrgId(basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, examCardParams.getCourseCode()));
-                //            } else {
-                //                examCard.setOrgId(user.getOrgId());
-                //            }
                 examCard.setCourseId(examCardParams.getCourseId());
                 examCard.setTitle(title);
                 examCard.setMakeMethod(examCardParams.getMakeMethod());
@@ -137,6 +132,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 examCard.setCardRuleId(examCardParams.getCardRuleId());
                 examCard.setPaperId(examCardParams.getPaperId());
                 examCard.setPageSize(examCardParams.getPageSize());
+                examCard.setOpenAb(examCardParams.getOpenAb());
                 examCard.insertInfo(user.getId());
             }
             // 修改
@@ -155,6 +151,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 examCard = this.getById(examCardParams.getId());
                 examCard.setTitle(title);
                 examCard.setStatus(examCardParams.getStatus());
+                examCard.setOpenAb(examCardParams.getOpenAb());
                 examCard.setUpdateId(user.getId());
                 examCard.setUpdateTime(System.currentTimeMillis());
             }
@@ -183,7 +180,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
     }
 
     @Override
-    public List<ExamCard> listSelectCard(Long examId, Long courseId, String paperNumber, Long paperId) {
+    public List<ExamCard> listSelectCard(Long examId, Long courseId, String paperNumber, Long paperId, Boolean openAb) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examId);
         Long cardRuleId = basicPrintConfig.getCardRuleId();
@@ -200,7 +197,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         // 专卡
         if (SystemConstant.ALL_CARD != cardRuleId) {
             // 只查自己创建的专卡(20230405已改为查询课程下所有题卡,允许复制,不能选择)
-            List<ExamCard> customCards = this.baseMapper.listCustom(sysUser.getSchoolId(), courseId, CardTypeEnum.CUSTOM.name(), cardRuleId, paperId, sysUser.getId());
+            List<ExamCard> customCards = this.baseMapper.listCustom(sysUser.getSchoolId(), courseId, CardTypeEnum.CUSTOM.name(), cardRuleId, paperId, sysUser.getId(), openAb);
             if (!customCards.isEmpty()) {
                 list.addAll(customCards);
             }
@@ -276,7 +273,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 examCard.setEnable(true); // 默认值
                 examCard.setCardRuleId(params.getCardRuleId());
                 examCard.setRemark(params.getRemark());
-                examCard.setPageSize(params.getPageSize());
+                examCard.setPageSize(CardCreateMethodEnum.UPLOAD.equals(params.getCreateMethod()) ? PageSizeEnum.A3.name() : params.getPageSize());
                 examCard.setCreateId(sysUser.getId());
                 examCard.setCreateTime(System.currentTimeMillis());
                 this.save(examCard);
@@ -324,6 +321,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 // 上传题卡,状态为提交
                 examCard.setStatus(CardCreateMethodEnum.UPLOAD.equals(params.getCreateMethod()) ? ExamCardStatusEnum.SUBMIT : ExamCardStatusEnum.valueOf(params.getStatus()));
                 examCard.setRemark(params.getRemark());
+                examCard.setPageSize(CardCreateMethodEnum.UPLOAD.equals(params.getCreateMethod()) ? PageSizeEnum.A3.name() : examCard.getPageSize());
                 examCard.setUpdateId(sysUser.getId());
                 examCard.setUpdateTime(System.currentTimeMillis());
 
@@ -342,8 +340,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                     }
                     htmlContent = teachcloudCommonService.readFileContent(attachment.getPath());
                     examCard.setHtmlContent(htmlContent);
-                    // 上传题卡,状态为提交
-                    examCard.setStatus(ExamCardStatusEnum.SUBMIT);
+
                 }
                 // 方式为自定义
                 else if (CardCreateMethodEnum.STANDARD.equals(params.getCreateMethod()) || CardCreateMethodEnum.FREE.equals(params.getCreateMethod())) {

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -667,6 +667,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             if (sysUser != null) {
                 examTaskDto.setUserId(String.valueOf(sysUser.getId()));
                 examTaskDto.setUserName(sysUser.getRealName());
+                examTaskDto.setUsers(Arrays.asList(sysUser));
+            } else {
+                examTaskDto.setUsers(sysUserList);
             }
             examTaskDto.setUsers(sysUserList);
             examTaskDtos.add(examTaskDto);

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

@@ -40,6 +40,7 @@
                 AND a.paper_id is null
             </if>
             AND a.create_id = #{userId}
+            AND a.open_ab = #{openAb}
         </where>
         order by a.create_time desc
     </select>

+ 20 - 12
distributed-print-business/src/main/resources/mapper/ExamTaskDetailMapper.xml

@@ -36,9 +36,9 @@
             END cardRuleName,
             c.user_id userId,
             f.real_name userName,
-            d.exposed_paper_type exposedPaperType,
-            d.unexposed_paper_type unexposedPaperType,
-            a.paper_type relatePaperType,
+            d.exposedPaperType,
+            d.unexposedPaperType,
+            a.serial_number relatePaperType,
             a.total_subjects totalSubjects,
             a.semester_id AS semesterId,
             a.semester_name AS semesterName,
@@ -53,7 +53,7 @@
             a.semester_name,
             a.print_plan_id,
             b.paper_number,
-            b.paper_type,
+            b.serial_number,
             SUM(b.total_subjects) total_subjects
         FROM
             (select ed.id, ed.school_id, ed.exam_id, be.name exam_name, ed.print_plan_id, bs.id semester_id, bs.name semester_name  from exam_detail ed
@@ -82,14 +82,14 @@
         <where>
             <if test="relateType != null and relateType != ''">
                 <if test="relateType == 'RELATE'">
-                    and b.paper_type is not null
+                    and b.serial_number is not null
                 </if>
                 <if test="relateType == 'NOT_RELATE'">
-                    and b.paper_type is null
+                    and b.serial_number is null
                 </if>
             </if>
         </where>
-        GROUP BY a.school_id , a.exam_id, a.exam_name, a.print_plan_id, a.semester_id, a.semester_name, b.paper_number , b.paper_type) a
+        GROUP BY a.school_id , a.exam_id, a.exam_name, a.print_plan_id, a.semester_id, a.semester_name, b.paper_number , b.serial_number) a
             LEFT JOIN
         exam_task c ON a.school_id = c.school_id
             AND a.exam_id = c.exam_id
@@ -97,7 +97,15 @@
             LEFT JOIN
         basic_course bc ON c.course_id = bc.id
             LEFT JOIN
-        exam_task_detail d ON c.id = d.exam_task_id
+        (SELECT
+            etd.exam_task_id,
+            GROUP_CONCAT(CASE etd.exposed WHEN 1 THEN etd.serial_number ELSE NULL END) exposedPaperType,
+            GROUP_CONCAT(CASE etd.exposed WHEN 0 THEN etd.serial_number ELSE NULL END) unexposedPaperType
+        FROM
+            exam_task_detail etd
+        WHERE
+            exists (select 1 from exam_task et where exam_id = #{examId} and etd.exam_task_id = et.id)
+            GROUP BY exam_task_id) d ON c.id = d.exam_task_id
             LEFT JOIN
         basic_card_rule e ON c.card_rule_id = e.id
             LEFT JOIN
@@ -145,11 +153,11 @@
             <if test="schoolId != null and schoolId != ''">
                 and a.school_id = #{schoolId}
             </if>
-            <if test="paperType != null">
-                and b.paper_type = #{paperType}
+            <if test="serialNumber != null">
+                and b.serial_number = #{serialNumber}
             </if>
-            <if test="paperType == null">
-                and b.paper_type is null
+            <if test="serialNumber == null">
+                and b.serial_number is null
             </if>
             <if test="printPlanId != null and printPlanId != ''">
                 and a.print_plan_id = #{printPlanId}

+ 3 - 3
distributed-print/install/mysql/init/teachcloud_db.sql

@@ -3105,9 +3105,9 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (493, '科组长登录', '/api/admin/exam/sso/marker_leader_login', 'URL', 491, 4, 'SYS', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (494, '报告数据', '/api/admin/mark/archive/score/report', 'URL', 489, 1, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (495, '分班阅(开关)', 'OpenClassReading', 'BUTTON', 897, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (498, '列表', 'List', 'LIST', 487, 1, 'AUTH', '542', 1, 0, 1);
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (499, '查询条件', 'Condition', 'CONDITION', 487, 1, 'AUTH', '542', 1, 0, 1);
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (500, '查询', 'Select', 'BUTTON', 487, 1, 'AUTH', '542', 1, 0, 1);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (498, '列表', 'List', 'LIST', 487, 1, 'AUTH', '542,959,1139', 1, 0, 1);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (499, '查询条件', 'Condition', 'CONDITION', 487, 1, 'AUTH', '542,959,1139', 1, 0, 1);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (500, '查询', 'Select', 'BUTTON', 487, 1, 'AUTH', '542,959,1139', 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (506, '归档管理', 'ScoreArchiveManage', 'MENU', NULL, 7, NULL, NULL, 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (507, '菜单管理', 'MenuManage', 'MENU', 1, 7, NULL, NULL, 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (508, '自定义菜单', 'CustomMenu', 'MENU', 507, 1, NULL, NULL, 1, 0, 1);

+ 4 - 0
distributed-print/install/mysql/upgrade/3.4.1.sql

@@ -96,3 +96,7 @@ CREATE TABLE `t_s_job_log` (
 
 UPDATE `sys_privilege` SET `related` = '66,169,441,442,445,482,839' WHERE (`id` = '274');
 UPDATE `sys_privilege` SET `related` = '67,68' WHERE (`id` = '273');
+
+UPDATE `sys_privilege` SET `related` = '542,959,1139' WHERE (`id` = '498');
+UPDATE `sys_privilege` SET `related` = '542,959,1139' WHERE (`id` = '499');
+UPDATE `sys_privilege` SET `related` = '542,959,1139' WHERE (`id` = '500');

+ 2 - 0
distributed-print/install/mysql/upgrade/3.4.2.sql

@@ -140,3 +140,5 @@ ALTER TABLE `mark_reject_history` CHANGE COLUMN `paper_number` `paper_number` VA
 ALTER TABLE `t_b_sync_task` CHANGE COLUMN `paper_number` `paper_number` VARCHAR(100) NULL DEFAULT NULL COMMENT '试卷编号' ;
 ALTER TABLE `t_b_task` CHANGE COLUMN `paper_number` `paper_number` VARCHAR(100) NULL DEFAULT NULL COMMENT '试卷编号' ;
 ALTER TABLE `t_sync_exam_student_score` CHANGE COLUMN `paper_number` `paper_number` VARCHAR(100) NULL DEFAULT NULL COMMENT '试卷编号' ;
+
+ALTER TABLE `exam_card` ADD COLUMN `open_ab` TINYINT(1) NULL DEFAULT 0 COMMENT '是否AB卷(AB卷题卡)' AFTER `page_size`;

+ 3 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java

@@ -143,8 +143,9 @@ public class ExamCardController {
     public Result selectCardList(@ApiParam(value = "考试ID") @RequestParam Long examId,
                                  @ApiParam(value = "课程ID") @RequestParam Long courseId,
                                  @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
-                                 @ApiParam(value = "题库试卷ID") @RequestParam(required = false) Long paperId) {
-        List<ExamCard> list = examCardService.listSelectCard(examId, courseId, paperNumber, paperId);
+                                 @ApiParam(value = "题库试卷ID") @RequestParam(required = false) Long paperId,
+                                 @ApiParam(value = "是否开启AB卷") @RequestParam(required = false, defaultValue = "false") Boolean openAb) {
+        List<ExamCard> list = examCardService.listSelectCard(examId, courseId, paperNumber, paperId, openAb);
         return ResultUtil.ok(list);
     }
 

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -152,7 +152,7 @@ public class ExamTaskController {
             if (Objects.isNull(basicAttachment)) {
                 throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
             } else {
-                ExamTaskImportResultDto examTaskImportResultDto = examTaskService.importFile(file);
+                ExamTaskImportResultDto examTaskImportResultDto = examTaskService.importFile1(file);
                 return ResultUtil.ok(examTaskImportResultDto);
             }
         } catch (Exception e) {

+ 1 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/PaperTypeEnum.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PaperTypeEnum.java

@@ -1,6 +1,4 @@
-package com.qmth.distributed.print.business.enums;
-
-import com.qmth.teachcloud.common.enums.EnumResult;
+package com.qmth.teachcloud.common.enums;
 
 import java.util.ArrayList;
 import java.util.List;

+ 41 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/AbInfoVo.java

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.mark.dto.mark;
+
+import com.qmth.teachcloud.common.enums.PaperTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 考试考生库
+ * </p>
+ *
+ * @author xf
+ * @since 2023-09-22
+ */
+public class AbInfoVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "是否开启AB卷")
+    private Boolean openAb;
+
+    @ApiModelProperty(value = "Ab卷版式")
+    private PaperTypeEnum paperTypeStyle;
+
+    public Boolean getOpenAb() {
+        return openAb;
+    }
+
+    public void setOpenAb(Boolean openAb) {
+        this.openAb = openAb;
+    }
+
+    public PaperTypeEnum getPaperTypeStyle() {
+        return paperTypeStyle;
+    }
+
+    public void setPaperTypeStyle(PaperTypeEnum paperTypeStyle) {
+        this.paperTypeStyle = paperTypeStyle;
+    }
+}

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

@@ -13,6 +13,7 @@ import com.qmth.teachcloud.mark.bean.student.MarkStudentQuery;
 import com.qmth.teachcloud.mark.bean.student.StudentQuery;
 import com.qmth.teachcloud.mark.bean.student.StudentVo;
 import com.qmth.teachcloud.mark.dto.UnexistStudentDto;
+import com.qmth.teachcloud.mark.dto.mark.AbInfoVo;
 import com.qmth.teachcloud.mark.dto.mark.MarkStudentVo;
 import com.qmth.teachcloud.mark.dto.mark.score.StudentScoreDetailDto;
 import com.qmth.teachcloud.mark.entity.MarkStudent;
@@ -138,5 +139,5 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
      * @param paperNumber 试卷编号
      * @return 是否开启
      */
-    Boolean findExamTaskPaperTypeOpenStatus(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
+    AbInfoVo findExamTaskPaperTypeOpenStatus(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 }

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

@@ -23,10 +23,7 @@ import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.vo.FilePathVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
-import com.qmth.teachcloud.common.enums.BasicExamStudentStatusEnum;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.enums.PageSizeEnum;
-import com.qmth.teachcloud.common.enums.ScanStatus;
+import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
 import com.qmth.teachcloud.common.service.BasicCourseService;
@@ -49,10 +46,7 @@ import com.qmth.teachcloud.mark.bean.student.StudentQuery;
 import com.qmth.teachcloud.mark.bean.student.StudentVo;
 import com.qmth.teachcloud.mark.dto.ScanOmrTaskStatusDto;
 import com.qmth.teachcloud.mark.dto.UnexistStudentDto;
-import com.qmth.teachcloud.mark.dto.mark.MarkQuestionAnswerVo;
-import com.qmth.teachcloud.mark.dto.mark.MarkStudentVo;
-import com.qmth.teachcloud.mark.dto.mark.ScoreInfo;
-import com.qmth.teachcloud.mark.dto.mark.ScoreItem;
+import com.qmth.teachcloud.mark.dto.mark.*;
 import com.qmth.teachcloud.mark.dto.mark.manage.Task;
 import com.qmth.teachcloud.mark.dto.mark.score.*;
 import com.qmth.teachcloud.mark.entity.*;
@@ -543,7 +537,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         }
         Long examId = student.getExamId();
         String paperNumber = student.getPaperNumber();
-        Boolean openAb = this.baseMapper.findExamTaskPaperTypeOpenStatus(examId, paperNumber);
+        AbInfoVo abInfoVo = this.baseMapper.findExamTaskPaperTypeOpenStatus(examId, paperNumber);
 
         // 重置状态
         student.setIncomplete(false);
@@ -579,16 +573,13 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                 PaperTypeCheckStatus paperTypeCheckStatus = PaperTypeCheckStatus.NORMAL;
                 // 根据卷型识别结果更新考生卷型,如果卷型识别结果异常则添加到卷型检查中
                 StringResult paperTypeResult = page.getPaperType();
-                String paperType;
-                if (!openAb) {
-                    // 不开启卷型默认A卷 正常
-                    paperType = "A";
-                } else {
+
+                if (abInfoVo.getOpenAb() && PaperTypeEnum.FILL.equals(abInfoVo.getPaperTypeStyle())) {
                     if (Objects.isNull(paperTypeResult)) {
                         // 卷型为空 (正常不会出现这种情况)
                         throw ExceptionResultEnum.ERROR.exception("开启卷型的试卷未检测到识别的卷型");
                     }
-                    paperType = paperTypeResult.getResult();
+                    String paperType = paperTypeResult.getResult();
                     if (!SystemConstant.strNotNull(paperType)) {
                         // 卷型为空 (正常不会出现这种情况)
                         throw ExceptionResultEnum.ERROR.exception("开启卷型的试卷未检测到识别的卷型");
@@ -605,10 +596,10 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                         // 没有识别到卷型
                         paperTypeCheckStatus = PaperTypeCheckStatus.WAITING;
                     }
-
+                    student.setPaperType(paperType);
+                    student.setPaperTypeCheckStatus(paperTypeCheckStatus);
                 }
-                student.setPaperType(paperType);
-                student.setPaperTypeCheckStatus(paperTypeCheckStatus);
+
             }
 
             List<ScanPaperPage> scanPaperPages = scanPaperPageService.listByPaperId(studentPaper.getPaperId());
@@ -1281,14 +1272,13 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             fileOut.close();
 
             // 通过教学班聚合
-            Map<CellValue, List<CellValue[]>> listMap = columnValues.stream().collect(Collectors.groupingBy(m -> m[3]));
-            Set<Map.Entry<CellValue, List<CellValue[]>>> entrySet = listMap.entrySet();
+            Map<Object, List<CellValue[]>> listMap = columnValues.stream().collect(Collectors.groupingBy(m -> getCellValueFieldValue("value", m[3])));
+            Set<Map.Entry<Object, List<CellValue[]>>> entrySet = listMap.entrySet();
             if (entrySet.size() > 1) {
-                for (Map.Entry<CellValue, List<CellValue[]>> entry : entrySet) {
+                for (Map.Entry<Object, List<CellValue[]>> entry : entrySet) {
                     writer = ExcelWriter.create(ExcelType.XLSX);
                     writer.writeDataArrays("成绩单", null, columnNames, entry.getValue().listIterator());
-                    Object value = getCellValueFieldValue("value", entry.getKey());
-                    FileOutputStream classFileOut = new FileOutputStream(downloadFilePath + File.separator + basicCourse.getName() + "-" + value + "成绩单" + SystemConstant.EXCEL_PREFIX);
+                    FileOutputStream classFileOut = new FileOutputStream(downloadFilePath + File.separator + basicCourse.getName() + "-" + entry.getKey() + "成绩单" + SystemConstant.EXCEL_PREFIX);
                     writer.output(classFileOut);
                     classFileOut.flush();
                     classFileOut.close();

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

@@ -80,9 +80,9 @@ public class MarkUserGroupServiceImpl extends ServiceImpl<MarkUserGroupMapper, M
                 if (CollectionUtils.isNotEmpty(markUserClassList)) {
                     classNames = markUserClassList.stream().map(MarkUserClass::getClassName).collect(Collectors.toList());
                 }
-                taskCount = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn(examId, record.getPaperNumber(), record.getGroupNumber(), sysUser.getId(), classNames);
+                taskCount = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn(examId, record.getPaperNumber(), record.getGroupNumber(), null, classNames);
                 record.setTaskCount(taskCount);
-                markedCount = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn(examId, record.getPaperNumber(), record.getGroupNumber(), sysUser.getId(), classNames, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
+                markedCount = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndUserIdAndAndClassNameStatusIn(examId, record.getPaperNumber(), record.getGroupNumber(), null, classNames, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
                 record.setMarkedCount(markedCount);
             }
             record.setLeftCount(taskCount == 0 ? 0 : taskCount - markedCount);

+ 6 - 3
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -987,11 +987,14 @@
         where
             ms.id = #{studentId}
     </select>
-    <select id="findExamTaskPaperTypeOpenStatus" resultType="java.lang.Boolean">
+    <select id="findExamTaskPaperTypeOpenStatus" resultType="com.qmth.teachcloud.mark.dto.mark.AbInfoVo">
         SELECT
-            open_ab
+            et.open_ab openAb,
+            bcr.paper_type paperTypeStyle
         FROM
-            exam_task
+            exam_task et
+                LEFT JOIN
+            basic_card_rule bcr ON et.card_rule_id = bcr.id
         <where>
             <if test="examId != null">
                 AND exam_id = #{examId}