Преглед изворни кода

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

caozixuan пре 1 година
родитељ
комит
b0a7d7d538

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

@@ -156,7 +156,8 @@ public interface ExamDetailService extends IService<ExamDetail> {
      */
     List<String> findExamRoomDatasource(String param, List<Long> printPlanId);
 
-    boolean submitTask(ExamDetail examDetail) throws IOException;
+    boolean taskSubmit(ExamDetail examDetail) throws IOException;
+    boolean taskFinish(ExamDetail examDetail) throws IOException;
 
     boolean taskCancel(Long id);
 

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java

@@ -104,4 +104,6 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
     void updateAttachmentIdByTemplateId(Long templateId, Long attachmentId);
 
     void updateStatusById(Long printPlanId, PrintPlanStatusEnum status);
+
+    void updateFinishStatus(Long printPlanId);
 }

+ 32 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -488,7 +488,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Transactional
     @Override
-    public boolean submitTask(ExamDetail examDetail) {
+    public boolean taskSubmit(ExamDetail examDetail) {
         // 检查前置操作是否完成(是否生成pdf)
         ExamDetail detail = this.getById(examDetail.getId());
         if (detail == null) {
@@ -520,6 +520,33 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         return this.update(updateWrapper);
     }
 
+    @Transactional
+    @Override
+    public boolean taskFinish(ExamDetail examDetail) {
+        // 检查前置操作是否完成(是否生成pdf)
+        ExamDetail detail = this.getById(examDetail.getId());
+        if (detail == null) {
+            throw ExceptionResultEnum.ERROR.exception("考场数据异常");
+        }
+
+        // 只有待印刷状态并且附件生成才可提交
+        if (!ExamDetailStatusEnum.WAITING.equals(detail.getStatus())) {
+            throw ExceptionResultEnum.ERROR.exception("考场待印刷状态才可完成");
+        }
+
+        // 修改考场状态为待印刷
+        UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.FINISH)
+                .set(ExamDetail::getPrintStartTime, System.currentTimeMillis())
+                .set(ExamDetail::getPrintEndTime, System.currentTimeMillis())
+                .eq(ExamDetail::getId, examDetail.getId());
+         this.update(updateWrapper);
+
+        // 所有考场打印完成,更新印刷计划状态
+        examPrintPlanService.updateFinishStatus(examDetail.getPrintPlanId());
+        return true;
+    }
+
     @Transactional
     @Override
     public boolean taskCancel(Long id) {
@@ -574,11 +601,13 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         String type = String.valueOf(data.get("type"));
         String ids = String.valueOf(data.get("ids"));
         for (String id : ids.split(",")) {
+            ExamDetail examDetail = this.getById(id);
             if ("submit".equals(type)) {
-                ExamDetail examDetail = this.getById(id);
-                submitTask(examDetail);
+                taskSubmit(examDetail);
             } else if ("cancel".equals(type)) {
                 taskCancel(Long.valueOf(id));
+            } else if("finish".equals(type)){
+                taskFinish(examDetail);
             }
         }
         return true;

+ 13 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -418,6 +418,19 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         }
     }
 
+    @Override
+    public void updateFinishStatus(Long printPlanId) {
+        // 所有考场打印完成,更新印刷计划状态
+        QueryWrapper<ExamDetail> examDetailQueryWrapper = new QueryWrapper<>();
+        examDetailQueryWrapper.lambda().eq(ExamDetail::getPrintPlanId, printPlanId).ne(ExamDetail::getStatus, ExamDetailStatusEnum.FINISH);
+        int count = examDetailService.count(examDetailQueryWrapper);
+        if (count == 0) {
+            UpdateWrapper<ExamPrintPlan> examPrintPlanUpdateWrapper = new UpdateWrapper<>();
+            examPrintPlanUpdateWrapper.lambda().set(ExamPrintPlan::getStatus, PrintPlanStatusEnum.FINISH).eq(ExamPrintPlan::getId, printPlanId);
+            this.update(examPrintPlanUpdateWrapper);
+        }
+    }
+
     /**
      * 查找子机构
      *

+ 102 - 99
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1689,111 +1689,111 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         Long requestUserId = requestUser.getId();
         List<ExamTaskStudentObjectResult> result = new ArrayList<>();
         switch (examObjectType) {
-        case TEACH_CLAZZ_STUDENT:
-            if (!SystemConstant.strNotNull(courseCode)) {
-                throw ExceptionResultEnum.ERROR.exception("缺少考试课程编号");
-            }
-            // 登录人的教学课程
-            TeachCourse userTeachCourse = teachCourseService.getOne(
-                    new QueryWrapper<TeachCourse>().lambda().eq(TeachCourse::getExamId, examId).eq(TeachCourse::getCourseCode, courseCode).eq(TeachCourse::getUserId, requestUserId)
-                            .last(SystemConstant.LIMIT1));
-
-            if (Objects.nonNull(userTeachCourse)) {
-                Long userTeachCourseId = userTeachCourse.getId();
-                Long leaderId = userTeachCourse.getCreateId();
-                TeachCourse leaderTeachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode,
-                        leaderId);
-
-                if (Objects.nonNull(leaderTeachCourse)) {
-                    Long leaderTeachCourseId = leaderTeachCourse.getId();
-                    List<TeachClazz> teachClazzList;
-                    teachClazzList = teachClazzService.list(
-                            new QueryWrapper<TeachClazz>().lambda().eq(TeachClazz::getTeachCourseId, userTeachCourseId)
-                                    .eq(TeachClazz::getBelongTeachCourseId, leaderTeachCourseId));
-
-                    if (CollectionUtils.isEmpty(teachClazzList)) {
-                        teachClazzList = teachClazzService.list(new QueryWrapper<TeachClazz>().lambda()
-                                .eq(TeachClazz::getTeachCourseId, leaderTeachCourseId));
-                    }
+            case TEACH_CLAZZ_STUDENT:
+                if (!SystemConstant.strNotNull(courseCode)) {
+                    throw ExceptionResultEnum.ERROR.exception("缺少考试课程编号");
+                }
+                // 登录人的教学课程
+                TeachCourse userTeachCourse = teachCourseService.getOne(
+                        new QueryWrapper<TeachCourse>().lambda().eq(TeachCourse::getExamId, examId).eq(TeachCourse::getCourseCode, courseCode).eq(TeachCourse::getUserId, requestUserId)
+                                .last(SystemConstant.LIMIT1));
+
+                if (Objects.nonNull(userTeachCourse)) {
+                    Long userTeachCourseId = userTeachCourse.getId();
+                    Long leaderId = userTeachCourse.getCreateId();
+                    TeachCourse leaderTeachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode,
+                            leaderId);
+
+                    if (Objects.nonNull(leaderTeachCourse)) {
+                        Long leaderTeachCourseId = leaderTeachCourse.getId();
+                        List<TeachClazz> teachClazzList;
+                        teachClazzList = teachClazzService.list(
+                                new QueryWrapper<TeachClazz>().lambda().eq(TeachClazz::getTeachCourseId, userTeachCourseId)
+                                        .eq(TeachClazz::getBelongTeachCourseId, leaderTeachCourseId));
+
+                        if (CollectionUtils.isEmpty(teachClazzList)) {
+                            teachClazzList = teachClazzService.list(new QueryWrapper<TeachClazz>().lambda()
+                                    .eq(TeachClazz::getTeachCourseId, leaderTeachCourseId));
+                        }
 
-                    if (!CollectionUtils.isEmpty(teachClazzList)) {
-                        for (TeachClazz teachClazz : teachClazzList) {
-                            Long teachClazzId = teachClazz.getId();
-                            String teachClazzName = teachClazz.getClazzName();
-                            List<TeachStudent> teachStudentList = teachStudentService.list(new QueryWrapper<TeachStudent>().lambda()
-                                    .eq(TeachStudent::getTeachClazzId, teachClazzId));
-
-                            List<StudentInfo> studentInfoList = teachStudentList.stream().flatMap(e -> {
-                                Long studentId = e.getStudentId();
-                                if (!SystemConstant.longNotNull(studentId)) {
-                                    throw ExceptionResultEnum.ERROR.exception("教学学生数据异常");
-                                }
-                                BasicStudentResult basicExamStudentResult = basicStudentService.findById(studentId);
-                                if (Objects.isNull(basicExamStudentResult)) {
-                                    throw ExceptionResultEnum.ERROR.exception("未找到对应的考生字典数据");
-                                }
-                                StudentInfo studentInfo = new StudentInfo();
-                                studentInfo.setStudentId(studentId);
-                                studentInfo.setStudentCode(basicExamStudentResult.getStudentCode());
-                                studentInfo.setStudentName(basicExamStudentResult.getStudentName());
-                                studentInfo.setCollegeName(basicExamStudentResult.getCollegeName());
-                                studentInfo.setMajorName(basicExamStudentResult.getMajorName());
-                                studentInfo.setTeachClazzId(teachClazzId);
-                                studentInfo.setTeachClazzName(teachClazzName);
-                                studentInfo.setBasicClazzId(basicExamStudentResult.getClazzId());
-                                studentInfo.setBasicClazzName(basicExamStudentResult.getClazz());
-                                return Stream.of(studentInfo);
-                            }).collect(Collectors.toList());
-                            ExamTaskStudentObjectResult examTaskStudentObjectResult = new ExamTaskStudentObjectResult();
-                            examTaskStudentObjectResult.setClazzId(teachClazzId);
-                            examTaskStudentObjectResult.setClazzName(teachClazzName);
-                            examTaskStudentObjectResult.setStudentInfoList(studentInfoList);
-                            examTaskStudentObjectResult.setStudentClazzType(examObjectType.getStudentClazzType());
-                            result.add(examTaskStudentObjectResult);
+                        if (!CollectionUtils.isEmpty(teachClazzList)) {
+                            for (TeachClazz teachClazz : teachClazzList) {
+                                Long teachClazzId = teachClazz.getId();
+                                String teachClazzName = teachClazz.getClazzName();
+                                List<TeachStudent> teachStudentList = teachStudentService.list(new QueryWrapper<TeachStudent>().lambda()
+                                        .eq(TeachStudent::getTeachClazzId, teachClazzId));
+
+                                List<StudentInfo> studentInfoList = teachStudentList.stream().flatMap(e -> {
+                                    Long studentId = e.getStudentId();
+                                    if (!SystemConstant.longNotNull(studentId)) {
+                                        throw ExceptionResultEnum.ERROR.exception("教学学生数据异常");
+                                    }
+                                    BasicStudentResult basicExamStudentResult = basicStudentService.findById(studentId);
+                                    if (Objects.isNull(basicExamStudentResult)) {
+                                        throw ExceptionResultEnum.ERROR.exception("未找到对应的考生字典数据");
+                                    }
+                                    StudentInfo studentInfo = new StudentInfo();
+                                    studentInfo.setStudentId(studentId);
+                                    studentInfo.setStudentCode(basicExamStudentResult.getStudentCode());
+                                    studentInfo.setStudentName(basicExamStudentResult.getStudentName());
+                                    studentInfo.setCollegeName(basicExamStudentResult.getCollegeName());
+                                    studentInfo.setMajorName(basicExamStudentResult.getMajorName());
+                                    studentInfo.setTeachClazzId(teachClazzId);
+                                    studentInfo.setTeachClazzName(teachClazzName);
+                                    studentInfo.setBasicClazzId(basicExamStudentResult.getClazzId());
+                                    studentInfo.setBasicClazzName(basicExamStudentResult.getClazz());
+                                    return Stream.of(studentInfo);
+                                }).collect(Collectors.toList());
+                                ExamTaskStudentObjectResult examTaskStudentObjectResult = new ExamTaskStudentObjectResult();
+                                examTaskStudentObjectResult.setClazzId(teachClazzId);
+                                examTaskStudentObjectResult.setClazzName(teachClazzName);
+                                examTaskStudentObjectResult.setStudentInfoList(studentInfoList);
+                                examTaskStudentObjectResult.setStudentClazzType(examObjectType.getStudentClazzType());
+                                result.add(examTaskStudentObjectResult);
+                            }
                         }
                     }
                 }
-            }
-            break;
-        case BASIC_CLAZZ_STUDENT:
-            // 基础班级对象
-            List<BasicStudentResult> basicStudentResultList = basicStudentService.basicStudentList(schoolId, examId,
-                    null);
-            if (!CollectionUtils.isEmpty(basicStudentResultList)) {
-                LinkedMultiValueMap<Long, StudentInfo> studentInfoLinkedMultiValueMap = new LinkedMultiValueMap<>();
-                Map<Long, ExamTaskStudentObjectResult> examTaskStudentObjectResultMap = new LinkedHashMap<>();
-                for (BasicStudentResult e : basicStudentResultList) {
-                    // 没有班级的考生,不返回
-                    if (StringUtils.isBlank(e.getClazz())) {
-                        continue;
-                    }
-                    StudentInfo studentInfo = new StudentInfo();
-                    studentInfo.setStudentId(e.getId());
-                    studentInfo.setStudentCode(e.getStudentCode());
-                    studentInfo.setStudentName(e.getStudentName());
-                    studentInfo.setCollegeName(e.getCollegeName());
-                    studentInfo.setMajorName(e.getMajorName());
-                    studentInfo.setBasicClazzId(e.getClazzId());
-                    studentInfo.setBasicClazzName(e.getClazz());
-                    studentInfoLinkedMultiValueMap.add(e.getClazzId(), studentInfo);
-
-                    ExamTaskStudentObjectResult examTaskStudentObjectResult = null;
-                    if (!examTaskStudentObjectResultMap.containsKey(e.getClazzId())) {
-                        examTaskStudentObjectResult = new ExamTaskStudentObjectResult();
-                        examTaskStudentObjectResult.setClazzId(e.getClazzId());
-                        examTaskStudentObjectResult.setClazzName(e.getClazz());
-                        examTaskStudentObjectResult.setStudentClazzType(examObjectType.getStudentClazzType());
-                    } else {
-                        examTaskStudentObjectResult = examTaskStudentObjectResultMap.get(e.getClazzId());
+                break;
+            case BASIC_CLAZZ_STUDENT:
+                // 基础班级对象
+                List<BasicStudentResult> basicStudentResultList = basicStudentService.basicStudentList(schoolId, examId,
+                        null);
+                if (!CollectionUtils.isEmpty(basicStudentResultList)) {
+                    LinkedMultiValueMap<Long, StudentInfo> studentInfoLinkedMultiValueMap = new LinkedMultiValueMap<>();
+                    Map<Long, ExamTaskStudentObjectResult> examTaskStudentObjectResultMap = new LinkedHashMap<>();
+                    for (BasicStudentResult e : basicStudentResultList) {
+                        // 没有班级的考生,不返回
+                        if (StringUtils.isBlank(e.getClazz())) {
+                            continue;
+                        }
+                        StudentInfo studentInfo = new StudentInfo();
+                        studentInfo.setStudentId(e.getId());
+                        studentInfo.setStudentCode(e.getStudentCode());
+                        studentInfo.setStudentName(e.getStudentName());
+                        studentInfo.setCollegeName(e.getCollegeName());
+                        studentInfo.setMajorName(e.getMajorName());
+                        studentInfo.setBasicClazzId(e.getClazzId());
+                        studentInfo.setBasicClazzName(e.getClazz());
+                        studentInfoLinkedMultiValueMap.add(e.getClazzId(), studentInfo);
+
+                        ExamTaskStudentObjectResult examTaskStudentObjectResult = null;
+                        if (!examTaskStudentObjectResultMap.containsKey(e.getClazzId())) {
+                            examTaskStudentObjectResult = new ExamTaskStudentObjectResult();
+                            examTaskStudentObjectResult.setClazzId(e.getClazzId());
+                            examTaskStudentObjectResult.setClazzName(e.getClazz());
+                            examTaskStudentObjectResult.setStudentClazzType(examObjectType.getStudentClazzType());
+                        } else {
+                            examTaskStudentObjectResult = examTaskStudentObjectResultMap.get(e.getClazzId());
+                        }
+                        examTaskStudentObjectResult.setStudentInfoList(studentInfoLinkedMultiValueMap.get(e.getClazzId()));
+                        examTaskStudentObjectResultMap.put(e.getClazzId(), examTaskStudentObjectResult);
                     }
-                    examTaskStudentObjectResult.setStudentInfoList(studentInfoLinkedMultiValueMap.get(e.getClazzId()));
-                    examTaskStudentObjectResultMap.put(e.getClazzId(), examTaskStudentObjectResult);
+                    result.addAll(examTaskStudentObjectResultMap.values());
                 }
-                result.addAll(examTaskStudentObjectResultMap.values());
-            }
-            break;
-        default:
-            break;
+                break;
+            default:
+                break;
         }
         return result;
     }
@@ -2181,6 +2181,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
     @Override
     public IPage<TikuPaperInfo> pageTikuPaper(String courseCode, String paperName, String account, Integer pageNumber, Integer pageSize) {
+        if (StringUtils.isBlank(courseCode)) {
+            throw ExceptionResultEnum.ERROR.exception("请选择课程");
+        }
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         return tikuUtils.pagePaperInfo(schoolId, courseCode, paperName, account, pageNumber, pageSize);
     }

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

@@ -141,7 +141,7 @@ public class ExamPrintTaskController {
     @RequestMapping(value = "/task_submit", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result taskSubmit(@RequestBody ExamDetail examDetail) throws IOException {
-        boolean isSuccess = examDetailService.submitTask(examDetail);
+        boolean isSuccess = examDetailService.taskSubmit(examDetail);
         return ResultUtil.ok(isSuccess);
     }
 

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

@@ -274,7 +274,7 @@ public class ExamTaskApplyController {
     @RequestMapping(value = "/page_tiku_paper", method = RequestMethod.POST)
     @Transactional(rollbackFor = Exception.class)
     @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
-    public Result pageTikuPaper(@ApiParam(value = "课程代码", required = true) @RequestParam String courseCode,
+    public Result pageTikuPaper(@ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
                                 @ApiParam(value = "试卷名称") @RequestParam(value = "paperName", required = false) String paperName,
                                 @ApiParam(value = "教师工号") @RequestParam(value = "account", required = false) String account,
                                 @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,