xiaofei hace 2 años
padre
commit
3fea0ffce1
Se han modificado 18 ficheros con 876 adiciones y 1076 borrados
  1. 0 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskPrintMapper.java
  2. 6 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  3. 0 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskPrintService.java
  4. 5 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java
  5. 46 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  6. 0 273
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPrintServiceImpl.java
  7. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  8. 0 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  9. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncExaminationImportTemplateService.java
  10. 7 0
      distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql
  11. 2 1
      distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml
  12. 0 34
      distributed-print-business/src/main/resources/mapper/ExamTaskPrintMapper.xml
  13. 3 6
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamDetailController.java
  14. 319 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java
  15. 273 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskAuditController.java
  16. 10 741
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  17. 195 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskQueryController.java
  18. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

+ 0 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskPrintMapper.java

@@ -20,6 +20,4 @@ public interface ExamTaskPrintMapper extends BaseMapper<ExamTaskPrint> {
     List<TaskPrintHouseDto> listTaskPrintHouse(@Param("schoolId") Long schoolId, @Param("type") String type);
 
     List<TaskPrintHouseDto> listTaskPrintHouseAll(@Param("schoolId") Long schoolId, @Param("type") String type);
-
-    List<ExamTaskPrintDetailDto> listByPrintPlanIdAndCourseCodeAndPaperNumber(@Param("printPlanId") Long printPlanId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
 }

+ 6 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -15,6 +15,8 @@ import com.qmth.distributed.print.business.entity.ExamStudent;
 import com.qmth.distributed.print.business.enums.ExamDataSourceEnum;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.entity.TBTask;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -234,4 +236,8 @@ public interface ExamDetailService extends IService<ExamDetail> {
     List<ExamDetailCourseDto> listByExamIdAndCourseCode(Long schoolId, Long examId, String courseCode);
 
     void deleteByExamIdAndPaperNumber(Long schoolId, Long examId, String paperNumber);
+
+    TBTask importData(String printPlanId, MultipartFile file);
+
+    void startInitTask(Long schoolId) throws Exception;
 }

+ 0 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskPrintService.java

@@ -21,20 +21,8 @@ import java.util.List;
  * @since 2021-08-02
  */
 public interface ExamTaskPrintService extends IService<ExamTaskPrint> {
-    void remove(Long examTaskPrintId);
-
-    ExamTaskPrintDto listTaskPrint(Long printPlanId, String courseCode, String paperNumber);
-
-    ExamDetail createTaskPrint(ExamTaskPrint examTaskPrint);
-
-    List<TaskPrintClassDto> listClass(String printPlanId, String courseCode, String paperNumber, Long examTaskPrintId);
-
     List<TaskPrintHouseDto> listHouse();
 
-    List<TaskPrintExtendFieldsDto> listTaskPrintExtendFields();
-
-    void submitTaskPrint(ExamTaskPrintParams examTaskPrintParams) throws IOException;
-
     /**
      * 查找考场
      * <p>

+ 5 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -677,8 +677,11 @@ public class DataSyncServiceImpl implements DataSyncService {
                 String examNumber = examStudent.getTicketNumber();
                 String studentCode = examStudent.getStudentCode();
                 String name = examStudent.getStudentName();
-                BasicCollege basicCollege = examStudentService.getBasicCollegeByBelongOrgId(studentCode, schoolId);
-                String college = Objects.nonNull(basicCollege) && StringUtils.isNotBlank(basicCollege.getCollegeName()) ? basicCollege.getCollegeName() : "无";
+                String college = examStudent.getCollegeName();
+                if (StringUtils.isBlank(college)) {
+                    BasicCollege basicCollege = examStudentService.getBasicCollegeByBelongOrgId(studentCode, schoolId);
+                    college = Objects.nonNull(basicCollege) && StringUtils.isNotBlank(basicCollege.getCollegeName()) ? basicCollege.getCollegeName() : "无";
+                }
                 String className = StringUtils.isBlank(examStudent.getClazzName()) ? getClassName(examStudent.getExtendFields()) : examStudent.getClazzName();
                 String teacher = "无";
                 String subjectCode = examStudent.getCourseCode() + examStudent.getPaperType() + examStudent.getSequence(); // 取试卷编号

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

@@ -19,9 +19,9 @@ import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.mapper.ExamDetailMapper;
 import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.templete.execute.AsyncExaminationImportTemplateService;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
-import com.qmth.teachcloud.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
@@ -41,6 +41,7 @@ import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
@@ -85,10 +86,10 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     private BasicAttachmentService basicAttachmentService;
 
     @Resource
-    private BasicExamService basicExamService;
+    private SysOrgService sysOrgService;
 
     @Resource
-    private SysOrgService sysOrgService;
+    private SysUserService sysUserService;
 
     @Resource
     TBTaskService tbTaskService;
@@ -133,6 +134,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Lazy
     private PrintCommonService printCommonService;
 
+    @Resource
+    private AsyncExaminationImportTemplateService asyncExaminationImportTemplateService;
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public double calculateTotalSubjects(Long printPlanId) {
@@ -1056,6 +1060,45 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         }
     }
 
+    @Override
+    public TBTask importData(String printPlanId, MultipartFile file) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        try {
+            Map<String, Object> map = printCommonService.saveTask(SystemConstant.convertIdToLong(printPlanId), file, TaskTypeEnum.EXAMINATION_IMPORT);
+            boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_IMPORT_EXAM_DATA + schoolId, SystemConstant.REDIS_LOCK_IMPORT_EXAM_DATA_TIME_OUT);
+            if (lock) {
+                asyncExaminationImportTemplateService.importTask(map);
+            }
+            TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
+            return tbTask;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } finally {
+            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_IMPORT_EXAM_DATA + schoolId);
+        }
+    }
+
+    @Override
+    public void startInitTask(Long schoolId) throws Exception {
+        QueryWrapper<TBTask> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(TBTask::getSchoolId, schoolId)
+                .eq(TBTask::getType, TaskTypeEnum.EXAMINATION_IMPORT)
+                .eq(TBTask::getStatus, TaskStatusEnum.INIT)
+                .orderByAsc(TBTask::getCreateTime);
+        List<TBTask> tbTasks = tbTaskService.list(queryWrapper);
+        if (!CollectionUtils.isEmpty(tbTasks)) {
+            TBTask tbTask = tbTasks.get(0);
+            SysUser sysUser = sysUserService.getById(tbTask.getCreateId());
+            Map<String, Object> map = new HashMap<>();
+
+            map.computeIfAbsent(SystemConstant.TASK, v -> tbTask);
+            map.computeIfAbsent(SystemConstant.USER, v -> sysUser);
+            map.computeIfAbsent(SystemConstant.TB_TASK_ID, v -> tbTask.getId());
+            asyncExaminationImportTemplateService.importTask(map);
+        }
+
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void deleteExaminationData(Long printPlanId, ExamDataSourceEnum source) {

+ 0 - 273
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPrintServiceImpl.java

@@ -91,244 +91,6 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
     @Resource
     private BasicCourseService basicCourseService;
 
-    @Transactional
-    @Override
-    public void remove(Long examTaskPrintId) {
-        ExamTaskPrint examTaskPrint = this.getById(examTaskPrintId);
-        ExamDetail examDetail = examDetailService.getById(examTaskPrint.getExamDetailId());
-        if (!examDetail.getStatus().name().equals(ExamDetailStatusEnum.NEW.name()) &&
-                !examDetail.getStatus().name().equals(ExamDetailStatusEnum.READY.name())) {
-            throw ExceptionResultEnum.ERROR.exception("当前状态不可删除");
-        }
-
-        List<Long> entityId = Arrays.asList(examTaskPrint.getExamDetailId());
-        boolean isFinish = tbTaskService.countByPrintPlanIdAndEntityId(examTaskPrint.getSchoolId(), examTaskPrint.getPrintPlanId(), entityId);
-        if (!isFinish) {
-            throw ExceptionResultEnum.ERROR.exception("任务正在生成pdf,不能删除");
-        }
-
-        QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
-        examDetailCourseQueryWrapper.lambda().eq(ExamDetailCourse::getExamDetailId, examTaskPrint.getExamDetailId());
-        List<ExamDetailCourse> examDetailCourses = examDetailCourseService.list(examDetailCourseQueryWrapper);
-        for (ExamDetailCourse examDetailCours : examDetailCourses) {
-            // 删除考务数据-考生
-            UpdateWrapper<ExamStudent> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().eq(ExamStudent::getExamDetailCourseId, examDetailCours.getId());
-            examStudentService.remove(updateWrapper);
-
-            // 删除考务数据-课程
-            examDetailCourseService.removeById(examDetailCours.getId());
-        }
-
-        // 删除考务数据-考点
-        examDetailService.removeById(examTaskPrint.getExamDetailId());
-        // 删除exam_task_print
-        this.removeById(examTaskPrintId);
-    }
-
-    @Override
-    public ExamTaskPrintDto listTaskPrint(Long printPlanId, String courseCode, String paperNumber) {
-        List<ExamTaskPrintDetailDto> examTaskPrintList = this.baseMapper.listByPrintPlanIdAndCourseCodeAndPaperNumber(printPlanId, courseCode, paperNumber);
-        ExamTaskPrintDto examTaskPrintDto = new ExamTaskPrintDto();
-        if (!CollectionUtils.isEmpty(examTaskPrintList)) {
-            ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
-            if (PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus()) || PrintPlanStatusEnum.READY.equals(examPrintPlan.getStatus())) {
-                // 是否在任务中
-                List<Long> entityIds = examTaskPrintList.stream().map(m -> m.getExamDetailId()).collect(Collectors.toList());
-                QueryWrapper<TBTask> tbTaskQueryWrapper = new QueryWrapper<>();
-                tbTaskQueryWrapper.lambda().isNotNull(TBTask::getStatus)
-                        .eq(TBTask::getType, TaskTypeEnum.CREATE_PDF)
-                        .eq(TBTask::getPrintPlanId, printPlanId)
-                        .in(TBTask::getEntityId, entityIds);
-                examTaskPrintDto.setSubmit(tbTaskService.count(tbTaskQueryWrapper) > 0);
-            } else {
-                examTaskPrintDto.setSubmit(true);
-            }
-            examTaskPrintDto.setList(examTaskPrintList);
-            List<Long> startTimes = examTaskPrintList.stream().map(m -> m.getExamStartTime()).distinct().collect(Collectors.toList());
-            List<Long> endTimes = examTaskPrintList.stream().map(m -> m.getExamEndTime()).distinct().collect(Collectors.toList());
-            if (startTimes.size() != 1 || endTimes.size() != 1) {
-                throw ExceptionResultEnum.ERROR.exception("考试时间有误");
-            }
-            examTaskPrintDto.setExamStartTime(startTimes.get(0));
-            examTaskPrintDto.setExamEndTime(endTimes.get(0));
-        }
-        return examTaskPrintDto;
-    }
-
-    @Transactional
-    @Override
-    public ExamDetail createTaskPrint(ExamTaskPrint examTaskPrint) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-
-        ExamPrintPlan examPrintPlan = examPrintPlanService.getById(examTaskPrint.getPrintPlanId());
-        if (examPrintPlan == null) {
-            throw ExceptionResultEnum.ERROR.exception("印刷计划不存在");
-        }
-        PrintPlanStatusEnum printPlanStatus = examPrintPlan.getStatus();
-        if (PrintPlanStatusEnum.NEW != printPlanStatus && PrintPlanStatusEnum.READY != printPlanStatus) {
-            throw ExceptionResultEnum.ERROR.exception(printPlanStatus.getDesc() + "状态下的印刷计划不允许生成考务数据");
-        }
-
-        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
-        if (Objects.isNull(basicExamRule)) {
-            throw ExceptionResultEnum.EXAM_RULE_IS_NULL.exception();
-        }
-
-        List<String> classIds = Arrays.asList(examTaskPrint.getClassId().split(","));
-        if (examTaskPrint.getId() == null) {
-            // 校验班级
-            QueryWrapper<ExamTaskPrint> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(ExamTaskPrint::getPrintPlanId, examTaskPrint.getPrintPlanId());
-            List<ExamTaskPrint> examTaskPrints = this.list(queryWrapper);
-            validateClass(examTaskPrints, classIds);
-
-            examTaskPrint.setSchoolId(schoolId);
-            examTaskPrint.setOrgId(sysUser.getOrgId());
-            examTaskPrint.setCreateId(sysUser.getId());
-            examTaskPrint.setCreateTime(System.currentTimeMillis());
-
-            // 卷袋号生成规则
-            SerialNumberParams serialNumberParams = new SerialNumberParams("packageCode-" + schoolId, "1", 6);
-            ExamDetail examDetail = new ExamDetail();
-            examDetail.setId(SystemConstant.getDbUuid());
-            examDetail.setPackageCode(printCommonService.createTempNumber(serialNumberParams));
-            examDetail.setSchoolId(schoolId);
-            examDetail.setOrgId(sysUser.getOrgId());
-            examDetail.setPrintPlanId(examTaskPrint.getPrintPlanId());
-            examDetail.setPrintPlanName(examPrintPlan.getName());
-            examDetail.setExamId(examPrintPlan.getExamId());
-            examDetail.setExamPlace(examTaskPrint.getExamPlace());
-            examDetail.setExamRoom(examTaskPrint.getExamRoom());
-            examDetail.setStatus(ExamDetailStatusEnum.NEW);
-            examDetail.setTotalSubjects(examTaskPrint.getStudentCount());
-            examDetail.setExamStartTime(examTaskPrint.getExamStartTime());
-            examDetail.setExamEndTime(examTaskPrint.getExamEndTime());
-            examDetail.setExamDataSource(ExamDataSourceEnum.EXAM_TASK);
-            examDetail.setNormal(true);
-            examDetail.setPrintHouseId(Long.valueOf(examTaskPrint.getPrintHouseId()));
-            examDetail.setCreateId(examTaskPrint.getCreateId());
-            examDetail.setCreateTime(System.currentTimeMillis());
-            examDetailService.save(examDetail);
-
-            examTaskPrint.setExamDetailId(examDetail.getId());
-            this.save(examTaskPrint);
-
-            ExamDetailCourse examDetailCourse = new ExamDetailCourse();
-            examDetailCourse.setId(SystemConstant.getDbUuid());
-            examDetailCourse.setSchoolId(schoolId);
-            examDetailCourse.setOrgId(sysUser.getOrgId());
-            examDetailCourse.setExamDetailId(examDetail.getId());
-            examDetailCourse.setCourseCode(examTaskPrint.getCourseCode());
-            examDetailCourse.setCourseName(examTaskPrint.getCourseName());
-            examDetailCourse.setPaperNumber(examTaskPrint.getPaperNumber());
-            examDetailCourse.setClazzId(examTaskPrint.getClassId());
-            examDetailCourse.setTotalSubjects(examTaskPrint.getStudentCount());
-            examDetailCourse.setCreateId(examTaskPrint.getCreateId());
-            examDetailCourseService.save(examDetailCourse);
-
-            List<ExamStudent> examStudents = printCommonService.createBatchStudent(examTaskPrint.getSchoolId(), examTaskPrint.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
-            if (!CollectionUtils.isEmpty(examStudents)) {
-                examStudentService.insertBatch(examStudents);
-            }
-
-            // 更改印刷计划状态
-            examPrintPlan.setStatus(PrintPlanStatusEnum.READY);
-            examPrintPlanService.updateById(examPrintPlan);
-
-            return examDetail;
-        } else {
-            // 校验班级
-            QueryWrapper<ExamTaskPrint> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(ExamTaskPrint::getPrintPlanId, examTaskPrint.getPrintPlanId())
-                    .ne(ExamTaskPrint::getId, examTaskPrint.getId());
-            List<ExamTaskPrint> examTaskPrints = this.list(queryWrapper);
-            // 校验班级
-            validateClass(examTaskPrints, classIds);
-
-            ExamTaskPrint taskPrint = this.getById(examTaskPrint.getId());
-            taskPrint.setExamPlace(examTaskPrint.getExamPlace());
-            taskPrint.setExamRoom(examTaskPrint.getExamRoom());
-            taskPrint.setInvigilatorTeacher(examTaskPrint.getInvigilatorTeacher());
-            taskPrint.setClassId(examTaskPrint.getClassId());
-            taskPrint.setClassName(examTaskPrint.getClassName());
-            taskPrint.setStudentCount(examTaskPrint.getStudentCount());
-            taskPrint.setCampusId(examTaskPrint.getCampusId());
-            taskPrint.setPrintHouseId(examTaskPrint.getPrintHouseId());
-            taskPrint.setExtendFields(examTaskPrint.getExtendFields());
-            taskPrint.setUpdateId(sysUser.getId());
-            taskPrint.setUpdateTime(System.currentTimeMillis());
-            this.updateById(taskPrint);
-
-            ExamDetail examDetail = examDetailService.getById(taskPrint.getExamDetailId());
-            examDetail.setExamPlace(examTaskPrint.getExamPlace());
-            examDetail.setExamRoom(examTaskPrint.getExamRoom());
-            examDetail.setTotalSubjects(examTaskPrint.getStudentCount());
-            examDetail.setUpdateId(sysUser.getId());
-            examDetail.setUpdateTime(System.currentTimeMillis());
-            examDetailService.updateById(examDetail);
-
-            QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
-            examDetailCourseQueryWrapper.lambda().eq(ExamDetailCourse::getExamDetailId, taskPrint.getExamDetailId());
-            ExamDetailCourse examDetailCourse = examDetailCourseService.getOne(examDetailCourseQueryWrapper);
-            examDetailCourse.setClazzId(taskPrint.getClassId());
-            examDetailCourseService.updateById(examDetailCourse);
-
-            UpdateWrapper<ExamStudent> examStudentUpdateWrapper = new UpdateWrapper<>();
-            examStudentUpdateWrapper.lambda().eq(ExamStudent::getExamDetailCourseId, examDetailCourse.getId());
-            examStudentService.remove(examStudentUpdateWrapper);
-
-            List<ExamStudent> examStudents = printCommonService.createBatchStudent(taskPrint.getSchoolId(), taskPrint.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
-            if (!CollectionUtils.isEmpty(examStudents)) {
-                examStudentService.insertBatch(examStudents);
-            }
-
-            return examDetail;
-        }
-    }
-
-    @Override
-    public List<TaskPrintClassDto> listClass(String printPlanId, String courseCode, String paperNumber, Long examTaskPrintId) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        List<BasicUserCourse> courseList = basicUserCourseService.listBySchoolIdAndCourseCode(schoolId, courseCode);
-        Set<String> stringList = courseList.stream().map(m -> String.valueOf(m.getClazzId())).collect(Collectors.toSet());
-
-        if (!CollectionUtils.isEmpty(stringList)) {
-            QueryWrapper<ExamTaskPrint> examTaskPrintQueryWrapper = new QueryWrapper<>();
-            examTaskPrintQueryWrapper.lambda().eq(ExamTaskPrint::getPrintPlanId, printPlanId).eq(ExamTaskPrint::getCourseCode, courseCode).eq(ExamTaskPrint::getPaperNumber, paperNumber);
-            List<ExamTaskPrint> examTaskPrints = this.list(examTaskPrintQueryWrapper);
-            for (ExamTaskPrint examTaskPrint : examTaskPrints) {
-                List<String> classIds = Arrays.asList(examTaskPrint.getClassId().split(","));
-                for (String classId : classIds) {
-                    if (stringList.contains(classId)) {
-                        stringList.remove(classId);
-                    }
-                }
-            }
-        }
-
-        if (Objects.nonNull(examTaskPrintId)) {
-            ExamTaskPrint examTaskPrint = this.getById(examTaskPrintId);
-            if (Objects.isNull(examTaskPrint)) {
-                throw ExceptionResultEnum.ERROR.exception("数据不存在");
-            }
-            String classId = examTaskPrint.getClassId();
-            if (StringUtils.isNotBlank(classId)) {
-                String[] classIds = classId.split(",");
-                for (String id : classIds) {
-                    stringList.add(id);
-                }
-            }
-        }
-
-        if (!CollectionUtils.isEmpty(stringList)) {
-            List<TaskPrintClassDto> taskPrintClassDtos = basicStudentService.listByClass(schoolId, stringList);
-            return taskPrintClassDtos;
-        }
-        return null;
-    }
-
     @Override
     public List<TaskPrintHouseDto> listHouse() {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -336,41 +98,6 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
         return houseDtos;
     }
 
-    @Override
-    public List<TaskPrintExtendFieldsDto> listTaskPrintExtendFields() {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
-        if (basicExamRule == null) {
-            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
-        }
-        if (Objects.nonNull(basicExamRule.getExtendFields())) {
-            List<TaskPrintExtendFieldsDto> taskPrintExtendFieldsDtos = JSONObject.parseArray(basicExamRule.getExtendFields(), TaskPrintExtendFieldsDto.class);
-            if (!CollectionUtils.isEmpty(taskPrintExtendFieldsDtos)) {
-                taskPrintExtendFieldsDtos = taskPrintExtendFieldsDtos.stream().filter(m -> m.getEnable()).collect(Collectors.toList());
-                return taskPrintExtendFieldsDtos;
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public void submitTaskPrint(ExamTaskPrintParams examTaskPrintParams) throws IOException {
-        if (Objects.isNull(examTaskPrintParams.getPrintPlanId())) {
-            throw ExceptionResultEnum.ERROR.exception("印刷计划不能为空");
-        }
-        List<Long> list = examTaskPrintParams.getList();
-        if (CollectionUtils.isEmpty(list)) {
-            throw ExceptionResultEnum.ERROR.exception("没有可提交数据");
-        }
-        // 调用生成pdf方法
-        for (Long examDetailId : list) {
-            Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, examTaskPrintParams.getPrintPlanId(), (SysUser) ServletUtil.getRequestUser(), examDetailId);
-//            asyncCreatePdfTempleteService.createPdf(map, null);
-            MqDto mqDto = new MqDto(MqTagEnum.PDF.getCode(), map, String.valueOf(map.get(SystemConstant.TB_TASK_ID)));
-            redisUtil.sendMessage(mqDto.getTopic(), mqDto);
-        }
-    }
-
     @Override
     public List<TaskPrintClassDto> listExamTaskClass(String courseCode) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();

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

@@ -1171,7 +1171,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
 
     @Override
-    public void checkDataByExamination(Long printPlanId, Long examDetailId, SysUser user) throws IOException {
+    public void checkDataByExamination(Long printPlanId, Long examDetailId, SysUser user) {
         boolean judge = true;
         ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
         ExamDetail examDetail = examDetailService.getById(examDetailId);

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

@@ -1002,7 +1002,6 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                         }
 
                         Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, examDetail.getPrintPlanId(), user, examDetail.getId());
-//                        asyncCreatePdfTempleteService.createPdf(map, null);
                         MqDto mqDto = new MqDto(MqTagEnum.PDF.getCode(), map, String.valueOf(map.get(SystemConstant.TB_TASK_ID)));
                         redisUtil.sendMessage(mqDto.getTopic(), mqDto);
                     }

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncExaminationImportTemplateService.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.templete.execute;
 
 import cn.hutool.core.date.DateUtil;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.service.ExamDetailService;
 import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.distributed.print.business.templete.importData.AsyncImportTaskTemplete;
 import com.qmth.distributed.print.business.templete.service.TaskLogicService;
@@ -34,6 +35,9 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
     @Resource
     private ExamTaskService examTaskService;
 
+    @Resource
+    private ExamDetailService examDetailService;
+
     private final static Logger log = LoggerFactory.getLogger(AsyncExaminationImportTemplateService.class);
 
     public static final String OBJ_TITLE = "考务数据";
@@ -80,6 +84,9 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
         } finally {//生成txt文件
             tbTask.setSummary(stringJoinerSummary.toString());
             super.createTxt(tbTask);
+
+            // 当前任务结束后,其它任务开始
+            examDetailService.startInitTask(tbTask.getSchoolId());
         }
         return ResultUtil.ok(map);
     }

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

@@ -116,5 +116,12 @@ ALTER TABLE `basic_clazz`
 DROP INDEX `clazz_schoolId_name_idx` ,
 ADD UNIQUE INDEX `clazz_schoolId_name_idx` USING BTREE (`school_id`, `major_id`, `clazz_name`) VISIBLE;
 
+DELETE FROM `sys_privilege` WHERE (`id` = '425');
+DELETE FROM `sys_privilege` WHERE (`id` = '426');
+DELETE FROM `sys_privilege` WHERE (`id` = '428');
+DELETE FROM `sys_privilege` WHERE (`id` = '429');
+DELETE FROM `sys_privilege` WHERE (`id` = '430');
+DELETE FROM `sys_privilege` WHERE (`id` = '449');
+DELETE FROM `sys_privilege` WHERE (`id` = '306');
 
 

+ 2 - 1
distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml

@@ -122,7 +122,8 @@
                a.clazz_name    clazzName,
                a.extend_fields extendFields,
                a.paper_type    paperType,
-               c.package_code pachageCode,
+               a.college_name collegeName,
+               c.package_code packageCode,
                et.sequence
         FROM (select * from exam_detail_course WHERE id = #{examDetailCourseId}) b
                   JOIN

+ 0 - 34
distributed-print-business/src/main/resources/mapper/ExamTaskPrintMapper.xml

@@ -22,38 +22,4 @@
             o.school_id = #{schoolId} AND o.type = #{type}
         ORDER BY o.name
     </select>
-    <select id="listByPrintPlanIdAndCourseCodeAndPaperNumber"
-            resultType="com.qmth.distributed.print.business.bean.dto.ExamTaskPrintDetailDto">
-        SELECT
-            a.id,
-            a.school_id schoolId,
-            a.org_id orgId,
-            a.print_plan_id printPlanId,
-            a.course_code courseCode,
-            a.course_name courseName,
-            a.paper_number paperNumber,
-            a.exam_start_time examStartTime,
-            a.exam_end_time examEndTime,
-            a.exam_place examPlace,
-            a.exam_room examRoom,
-            a.class_id classId,
-            a.class_name className,
-            a.student_count studentCount,
-            a.campus_id campusId,
-            a.print_house_id printHouseId,
-            c.name printHouseName,
-            a.exam_detail_id examDetailId,
-            a.extend_fields extendFields,
-            b.status
-        FROM
-            exam_task_print a
-                LEFT JOIN
-            exam_detail b ON a.exam_detail_id = b.id
-                LEFT JOIN
-            sys_org c ON a.print_house_id = c.id
-        WHERE
-            a.print_plan_id = #{printPlanId}
-                AND a.course_code = #{courseCode}
-                AND a.paper_number = #{paperNumber}
-    </select>
 </mapper>

+ 3 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamDetailController.java

@@ -54,8 +54,6 @@ public class ExamDetailController {
     @Resource
     private TBTaskService tbTaskService;
     @Resource
-    private AsyncExaminationImportTemplateService asyncExaminationImportTemplateService;
-    @Resource
     private AsyncExaminationExportTemplateService asyncExaminationExportTemplateService;
     @Resource
     private ExamDetailService examDetailService;
@@ -70,11 +68,9 @@ public class ExamDetailController {
     @RequestMapping(value = "/data_import", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
-    public Result examinationImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
+    public Result examinationImportAsync(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
                                          @ApiParam(value = "印刷计划id", required = true) @RequestParam String printPlanId) throws Exception {
-        Map<String, Object> map = printCommonService.saveTask(SystemConstant.convertIdToLong(printPlanId), file, TaskTypeEnum.EXAMINATION_IMPORT);
-        asyncExaminationImportTemplateService.importTask(map);
-        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
+        TBTask tbTask = examDetailService.importData(printPlanId, file);
         return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
     }
 
@@ -251,6 +247,7 @@ public class ExamDetailController {
 
     /**
      * 考务数据导入-删除
+     *
      * @param id examDetail表id
      * @return
      */

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

@@ -0,0 +1,319 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailCardDto;
+import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
+import com.qmth.distributed.print.business.entity.ExamTask;
+import com.qmth.distributed.print.business.entity.ExamTaskApplyTemp;
+import com.qmth.distributed.print.business.entity.ExamTaskDetail;
+import com.qmth.distributed.print.business.entity.TFFlowJoin;
+import com.qmth.distributed.print.business.enums.ExamObjectType;
+import com.qmth.distributed.print.business.enums.ExamStatusEnum;
+import com.qmth.distributed.print.business.service.*;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import io.swagger.annotations.*;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.task.Task;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 入库申请 前端控制器
+ * </p>
+ *
+ * @author xf
+ * @since 2021-03-23
+ */
+@Api(tags = "入库申请Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_EXAM + "/task")
+@Validated
+public class ExamTaskApplyController {
+
+    @Resource
+    private ExamTaskService examTaskService;
+
+    @Resource
+    private PrintCommonService printCommonService;
+
+    @Resource
+    private ExamTaskPrintService examTaskPrintService;
+
+    @Resource
+    TaskService taskService;
+
+    @Resource
+    ActivitiService activitiService;
+
+    @Resource
+    TFFlowJoinService tfFlowJoinService;
+
+
+    /**
+     * 入库申请-查询
+     *
+     * @param auditStatus
+     * @param cardRuleId
+     * @param courseCode
+     * @param paperNumber
+     * @param startTime
+     * @param endTime
+     * @param userName    命题老师名称
+     * @param pageNumber
+     * @param pageSize
+     * @return
+     */
+    @ApiOperation(value = "入库申请-分页查询")
+    @RequestMapping(value = "/apply_list", method = RequestMethod.POST)
+    public Result taskApplyList(@RequestParam(value = "semesterId", required = false) Long semesterId,
+                                @RequestParam(value = "examId", required = false) Long examId,
+                                @RequestParam(value = "auditStatus", required = false) String auditStatus,
+                                @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
+                                @RequestParam(value = "courseCode", required = false) String courseCode,
+                                @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                                @RequestParam(value = "startTime", required = false) Long startTime,
+                                @RequestParam(value = "endTime", required = false) Long endTime,
+                                @RequestParam(value = "userName", required = false) String userName,
+                                @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                                @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        if (semesterId == null) {
+            throw ExceptionResultEnum.ERROR.exception("请选择学期");
+        }
+        return ResultUtil.ok(examTaskService.listTaskApply(semesterId, examId, auditStatus, SystemConstant.convertIdToLong(cardRuleId), courseCode, paperNumber, startTime, endTime, userName, pageNumber, pageSize));
+    }
+
+    /**
+     * 入库申请-删除
+     */
+    @ApiOperation(value = "入库申请-删除")
+    @RequestMapping(value = "/apply_delete", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
+    public Result applyDelete(@RequestParam Long id) {
+        examTaskService.applyDelete(id);
+        return ResultUtil.ok(true);
+    }
+
+    /**
+     * 根据命题任务ID查询单个数据
+     *
+     * @param examTaskId 命题任务ID
+     * @return Result
+     */
+    @ApiOperation(value = "根据命题任务ID查询任务详情数据")
+    @RequestMapping(value = "/apply_get_one", method = RequestMethod.POST)
+    public Result applyGetOne(@RequestParam(value = "examTaskId") Long examTaskId,
+                              @RequestParam(value = "source", required = false) String source) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        ExamTaskDetailCardDto detail = examTaskService.applyGetOne(examTaskId, source);
+        if (Objects.nonNull(detail) && Objects.nonNull(detail.getFlowId())) {
+            Task task = taskService.createTaskQuery().processInstanceId(detail.getFlowId())
+                    .taskCandidateOrAssigned(String.valueOf(sysUser.getId())).singleResult();
+            if (Objects.nonNull(task)) {
+                detail.setFlowTaskId(task.getId());
+            } else {
+                List<TFFlowJoin> tfFlowJoinList = tfFlowJoinService.findByObjectId(Long.parseLong(detail.getExamTaskId()));
+                String flowId = null;
+                TFFlowJoin tfFlowJoin = null;
+                if (Objects.nonNull(tfFlowJoinList) && tfFlowJoinList.size() > 1) {
+                    tfFlowJoin = tfFlowJoinList.get(tfFlowJoinList.size() - 1);
+                } else if (Objects.nonNull(tfFlowJoinList) && tfFlowJoinList.size() == 1) {
+                    tfFlowJoin = tfFlowJoinList.get(0);
+                }
+                flowId = Objects.nonNull(tfFlowJoin) ? String.valueOf(tfFlowJoin.getFlowId()) : flowId;
+                task = taskService.createTaskQuery().processInstanceId(detail.getFlowId())
+                        .taskCandidateOrAssigned(String.valueOf(sysUser.getId())).singleResult();
+                if (Objects.nonNull(task)) {
+//                    detail.setSubFlowReject(true);
+                    detail.setFlowTaskId(task.getId());
+                    detail.setFlowId(flowId);
+                }
+            }
+        }
+        return ResultUtil.ok(detail);
+    }
+
+    /**
+     * 入库申请-暂存/提交
+     *
+     * @param examTaskDetail 命题任务详情对象
+     * @return Result
+     */
+    @ApiOperation(value = "入库申请-暂存/提交")
+    @RequestMapping(value = "/apply_save", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
+    public Result taskApplySave(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
+        Map<String, Object> map = examTaskService.saveExamTaskDetail(examTaskDetail);
+        ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
+        if (examTaskDetail.getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && (Objects.nonNull(examTask.getReview()) && !examTask.getReview())) {
+            // 校验是否可以提交打印状态
+            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
+        }
+        Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
+        if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
+            activitiService.sendFlowTaskApproveMsg(map);
+        }
+        return ResultUtil.ok(true);
+    }
+
+
+    /**
+     * 入库申请-撤销申请
+     *
+     * @param examTask 命题任务对象
+     * @return Result
+     */
+    @ApiOperation(value = "入库申请-撤销申请")
+    @RequestMapping(value = "/apply_status", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
+    public Result taskApplyStatus(@RequestBody ExamTask examTask) {
+        Map<String, Object> map = examTaskService.status(examTask);
+        activitiService.sendFlowTaskApproveMsg(map);
+        return ResultUtil.ok(true);
+    }
+
+
+    /**
+     * 入库申请-新建任务-保存
+     *
+     * @param examTaskApplyTemp
+     * @return
+     */
+    @ApiOperation(value = "入库申请-新建任务-保存")
+    @RequestMapping(value = "/submit_task_apply", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
+    public Result submitTaskApply(@RequestBody ExamTaskApplyTemp examTaskApplyTemp) throws IOException {
+        Map<String, Object> map = examTaskService.submitTaskApply(examTaskApplyTemp);
+        ExamTask examTask = (ExamTask) map.get(SystemConstant.EXAM_TASK);
+        if (Objects.nonNull(examTask.getReview()) && !examTask.getReview()) {
+            // 校验是否可以提交打印状态
+            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
+        }
+        Boolean sendFlowStartMq = (Boolean) map.get(SystemConstant.SEND_FLOW_START_MQ);
+        Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
+        if (Objects.nonNull(sendFlowStartMq) && sendFlowStartMq) {
+            activitiService.sendFlowStartMsg(examTask.getFlowId());
+        } else if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
+            activitiService.sendFlowTaskApproveMsg(map);
+        }
+        return ResultUtil.ok();
+    }
+
+    /**
+     * 入库申请-新建命题任务
+     *
+     * @param examTaskApplyParam
+     * @return
+     */
+    @ApiOperation(value = "入库申请-新建命题任务-暂存/提交")
+    @RequestMapping(value = "/save_task_apply", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
+    public Result saveTaskApply(@RequestBody ExamTaskApplyParam examTaskApplyParam) throws IOException {
+        Map<String, Object> map = examTaskService.saveExamTaskAndExamTaskDetail(examTaskApplyParam);
+        ExamTask examTask = (ExamTask) map.get(SystemConstant.EXAM_TASK);
+        if (examTaskApplyParam.getExamTaskDetail().getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && (Objects.nonNull(examTask.getReview()) && !examTask.getReview())) {
+            // 校验是否可以提交打印状态
+            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
+        }
+        Boolean sendFlowStartMq = (Boolean) map.get(SystemConstant.SEND_FLOW_START_MQ);
+        Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
+        if (Objects.nonNull(sendFlowStartMq) && sendFlowStartMq) {
+            activitiService.sendFlowStartMsg(examTask.getFlowId());
+        } else if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
+            activitiService.sendFlowTaskApproveMsg(map);
+        }
+        return ResultUtil.ok(examTask);
+    }
+
+    /**
+     * 入库申请-新建命题任务-取消/删除
+     *
+     * @param examTaskId
+     * @return
+     */
+    @ApiOperation(value = "入库申请-新建命题任务-取消/删除")
+    @RequestMapping(value = "/remove_task_apply", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
+    public Result removeTaskApply(@RequestParam(value = "examTaskId") Long examTaskId) {
+        examTaskService.removeByExamTaskId(examTaskId);
+        return ResultUtil.ok(true, "");
+    }
+
+    /**
+     * 入库申请-新建命题任务-切换题卡
+     *
+     * @param examTaskId
+     * @return
+     */
+    @ApiOperation(value = "切换题卡")
+    @RequestMapping(value = "/switch_card", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
+    public Result switchCard(@RequestParam(value = "examTaskId") Long examTaskId) {
+        examTaskService.switchCard(examTaskId);
+        return ResultUtil.ok(true, "");
+    }
+
+    /**
+     * 印刷室列表
+     *
+     * @return
+     */
+    @ApiOperation(value = "卷库查询-发布印刷任务-印刷室列表")
+    @RequestMapping(value = "/list_task_print_house", method = RequestMethod.POST)
+    public Result listTaskPrintHouse() {
+        return ResultUtil.ok(examTaskPrintService.listHouse());
+    }
+
+    @ApiOperation(value = "题卡标题查询")
+    @RequestMapping(value = "/find_card_title", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result findCardTitle(@ApiParam(value = "题卡规则id", required = true) @RequestParam String cardRuleId) {
+        return ResultUtil.ok((Object) examTaskService.findCardTitle(SystemConstant.convertIdToLong(cardRuleId)));
+    }
+
+    @ApiOperation(value = "命题任务-考试对象查询")
+    @RequestMapping(value = "/find_exam_object", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result findExamObject(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
+                                 @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
+        return ResultUtil.ok(examTaskService.findExamObjectDtoByPaperNumber(examId, paperNumber));
+    }
+
+    @ApiOperation(value = "入库申请-考生对象查询")
+    @RequestMapping(value = "/find_exam_task_student_object", method = RequestMethod.POST)
+    @Transactional(rollbackFor = Exception.class)
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
+    public Result findExamTaskStudentObject(@RequestParam ExamObjectType examObjectType,
+                                            @RequestParam(required = false) String courseCode) throws Exception {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        return ResultUtil.ok(examTaskService.findExamTaskStudentObject(examObjectType, courseCode, requestUser));
+    }
+
+    @ApiOperation(value = "入库申请-导入考生对象")
+    @RequestMapping(value = "/exam_task_exam_student_import", method = RequestMethod.POST)
+    @Transactional(rollbackFor = Exception.class)
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
+    public Result examTaskExamStudentImport(@RequestParam MultipartFile file) throws Exception {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        return ResultUtil.ok(examTaskService.examTaskExamStudentImport(file, requestUser));
+    }
+}
+

+ 273 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskAuditController.java

@@ -0,0 +1,273 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.params.ApproveFormParams;
+import com.qmth.distributed.print.business.bean.params.ExamTaskReApplyParam;
+import com.qmth.distributed.print.business.entity.ExamTask;
+import com.qmth.distributed.print.business.entity.ExamTaskReviewLog;
+import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
+import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.templete.execute.AsyncTaskReviewSampleExportService;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.bean.params.ArraysParams;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+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.log.CustomizedOperationTypeEnum;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import io.swagger.annotations.*;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.task.Task;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * <p>
+ * 入库审核 前端控制器
+ * </p>
+ *
+ * @author xf
+ * @since 2021-03-23
+ */
+@Api(tags = "入库审核Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_EXAM + "/task")
+@Validated
+public class ExamTaskAuditController {
+
+    @Resource
+    private ExamTaskService examTaskService;
+
+    @Resource
+    private AsyncTaskReviewSampleExportService asyncTaskReviewSampleExportService;
+
+    @Resource
+    private PrintCommonService printCommonService;
+
+    @Resource
+    private BasicMessageService basicMessageService;
+
+    @Resource
+    TaskService taskService;
+
+    @Resource
+    ActivitiService activitiService;
+
+    @Resource
+    ExamPaperStructureService examPaperStructureService;
+
+    @Resource
+    GradeInitializeService gradeInitializeService;
+
+
+    @ApiOperation(value = "审核-印刷员驳回后命题老师修改")
+    @RequestMapping(value = "/apply_resave", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
+    public Result taskReApplySave(@RequestBody ExamTaskReApplyParam examTaskReApplyParam) {
+        Map<String, Object> map = examTaskService.applyResave(examTaskReApplyParam);
+        activitiService.sendFlowTaskApproveMsg(map);
+        return ResultUtil.ok();
+    }
+
+    /**
+     * 入库审核-查询-未审核
+     *
+     * @param courseCode
+     * @param paperNumber
+     * @param userId
+     * @param cardRuleId
+     * @param startTime
+     * @param endTime
+     * @param startCreateTime 申请时间-起始
+     * @param endCreateTime   申请时间-终止
+     * @param createName      创建人
+     * @param pageNumber
+     * @param pageSize
+     * @return
+     */
+    @ApiOperation(value = "入库审核-查询-未审核")
+    @RequestMapping(value = "/review_list_unaudited", method = RequestMethod.POST)
+    public Result taskReviewListUnaudited(@RequestParam(value = "semesterId", required = false) Long semesterId,
+                                          @RequestParam(value = "examId", required = false) Long examId,
+                                          @RequestParam(value = "courseCode", required = false) String courseCode,
+                                          @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                                          @RequestParam(value = "userId", required = false) Long userId,
+                                          @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
+                                          @RequestParam(value = "startTime", required = false) Long startTime,
+                                          @RequestParam(value = "endTime", required = false) Long endTime,
+                                          @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
+                                          @RequestParam(value = "endCreateTime", required = false) Long endCreateTime,
+                                          @RequestParam(value = "createName", required = false) String createName,
+                                          @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                                          @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        if (semesterId == null) {
+            throw ExceptionResultEnum.ERROR.exception("请选择学期");
+        }
+        return ResultUtil.ok(examTaskService.listTaskReviewUnaudited(semesterId, examId, courseCode, paperNumber, userId, SystemConstant.convertIdToLong(cardRuleId), startTime, endTime, startCreateTime, endCreateTime, createName, pageNumber, pageSize));
+    }
+
+    /**
+     * 入库审核-查询-未审核
+     *
+     * @param courseCode      课程代码
+     * @param paperNumber     试卷编号
+     * @param userId          命题老师ID
+     * @param cardRuleId      题卡规则ID
+     * @param startTime       开始时间
+     * @param endTime         结束时间
+     * @param startCreateTime 申请时间-起始
+     * @param endCreateTime   申请时间-终止
+     * @param createName      创建人
+     * @param pageNumber      分页参数
+     * @param pageSize        分页参数
+     * @return Result
+     */
+    @ApiOperation(value = "入库审核-查询-已审核")
+    @RequestMapping(value = "/review_list_audited", method = RequestMethod.POST)
+    public Result taskReviewListAudited(@RequestParam(value = "semesterId", required = false) Long semesterId,
+                                        @RequestParam(value = "examId", required = false) Long examId,
+                                        @RequestParam(value = "reviewStatus", required = false) String reviewStatus,
+                                        @RequestParam(value = "courseCode", required = false) String courseCode,
+                                        @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                                        @RequestParam(value = "userId", required = false) Long userId,
+                                        @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
+                                        @RequestParam(value = "startTime", required = false) Long startTime,
+                                        @RequestParam(value = "endTime", required = false) Long endTime,
+                                        @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
+                                        @RequestParam(value = "endCreateTime", required = false) Long endCreateTime,
+                                        @RequestParam(value = "createName", required = false) String createName,
+                                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        if (semesterId == null) {
+            throw ExceptionResultEnum.ERROR.exception("请选择学期");
+        }
+        return ResultUtil.ok(examTaskService.listTaskReviewAudited(semesterId, examId, reviewStatus, courseCode, paperNumber, userId, SystemConstant.convertIdToLong(cardRuleId), startTime, endTime, startCreateTime, endCreateTime, createName, pageNumber, pageSize));
+    }
+
+    /**
+     * 入库审核-查询-已审核数量
+     *
+     * @return
+     */
+    @ApiOperation(value = "入库审核-查询-已审核数量")
+    @RequestMapping(value = "/review_list_audited_count", method = RequestMethod.POST)
+    public Result taskReviewListAuditedCount() {
+        int taskReviewAuditedCount = examTaskService.listTaskReviewAudited(null, null, null, null, null, null, null, null, null, null, null, null, SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE).getRecords().size();
+        long paperCount = examPaperStructureService.countByPropositionTeacherId(true);
+        long gradeCount = gradeInitializeService.countByPropositionTeacherId(GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM, true);
+        return ResultUtil.ok(taskReviewAuditedCount + paperCount + gradeCount);
+    }
+
+    /**
+     * 审核
+     *
+     * @param taskReviewLog 审核对象
+     * @return Result ,
+     */
+    @ApiOperation(value = "审核")
+    @RequestMapping(value = "/review_save", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
+    public Result taskReviewSave(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
+        List<Long> examTaskIdList = new ArrayList<>();
+        examTaskIdList.add(taskReviewLog.getExamTaskId());
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        boolean isSuccess = examTaskService.taskReviewSave(taskReviewLog);
+        if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
+            ExamTask examTask = examTaskService.getById(taskReviewLog.getExamTaskId());
+            // 校验是否可以提交打印状态
+            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
+            // 发送审核通过短信通知
+            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_PASS, sysUser);
+        } else if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.NOT_PASS.name())) {
+            // 发送审核不通过短信通知
+            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_NOT_PASS, sysUser);
+        }
+        return ResultUtil.ok(isSuccess);
+    }
+
+    /**
+     * 入库审核-批量审核
+     *
+     * @param taskReviewLog 审核对象
+     * @return Result
+     */
+    @ApiOperation(value = "入库审核-批量审核")
+    @RequestMapping(value = "/review_save_batch", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
+    public Result taskReviewSaveBatch(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
+        List<Long> examTaskIdList = Arrays.asList(taskReviewLog.getExamTaskIds());
+        if (!CollectionUtils.isEmpty(examTaskIdList)) {
+            for (Long examTaskId : examTaskIdList) {
+                ExamTask examTask = examTaskService.getById(examTaskId);
+                List<Task> taskList = taskService.createTaskQuery().processInstanceId(String.valueOf(examTask.getFlowId())).list();
+                if (Objects.nonNull(taskList) && taskList.size() > 0) {
+                    for (Task task : taskList) {
+                        Map<String, Object> map = new HashMap<>();
+                        map.computeIfAbsent(SystemConstant.FLOW_TASK_ID, v -> task.getId());
+                        map.computeIfAbsent(SystemConstant.APPROVE_OPERATION, v -> FlowApprovePassEnum.PASS);
+                        activitiService.taskApprove(map);
+                        activitiService.sendFlowTaskApproveMsg(map);
+                    }
+                }
+            }
+        }
+        /*SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        boolean isSuccess = examTaskService.taskReviewSaveBatch(taskReviewLog);
+        if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
+            // 发送审核通过短信通知
+            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_PASS, sysUser);
+        } else if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.NOT_PASS.name())) {
+            // 发送审核不通过短信通知
+            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_NOT_PASS, sysUser);
+        }*/
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "导出审核样本")
+    @RequestMapping(value = "/review_export", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EXPORT)
+    public Result taskReviewExport(@Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) throws
+            Exception {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        Long[] ids = arraysParams.getIds();
+        Map<String, Object> map = printCommonService.saveTask(TaskTypeEnum.SAMPLE_EXPORT);
+        map.put("ids", ids);
+        asyncTaskReviewSampleExportService.exportTask(map);
+        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
+        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
+    }
+
+    @ApiOperation(value = "命题任务-审批-获取试卷审批表数据")
+    @RequestMapping(value = "/find_approve_form_json", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public Result findApproveFormJson(@ApiParam(value = "命题任务id", required = true) @RequestParam String examTaskId) {
+        return ResultUtil.ok((Object) examTaskService.findExamTaskApprovalForm(SystemConstant.convertIdToLong(examTaskId)));
+    }
+
+    @ApiOperation(value = "命题任务-审批-获取试卷审批表pdf")
+    @RequestMapping(value = "/find_approve_form_pdf", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    public void findApproveFormPdf(@Valid @RequestBody ApproveFormParams approveFormParams, BindingResult bindingResult) throws Exception {
+        if (bindingResult.hasErrors()) {
+            throw ExceptionResultEnum.ERROR.exception(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        HttpServletResponse response = ServletUtil.getResponse();
+        examTaskService.findExamTaskApprovalPdf(response, approveFormParams.getExamTaskId(), approveFormParams.getHtmlContent());
+    }
+}
+

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

@@ -2,53 +2,34 @@ package com.qmth.distributed.print.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.exception.ApiException;
-import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailCardDto;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDto;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskImportDto;
-import com.qmth.distributed.print.business.bean.dto.ExamTaskPrintDto;
-import com.qmth.distributed.print.business.bean.params.ApproveFormParams;
-import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
-import com.qmth.distributed.print.business.bean.params.ExamTaskPrintParams;
-import com.qmth.distributed.print.business.bean.params.ExamTaskReApplyParam;
-import com.qmth.distributed.print.business.bean.result.EditResult;
-import com.qmth.distributed.print.business.entity.*;
-import com.qmth.distributed.print.business.enums.ExamObjectType;
-import com.qmth.distributed.print.business.enums.ExamStatusEnum;
-import com.qmth.distributed.print.business.enums.MakeMethodEnum;
-import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
+import com.qmth.distributed.print.business.entity.ExamTask;
+import com.qmth.distributed.print.business.entity.ExamTaskApplyTemp;
 import com.qmth.distributed.print.business.service.*;
-import com.qmth.distributed.print.business.templete.execute.AsyncTaskReviewSampleExportService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
-import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
-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.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.service.BasicAttachmentService;
-import com.qmth.teachcloud.common.service.BasicStudentService;
-import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import io.swagger.annotations.*;
-import org.activiti.engine.TaskService;
-import org.activiti.engine.task.Task;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-import org.springframework.validation.BindingResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
-import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -68,48 +49,21 @@ public class ExamTaskController {
     @Resource
     private ExamTaskService examTaskService;
 
-    @Resource
-    private ExamTaskDetailService examTaskDetailService;
-
     @Resource
     private BasicAttachmentService basicAttachmentService;
 
-    @Resource
-    private AsyncTaskReviewSampleExportService asyncTaskReviewSampleExportService;
-
     @Resource
     private PrintCommonService printCommonService;
 
-    @Resource
-    private BasicMessageService basicMessageService;
-
     @Resource
     private ExamTaskPrintService examTaskPrintService;
 
-    @Resource
-    TaskService taskService;
-
-    @Resource
-    private BasicStudentService basicStudentService;
-
     @Resource
     ActivitiService activitiService;
 
     @Resource
     ExamTaskApplyTempService examTaskApplyTempService;
 
-    @Resource
-    TFFlowJoinService tfFlowJoinService;
-
-    @Resource
-    ExamPaperStructureService examPaperStructureService;
-
-    @Resource
-    GradeInitializeService gradeInitializeService;
-
-    @Resource
-    RedisUtil redisUtil;
-
     /**
      * 命题任务管理-查询
      *
@@ -259,59 +213,6 @@ public class ExamTaskController {
         return ResultUtil.ok(true);
     }
 
-//    /**
-//     * 审核历史
-//     */
-//    @ApiOperation(value = "审核历史")
-//    @RequestMapping(value = "/review_list", method = RequestMethod.POST)
-//    public Result reviewList(@ApiParam(value = "流程id", required = true) @RequestParam String flowId) {
-//        return ResultUtil.ok(examTaskReviewLogService.list(SystemConstant.convertIdToLong(flowId)));
-//    }
-
-    /**
-     * 入库申请-查询
-     *
-     * @param auditStatus
-     * @param cardRuleId
-     * @param courseCode
-     * @param paperNumber
-     * @param startTime
-     * @param endTime
-     * @param userName    命题老师名称
-     * @param pageNumber
-     * @param pageSize
-     * @return
-     */
-    @ApiOperation(value = "入库申请-分页查询")
-    @RequestMapping(value = "/apply_list", method = RequestMethod.POST)
-    public Result taskApplyList(@RequestParam(value = "semesterId", required = false) Long semesterId,
-                                @RequestParam(value = "examId", required = false) Long examId,
-                                @RequestParam(value = "auditStatus", required = false) String auditStatus,
-                                @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
-                                @RequestParam(value = "courseCode", required = false) String courseCode,
-                                @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                                @RequestParam(value = "startTime", required = false) Long startTime,
-                                @RequestParam(value = "endTime", required = false) Long endTime,
-                                @RequestParam(value = "userName", required = false) String userName,
-                                @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        if (semesterId == null) {
-            throw ExceptionResultEnum.ERROR.exception("请选择学期");
-        }
-        return ResultUtil.ok(examTaskService.listTaskApply(semesterId, examId, auditStatus, SystemConstant.convertIdToLong(cardRuleId), courseCode, paperNumber, startTime, endTime, userName, pageNumber, pageSize));
-    }
-
-    /**
-     * 入库申请-删除
-     */
-    @ApiOperation(value = "入库申请-删除")
-    @RequestMapping(value = "/apply_delete", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
-    public Result applyDelete(@RequestParam Long id) {
-        examTaskService.applyDelete(id);
-        return ResultUtil.ok(true);
-    }
-
     /**
      * 根据命题任务ID查询单个数据
      *
@@ -325,380 +226,6 @@ public class ExamTaskController {
         return ResultUtil.ok(examTaskDto);
     }
 
-    /**
-     * 根据命题任务ID查询单个数据
-     *
-     * @param examTaskId 命题任务ID
-     * @return Result
-     */
-    @ApiOperation(value = "根据命题任务ID查询任务详情数据")
-    @RequestMapping(value = "/apply_get_one", method = RequestMethod.POST)
-    public Result applyGetOne(@RequestParam(value = "examTaskId") Long examTaskId,
-                              @RequestParam(value = "source", required = false) String source) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        ExamTaskDetailCardDto detail = examTaskService.applyGetOne(examTaskId, source);
-        if (Objects.nonNull(detail) && Objects.nonNull(detail.getFlowId())) {
-            Task task = taskService.createTaskQuery().processInstanceId(detail.getFlowId())
-                    .taskCandidateOrAssigned(String.valueOf(sysUser.getId())).singleResult();
-            if (Objects.nonNull(task)) {
-                detail.setFlowTaskId(task.getId());
-            } else {
-                List<TFFlowJoin> tfFlowJoinList = tfFlowJoinService.findByObjectId(Long.parseLong(detail.getExamTaskId()));
-                String flowId = null;
-                TFFlowJoin tfFlowJoin = null;
-                if (Objects.nonNull(tfFlowJoinList) && tfFlowJoinList.size() > 1) {
-                    tfFlowJoin = tfFlowJoinList.get(tfFlowJoinList.size() - 1);
-                } else if (Objects.nonNull(tfFlowJoinList) && tfFlowJoinList.size() == 1) {
-                    tfFlowJoin = tfFlowJoinList.get(0);
-                }
-                flowId = Objects.nonNull(tfFlowJoin) ? String.valueOf(tfFlowJoin.getFlowId()) : flowId;
-                task = taskService.createTaskQuery().processInstanceId(detail.getFlowId())
-                        .taskCandidateOrAssigned(String.valueOf(sysUser.getId())).singleResult();
-                if (Objects.nonNull(task)) {
-//                    detail.setSubFlowReject(true);
-                    detail.setFlowTaskId(task.getId());
-                    detail.setFlowId(flowId);
-                }
-            }
-        }
-        return ResultUtil.ok(detail);
-    }
-
-    /**
-     * 入库申请-暂存/提交
-     *
-     * @param examTaskDetail 命题任务详情对象
-     * @return Result
-     */
-    @ApiOperation(value = "入库申请-暂存/提交")
-    @RequestMapping(value = "/apply_save", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
-    public Result taskApplySave(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
-        Map<String, Object> map = examTaskService.saveExamTaskDetail(examTaskDetail);
-        ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
-        if (examTaskDetail.getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && (Objects.nonNull(examTask.getReview()) && !examTask.getReview())) {
-            // 校验是否可以提交打印状态
-            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
-        }
-        Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
-        if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
-            activitiService.sendFlowTaskApproveMsg(map);
-        }
-        return ResultUtil.ok(true);
-    }
-
-    @ApiOperation(value = "审核-印刷员驳回后命题老师修改")
-    @RequestMapping(value = "/apply_resave", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
-    public Result taskReApplySave(@RequestBody ExamTaskReApplyParam examTaskReApplyParam) {
-        Map<String, Object> map = examTaskService.applyResave(examTaskReApplyParam);
-        activitiService.sendFlowTaskApproveMsg(map);
-        return ResultUtil.ok();
-    }
-
-    /**
-     * 入库申请-撤销申请
-     *
-     * @param examTask 命题任务对象
-     * @return Result
-     */
-    @ApiOperation(value = "入库申请-撤销申请")
-    @RequestMapping(value = "/apply_status", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
-    public Result taskApplyStatus(@RequestBody ExamTask examTask) {
-        Map<String, Object> map = examTaskService.status(examTask);
-        activitiService.sendFlowTaskApproveMsg(map);
-        return ResultUtil.ok(true);
-    }
-
-    /**
-     * 入库审核-查询-未审核
-     *
-     * @param courseCode
-     * @param paperNumber
-     * @param userId
-     * @param cardRuleId
-     * @param startTime
-     * @param endTime
-     * @param startCreateTime 申请时间-起始
-     * @param endCreateTime   申请时间-终止
-     * @param createName      创建人
-     * @param pageNumber
-     * @param pageSize
-     * @return
-     */
-    @ApiOperation(value = "入库审核-查询-未审核")
-    @RequestMapping(value = "/review_list_unaudited", method = RequestMethod.POST)
-    public Result taskReviewListUnaudited(@RequestParam(value = "semesterId", required = false) Long semesterId,
-                                          @RequestParam(value = "examId", required = false) Long examId,
-                                          @RequestParam(value = "courseCode", required = false) String courseCode,
-                                          @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                                          @RequestParam(value = "userId", required = false) Long userId,
-                                          @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
-                                          @RequestParam(value = "startTime", required = false) Long startTime,
-                                          @RequestParam(value = "endTime", required = false) Long endTime,
-                                          @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
-                                          @RequestParam(value = "endCreateTime", required = false) Long endCreateTime,
-                                          @RequestParam(value = "createName", required = false) String createName,
-                                          @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                          @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        if (semesterId == null) {
-            throw ExceptionResultEnum.ERROR.exception("请选择学期");
-        }
-        return ResultUtil.ok(examTaskService.listTaskReviewUnaudited(semesterId, examId, courseCode, paperNumber, userId, SystemConstant.convertIdToLong(cardRuleId), startTime, endTime, startCreateTime, endCreateTime, createName, pageNumber, pageSize));
-    }
-
-    /**
-     * 入库审核-查询-未审核
-     *
-     * @param courseCode      课程代码
-     * @param paperNumber     试卷编号
-     * @param userId          命题老师ID
-     * @param cardRuleId      题卡规则ID
-     * @param startTime       开始时间
-     * @param endTime         结束时间
-     * @param startCreateTime 申请时间-起始
-     * @param endCreateTime   申请时间-终止
-     * @param createName      创建人
-     * @param pageNumber      分页参数
-     * @param pageSize        分页参数
-     * @return Result
-     */
-    @ApiOperation(value = "入库审核-查询-已审核")
-    @RequestMapping(value = "/review_list_audited", method = RequestMethod.POST)
-    public Result taskReviewListAudited(@RequestParam(value = "semesterId", required = false) Long semesterId,
-                                        @RequestParam(value = "examId", required = false) Long examId,
-                                        @RequestParam(value = "reviewStatus", required = false) String reviewStatus,
-                                        @RequestParam(value = "courseCode", required = false) String courseCode,
-                                        @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                                        @RequestParam(value = "userId", required = false) Long userId,
-                                        @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
-                                        @RequestParam(value = "startTime", required = false) Long startTime,
-                                        @RequestParam(value = "endTime", required = false) Long endTime,
-                                        @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
-                                        @RequestParam(value = "endCreateTime", required = false) Long endCreateTime,
-                                        @RequestParam(value = "createName", required = false) String createName,
-                                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        if (semesterId == null) {
-            throw ExceptionResultEnum.ERROR.exception("请选择学期");
-        }
-        return ResultUtil.ok(examTaskService.listTaskReviewAudited(semesterId, examId, reviewStatus, courseCode, paperNumber, userId, SystemConstant.convertIdToLong(cardRuleId), startTime, endTime, startCreateTime, endCreateTime, createName, pageNumber, pageSize));
-    }
-
-    /**
-     * 入库审核-查询-已审核数量
-     *
-     * @return
-     */
-    @ApiOperation(value = "入库审核-查询-已审核数量")
-    @RequestMapping(value = "/review_list_audited_count", method = RequestMethod.POST)
-    public Result taskReviewListAuditedCount() {
-        int taskReviewAuditedCount = examTaskService.listTaskReviewAudited(null, null, null, null, null, null, null, null, null, null, null, null, SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE).getRecords().size();
-        long paperCount = examPaperStructureService.countByPropositionTeacherId(true);
-        long gradeCount = gradeInitializeService.countByPropositionTeacherId(GradeAnalyzePaperStatusEnum.SETTING_GRADE_PAPER_PARAM, true);
-        return ResultUtil.ok(taskReviewAuditedCount + paperCount + gradeCount);
-    }
-
-    /**
-     * 审核
-     *
-     * @param taskReviewLog 审核对象
-     * @return Result ,
-     */
-    @ApiOperation(value = "审核")
-    @RequestMapping(value = "/review_save", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
-    public Result taskReviewSave(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
-        List<Long> examTaskIdList = new ArrayList<>();
-        examTaskIdList.add(taskReviewLog.getExamTaskId());
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        boolean isSuccess = examTaskService.taskReviewSave(taskReviewLog);
-        if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-            ExamTask examTask = examTaskService.getById(taskReviewLog.getExamTaskId());
-            // 校验是否可以提交打印状态
-            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
-            // 发送审核通过短信通知
-            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_PASS, sysUser);
-        } else if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.NOT_PASS.name())) {
-            // 发送审核不通过短信通知
-            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_NOT_PASS, sysUser);
-        }
-        return ResultUtil.ok(isSuccess);
-    }
-
-    /**
-     * 入库审核-批量审核
-     *
-     * @param taskReviewLog 审核对象
-     * @return Result
-     */
-    @ApiOperation(value = "入库审核-批量审核")
-    @RequestMapping(value = "/review_save_batch", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
-    public Result taskReviewSaveBatch(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
-        List<Long> examTaskIdList = Arrays.asList(taskReviewLog.getExamTaskIds());
-        if (!CollectionUtils.isEmpty(examTaskIdList)) {
-            for (Long examTaskId : examTaskIdList) {
-                ExamTask examTask = examTaskService.getById(examTaskId);
-                List<Task> taskList = taskService.createTaskQuery().processInstanceId(String.valueOf(examTask.getFlowId())).list();
-                if (Objects.nonNull(taskList) && taskList.size() > 0) {
-                    for (Task task : taskList) {
-                        Map<String, Object> map = new HashMap<>();
-                        map.computeIfAbsent(SystemConstant.FLOW_TASK_ID, v -> task.getId());
-                        map.computeIfAbsent(SystemConstant.APPROVE_OPERATION, v -> FlowApprovePassEnum.PASS);
-                        activitiService.taskApprove(map);
-                        activitiService.sendFlowTaskApproveMsg(map);
-                    }
-                }
-            }
-        }
-        /*SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        boolean isSuccess = examTaskService.taskReviewSaveBatch(taskReviewLog);
-        if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-            // 发送审核通过短信通知
-            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_PASS, sysUser);
-        } else if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.NOT_PASS.name())) {
-            // 发送审核不通过短信通知
-            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_NOT_PASS, sysUser);
-        }*/
-        return ResultUtil.ok();
-    }
-
-    @ApiOperation(value = "导出审核样本")
-    @RequestMapping(value = "/review_export", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EXPORT)
-    public Result taskReviewExport(@Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) throws
-            Exception {
-        if (bindingResult.hasErrors()) {
-            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
-        }
-        Long[] ids = arraysParams.getIds();
-        Map<String, Object> map = printCommonService.saveTask(TaskTypeEnum.SAMPLE_EXPORT);
-        map.put("ids", ids);
-        asyncTaskReviewSampleExportService.exportTask(map);
-        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
-        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
-    }
-
-    /**
-     * 卷库查询
-     *
-     * @param courseCode  课程代码
-     * @param paperNumber 试卷编号
-     * @param startTime   开始时间
-     * @param endTime     结束时间
-     * @param pageNumber  分页参数
-     * @param pageSize    分页参数
-     * @return Result
-     */
-    @ApiOperation(value = "卷库查询")
-    @RequestMapping(value = "/paper_list", method = RequestMethod.POST)
-    public Result taskPaperList(@RequestParam(value = "semesterId", required = false) Long semesterId,
-                                @RequestParam(value = "examId", required = false) Long examId,
-                                @RequestParam(value = "courseCode", required = false) String courseCode,
-                                @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                                @RequestParam(value = "startTime", required = false) Long startTime,
-                                @RequestParam(value = "endTime", required = false) Long endTime,
-                                @RequestParam(value = "makeMethod", required = false) MakeMethodEnum makeMethod,
-                                @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
-                                @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        if (semesterId == null) {
-            throw ExceptionResultEnum.ERROR.exception("请选择学期");
-        }
-        return ResultUtil.ok(examTaskService.listTaskPaper(semesterId, examId, courseCode, paperNumber, startTime, endTime, makeMethod, SystemConstant.convertIdToLong(cardRuleId), pageNumber, pageSize));
-    }
-
-
-    /**
-     * 下载
-     *
-     * @param examTaskId 命题任务ID
-     */
-    @ApiOperation(value = "下载")
-    @RequestMapping(value = "/paper_download", method = RequestMethod.POST)
-    public void taskPaperDownload(HttpServletResponse response, @RequestParam Long examTaskId) throws Exception {
-        examTaskService.paperDownload(response, examTaskId);
-    }
-
-    /**
-     * 卷库查询-启用/禁用
-     *
-     * @param examTaskDetail 命题任务详情对象
-     * @return Result
-     */
-    @ApiOperation(value = "卷库查询-启用/禁用")
-    @RequestMapping(value = "/paper_enable", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
-    public Result taskPaperEnable(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
-        boolean isSuccess = examTaskDetailService.enable(examTaskDetail);
-        // 启用,触发考场生成pdf
-        if (examTaskDetail.getEnable()) {
-            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-            ExamTask examTask = examTaskService.getById(examTaskDetail.getId());
-            // 校验课程关联考场,是否已经提交打印
-            Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), null, examTask.getCourseCode(), examTask.getPaperNumber());
-            // 校验是否可以提交打印状态
-            if (isCreate) {
-                printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
-            }
-        }
-        return ResultUtil.ok(isSuccess);
-    }
-
-    /**
-     * 卷库查询-卷库修改
-     *
-     * @param examTaskDetail 命题任务详情对象
-     * @return Result
-     */
-    @ApiOperation(value = "卷库查询-卷库修改")
-    @RequestMapping(value = "/paper_update", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
-    public Result taskPaperUpdate(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
-        Map<String, Object> map = examTaskDetailService.paperUpdate(examTaskDetail);
-        Boolean isSuccess = (Boolean) map.get(SystemConstant.SUCCESS);
-        if (isSuccess) {
-            ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
-            if (Objects.nonNull(examTask.getReview()) && examTask.getReview()) {
-                // 发送短信
-                basicMessageService.sendNoticeTaskAuditCreateOrReview(examTask, MessageEnum.NOTICE_OF_AUDIT_REVIEW);
-            } else {
-                SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-                // 校验课程关联考场,是否已经提交打印
-                Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), null, examTask.getCourseCode(), examTask.getPaperNumber());
-                // 校验是否可以提交打印状态
-                if (isCreate) {
-                    printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
-                }
-            }
-            Boolean sendFlowStartMq = (Boolean) map.get(SystemConstant.SEND_FLOW_START_MQ);
-            Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
-            if (Objects.nonNull(sendFlowStartMq) && sendFlowStartMq) {
-                activitiService.sendFlowStartMsg(examTask.getFlowId());
-            } else if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
-                activitiService.sendFlowTaskApproveMsg(map);
-            }
-        }
-        return ResultUtil.ok(isSuccess);
-    }
-
-    @ApiOperation(value = "卷库查询-批量下载试卷PDF、题卡")
-    @RequestMapping(value = "/paper_card_download_pdf", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    public Result paperCardDownloadPdf(@RequestParam(value = "semesterId", required = false) Long semesterId,
-                                       @RequestParam(value = "examId", required = false) Long examId,
-                                       @RequestParam(value = "courseCode", required = false) String courseCode,
-                                       @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                                       @RequestParam(value = "cardRuleId", required = false) Long cardRuleId,
-                                       @RequestParam(value = "makeMethod", required = false) MakeMethodEnum makeMethod,
-                                       @RequestParam(value = "startTime", required = false) Long startTime,
-                                       @RequestParam(value = "endTime", required = false) Long endTime) {
-        TBTask tbTask = examTaskService.taskDownloadPdf(semesterId, examId, courseCode, paperNumber, cardRuleId, makeMethod, startTime, endTime);
-        return Objects.nonNull(tbTask) ? ResultUtil.ok(new EditResult(tbTask.getId())) : ResultUtil.error("创建任务失败");
-    }
-
     /**
      * 班级列表
      *
@@ -724,263 +251,5 @@ public class ExamTaskController {
         ExamTaskApplyTemp task = examTaskApplyTempService.stageTaskApply(examTaskApplyTemp);
         return ResultUtil.ok(task);
     }
-
-    /**
-     * 入库申请-新建任务-保存
-     *
-     * @param examTaskApplyTemp
-     * @return
-     */
-    @ApiOperation(value = "入库申请-新建任务-保存")
-    @RequestMapping(value = "/submit_task_apply", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
-    public Result submitTaskApply(@RequestBody ExamTaskApplyTemp examTaskApplyTemp) throws IOException {
-        Map<String, Object> map = examTaskService.submitTaskApply(examTaskApplyTemp);
-        ExamTask examTask = (ExamTask) map.get(SystemConstant.EXAM_TASK);
-        if (Objects.nonNull(examTask.getReview()) && !examTask.getReview()) {
-            // 校验是否可以提交打印状态
-            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
-        }
-        Boolean sendFlowStartMq = (Boolean) map.get(SystemConstant.SEND_FLOW_START_MQ);
-        Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
-        if (Objects.nonNull(sendFlowStartMq) && sendFlowStartMq) {
-            activitiService.sendFlowStartMsg(examTask.getFlowId());
-        } else if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
-            activitiService.sendFlowTaskApproveMsg(map);
-        }
-        return ResultUtil.ok();
-    }
-
-    /**
-     * 入库申请-新建命题任务
-     *
-     * @param examTaskApplyParam
-     * @return
-     */
-    @ApiOperation(value = "入库申请-新建命题任务-暂存/提交")
-    @RequestMapping(value = "/save_task_apply", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
-    public Result saveTaskApply(@RequestBody ExamTaskApplyParam examTaskApplyParam) throws IOException {
-        Map<String, Object> map = examTaskService.saveExamTaskAndExamTaskDetail(examTaskApplyParam);
-        ExamTask examTask = (ExamTask) map.get(SystemConstant.EXAM_TASK);
-        if (examTaskApplyParam.getExamTaskDetail().getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && (Objects.nonNull(examTask.getReview()) && !examTask.getReview())) {
-            // 校验是否可以提交打印状态
-            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
-        }
-        Boolean sendFlowStartMq = (Boolean) map.get(SystemConstant.SEND_FLOW_START_MQ);
-        Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
-        if (Objects.nonNull(sendFlowStartMq) && sendFlowStartMq) {
-            activitiService.sendFlowStartMsg(examTask.getFlowId());
-        } else if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
-            activitiService.sendFlowTaskApproveMsg(map);
-        }
-        return ResultUtil.ok(examTask);
-    }
-
-    /**
-     * 入库申请-新建命题任务-取消/删除
-     *
-     * @param examTaskId
-     * @return
-     */
-    @ApiOperation(value = "入库申请-新建命题任务-取消/删除")
-    @RequestMapping(value = "/remove_task_apply", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
-    public Result removeTaskApply(@RequestParam(value = "examTaskId") Long examTaskId) {
-        examTaskService.removeByExamTaskId(examTaskId);
-        return ResultUtil.ok(true, "");
-    }
-
-    /**
-     * 入库申请-新建命题任务-切换题卡
-     *
-     * @param examTaskId
-     * @return
-     */
-    @ApiOperation(value = "切换题卡")
-    @RequestMapping(value = "/switch_card", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
-    public Result switchCard(@RequestParam(value = "examTaskId") Long examTaskId) {
-        examTaskService.switchCard(examTaskId);
-        return ResultUtil.ok(true, "");
-    }
-
-    /**
-     * 查看印刷任务发布
-     *
-     * @param printPlanId
-     * @param courseCode
-     * @param paperNumber
-     * @return
-     */
-    @ApiOperation(value = "卷库查询-发布印刷任务-查看列表")
-    @RequestMapping(value = "/list_task_print", method = RequestMethod.POST)
-    public Result listTaskPrintStudent(@RequestParam(value = "printPlanId") Long printPlanId,
-                                       @RequestParam(value = "courseCode") String courseCode,
-                                       @RequestParam(value = "paperNumber") String paperNumber) {
-        ExamTaskPrintDto examTaskPrintDto = examTaskPrintService.listTaskPrint(printPlanId, courseCode, paperNumber);
-        return ResultUtil.ok(examTaskPrintDto);
-    }
-
-    /**
-     * 扩展字段列表
-     *
-     * @return
-     */
-    @ApiOperation(value = "卷库查询-发布印刷任务-扩展字段列表")
-    @RequestMapping(value = "/list_task_print_extend_fields", method = RequestMethod.POST)
-    public Result listTaskPrintExtendFields() {
-        return ResultUtil.ok(examTaskPrintService.listTaskPrintExtendFields());
-    }
-
-    /**
-     * 班级列表
-     *
-     * @param printPlanId
-     * @return
-     */
-    @ApiOperation(value = "卷库查询-发布印刷任务-班级列表")
-    @RequestMapping(value = "/list_task_print_class", method = RequestMethod.POST)
-    public Result listTaskPrintClass(@RequestParam(value = "printPlanId") String printPlanId,
-                                     @RequestParam(value = "courseCode") String courseCode,
-                                     @RequestParam(value = "paperNumber") String paperNumber,
-                                     @RequestParam(value = "examTaskPrintId", required = false) Long examTaskPrintId) {
-        return ResultUtil.ok(examTaskPrintService.listClass(printPlanId, courseCode, paperNumber, examTaskPrintId));
-    }
-
-    /**
-     * 印刷室列表
-     *
-     * @return
-     */
-    @ApiOperation(value = "卷库查询-发布印刷任务-印刷室列表")
-    @RequestMapping(value = "/list_task_print_house", method = RequestMethod.POST)
-    public Result listTaskPrintHouse() {
-        return ResultUtil.ok(examTaskPrintService.listHouse());
-    }
-
-    /**
-     * 发布印刷任务
-     *
-     * @param examTaskPrint
-     * @return
-     */
-    @ApiOperation(value = "卷库查询-发布印刷任务")
-    @RequestMapping(value = "/save_task_print", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
-    public Result createTaskPrint(@RequestBody ExamTaskPrint examTaskPrint) {
-        examTaskPrintService.createTaskPrint(examTaskPrint);
-        return ResultUtil.ok(true, "");
-    }
-
-    /**
-     * 提交印刷任务
-     *
-     * @param examTaskPrintParams
-     * @return
-     */
-    @ApiOperation(value = "卷库查询-批量提交印刷任务")
-    @RequestMapping(value = "/submit_task_print", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
-    public Result submitTaskPrint(@RequestBody ExamTaskPrintParams examTaskPrintParams) throws IOException {
-        examTaskPrintService.submitTaskPrint(examTaskPrintParams);
-        return ResultUtil.ok(true, "");
-    }
-
-    /**
-     * 查看考生
-     *
-     * @param classId
-     * @return
-     */
-    @ApiOperation(value = "卷库查询-发布印刷任务-查看考生")
-    @RequestMapping(value = "/list_task_print_student", method = RequestMethod.POST)
-    public Result listTaskPrintStudent(@RequestParam(value = "classId") Long classId,
-                                       @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                                       @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(basicStudentService.basicStudentPage(null, null, null, classId, pageNumber, pageSize));
-    }
-
-    /**
-     * 卷库查询-发布印刷任务-删除
-     *
-     * @param examTaskPrintId
-     * @return
-     */
-    @ApiOperation(value = "卷库查询-发布印刷任务-删除")
-    @RequestMapping(value = "/remove_task_print", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
-    public Result listTaskPrintStudent(@RequestParam(value = "examTaskPrintId") Long examTaskPrintId) {
-        examTaskPrintService.remove(examTaskPrintId);
-        return ResultUtil.ok(true, "");
-    }
-
-    @ApiOperation(value = "题卡标题查询")
-    @RequestMapping(value = "/find_card_title", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result findCardTitle(@ApiParam(value = "题卡规则id", required = true) @RequestParam String cardRuleId) {
-        return ResultUtil.ok((Object) examTaskService.findCardTitle(SystemConstant.convertIdToLong(cardRuleId)));
-    }
-
-    @ApiOperation(value = "命题任务-审批-获取试卷审批表数据")
-    @RequestMapping(value = "/find_approve_form_json", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result findApproveFormJson(@ApiParam(value = "命题任务id", required = true) @RequestParam String examTaskId) {
-        return ResultUtil.ok((Object) examTaskService.findExamTaskApprovalForm(SystemConstant.convertIdToLong(examTaskId)));
-    }
-
-    @ApiOperation(value = "命题任务-审批-获取试卷审批表pdf")
-    @RequestMapping(value = "/find_approve_form_pdf", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public void findApproveFormPdf(@Valid @RequestBody ApproveFormParams approveFormParams, BindingResult bindingResult) throws Exception {
-        if (bindingResult.hasErrors()) {
-            throw ExceptionResultEnum.ERROR.exception(bindingResult.getAllErrors().get(0).getDefaultMessage());
-        }
-        HttpServletResponse response = ServletUtil.getResponse();
-        examTaskService.findExamTaskApprovalPdf(response, approveFormParams.getExamTaskId(), approveFormParams.getHtmlContent());
-    }
-
-    @ApiOperation(value = "命题任务-考试对象查询")
-    @RequestMapping(value = "/find_exam_object", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result findExamObject(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
-                                 @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
-        return ResultUtil.ok(examTaskService.findExamObjectDtoByPaperNumber(examId, paperNumber));
-    }
-
-    @ApiOperation(value = "入库申请-考生对象查询")
-    @RequestMapping(value = "/find_exam_task_student_object", method = RequestMethod.POST)
-    @Transactional(rollbackFor = Exception.class)
-    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
-    public Result findExamTaskStudentObject(@RequestParam ExamObjectType examObjectType,
-                                            @RequestParam(required = false) String courseCode) throws Exception {
-        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(examTaskService.findExamTaskStudentObject(examObjectType, courseCode, requestUser));
-    }
-
-    @ApiOperation(value = "入库申请-导入考生对象")
-    @RequestMapping(value = "/exam_task_exam_student_import", method = RequestMethod.POST)
-    @Transactional(rollbackFor = Exception.class)
-    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
-    public Result examTaskExamStudentImport(@RequestParam MultipartFile file) throws Exception {
-        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(examTaskService.examTaskExamStudentImport(file, requestUser));
-    }
-
-    /**
-     * 卷库查询-作废
-     *
-     * @param id 命题任务ID
-     * @return Result
-     */
-    @ApiOperation(value = "卷库查询-作废")
-    @RequestMapping(value = "/cancel", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
-    public Result cancel(@RequestParam Long id,
-                         @RequestParam String cancelRemark) {
-        boolean isSuccess = examTaskDetailService.cancel(id, cancelRemark);
-        return ResultUtil.ok(isSuccess);
-    }
 }
 

+ 195 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskQueryController.java

@@ -0,0 +1,195 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.result.EditResult;
+import com.qmth.distributed.print.business.entity.ExamTask;
+import com.qmth.distributed.print.business.entity.ExamTaskDetail;
+import com.qmth.distributed.print.business.enums.MakeMethodEnum;
+import com.qmth.distributed.print.business.service.*;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.entity.TBTask;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.MessageEnum;
+import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 卷库查询 前端控制器
+ * </p>
+ *
+ * @author xf
+ * @since 2021-03-23
+ */
+@Api(tags = "卷库查询Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_EXAM + "/task")
+@Validated
+public class ExamTaskQueryController {
+
+    @Resource
+    private ExamTaskService examTaskService;
+
+    @Resource
+    private ExamTaskDetailService examTaskDetailService;
+
+    @Resource
+    private PrintCommonService printCommonService;
+
+    @Resource
+    private BasicMessageService basicMessageService;
+
+    @Resource
+    ActivitiService activitiService;
+
+    /**
+     * 卷库查询
+     *
+     * @param courseCode  课程代码
+     * @param paperNumber 试卷编号
+     * @param startTime   开始时间
+     * @param endTime     结束时间
+     * @param pageNumber  分页参数
+     * @param pageSize    分页参数
+     * @return Result
+     */
+    @ApiOperation(value = "卷库查询")
+    @RequestMapping(value = "/paper_list", method = RequestMethod.POST)
+    public Result taskPaperList(@RequestParam(value = "semesterId", required = false) Long semesterId,
+                                @RequestParam(value = "examId", required = false) Long examId,
+                                @RequestParam(value = "courseCode", required = false) String courseCode,
+                                @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                                @RequestParam(value = "startTime", required = false) Long startTime,
+                                @RequestParam(value = "endTime", required = false) Long endTime,
+                                @RequestParam(value = "makeMethod", required = false) MakeMethodEnum makeMethod,
+                                @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
+                                @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                                @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        if (semesterId == null) {
+            throw ExceptionResultEnum.ERROR.exception("请选择学期");
+        }
+        return ResultUtil.ok(examTaskService.listTaskPaper(semesterId, examId, courseCode, paperNumber, startTime, endTime, makeMethod, SystemConstant.convertIdToLong(cardRuleId), pageNumber, pageSize));
+    }
+
+    /**
+     * 下载
+     *
+     * @param examTaskId 命题任务ID
+     */
+    @ApiOperation(value = "下载")
+    @RequestMapping(value = "/paper_download", method = RequestMethod.POST)
+    public void taskPaperDownload(HttpServletResponse response, @RequestParam Long examTaskId) throws Exception {
+        examTaskService.paperDownload(response, examTaskId);
+    }
+
+    /**
+     * 卷库查询-启用/禁用
+     *
+     * @param examTaskDetail 命题任务详情对象
+     * @return Result
+     */
+    @ApiOperation(value = "卷库查询-启用/禁用")
+    @RequestMapping(value = "/paper_enable", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
+    public Result taskPaperEnable(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
+        boolean isSuccess = examTaskDetailService.enable(examTaskDetail);
+        // 启用,触发考场生成pdf
+        if (examTaskDetail.getEnable()) {
+            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+            ExamTask examTask = examTaskService.getById(examTaskDetail.getId());
+            // 校验课程关联考场,是否已经提交打印
+            Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), null, examTask.getCourseCode(), examTask.getPaperNumber());
+            // 校验是否可以提交打印状态
+            if (isCreate) {
+                printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
+            }
+        }
+        return ResultUtil.ok(isSuccess);
+    }
+
+    /**
+     * 卷库查询-卷库修改
+     *
+     * @param examTaskDetail 命题任务详情对象
+     * @return Result
+     */
+    @ApiOperation(value = "卷库查询-卷库修改")
+    @RequestMapping(value = "/paper_update", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
+    public Result taskPaperUpdate(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
+        Map<String, Object> map = examTaskDetailService.paperUpdate(examTaskDetail);
+        Boolean isSuccess = (Boolean) map.get(SystemConstant.SUCCESS);
+        if (isSuccess) {
+            ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
+            if (Objects.nonNull(examTask.getReview()) && examTask.getReview()) {
+                // 发送短信
+                basicMessageService.sendNoticeTaskAuditCreateOrReview(examTask, MessageEnum.NOTICE_OF_AUDIT_REVIEW);
+            } else {
+                SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+                // 校验课程关联考场,是否已经提交打印
+                Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), null, examTask.getCourseCode(), examTask.getPaperNumber());
+                // 校验是否可以提交打印状态
+                if (isCreate) {
+                    printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
+                }
+            }
+            Boolean sendFlowStartMq = (Boolean) map.get(SystemConstant.SEND_FLOW_START_MQ);
+            Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
+            if (Objects.nonNull(sendFlowStartMq) && sendFlowStartMq) {
+                activitiService.sendFlowStartMsg(examTask.getFlowId());
+            } else if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
+                activitiService.sendFlowTaskApproveMsg(map);
+            }
+        }
+        return ResultUtil.ok(isSuccess);
+    }
+
+    @ApiOperation(value = "卷库查询-批量下载试卷PDF、题卡")
+    @RequestMapping(value = "/paper_card_download_pdf", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result paperCardDownloadPdf(@RequestParam(value = "semesterId", required = false) Long semesterId,
+                                       @RequestParam(value = "examId", required = false) Long examId,
+                                       @RequestParam(value = "courseCode", required = false) String courseCode,
+                                       @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                                       @RequestParam(value = "cardRuleId", required = false) Long cardRuleId,
+                                       @RequestParam(value = "makeMethod", required = false) MakeMethodEnum makeMethod,
+                                       @RequestParam(value = "startTime", required = false) Long startTime,
+                                       @RequestParam(value = "endTime", required = false) Long endTime) {
+        TBTask tbTask = examTaskService.taskDownloadPdf(semesterId, examId, courseCode, paperNumber, cardRuleId, makeMethod, startTime, endTime);
+        return Objects.nonNull(tbTask) ? ResultUtil.ok(new EditResult(tbTask.getId())) : ResultUtil.error("创建任务失败");
+    }
+
+    /**
+     * 卷库查询-作废
+     *
+     * @param id 命题任务ID
+     * @return Result
+     */
+    @ApiOperation(value = "卷库查询-作废")
+    @RequestMapping(value = "/cancel", method = RequestMethod.POST)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
+    public Result cancel(@RequestParam Long id,
+                         @RequestParam String cancelRemark) {
+        boolean isSuccess = examTaskDetailService.cancel(id, cancelRemark);
+        return ResultUtil.ok(isSuccess);
+    }
+}
+

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -479,6 +479,8 @@ public class SystemConstant {
     public static final long REDIS_LOCK_CALCULATE_TIME_OUT = 60L * 60;
     public static final long REDIS_LOCK_PAPER_NUMBER_TIME_OUT = 60L * 2;
 
+    public static final String REDIS_LOCK_IMPORT_EXAM_DATA = "redis:lock:import:exam:data:";//导入考务数据锁
+    public static final long REDIS_LOCK_IMPORT_EXAM_DATA_TIME_OUT = 60L * 60;
     /**
      * 机器心跳
      */