xiaofei 1 år sedan
förälder
incheckning
d69c641db0
20 ändrade filer med 145 tillägg och 90 borttagningar
  1. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskDetailService.java
  2. 16 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java
  3. 8 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailCourseServiceImpl.java
  5. 4 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  6. 56 39
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  7. 0 5
      distributed-print-business/src/main/resources/db/log/脚本-caozx.sql
  8. 10 0
      distributed-print/install/mysql/upgrade/3.3.1.sql
  9. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java
  10. 2 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintTaskController.java
  11. 13 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkStudent.java
  12. 0 12
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkUserClass.java
  13. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java
  14. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkUserClassService.java
  15. 4 4
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java
  16. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java
  17. 9 4
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java
  18. 2 5
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkUserClassServiceImpl.java
  19. 12 1
      teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml
  20. 0 1
      teachcloud-mark/src/main/resources/mapper/MarkUserClassMapper.xml

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailDto;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailDto;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailPdfDownloadDto;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailPdfDownloadDto;
 import com.qmth.distributed.print.business.bean.params.RelatePaperParam;
 import com.qmth.distributed.print.business.bean.params.RelatePaperParam;
+import com.qmth.distributed.print.business.entity.ExamDetailCourse;
 import com.qmth.distributed.print.business.entity.ExamTaskDetail;
 import com.qmth.distributed.print.business.entity.ExamTaskDetail;
 
 
 import java.io.IOException;
 import java.io.IOException;
@@ -66,4 +67,6 @@ public interface ExamTaskDetailService extends IService<ExamTaskDetail> {
     boolean cancel(Long id, String cancelRemark);
     boolean cancel(Long id, String cancelRemark);
 
 
     ExamTaskDetail getByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber);
     ExamTaskDetail getByExamIdAndCourseCodeAndPaperNumber(Long examId, String courseCode, String paperNumber);
+
+    void updateExposePaperType(Long examId, List<ExamDetailCourse> listByExamDetailId);
 }
 }

+ 16 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -134,13 +134,24 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         BasicExam basicExam = basicExamService.getById(basicExamStudentParam.getExamId());
         BasicExam basicExam = basicExamService.getById(basicExamStudentParam.getExamId());
         BasicExamStudent basicExamStudent = this.editEntityHelp(basicExamStudentParam, basicExam, requestUser);
         BasicExamStudent basicExamStudent = this.editEntityHelp(basicExamStudentParam, basicExam, requestUser);
         this.saveOrUpdate(basicExamStudent);
         this.saveOrUpdate(basicExamStudent);
-        if (StringUtils.isNotBlank(basicExamStudent.getPaperNumber())) {
-            MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber());
+        MarkPaper markPaper = null;
+        if (ExamModelEnum.MODEL4.equals(basicExam.getExamModel())) {
+            if (StringUtils.isBlank(basicExamStudent.getPaperNumber())) {
+                throw ExceptionResultEnum.ERROR.exception("试卷编号不能为空");
+            }
+            markPaper = markPaperService.getByExamIdAndPaperNumber(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber());
             if (markPaper == null) {
             if (markPaper == null) {
+                // 模式4,不存在试卷,则创建
                 BasicCourse basicCourse = basicCourseService.getByCode(basicExamStudent.getCourseCode());
                 BasicCourse basicCourse = basicCourseService.getByCode(basicExamStudent.getCourseCode());
                 markPaper = new MarkPaper(basicExamStudent.getExamId(), basicExamStudent.getCourseCode(), basicCourse.getName(), basicExamStudent.getPaperNumber(), String.valueOf(System.currentTimeMillis()), requestUser.getId(), SystemConstant.DEFAULT_PAPER_TYPE_A);
                 markPaper = new MarkPaper(basicExamStudent.getExamId(), basicExamStudent.getCourseCode(), basicCourse.getName(), basicExamStudent.getPaperNumber(), String.valueOf(System.currentTimeMillis()), requestUser.getId(), SystemConstant.DEFAULT_PAPER_TYPE_A);
                 markPaperService.save(markPaper);
                 markPaperService.save(markPaper);
             }
             }
+        } else if (ExamModelEnum.MODEL1.equals(basicExam.getExamModel())) {
+            if (StringUtils.isNotBlank(basicExamStudent.getPaperNumber())) {
+                markPaper = markPaperService.getByExamIdAndPaperNumber(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber());
+            }
+        }
+        if (markPaper != null) {
             // 同步更新扫描阅卷考生表
             // 同步更新扫描阅卷考生表
             markStudentService.updateByBasicExamStudent(basicExamStudent, markPaper, new HashSet<>());
             markStudentService.updateByBasicExamStudent(basicExamStudent, markPaper, new HashSet<>());
             markPaperService.updateStudentCountByExamIdAndPaperNumberAndPaperType(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber(), SystemConstant.DEFAULT_PAPER_TYPE_A);
             markPaperService.updateStudentCountByExamIdAndPaperNumberAndPaperType(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber(), SystemConstant.DEFAULT_PAPER_TYPE_A);
@@ -177,11 +188,11 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
             List<BasicExamStudent> basicExamStudentList = this.listByIds(idList);
             List<BasicExamStudent> basicExamStudentList = this.listByIds(idList);
             for (BasicExamStudent basicExamStudent : basicExamStudentList) {
             for (BasicExamStudent basicExamStudent : basicExamStudentList) {
                 MarkStudent markStudent = markStudentService.findByExamIdAndPaperNumberAndStudentCode(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode());
                 MarkStudent markStudent = markStudentService.findByExamIdAndPaperNumberAndStudentCode(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode());
-                if (markStudent != null && !markStudent.getUpload()) {
-                    markStudentService.deleteByExamIdAndPaperNumberAndStudentCode(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode());
+                if (markStudent != null && markStudent.getUpload()) {
+                    throw ExceptionResultEnum.ERROR.exception("考生已扫描,无法删除");
                 }
                 }
+                markStudentService.deleteByExamIdAndPaperNumberAndStudentCode(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode());
             }
             }
-
             this.removeByIds(idList);
             this.removeByIds(idList);
             basicExamStudentList.stream().map(BasicExamStudent::getClazzId).distinct().forEach(e -> basicTeachClazzService.deleteFreeClazz(e));
             basicExamStudentList.stream().map(BasicExamStudent::getClazzId).distinct().forEach(e -> basicTeachClazzService.deleteFreeClazz(e));
         }
         }

+ 8 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -106,7 +106,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         if (examCardParams.getId() == null) {
         if (examCardParams.getId() == null) {
             validateCardData(examCardParams);
             validateCardData(examCardParams);
 
 
-            String title = examCardParams.getTitle()+SystemConstant.generateRandomNumber(4);
+            String title = examCardParams.getPaperId() != null ? examCardParams.getTitle() + SystemConstant.generateRandomNumber(4) : examCardParams.getTitle();
 
 
             QueryWrapper<ExamCard> queryWrapper = new QueryWrapper<>();
             QueryWrapper<ExamCard> queryWrapper = new QueryWrapper<>();
             queryWrapper.lambda().eq(ExamCard::getSchoolId, schoolId)
             queryWrapper.lambda().eq(ExamCard::getSchoolId, schoolId)
@@ -137,7 +137,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         }
         }
         // 修改
         // 修改
         else {
         else {
-            String title = examCardParams.getTitle()+SystemConstant.generateRandomNumber(4);
+            String title = examCardParams.getTitle();
             QueryWrapper<ExamCard> queryWrapper = new QueryWrapper<>();
             QueryWrapper<ExamCard> queryWrapper = new QueryWrapper<>();
             queryWrapper.lambda().eq(ExamCard::getSchoolId, schoolId)
             queryWrapper.lambda().eq(ExamCard::getSchoolId, schoolId)
                     .eq(ExamCard::getCourseCode, examCardParams.getCourseCode())
                     .eq(ExamCard::getCourseCode, examCardParams.getCourseCode())
@@ -480,9 +480,13 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
 
 
     @Override
     @Override
     public List<CardJpgResult> listCardImage(Long examId, String paperNumber, String paperType) {
     public List<CardJpgResult> listCardImage(Long examId, String paperNumber, String paperType) {
-        Long examTaskId = examTaskService.getOne(new QueryWrapper<ExamTask>().lambda()
+        ExamTask examTask = examTaskService.getOne(new QueryWrapper<ExamTask>().lambda()
                 .eq(ExamTask::getExamId, examId)
                 .eq(ExamTask::getExamId, examId)
-                .eq(ExamTask::getPaperNumber, paperNumber)).getId();
+                .eq(ExamTask::getPaperNumber, paperNumber));
+        if (examTask == null) {
+            return new ArrayList<>();
+        }
+        Long examTaskId = examTask.getId();
         ExamTaskDetail examTaskDetail = examTaskDetailService.getOne(new QueryWrapper<ExamTaskDetail>().lambda()
         ExamTaskDetail examTaskDetail = examTaskDetailService.getOne(new QueryWrapper<ExamTaskDetail>().lambda()
                 .eq(ExamTaskDetail::getExamTaskId, examTaskId));
                 .eq(ExamTaskDetail::getExamTaskId, examTaskId));
         List<CardJpgResult> cardJpgResultList = new ArrayList<>();
         List<CardJpgResult> cardJpgResultList = new ArrayList<>();

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

@@ -187,7 +187,7 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
                 singleExamStudentAddParam.getStudentCode(), singleExamStudentAddParam.getStudentName(),
                 singleExamStudentAddParam.getStudentCode(), singleExamStudentAddParam.getStudentName(),
                 examDetail.getPackageCode(), examDetail.getExamPlace(), examDetail.getExamRoom(),
                 examDetail.getPackageCode(), examDetail.getExamPlace(), examDetail.getExamRoom(),
                 singleExamStudentAddParam.getCollege(), singleExamStudentAddParam.getMajorName(), singleExamStudentAddParam.getClassName(),
                 singleExamStudentAddParam.getCollege(), singleExamStudentAddParam.getMajorName(), singleExamStudentAddParam.getClassName(),
-                null, examDetail.getExamStartTime(), examDetail.getExamEndTime(), examTask.getUserId());
+                null, null, examDetail.getExamStartTime(), examDetail.getExamEndTime(), examTask.getUserId());
         if (markStudent.getSecretNumber() == null) {
         if (markStudent.getSecretNumber() == null) {
             markStudent.randomSecretNumber();
             markStudent.randomSecretNumber();
             while (markStudentService.countByExamIdAndSecretNumber(markStudent.getExamId(), markStudent.getSecretNumber()) > 0) {
             while (markStudentService.countByExamIdAndSecretNumber(markStudent.getExamId(), markStudent.getSecretNumber()) > 0) {

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

@@ -534,7 +534,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             throw ExceptionResultEnum.ERROR.exception("考场待印刷状态才可完成");
             throw ExceptionResultEnum.ERROR.exception("考场待印刷状态才可完成");
         }
         }
 
 
-        // 修改考场状态为待印刷
+        // 修改考场状态为已完成
         UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
         UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.FINISH)
         updateWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.FINISH)
                 .set(ExamDetail::getPrintStartTime, System.currentTimeMillis())
                 .set(ExamDetail::getPrintStartTime, System.currentTimeMillis())
@@ -544,6 +544,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
 
         // 所有考场打印完成,更新印刷计划状态
         // 所有考场打印完成,更新印刷计划状态
         examPrintPlanService.updateFinishStatus(examDetail.getPrintPlanId());
         examPrintPlanService.updateFinishStatus(examDetail.getPrintPlanId());
+
+        // 更新曝光卷型
+        examTaskDetailService.updateExposePaperType(examDetail.getExamId(), examDetailCourseService.listByExamDetailId(examDetail.getId()));
         return true;
         return true;
     }
     }
 
 

+ 56 - 39
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -13,17 +13,13 @@ import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.mapper.ExamTaskDetailMapper;
 import com.qmth.distributed.print.business.mapper.ExamTaskDetailMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
-import com.qmth.teachcloud.common.bean.dto.MqDto;
-import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ExamTaskUtil;
 import com.qmth.teachcloud.common.util.ExamTaskUtil;
-import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.service.MarkService;
 import com.qmth.teachcloud.mark.service.MarkService;
 import com.qmth.teachcloud.mark.service.ScanPaperService;
 import com.qmth.teachcloud.mark.service.ScanPaperService;
@@ -31,7 +27,6 @@ import org.activiti.engine.TaskService;
 import org.activiti.engine.task.Task;
 import org.activiti.engine.task.Task;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
@@ -385,45 +380,43 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         List<ExamDetail> examDetailList = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber());
         List<ExamDetail> examDetailList = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber());
         if (CollectionUtils.isNotEmpty(examDetailList)) {
         if (CollectionUtils.isNotEmpty(examDetailList)) {
             ExamTaskDetail taskDetail = this.getByExamTaskId(examTaskDetail.getExamTaskId());
             ExamTaskDetail taskDetail = this.getByExamTaskId(examTaskDetail.getExamTaskId());
-            if (StringUtils.isNotBlank(taskDetail.getExposedPaperType())) {
-                List<Long> examDetailIds = examDetailList.stream().map(ExamDetail::getId).collect(Collectors.toList());
-                QueryWrapper<ExamDetailCourse> queryWrapper = new QueryWrapper<>();
-                queryWrapper.lambda().in(ExamDetailCourse::getExamDetailId, examDetailIds);
-                List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(queryWrapper);
-                Set<String> paperTypeSet = new HashSet<>();
-                for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
-                    // 考场内任一课程有扫描数据,不允许打回
-                    boolean isScanPaper = scanPaperService.isScanByExamIdAndPaperNumber(examTask.getExamId(), examDetailCourse.getPaperNumber());
-                    if (isScanPaper) {
-                        throw ExceptionResultEnum.ERROR.exception("有课程已开始扫描,无法打回");
-                    }
-                    if (StringUtils.isNotBlank(examDetailCourse.getPaperType())) {
-                        paperTypeSet.addAll(Arrays.asList(examDetailCourse.getPaperType().split(",")));
-                    }
+            List<Long> examDetailIds = examDetailList.stream().map(ExamDetail::getId).collect(Collectors.toList());
+            QueryWrapper<ExamDetailCourse> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().in(ExamDetailCourse::getExamDetailId, examDetailIds);
+            List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(queryWrapper);
+            Set<String> paperTypeSet = new HashSet<>();
+            for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
+                // 考场内任一课程有扫描数据,不允许打回
+                boolean isScanPaper = scanPaperService.isScanByExamIdAndPaperNumber(examTask.getExamId(), examDetailCourse.getPaperNumber());
+                if (isScanPaper) {
+                    throw ExceptionResultEnum.ERROR.exception("有课程已开始扫描,无法打回");
                 }
                 }
-
-                // 已打印任务,必须先作废,未打印任务,必须先撤回。才允许打回
-                long count = examDetailList.stream().filter(m -> (ExamDetailStatusEnum.FINISH.equals(m.getStatus()) && m.getNormal()) || ExamDetailStatusEnum.WAITING.equals(m.getStatus())).count();
-                if (count > 0) {
-                    throw ExceptionResultEnum.ERROR.exception("印刷任务有已打印且未作废或者未撤回数据,无法打回");
+                if (StringUtils.isNotBlank(examDetailCourse.getPaperType())) {
+                    paperTypeSet.addAll(Arrays.asList(examDetailCourse.getPaperType().split(",")));
                 }
                 }
+            }
 
 
-                // 修改已曝光和未曝光类型
-                List<String> exposedPaperTypeList = new ArrayList<>(Arrays.asList(taskDetail.getExposedPaperType().split(",")));
-                List<String> unexposedPaperTypeList = StringUtils.isNotBlank(taskDetail.getUnexposedPaperType()) ? new ArrayList<>(Arrays.asList(taskDetail.getUnexposedPaperType().split(","))) : new ArrayList<>();
-                for (String exposePaperType : paperTypeSet) {
-                    if (exposedPaperTypeList.contains(exposePaperType)) {
-                        exposedPaperTypeList.remove(exposePaperType);
-                        unexposedPaperTypeList.add(exposePaperType);
-                    }
+            // 已打印任务,必须先作废,未打印任务,必须先撤回。才允许打回
+            long count = examDetailList.stream().filter(m -> ExamDetailStatusEnum.FINISH.equals(m.getStatus()) || ExamDetailStatusEnum.WAITING.equals(m.getStatus())).count();
+            if (count > 0) {
+                throw ExceptionResultEnum.ERROR.exception("印刷任务有已打印或待印刷数据,无法打回");
+            }
+
+            // 修改已曝光和未曝光类型
+            List<String> exposedPaperTypeList = new ArrayList<>(Arrays.asList(taskDetail.getExposedPaperType().split(",")));
+            List<String> unexposedPaperTypeList = StringUtils.isNotBlank(taskDetail.getUnexposedPaperType()) ? new ArrayList<>(Arrays.asList(taskDetail.getUnexposedPaperType().split(","))) : new ArrayList<>();
+            for (String exposePaperType : paperTypeSet) {
+                if (exposedPaperTypeList.contains(exposePaperType)) {
+                    exposedPaperTypeList.remove(exposePaperType);
+                    unexposedPaperTypeList.add(exposePaperType);
                 }
                 }
-                exposedPaperTypeList.sort(Comparator.comparing(String::toString));
-                unexposedPaperTypeList.sort(Comparator.comparing(String::toString));
-                taskDetail.setExposedPaperType(CollectionUtils.isEmpty(exposedPaperTypeList) ? null : String.join(",", exposedPaperTypeList));
-                taskDetail.setUnexposedPaperType(String.join(",", unexposedPaperTypeList));
-                taskDetail.setRelatePaperType(null);
-                this.updateById(taskDetail);
             }
             }
+            exposedPaperTypeList.sort(Comparator.comparing(String::toString));
+            unexposedPaperTypeList.sort(Comparator.comparing(String::toString));
+            taskDetail.setExposedPaperType(CollectionUtils.isEmpty(exposedPaperTypeList) ? null : String.join(",", exposedPaperTypeList));
+            taskDetail.setUnexposedPaperType(String.join(",", unexposedPaperTypeList));
+            taskDetail.setRelatePaperType(null);
+            this.updateById(taskDetail);
 
 
             StringJoiner stringJoiner = new StringJoiner("_");
             StringJoiner stringJoiner = new StringJoiner("_");
             stringJoiner.add(String.valueOf(examTask.getExamId())).add(examTask.getPaperNumber()).add(String.valueOf(examDetailList.get(0).getExamStartTime())).add(String.valueOf(examDetailList.get(0).getExamEndTime()));
             stringJoiner.add(String.valueOf(examTask.getExamId())).add(examTask.getPaperNumber()).add(String.valueOf(examDetailList.get(0).getExamStartTime())).add(String.valueOf(examDetailList.get(0).getExamEndTime()));
@@ -687,6 +680,30 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         return this.getByExamTaskId(examTask.getId());
         return this.getByExamTaskId(examTask.getId());
     }
     }
 
 
+    @Override
+    public void updateExposePaperType(Long examId, List<ExamDetailCourse> examDetailCourses) {
+        // 更新曝光卷型、未曝光卷型
+        for (ExamDetailCourse examDetailCourse : examDetailCourses) {
+            ExamTaskDetail examTaskDetail = this.getByExamIdAndCourseCodeAndPaperNumber(examId, examDetailCourse.getCourseCode(), examDetailCourse.getPaperNumber());
+            // 考生使用卷型
+            List<String> studentPaperTypes = examStudentService.listPaperTypeByExamDetailCourseId(String.valueOf(examDetailCourse.getId()));
+            List<String> paperTypeList = Objects.isNull(examTaskDetail.getPaperType()) ? new ArrayList<>() : Arrays.asList(examTaskDetail.getPaperType().split(","));
+            List<String> exposedPaperTypeList = Objects.isNull(examTaskDetail.getExposedPaperType()) ? new ArrayList<>() : Arrays.asList(examTaskDetail.getExposedPaperType().split(","));
+            // 曝光卷型
+            List<String> unionList = (List<String>) CollectionUtils.union(exposedPaperTypeList, studentPaperTypes);
+            // 未曝光卷型
+            List<String> subtractList = (List<String>) CollectionUtils.subtract(paperTypeList, unionList);
+            UpdateWrapper<ExamTaskDetail> examTaskDetailUpdateWrapper = new UpdateWrapper<>();
+            String exposedPaper = String.join(",", unionList);
+            String unexposedPaper = String.join(",", subtractList);
+            examTaskDetailUpdateWrapper.lambda()
+                    .set(ExamTaskDetail::getExposedPaperType, StringUtils.isBlank(exposedPaper) ? null : exposedPaper)
+                    .set(ExamTaskDetail::getUnexposedPaperType, StringUtils.isBlank(unexposedPaper) ? null : unexposedPaper)
+                    .eq(ExamTaskDetail::getExamTaskId, examTaskDetail.getExamTaskId());
+            this.update(examTaskDetailUpdateWrapper);
+        }
+    }
+
     /**
     /**
      * 卷库校验
      * 卷库校验
      *
      *

+ 0 - 5
distributed-print-business/src/main/resources/db/log/脚本-caozx.sql

@@ -1,5 +0,0 @@
-ALTER TABLE `teach_course`
-    DROP COLUMN `basic_course_id`;
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1132', '客观题模板导出', '/api/admin/mark/question/objective/export', 'URL', '897', '15', 'AUTH', '1', '1', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1133', '客观题标答导入', '/api/admin/mark/question/objective/import', 'URL', '897', '16', 'AUTH', '1', '1', '1');
-UPDATE `sys_privilege` SET `related` = '672,902,903,904,905,906,907,908,909,910,911,912,913,962,963,1132,1133' WHERE (`id` = '901');

+ 10 - 0
distributed-print/install/mysql/upgrade/3.3.1.sql

@@ -699,3 +699,13 @@ VALUES(2033, '同步试卷蓝图结构', '/api/admin/course/degree/final_score/p
 DELETE FROM t_b_task where type in ('STUDENT_IMPORT', 'CLAZZ_IMPORT', 'CREATE_PDF');
 DELETE FROM t_b_task where type in ('STUDENT_IMPORT', 'CLAZZ_IMPORT', 'CREATE_PDF');
 UPDATE `sys_privilege` SET `enable` = '0', `default_auth` = '0', `front_display` = '0' WHERE (`id` = '163');
 UPDATE `sys_privilege` SET `enable` = '0', `default_auth` = '0', `front_display` = '0' WHERE (`id` = '163');
 UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '289');
 UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '289');
+-- 2024/04/02
+ALTER TABLE `mark_student` ADD COLUMN `teacher_id` BIGINT(20) NULL COMMENT '任课老师ID' AFTER `class_name`;
+ALTER TABLE `teach_course` DROP COLUMN `basic_course_id`;
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1132', '客观题模板导出', '/api/admin/mark/question/objective/export', 'URL', '897', '15', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1133', '客观题标答导入', '/api/admin/mark/question/objective/import', 'URL', '897', '16', 'AUTH', '1', '1', '1');
+UPDATE `sys_privilege` SET `related` = '672,902,903,904,905,906,907,908,909,910,911,912,913,962,963,1132,1133' WHERE (`id` = '901');
+
+ALTER TABLE `mark_user_class`
+DROP COLUMN `group_number`,
+DROP INDEX `idx_1` , ADD INDEX `idx_1` USING BTREE (`exam_id`, `paper_number`, `class_name`);

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

@@ -122,7 +122,7 @@ public class ExamCardController {
      */
      */
     @ApiOperation(value = "根据ID获取题卡详情")
     @ApiOperation(value = "根据ID获取题卡详情")
     @RequestMapping(value = "/get_one", method = RequestMethod.POST)
     @RequestMapping(value = "/get_one", method = RequestMethod.POST)
-    public Result getOne(@RequestParam("cardId") Long cardId) {
+    public Result getOne(@RequestParam(value = "cardId", required = false) Long cardId) {
         ExamCard examCard = examCardService.getById(cardId);
         ExamCard examCard = examCardService.getById(cardId);
         return ResultUtil.ok(examCard);
         return ResultUtil.ok(examCard);
     }
     }

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

@@ -160,12 +160,12 @@ public class ExamPrintTaskController {
     }
     }
 
 
     /**
     /**
-     * 批量撤回
+     * 批量完成/撤回/提交
      *
      *
      * @param data id集合
      * @param data id集合
      * @return
      * @return
      */
      */
-    @ApiOperation(value = "印刷任务管理-撤回提交")
+    @ApiOperation(value = "印刷任务管理-批量完成/撤回/提交")
     @RequestMapping(value = "/task_batch_cancel", method = RequestMethod.POST)
     @RequestMapping(value = "/task_batch_cancel", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result taskCancel(@RequestBody Map data) {
     public Result taskCancel(@RequestBody Map data) {

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

@@ -166,6 +166,9 @@ public class MarkStudent implements Serializable {
     @ApiModelProperty(value = "任课老师")
     @ApiModelProperty(value = "任课老师")
     private String teacher;
     private String teacher;
 
 
+    @ApiModelProperty(value = "任课老师ID")
+    private Long teacherId;
+
     @ApiModelProperty(value = "扫描状态")
     @ApiModelProperty(value = "扫描状态")
     private ScanStatus scanStatus;
     private ScanStatus scanStatus;
     //识别缺考
     //识别缺考
@@ -207,7 +210,7 @@ public class MarkStudent implements Serializable {
                        String paperNumber, String coursePaperId, String paperType,
                        String paperNumber, String coursePaperId, String paperType,
                        String studentCode, String studentName, String packageCode,
                        String studentCode, String studentName, String packageCode,
                        String examPlace, String examRoom, String college, String majorName, String className,
                        String examPlace, String examRoom, String college, String majorName, String className,
-                       String teacher, Long examStartTime, Long examEndTime, Long createId) {
+                       Long teacherId, String teacher, Long examStartTime, Long examEndTime, Long createId) {
         this.id = id;
         this.id = id;
         this.examId = examId;
         this.examId = examId;
         this.courseCode = courseCode;
         this.courseCode = courseCode;
@@ -223,6 +226,7 @@ public class MarkStudent implements Serializable {
         this.college = college;
         this.college = college;
         this.majorName = majorName;
         this.majorName = majorName;
         this.className = className;
         this.className = className;
+        this.teacherId = teacherId;
         this.teacher = teacher;
         this.teacher = teacher;
         this.sheetCount = 0;
         this.sheetCount = 0;
         this.upload = false;
         this.upload = false;
@@ -504,6 +508,14 @@ public class MarkStudent implements Serializable {
         this.teacher = teacher;
         this.teacher = teacher;
     }
     }
 
 
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
     public ScanStatus getScanStatus() {
     public ScanStatus getScanStatus() {
         return scanStatus;
         return scanStatus;
     }
     }

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

@@ -31,9 +31,6 @@ public class MarkUserClass implements Serializable {
     @ApiModelProperty(value = "考试ID")
     @ApiModelProperty(value = "考试ID")
     private Long examId;
     private Long examId;
 
 
-    @ApiModelProperty(value = "分组号")
-    private Integer groupNumber;
-
     @ApiModelProperty(value = "试卷编号")
     @ApiModelProperty(value = "试卷编号")
     private String paperNumber;
     private String paperNumber;
 
 
@@ -60,14 +57,6 @@ public class MarkUserClass implements Serializable {
         this.examId = examId;
         this.examId = examId;
     }
     }
 
 
-    public Integer getGroupNumber() {
-        return groupNumber;
-    }
-
-    public void setGroupNumber(Integer groupNumber) {
-        this.groupNumber = groupNumber;
-    }
-
     public String getPaperNumber() {
     public String getPaperNumber() {
         return paperNumber;
         return paperNumber;
     }
     }
@@ -97,7 +86,6 @@ public class MarkUserClass implements Serializable {
         return "MarkUserClass{" +
         return "MarkUserClass{" +
                 "Id=" + Id +
                 "Id=" + Id +
                 ", examId=" + examId +
                 ", examId=" + examId +
-                ", groupNumber=" + groupNumber +
                 ", paperNumber=" + paperNumber +
                 ", paperNumber=" + paperNumber +
                 ", userId=" + userId +
                 ", userId=" + userId +
                 ", classsName=" + className +
                 ", classsName=" + className +

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

@@ -51,7 +51,7 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
 
 
 	List<Long> findIdByExamIdAndPaperNumber(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 	List<Long> findIdByExamIdAndPaperNumber(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 
 
-	List<ArchiveStudentVo> studentList(@Param("req") ArchiveStudentQuery query);
+	List<ArchiveStudentVo> studentList(@Param("req") ArchiveStudentQuery query, @Param("dpr") DataPermissionRule dpr);
 
 
 	OverViewVo overview(@Param("req") ArchiveStudentQuery query);
 	OverViewVo overview(@Param("req") ArchiveStudentQuery query);
 
 
@@ -67,7 +67,7 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
 	List<UnexistStudentDto> listUnexistStudentByExamIdAndCoursePaperId(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId,
 	List<UnexistStudentDto> listUnexistStudentByExamIdAndCoursePaperId(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId,
 			@Param("status") String status, @Param("dpr") DataPermissionRule dpr);
 			@Param("status") String status, @Param("dpr") DataPermissionRule dpr);
 
 
-	IPage<ArchiveStudentVo> studentList(@Param("page") Page<ArchiveStudentVo> page, @Param("req") ArchiveStudentQuery query);
+	IPage<ArchiveStudentVo> studentList(@Param("page") Page<ArchiveStudentVo> page, @Param("req") ArchiveStudentQuery query, @Param("dpr") DataPermissionRule dpr);
 
 
 	List<TeacherClassVo> teacherClass(@Param("req") ArchiveStudentQuery query);
 	List<TeacherClassVo> teacherClass(@Param("req") ArchiveStudentQuery query);
 
 

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

@@ -29,7 +29,7 @@ public interface MarkUserClassService extends IService<MarkUserClass> {
 
 
     boolean saveMarkClassUser(MarkClassUserParams markClassUserParams);
     boolean saveMarkClassUser(MarkClassUserParams markClassUserParams);
 
 
-    boolean deleteByExamIdAndPaperNumberAndGroupNumberAndClassName(Long examId, String paperNumber, Integer groupNumber, String className);
+    boolean deleteByExamIdAndPaperNumberAndClassName(Long examId, String paperNumber, String className);
 
 
     List<MarkUserClass> listByExamIdAndPaperNumber(Long examId, String paperNumber);
     List<MarkUserClass> listByExamIdAndPaperNumber(Long examId, String paperNumber);
 
 

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

@@ -159,19 +159,19 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                     }
                     }
                     // 未全部扫描,不能结束
                     // 未全部扫描,不能结束
                     if (markStudentService.countUnexistByExamIdAndPaperNumberAndPaperType(examId, paperNumber, markPaper.getPaperType()) > 0) {
                     if (markStudentService.countUnexistByExamIdAndPaperNumberAndPaperType(examId, paperNumber, markPaper.getPaperType()) > 0) {
-                        throw ExceptionResultEnum.ERROR.exception(courseInfo + "未全部扫描完成,无法结束评卷");
+                        throw ExceptionResultEnum.ERROR.exception(courseInfo + "有考生未扫描未核对,请在扫描客户端进行确认操作后再结束阅卷");
                     }
                     }
                     // 识别缺考未确认完,不能结束
                     // 识别缺考未确认完,不能结束
                     if (markStudentService.countOmrAbsentStudent(examId, paperNumber, markPaper.getPaperType(), false) > 0) {
                     if (markStudentService.countOmrAbsentStudent(examId, paperNumber, markPaper.getPaperType(), false) > 0) {
-                        throw ExceptionResultEnum.ERROR.exception(courseInfo + "识别缺考未全部确认,无法结束评卷");
+                        throw ExceptionResultEnum.ERROR.exception(courseInfo + "识别缺考记录未核对,请在扫描客户端进行确认操作后再结束阅卷");
                     }
                     }
                     // 人工绑定未做完,不能结束
                     // 人工绑定未做完,不能结束
                     if (markStudentService.getAssignedCount(examId, false, markPaper.getCourseCode(), markPaper.getCoursePaperId(), MarkPaperStatus.FORMAL, null) > 0) {
                     if (markStudentService.getAssignedCount(examId, false, markPaper.getCourseCode(), markPaper.getCoursePaperId(), MarkPaperStatus.FORMAL, null) > 0) {
-                        throw ExceptionResultEnum.ERROR.exception(courseInfo + "人工绑定未全部处理,无法结束评卷");
+                        throw ExceptionResultEnum.ERROR.exception(courseInfo + "人工绑定记录未核对,请在扫描客户端进行确认操作后再结束阅卷");
                     }
                     }
                     // 客观题检查未做完,不能结束
                     // 客观题检查未做完,不能结束
                     if (scanOmrTaskService.getFinishStudentCountByExamAndUserId(examId, markPaper.getCourseCode(), markPaper.getCoursePaperId(), OmrTaskStatus.WAITING.name(), null) > 0) {
                     if (scanOmrTaskService.getFinishStudentCountByExamAndUserId(examId, markPaper.getCourseCode(), markPaper.getCoursePaperId(), OmrTaskStatus.WAITING.name(), null) > 0) {
-                        throw ExceptionResultEnum.ERROR.exception(courseInfo + "客观题检查未全部处理,无法结束评卷");
+                        throw ExceptionResultEnum.ERROR.exception(courseInfo + "客观题存在识别嫌疑需要人工确认,请在扫描客户端进行确认操作后再结束阅卷");
                     }
                     }
                 }
                 }
 
 

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

@@ -888,7 +888,7 @@ public class MarkServiceImpl implements MarkService {
             markGroupService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
             markGroupService.deleteByExamIdAndPaperNumberAndGroupNumber(markGroup.getExamId(),
                     markGroup.getPaperNumber(), markGroup.getNumber());
                     markGroup.getPaperNumber(), markGroup.getNumber());
             // 分班阅数据
             // 分班阅数据
-            markUserClassService.deleteByExamIdAndPaperNumberAndGroupNumberAndClassName(markGroup.getExamId(), markGroup.getPaperNumber(), markGroup.getNumber(), null);
+            markUserClassService.deleteByExamIdAndPaperNumberAndClassName(markGroup.getExamId(), markGroup.getPaperNumber(), null);
             // 更新MarkPaper中groupStatus
             // 更新MarkPaper中groupStatus
             updateMarkGroupStatus(markGroup.getExamId(), markGroup.getPaperNumber());
             updateMarkGroupStatus(markGroup.getExamId(), markGroup.getPaperNumber());
         }
         }

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

@@ -921,8 +921,12 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
 
     @Override
     @Override
     public IPage<ArchiveStudentVo> studentList(ArchiveStudentQuery query) {
     public IPage<ArchiveStudentVo> studentList(ArchiveStudentQuery query) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        // 使用成绩管理列表请求的数据权限
+        String postUrl = "/api/admin/mark/archive/score/list";
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), postUrl);
         Page<ArchiveStudentVo> page = new Page<>(query.getPageNumber(), query.getPageSize());
         Page<ArchiveStudentVo> page = new Page<>(query.getPageNumber(), query.getPageSize());
-        IPage<ArchiveStudentVo> ret = baseMapper.studentList(page, query);
+        IPage<ArchiveStudentVo> ret = baseMapper.studentList(page, query, dpr);
         for (ArchiveStudentVo record : ret.getRecords()) {
         for (ArchiveStudentVo record : ret.getRecords()) {
             List<String> list = new ArrayList<>();
             List<String> list = new ArrayList<>();
             List<FilePathVo> vos = JSON.parseArray(StringUtils.trimToNull(record.getSheetPath()), FilePathVo.class);
             List<FilePathVo> vos = JSON.parseArray(StringUtils.trimToNull(record.getSheetPath()), FilePathVo.class);
@@ -955,7 +959,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         String[] columnNames = columnNameList.toArray(new String[0]);
         String[] columnNames = columnNameList.toArray(new String[0]);
         //生成动态内容
         //生成动态内容
         List<String[]> columnValues = new ArrayList<>();
         List<String[]> columnValues = new ArrayList<>();
-        List<ArchiveStudentVo> ret = baseMapper.studentList(query);
+        List<ArchiveStudentVo> ret = baseMapper.studentList(query, null);
         for (ArchiveStudentVo s : ret) {
         for (ArchiveStudentVo s : ret) {
             List<String> valueList = new ArrayList<>();
             List<String> valueList = new ArrayList<>();
             valueList.add(s.getStudentName());
             valueList.add(s.getStudentName());
@@ -1005,7 +1009,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                     .divide2String(Calculator.multiply(ret.getOverview().getExcellentCount(), 100), total, 2));
                     .divide2String(Calculator.multiply(ret.getOverview().getExcellentCount(), 100), total, 2));
             ret.getOverview().setAvgScore(Calculator.round(ret.getOverview().getAvgScore(), 2));
             ret.getOverview().setAvgScore(Calculator.round(ret.getOverview().getAvgScore(), 2));
         }
         }
-        List<ArchiveStudentVo> studentList = baseMapper.studentList(query);
+        List<ArchiveStudentVo> studentList = baseMapper.studentList(query, null);
         fillScoreRange(ret, studentList);
         fillScoreRange(ret, studentList);
 
 
         ret.setCollege(baseMapper.college(query));
         ret.setCollege(baseMapper.college(query));
@@ -1547,7 +1551,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         BasicTeachClazz basicTeachClazz = this.baseMapper.getBasicTeachClazzById(basicExamStudent.getClazzId());
         BasicTeachClazz basicTeachClazz = this.baseMapper.getBasicTeachClazzById(basicExamStudent.getClazzId());
         SysUser sysUser = sysUserService.getById(basicExamStudent.getTeacherId());
         SysUser sysUser = sysUserService.getById(basicExamStudent.getTeacherId());
         if (markStudent == null) {
         if (markStudent == null) {
-            markStudent = new MarkStudent(basicExamStudent.getId(), basicExamStudent.getExamId(), basicExamStudent.getCourseCode(), basicCourse == null ? null : basicCourse.getName(), basicExamStudent.getPaperNumber(), markPaper.getCoursePaperId(), "A", basicExamStudent.getStudentCode(), basicExamStudent.getStudentName(), "", basicExamStudent.getExamPlace(), basicExamStudent.getExamRoom(), basicExamStudent.getCollege(), basicExamStudent.getMajor(), basicTeachClazz == null ? null : basicTeachClazz.getClazzName(), sysUser == null ? null : sysUser.getRealName(), basicExamStudent.getExamStartTime(), basicExamStudent.getExamEndTime(), markPaper.getUserId());
+            markStudent = new MarkStudent(basicExamStudent.getId(), basicExamStudent.getExamId(), basicExamStudent.getCourseCode(), basicCourse == null ? null : basicCourse.getName(), basicExamStudent.getPaperNumber(), markPaper.getCoursePaperId(), "A", basicExamStudent.getStudentCode(), basicExamStudent.getStudentName(), "", basicExamStudent.getExamPlace(), basicExamStudent.getExamRoom(), basicExamStudent.getCollege(), basicExamStudent.getMajor(), basicTeachClazz == null ? null : basicTeachClazz.getClazzName(),basicExamStudent.getTeacherId(), sysUser == null ? null : sysUser.getRealName(), basicExamStudent.getExamStartTime(), basicExamStudent.getExamEndTime(), markPaper.getUserId());
             if (markStudent.getSecretNumber() == null) {
             if (markStudent.getSecretNumber() == null) {
                 markStudent.randomSecretNumber();
                 markStudent.randomSecretNumber();
                 while (secretNumberSet.contains(markStudent.getSecretNumber())
                 while (secretNumberSet.contains(markStudent.getSecretNumber())
@@ -1562,6 +1566,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             markStudent.setClassName(basicTeachClazz == null ? null : basicTeachClazz.getClazzName());
             markStudent.setClassName(basicTeachClazz == null ? null : basicTeachClazz.getClazzName());
             markStudent.setExamPlace(basicExamStudent.getExamPlace());
             markStudent.setExamPlace(basicExamStudent.getExamPlace());
             markStudent.setExamRoom(basicExamStudent.getExamRoom());
             markStudent.setExamRoom(basicExamStudent.getExamRoom());
+            markStudent.setTeacherId(basicExamStudent.getTeacherId());
             markStudent.setTeacher(sysUser == null ? null : sysUser.getRealName());
             markStudent.setTeacher(sysUser == null ? null : sysUser.getRealName());
         }
         }
         this.saveOrUpdate(markStudent);
         this.saveOrUpdate(markStudent);

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

@@ -137,20 +137,17 @@ public class MarkUserClassServiceImpl extends ServiceImpl<MarkUserClassMapper, M
             }
             }
         }
         }
         // 科目下所有数据同时提交
         // 科目下所有数据同时提交
-        this.deleteByExamIdAndPaperNumberAndGroupNumberAndClassName(examId, paperNumber, null, null);
+        this.deleteByExamIdAndPaperNumberAndClassName(examId, paperNumber, null);
         this.saveBatch(markUserClasses);
         this.saveBatch(markUserClasses);
         return true;
         return true;
     }
     }
 
 
     @Override
     @Override
-    public boolean deleteByExamIdAndPaperNumberAndGroupNumberAndClassName(Long examId, String paperNumber, Integer groupNumber, String className) {
+    public boolean deleteByExamIdAndPaperNumberAndClassName(Long examId, String paperNumber, String className) {
         UpdateWrapper<MarkUserClass> updateWrapper = new UpdateWrapper<>();
         UpdateWrapper<MarkUserClass> updateWrapper = new UpdateWrapper<>();
         LambdaUpdateWrapper<MarkUserClass> lambdaUpdateWrapper = updateWrapper.lambda();
         LambdaUpdateWrapper<MarkUserClass> lambdaUpdateWrapper = updateWrapper.lambda();
         lambdaUpdateWrapper.eq(MarkUserClass::getExamId, examId)
         lambdaUpdateWrapper.eq(MarkUserClass::getExamId, examId)
                 .eq(MarkUserClass::getPaperNumber, paperNumber);
                 .eq(MarkUserClass::getPaperNumber, paperNumber);
-        if (groupNumber != null) {
-            lambdaUpdateWrapper.eq(MarkUserClass::getGroupNumber, groupNumber);
-        }
         if (StringUtils.isNotBlank(className)) {
         if (StringUtils.isNotBlank(className)) {
             lambdaUpdateWrapper.eq(MarkUserClass::getClassName, className);
             lambdaUpdateWrapper.eq(MarkUserClass::getClassName, className);
         }
         }

+ 12 - 1
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -323,7 +323,7 @@
     <select id="studentList"
     <select id="studentList"
             resultType="com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentVo">
             resultType="com.qmth.teachcloud.mark.bean.archivescore.ArchiveStudentVo">
         select s.*,s.id studentId, ifnull(s.objective_score,0)+ifnull(s.subjective_score,0) totalScore
         select s.*,s.id studentId, ifnull(s.objective_score,0)+ifnull(s.subjective_score,0) totalScore
-        from mark_student s
+        from mark_student s left join sys_user su on s.teacher_id = su.id
         <include refid="archiveQuery"/>
         <include refid="archiveQuery"/>
         <if test="req.orderType != null and req.orderType != '' and req.orderField != null and req.orderField != ''">
         <if test="req.orderType != null and req.orderType != '' and req.orderField != null and req.orderField != ''">
             <choose>
             <choose>
@@ -340,6 +340,17 @@
                 </otherwise>
                 </otherwise>
             </choose>
             </choose>
         </if>
         </if>
+        <if test="dpr != null">
+            <if test="dpr.requestUserId != null">
+                AND s.teacher_id = #{dpr.requestUserId}
+            </if>
+            <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                AND su.org_id IN
+                <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </if>
         <if test="req.orderType == null or req.orderType == '' or req.orderField == null or req.orderField == ''">
         <if test="req.orderType == null or req.orderType == '' or req.orderField == null or req.orderField == ''">
             order by s.student_code
             order by s.student_code
         </if>
         </if>

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

@@ -7,7 +7,6 @@
         <id column="Id" property="id" />
         <id column="Id" property="id" />
         <result column="exam_id" property="examId" />
         <result column="exam_id" property="examId" />
         <result column="paper_number" property="paperNumber" />
         <result column="paper_number" property="paperNumber" />
-        <result column="group_number" property="groupNumber" />
         <result column="user_id" property="userId" />
         <result column="user_id" property="userId" />
         <result column="class_name" property="className" />
         <result column="class_name" property="className" />
     </resultMap>
     </resultMap>