浏览代码

Merge branch 'dev_v2.2.0' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v2.2.0

xiaof 3 年之前
父节点
当前提交
64ca388057
共有 19 个文件被更改,包括 329 次插入261 次删除
  1. 1 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java
  2. 1 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java
  3. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTask.java
  4. 0 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/ExamStatusEnum.java
  5. 18 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java
  6. 18 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  7. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TFFlowApproveService.java
  8. 139 196
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  9. 5 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceServiceImpl.java
  10. 13 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TFFlowApproveServiceImpl.java
  11. 25 28
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  12. 27 0
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  13. 0 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  14. 0 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysPrivilegeController.java
  15. 0 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/TFFlowController.java
  16. 10 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java
  17. 14 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java
  18. 19 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  19. 31 0
      teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

+ 1 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java

@@ -66,11 +66,7 @@ public class DirectorApproveListener implements TaskListener {
         }
         }
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(basicCourse.getOrgId());
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(basicCourse.getOrgId());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
-
-        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
-        sysUserQueryWrapper.lambda().eq(SysUser::getSchoolId, sysUser.getSchoolId())
-                .in(SysUser::getOrgId, orgIds);
-        List<SysUser> sysUserList = sysUserService.list(sysUserQueryWrapper);
+        List<SysUser> sysUserList = sysUserService.filterFlowPrivilege(sysUser.getSchoolId(), orgIds);
         List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
         List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
         //添加或签的人员,一人通过即可进入下一环节
         //添加或签的人员,一人通过即可进入下一环节
         delegateTask.addCandidateUsers(ids);
         delegateTask.addCandidateUsers(ids);

+ 1 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java

@@ -39,11 +39,7 @@ public class PresidentApproveListener implements TaskListener {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(sysUser.getOrgId());
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(sysUser.getOrgId());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
-
-        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
-        sysUserQueryWrapper.lambda().eq(SysUser::getSchoolId, sysUser.getSchoolId())
-                .in(SysUser::getOrgId, orgIds);
-        List<SysUser> sysUserList = sysUserService.list(sysUserQueryWrapper);
+        List<SysUser> sysUserList = sysUserService.filterFlowPrivilege(sysUser.getSchoolId(), orgIds);
         List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
         List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
         //添加或签的人员,一人通过即可进入下一环节
         //添加或签的人员,一人通过即可进入下一环节
         delegateTask.addCandidateUsers(ids);
         delegateTask.addCandidateUsers(ids);

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

@@ -100,6 +100,7 @@ public class ExamTask extends BaseEntity implements Serializable {
     private String batchNo;
     private String batchNo;
 
 
     @TableField("teaching_room_id")
     @TableField("teaching_room_id")
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long teachingRoomId;
     private Long teachingRoomId;
 
 
     @TableField("teacher_name")
     @TableField("teacher_name")

+ 0 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/ExamStatusEnum.java

@@ -12,14 +12,7 @@ import java.util.List;
  */
  */
 public enum ExamStatusEnum {
 public enum ExamStatusEnum {
 
 
-    NEW("新建"),
-    READY("待命题"),
-    STAGE("进行中"),
-    FINISH("已完成"),
-    CANCEL("撤回"),
-
     DRAFT("草稿"),
     DRAFT("草稿"),
-
     SUBMIT("已提交");
     SUBMIT("已提交");
 
 
     ExamStatusEnum(String desc) {
     ExamStatusEnum(String desc) {

+ 18 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java

@@ -8,6 +8,7 @@ import com.qmth.distributed.print.business.bean.result.WorkResult;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
+import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
@@ -24,17 +25,17 @@ import java.util.Set;
  */
  */
 public interface ExamTaskMapper extends BaseMapper<ExamTask> {
 public interface ExamTaskMapper extends BaseMapper<ExamTask> {
 
 
-    IPage<ExamTaskDto> listPage(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("enable") Boolean enable, @Param("status") String status, @Param("cardRuleId") Long cardRuleId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds,@Param("userName") String userName,@Param("createName") String createName);
+    IPage<ExamTaskDto> listPage(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("enable") Boolean enable, @Param("status") String status, @Param("cardRuleId") Long cardRuleId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds, @Param("userName") String userName, @Param("createName") String createName);
 
 
     List<BlurryUserDto> listUser(@Param("schoolId") Long schoolId, @Param("param") String param);
     List<BlurryUserDto> listUser(@Param("schoolId") Long schoolId, @Param("param") String param);
 
 
-    IPage<ExamTaskDto> listTaskApply(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("auditStatus") String auditStatus, @Param("reviewStatus") String reviewStatus, @Param("cardRuleId") Long cardRuleId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("status") String[] status, @Param("userId") Long userId, @Param("orgIds") Set<Long> orgIds,@Param("userName") String userName);
+    IPage<ExamTaskDto> listTaskApply(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("auditStatus") String auditStatus, @Param("reviewStatus") String reviewStatus, @Param("cardRuleId") Long cardRuleId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("status") String[] status, @Param("userId") Long userId, @Param("orgIds") Set<Long> orgIds, @Param("userName") String userName);
 
 
-    IPage<ExamTaskDto> listTaskReviewUnaudited(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId, @Param("cardRuleId") Long cardRuleId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds,@Param("startCreateTime") Long startCreateTime,@Param("endCreateTime")Long endCreateTime,@Param("createName")String createName);
+    IPage<ExamTaskDto> listTaskReviewUnaudited(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId, @Param("cardRuleId") Long cardRuleId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds, @Param("startCreateTime") Long startCreateTime, @Param("endCreateTime") Long endCreateTime, @Param("createName") String createName);
 
 
-    IPage<ExamTaskDto> listTaskReviewAudited(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("reviewStatus") String reviewStatus, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId, @Param("cardRuleId") Long cardRuleId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds,@Param("startCreateTime") Long startCreateTime,@Param("endCreateTime")Long endCreateTime,@Param("createName")String createName);
+    IPage<ExamTaskDto> listTaskReviewAudited(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("reviewStatus") String reviewStatus, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("userId") Long userId, @Param("cardRuleId") Long cardRuleId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds, @Param("startCreateTime") Long startCreateTime, @Param("endCreateTime") Long endCreateTime, @Param("createName") String createName);
 
 
-    IPage<ExamTaskDetailDto> listTaskPaper(Page<ExamTaskDetailDto> page, @Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds, @Param("containsQuestionTeacher") boolean containsQuestionTeacher, @Param("userId") Long userId, @Param("makeMethod")MakeMethodEnum makeMethod,@Param("cardRuleName") String cardRuleName);
+    IPage<ExamTaskDetailDto> listTaskPaper(Page<ExamTaskDetailDto> page, @Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds, @Param("containsQuestionTeacher") boolean containsQuestionTeacher, @Param("userId") Long userId, @Param("makeMethod") MakeMethodEnum makeMethod, @Param("cardRuleName") String cardRuleName);
 
 
     List<RelatePaperDto> listPaperNumbers(@Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("status") String status);
     List<RelatePaperDto> listPaperNumbers(@Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("status") String status);
 
 
@@ -99,4 +100,16 @@ public interface ExamTaskMapper extends BaseMapper<ExamTask> {
      * @return
      * @return
      */
      */
     public IPage<WorkResult> getFlowTaskReadyList(IPage<Map> iPage, @Param("schoolId") Long schoolId, @Param("orgId") Long orgId, @Param("userId") String userId);
     public IPage<WorkResult> getFlowTaskReadyList(IPage<Map> iPage, @Param("schoolId") Long schoolId, @Param("orgId") Long orgId, @Param("userId") String userId);
+
+    /**
+     * 根据流程状态查找命题任务
+     *
+     * @param schoolId
+     * @param courseCode
+     * @param courseName
+     * @param paperNumber
+     * @param flowStatus
+     * @return
+     */
+    List<ExamTask> findByFlowStatus(@Param("schoolId") Long schoolId, @Param("courseCode") String courseCode,@Param("courseName") String courseName,@Param("paperNumber") String paperNumber,@Param("flowStatus") String flowStatus);
 }
 }

+ 18 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -13,6 +13,7 @@ import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.entity.TBTask;
+import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
@@ -32,7 +33,7 @@ public interface ExamTaskService extends IService<ExamTask> {
 
 
     List<ExamTask> listByCourseCode(Long schoolId, String code);
     List<ExamTask> listByCourseCode(Long schoolId, String code);
 
 
-    IPage<ExamTaskDto> list(Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime,String userName,String createName, Integer pageNumber, Integer pageSize);
+    IPage<ExamTaskDto> list(Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize);
 
 
     List<String> listPaperNumber(String param, Long printPlanId);
     List<String> listPaperNumber(String param, Long printPlanId);
 
 
@@ -57,17 +58,17 @@ public interface ExamTaskService extends IService<ExamTask> {
 
 
     List<ExamTask> saveBatch(ExamTask task);
     List<ExamTask> saveBatch(ExamTask task);
 
 
-    IPage<ExamTaskDto> listTaskApply(String auditStatus, String reviewStatus, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime,String userName, Integer pageNumber, Integer pageSize);
+    IPage<ExamTaskDto> listTaskApply(String auditStatus, String reviewStatus, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, Integer pageNumber, Integer pageSize);
 
 
-    IPage<ExamTaskDto> listTaskReviewUnaudited(String courseCode, String paperNumber, Long userId, Long cardRuleId, Long startTime, Long endTime,Long startCreateTime,Long endCreateTime,String createName,Integer pageNumber, Integer pageSize);
+    IPage<ExamTaskDto> listTaskReviewUnaudited(String courseCode, String paperNumber, Long userId, Long cardRuleId, Long startTime, Long endTime, Long startCreateTime, Long endCreateTime, String createName, Integer pageNumber, Integer pageSize);
 
 
-    IPage<ExamTaskDto> listTaskReviewAudited(String reviewStatus, String courseCode, String paperNumber, Long userId, Long cardRuleId, Long startTime, Long endTime,Long startCreateTime,Long endCreateTime,String createName, Integer pageNumber, Integer pageSize);
+    IPage<ExamTaskDto> listTaskReviewAudited(String reviewStatus, String courseCode, String paperNumber, Long userId, Long cardRuleId, Long startTime, Long endTime, Long startCreateTime, Long endCreateTime, String createName, Integer pageNumber, Integer pageSize);
 
 
     boolean taskReviewSave(ExamTaskReviewLog taskReviewLog) throws IOException;
     boolean taskReviewSave(ExamTaskReviewLog taskReviewLog) throws IOException;
 
 
     boolean taskReviewSaveBatch(ExamTaskReviewLog taskReviewLog) throws IOException;
     boolean taskReviewSaveBatch(ExamTaskReviewLog taskReviewLog) throws IOException;
 
 
-    IPage<ExamTaskDetailDto> listTaskPaper(String courseCode, String paperNumber, Long startTime, Long endTime, MakeMethodEnum makeMethodEnum,String cardRuleName, Integer pageNumber, Integer pageSize);
+    IPage<ExamTaskDetailDto> listTaskPaper(String courseCode, String paperNumber, Long startTime, Long endTime, MakeMethodEnum makeMethodEnum, String cardRuleName, Integer pageNumber, Integer pageSize);
 
 
     List<RelatePaperDto> listPaperTypes(Long examTaskId, Long printPlanId, String courseCode);
     List<RelatePaperDto> listPaperTypes(Long examTaskId, Long printPlanId, String courseCode);
 
 
@@ -162,4 +163,16 @@ public interface ExamTaskService extends IService<ExamTask> {
     public IPage<WorkResult> getFlowTaskReadyList(IPage<Map> iPage, Long schoolId, Long orgId, Long userId);
     public IPage<WorkResult> getFlowTaskReadyList(IPage<Map> iPage, Long schoolId, Long orgId, Long userId);
 
 
     void switchCard(Long examTaskId);
     void switchCard(Long examTaskId);
+
+    /**
+     * 根据流程状态查找命题任务
+     *
+     * @param schoolId
+     * @param courseCode
+     * @param courseName
+     * @param paperNumber
+     * @param flowStatus
+     * @return
+     */
+    List<ExamTask> findByFlowStatus(Long schoolId, String courseCode, String courseName, String paperNumber, FlowStatusEnum flowStatus);
 }
 }

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TFFlowApproveService.java

@@ -13,4 +13,11 @@ import com.qmth.distributed.print.business.entity.TFFlowApprove;
  */
  */
 public interface TFFlowApproveService extends IService<TFFlowApprove> {
 public interface TFFlowApproveService extends IService<TFFlowApprove> {
 
 
+    /**
+     * 根据流程id查询流程状态
+     *
+     * @param flowId
+     * @return
+     */
+    TFFlowApprove findByFlowId(Long flowId);
 }
 }

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

@@ -21,6 +21,7 @@ import com.qmth.teachcloud.common.bean.dto.CourseInfoDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.service.*;
@@ -127,6 +128,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     @Resource
     ActivitiService activitiService;
     ActivitiService activitiService;
 
 
+    @Resource
+    TFFlowApproveService tfFlowApproveService;
+
     @Override
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -135,13 +139,13 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
     }
 
 
     @Override
     @Override
-    public IPage<ExamTaskDto> list(Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime,String userName,String createName, Integer pageNumber, Integer pageSize) {
+    public IPage<ExamTaskDto> list(Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         userName = SystemConstant.translateSpecificSign(userName);
         userName = SystemConstant.translateSpecificSign(userName);
         createName = SystemConstant.translateSpecificSign(createName);
         createName = SystemConstant.translateSpecificSign(createName);
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
-        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listPage(page, schoolId, enable, status, cardRuleId, courseCode, paperNumber, startTime, endTime, orgIds,userName,createName);
+        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listPage(page, schoolId, enable, status, cardRuleId, courseCode, paperNumber, startTime, endTime, orgIds, userName, createName);
         return examTaskDtoIPage;
         return examTaskDtoIPage;
     }
     }
 
 
@@ -195,23 +199,23 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
         ExamTask task = this.getById(examTask.getId());
         ExamTask task = this.getById(examTask.getId());
         // 指派命题老师
         // 指派命题老师
-        if (task.getStatus().name().equals(ExamStatusEnum.NEW.name())) {
+        if (task.getStatus().name().equals(ExamStatusEnum.DRAFT.name())) {
             if (!task.getEnable()) {
             if (!task.getEnable()) {
                 throw ExceptionResultEnum.ERROR.exception("命题任务已禁用,不能指派命题老师");
                 throw ExceptionResultEnum.ERROR.exception("命题任务已禁用,不能指派命题老师");
             }
             }
-            updateWrapper.lambda().set(ExamTask::getUserId, examTask.getUserId()).set(ExamTask::getStatus, ExamStatusEnum.READY).eq(ExamTask::getId, examTask.getId());
+            updateWrapper.lambda().set(ExamTask::getUserId, examTask.getUserId()).set(ExamTask::getStatus, ExamStatusEnum.SUBMIT).eq(ExamTask::getId, examTask.getId());
         }
         }
 
 
         // 更改命题老师
         // 更改命题老师
-        if (task.getStatus().name().equals(ExamStatusEnum.READY.name())) {
+        if (task.getStatus().name().equals(ExamStatusEnum.SUBMIT.name())) {
             if (task.getEnable()) {
             if (task.getEnable()) {
                 throw ExceptionResultEnum.ERROR.exception("命题任务禁用后,才能更改命题老师");
                 throw ExceptionResultEnum.ERROR.exception("命题任务禁用后,才能更改命题老师");
             }
             }
             ExamStatusEnum examStatusEnum;
             ExamStatusEnum examStatusEnum;
             if (examTask.getUserId() == null) {
             if (examTask.getUserId() == null) {
-                examStatusEnum = ExamStatusEnum.NEW;
+                examStatusEnum = ExamStatusEnum.DRAFT;
             } else {
             } else {
-                examStatusEnum = ExamStatusEnum.READY;
+                examStatusEnum = ExamStatusEnum.SUBMIT;
             }
             }
             updateWrapper.lambda().set(ExamTask::getUserId, examTask.getUserId()).set(ExamTask::getStatus, examStatusEnum).eq(ExamTask::getId, examTask.getId());
             updateWrapper.lambda().set(ExamTask::getUserId, examTask.getUserId()).set(ExamTask::getStatus, examStatusEnum).eq(ExamTask::getId, examTask.getId());
         }
         }
@@ -227,19 +231,24 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
         }
 
 
         ExamTask task = this.getById(examTask.getId());
         ExamTask task = this.getById(examTask.getId());
-        if (task.getStatus().name().equals(ExamStatusEnum.FINISH)) {
-            throw ExceptionResultEnum.ERROR.exception("命题任务状态为已完成,不能启用/禁用操作");
+        if (Objects.nonNull(task.getFlowId())) {
+            TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(task.getFlowId());
+            if (tfFlowApprove.getStatus().equals(FlowStatusEnum.FINISH) ||
+                    tfFlowApprove.getStatus().equals(FlowStatusEnum.END)) {
+                throw ExceptionResultEnum.ERROR.exception("流程状态为已结束或已终止,不能启用/禁用操作");
+            }
         }
         }
+
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
-        // 启用时,后续状态清空
-        if (examTask.getEnable()) {
-            updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()) // 修改启用状态
-                    .set(ExamTask::getReviewStatus, null) // 清空审核状态
-                    .set(ExamTask::getStatus, task.getStatus().equals(ExamStatusEnum.NEW) || task.getStatus().equals(ExamStatusEnum.READY) ? task.getStatus() : ExamStatusEnum.STAGE) // 更新为命题中
-                    .eq(ExamTask::getId, examTask.getId());
-        } else {
-            updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()).eq(ExamTask::getId, examTask.getId());
-        }
+////        // 启用时,后续状态清空
+//        if (examTask.getEnable()) {
+//            updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()) // 修改启用状态
+//                    .set(ExamTask::getReviewStatus, null) // 清空审核状态
+//                    .set(ExamTask::getStatus, task.getStatus().equals(ExamStatusEnum.NEW) || task.getStatus().equals(ExamStatusEnum.READY) ? task.getStatus() : ExamStatusEnum.STAGE) // 更新为命题中
+//                    .eq(ExamTask::getId, examTask.getId());
+//        } else {
+//            updateWrapper.lambda().set(ExamTask::getEnable, examTask.getEnable()).eq(ExamTask::getId, examTask.getId());
+//        }
 
 
         // 解除题卡绑定
         // 解除题卡绑定
         if (task.getEnable()) {
         if (task.getEnable()) {
@@ -569,11 +578,18 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             if (specialty != null && specialty.length() > 0 && !specialty.equals("null")) {
             if (specialty != null && specialty.length() > 0 && !specialty.equals("null")) {
                 examTask.setSpecialty(specialty);
                 examTask.setSpecialty(specialty);
             }
             }
+
             if (userId != null && userId.length() > 0 && !userId.equals("null")) {
             if (userId != null && userId.length() > 0 && !userId.equals("null")) {
                 examTask.setUserId(SystemConstant.convertIdToLong(userId));
                 examTask.setUserId(SystemConstant.convertIdToLong(userId));
-                examTask.setStatus(ExamStatusEnum.READY);
+                if (Objects.isNull(examTask.getFlowId())) {
+                    examTask.setStatus(ExamStatusEnum.SUBMIT);
+                    Map<String, Object> map = new HashMap<>();
+                    map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
+                    ProcessInstance processInstance = activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+                    examTask.setFlowId(Long.parseLong(processInstance.getId()));
+                }
             } else {
             } else {
-                examTask.setStatus(ExamStatusEnum.NEW);
+                examTask.setStatus(ExamStatusEnum.DRAFT);
             }
             }
             examTask.setReview(basicExamRule.getReview());
             examTask.setReview(basicExamRule.getReview());
             list.add(examTask);
             list.add(examTask);
@@ -582,121 +598,33 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         return list;
         return list;
     }
     }
 
 
-//    @Override
-//    public boolean saveBatch(ExamTask task) {
-//        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-//        task.setSchoolId(schoolId);
-//        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-//
-//        if (StringUtils.isBlank(task.getBatchNo())) {
-//            throw ExceptionResultEnum.ERROR.exception("batchNo不能为空");
-//        }
-//        QueryWrapper<ExamTaskTemp> queryWrapper = new QueryWrapper<>();
-//        queryWrapper.lambda().eq(ExamTaskTemp::getBatchNo, task.getBatchNo());
-//        List<ExamTaskTemp> examTaskTemps = examTaskTempService.list(queryWrapper);
-//
-//        QueryWrapper<BasicExamRule> examQueryWrapper = new QueryWrapper<>();
-//        examQueryWrapper.lambda().eq(BasicExamRule::getSchoolId, schoolId);
-//        BasicExamRule basicExamRule = basicExamRuleService.getOne(examQueryWrapper);
-//        if (basicExamRule == null) {
-//            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
-//        }
-//
-//        if (examTaskTemps.isEmpty()) {
-//            throw ExceptionResultEnum.ERROR.exception("没有可保存数据");
-//        }
-//        List<ExamTask> list = new ArrayList<>();
-//        Set<String> paperNumbers = new HashSet<>();
-//        for (ExamTaskTemp examTaskTemp : examTaskTemps) {
-//            ExamTask examTask = new ExamTask();
-//            examTask.setSchoolId(task.getSchoolId());
-//            examTask.setCourseCode(examTaskTemp.getCourseCode());
-//            examTask.setCourseName(examTaskTemp.getCourseName());
-//            examTask.setSpecialty(examTaskTemp.getSpecialty());
-//
-//            if (StringUtils.isNotBlank(examTaskTemp.getPaperNumber())) {
-//                if (paperNumbers.contains(examTaskTemp.getPaperNumber())) {
-//                    // 试卷编号在文件内重复,跳过
-//                    continue;
-//                }
-//                QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
-//                taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTaskTemp.getPaperNumber());
-//                ExamTask task1 = this.getOne(taskQueryWrapper);
-//                if (task1 != null) {
-////                    throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
-//                    // 试卷编号已存在,直接跳过
-//                    continue;
-//                }
-//                paperNumbers.add(examTaskTemp.getPaperNumber());
-//            } else {
-//                // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
-//                String paperNumber = commonService.createPaperNumber(schoolId);
-//                examTaskTemp.setPaperNumber(paperNumber);
-//            }
-//            examTask.setPaperNumber(examTaskTemp.getPaperNumber());
-//            examTask.setStartTime(task.getStartTime());
-//            examTask.setEndTime(task.getEndTime());
-//            examTask.setEnable(true);
-//            examTask.setCardRuleId(task.getCardRuleId());
-//            examTask.setBatchNo(task.getBatchNo());
-//            examTask.setCreateId(sysUser.getId());
-//            examTask.setCreateTime(System.currentTimeMillis());
-//            /*String userId = task.getUsers().stream().map(m -> {
-//                if (examTaskTemp.getCourseCode().equals(m.get("courseCode")) && examTaskTemp.getPaperNumber().equals(m.get("paperNumber"))) {
-//                    return m.get("userId");
-//                }
-//                return "";
-//            }).findFirst().get();*/
-//            String userId = null;
-//            String specialty = null;
-//            for (Map<String, String> user : task.getUsers()) {
-//                String ucourseCode = user.get("courseCode");
-//                String upaperNumber = user.get("paperNumber");
-//                if (examTaskTemp.getCourseCode().equals(ucourseCode)) {
-//                    userId = user.get("userId");
-//                    specialty = user.get("specialty");
-//                }
-//            }
-//            examTask.setSpecialty(specialty);
-//            if (StringUtils.isNotBlank(userId)) {
-//                examTask.setUserId(Long.valueOf(userId));
-//                examTask.setStatus(ExamStatusEnum.READY);
-//            } else {
-//                examTask.setStatus(ExamStatusEnum.NEW);
-//            }
-//            examTask.setReview(basicExamRule.getReview());
-//            list.add(examTask);
-//        }
-//        return this.saveBatch(list);
-//    }
-
     @Override
     @Override
     public IPage<ExamTaskDto> listTaskApply(String auditStatus, String reviewStatus, Long cardRuleId, String
     public IPage<ExamTaskDto> listTaskApply(String auditStatus, String reviewStatus, Long cardRuleId, String
-            courseCode, String paperNumber, Long startTime, Long endTime,String userName, Integer pageNumber, Integer pageSize) {
+            courseCode, String paperNumber, Long startTime, Long endTime, String userName, Integer pageNumber, Integer pageSize) {
         userName = SystemConstant.translateSpecificSign(userName);
         userName = SystemConstant.translateSpecificSign(userName);
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
-        String[] strings = new String[]{ExamStatusEnum.NEW.name(), ExamStatusEnum.FINISH.name()};
-        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listTaskApply(page, schoolId, auditStatus, reviewStatus, cardRuleId, courseCode, paperNumber, startTime, endTime, strings, sysUser.getId(), orgIds,userName);
+        String[] strings = new String[]{ExamStatusEnum.SUBMIT.name()};
+        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listTaskApply(page, schoolId, auditStatus, reviewStatus, cardRuleId, courseCode, paperNumber, startTime, endTime, strings, sysUser.getId(), orgIds, userName);
         return examTaskDtoIPage;
         return examTaskDtoIPage;
     }
     }
 
 
     @Override
     @Override
     public IPage<ExamTaskDto> listTaskReviewUnaudited(String courseCode, String paperNumber, Long userId, Long
     public IPage<ExamTaskDto> listTaskReviewUnaudited(String courseCode, String paperNumber, Long userId, Long
-            cardRuleId, Long startTime, Long endTime,Long startCreateTime,Long endCreateTime,String createName, Integer pageNumber, Integer pageSize) {
+            cardRuleId, Long startTime, Long endTime, Long startCreateTime, Long endCreateTime, String createName, Integer pageNumber, Integer pageSize) {
         createName = SystemConstant.translateSpecificSign(createName);
         createName = SystemConstant.translateSpecificSign(createName);
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
-        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listTaskReviewUnaudited(page, schoolId, courseCode, paperNumber, userId, cardRuleId, startTime, endTime, orgIds,startCreateTime,endCreateTime,createName);
+        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listTaskReviewUnaudited(page, schoolId, courseCode, paperNumber, userId, cardRuleId, startTime, endTime, orgIds, startCreateTime, endCreateTime, createName);
         return examTaskDtoIPage;
         return examTaskDtoIPage;
     }
     }
 
 
     @Override
     @Override
     public IPage<ExamTaskDto> listTaskReviewAudited(String reviewStatus, String courseCode, String
     public IPage<ExamTaskDto> listTaskReviewAudited(String reviewStatus, String courseCode, String
-            paperNumber, Long userId, Long cardRuleId, Long startTime, Long endTime,Long startCreateTime,Long endCreateTime,String createName, Integer pageNumber, Integer pageSize) {
+            paperNumber, Long userId, Long cardRuleId, Long startTime, Long endTime, Long startCreateTime, Long endCreateTime, String createName, Integer pageNumber, Integer pageSize) {
         createName = SystemConstant.translateSpecificSign(createName);
         createName = SystemConstant.translateSpecificSign(createName);
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
@@ -724,19 +652,19 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 throw ExceptionResultEnum.ERROR.exception("当前状态不能审核");
                 throw ExceptionResultEnum.ERROR.exception("当前状态不能审核");
             }
             }
 
 
-            // 更新命题任务状态
-            UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
-            ExamStatusEnum statusEnum;
-            if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-                statusEnum = ExamStatusEnum.FINISH;
-            } else {
-                statusEnum = ExamStatusEnum.STAGE;
-            }
-            updateWrapper.lambda().set(ExamTask::getStatus, statusEnum).set(ExamTask::getReviewStatus, taskReviewLog.getReviewStatus()).eq(ExamTask::getId, taskReviewLog.getExamTaskId());
-            this.update(updateWrapper);
-        } else {
-            // 更新记录表状态
-            taskAfterPass(taskReviewLog.getReviewStatus(), taskReviewLog.getExamTaskId(), examTaskPaperLog, sysUser);
+//            // 更新命题任务状态
+//            UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
+//            ExamStatusEnum statusEnum;
+//            if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
+//                statusEnum = ExamStatusEnum.FINISH;
+//            } else {
+//                statusEnum = ExamStatusEnum.STAGE;
+//            }
+//            updateWrapper.lambda().set(ExamTask::getStatus, statusEnum).set(ExamTask::getReviewStatus, taskReviewLog.getReviewStatus()).eq(ExamTask::getId, taskReviewLog.getExamTaskId());
+//            this.update(updateWrapper);
+//        } else {
+//             更新记录表状态
+//            taskAfterPass(taskReviewLog.getReviewStatus(), taskReviewLog.getExamTaskId(), examTaskPaperLog, sysUser);
         }
         }
         return true;
         return true;
     }
     }
@@ -747,45 +675,45 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
 
         ExamStatusEnum statusEnum;
         ExamStatusEnum statusEnum;
-        if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-            statusEnum = ExamStatusEnum.FINISH;
-        } else {
-            statusEnum = ExamStatusEnum.STAGE;
-        }
-        for (Long examTaskId : taskReviewLog.getExamTaskIds()) {
-            ExamTaskPaperLog examTaskPaperLog = examTaskPaperLogService.getByExamTaskIdAndReview(examTaskId, false);
-            if (examTaskPaperLog == null) {
-                // 校验状态,可能被撤回
-                ExamTask examTask = this.getById(examTaskId);
-                if (!ExamStatusEnum.SUBMIT.equals(examTask.getStatus())) {
-                    throw ExceptionResultEnum.ERROR.exception("当前状态不能审核");
-                }
-                // 审核日志
-                taskReviewLog.setOperateId(sysUser.getId());
-                taskReviewLog.setOperateTime(System.currentTimeMillis());
-                taskReviewLog.setExamTaskId(examTaskId);
-                taskReviewLog.setId(SystemConstant.getDbUuid());
-                examTaskReviewLogService.save(taskReviewLog);
-
-                // 更新命题任务状态
-                UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.lambda().set(ExamTask::getStatus, statusEnum).set(ExamTask::getReviewStatus, taskReviewLog.getReviewStatus()).eq(ExamTask::getId, taskReviewLog.getExamTaskId());
-                this.update(updateWrapper);
-            } else {
-                // 更新记录表状态
-                taskAfterPass(taskReviewLog.getReviewStatus(), examTaskId, examTaskPaperLog, sysUser);
-            }
-
-            if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-                // 校验是否可以提交打印状态
-                ExamTask examTask = this.getById(examTaskId);
-                try {
-                    printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
-                } catch (IOException e) {
-                    log.error("调用生成pdf异常");
-                }
-            }
-        }
+//        if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
+//            statusEnum = ExamStatusEnum.FINISH;
+//        } else {
+//            statusEnum = ExamStatusEnum.STAGE;
+//        }
+//        for (Long examTaskId : taskReviewLog.getExamTaskIds()) {
+//            ExamTaskPaperLog examTaskPaperLog = examTaskPaperLogService.getByExamTaskIdAndReview(examTaskId, false);
+//            if (examTaskPaperLog == null) {
+//                // 校验状态,可能被撤回
+//                ExamTask examTask = this.getById(examTaskId);
+//                if (!ExamStatusEnum.SUBMIT.equals(examTask.getStatus())) {
+//                    throw ExceptionResultEnum.ERROR.exception("当前状态不能审核");
+//                }
+//                // 审核日志
+//                taskReviewLog.setOperateId(sysUser.getId());
+//                taskReviewLog.setOperateTime(System.currentTimeMillis());
+//                taskReviewLog.setExamTaskId(examTaskId);
+//                taskReviewLog.setId(SystemConstant.getDbUuid());
+//                examTaskReviewLogService.save(taskReviewLog);
+//
+//                // 更新命题任务状态
+//                UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
+//                updateWrapper.lambda().set(ExamTask::getStatus, statusEnum).set(ExamTask::getReviewStatus, taskReviewLog.getReviewStatus()).eq(ExamTask::getId, taskReviewLog.getExamTaskId());
+//                this.update(updateWrapper);
+//            } else {
+//                // 更新记录表状态
+//                taskAfterPass(taskReviewLog.getReviewStatus(), examTaskId, examTaskPaperLog, sysUser);
+//            }
+//
+//            if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
+//                // 校验是否可以提交打印状态
+//                ExamTask examTask = this.getById(examTaskId);
+//                try {
+//                    printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
+//                } catch (IOException e) {
+//                    log.error("调用生成pdf异常");
+//                }
+//            }
+//        }
         return true;
         return true;
     }
     }
 
 
@@ -826,11 +754,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
     }
 
 
     @Override
     @Override
-    public IPage<ExamTaskDetailDto> listTaskPaper(String courseCode, String paperNumber, Long startTime, Long endTime,MakeMethodEnum makeMethod,String cardRuleName, Integer pageNumber, Integer pageSize) {
-        if (SystemConstant.strNotNull(cardRuleName)){
-            if (cardRuleName.equals("全部通卡")){
+    public IPage<ExamTaskDetailDto> listTaskPaper(String courseCode, String paperNumber, Long startTime, Long endTime, MakeMethodEnum makeMethod, String cardRuleName, Integer pageNumber, Integer pageSize) {
+        if (SystemConstant.strNotNull(cardRuleName)) {
+            if (cardRuleName.equals("全部通卡")) {
                 cardRuleName = "-1";
                 cardRuleName = "-1";
-            }else {
+            } else {
                 cardRuleName = SystemConstant.translateSpecificSign(cardRuleName);
                 cardRuleName = SystemConstant.translateSpecificSign(cardRuleName);
             }
             }
         }
         }
@@ -841,14 +769,14 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Page<ExamTaskDetailDto> page = new Page<>(pageNumber, pageSize);
         Page<ExamTaskDetailDto> page = new Page<>(pageNumber, pageSize);
-        IPage<ExamTaskDetailDto> examTaskDtoIPage = this.baseMapper.listTaskPaper(page, schoolId, courseCode, paperNumber, startTime, endTime, orgIds, containsQuestionTeacher, sysUser.getId(),makeMethod,cardRuleName);
+        IPage<ExamTaskDetailDto> examTaskDtoIPage = this.baseMapper.listTaskPaper(page, schoolId, courseCode, paperNumber, startTime, endTime, orgIds, containsQuestionTeacher, sysUser.getId(), makeMethod, cardRuleName);
         return examTaskDtoIPage;
         return examTaskDtoIPage;
     }
     }
 
 
     @Override
     @Override
     public List<RelatePaperDto> listPaperTypes(Long examTaskId, Long printPlanId, String courseCode) {
     public List<RelatePaperDto> listPaperTypes(Long examTaskId, Long printPlanId, String courseCode) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        List<RelatePaperDto> list = this.baseMapper.listPaperNumbers(schoolId, courseCode, ExamStatusEnum.FINISH.name());
+        List<RelatePaperDto> list = this.baseMapper.listPaperNumbers(schoolId, courseCode, ExamStatusEnum.SUBMIT.name());
         for (RelatePaperDto relatePaperDto : list) {
         for (RelatePaperDto relatePaperDto : list) {
             QueryWrapper<ExamTaskDetail> queryWrapper = new QueryWrapper<>();
             QueryWrapper<ExamTaskDetail> queryWrapper = new QueryWrapper<>();
             queryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, relatePaperDto.getId()).eq(ExamTaskDetail::getEnable, true);
             queryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, relatePaperDto.getId()).eq(ExamTaskDetail::getEnable, true);
@@ -941,7 +869,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         // 更新examTask状态status
         // 更新examTask状态status
         ExamTask examTask = this.getById(examTaskDetail.getExamTaskId());
         ExamTask examTask = this.getById(examTaskDetail.getExamTaskId());
         if (examTaskDetail.getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && !examTask.getReview()) {
         if (examTaskDetail.getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && !examTask.getReview()) {
-            examTask.setStatus(ExamStatusEnum.FINISH);
+            examTask.setStatus(ExamStatusEnum.SUBMIT);
         }
         }
 
 
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
@@ -978,19 +906,19 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
         }
         ExamTask task = this.getById(examTask.getId());
         ExamTask task = this.getById(examTask.getId());
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
-        // 撤回
-        if (examTask.getStatus().name().equals(ExamStatusEnum.CANCEL.name())) {
-            /*if (!task.getStatus().name().equals(ExamStatusEnum.FINISH.name())) {
-                throw ExceptionResultEnum.ERROR.exception("命题任务状态为已完成,才能撤回");
-            }*/
-            updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.STAGE).eq(ExamTask::getId, examTask.getId());
-            return this.update(updateWrapper);
-        }
-        // 重新申请
-        else if (examTask.getStatus().name().equals(ExamStatusEnum.STAGE.name())) {
-            updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.STAGE).set(ExamTask::getReviewStatus, null).eq(ExamTask::getId, examTask.getId());
-            return this.update(updateWrapper);
-        }
+//        // 撤回
+//        if (examTask.getStatus().name().equals(ExamStatusEnum.CANCEL.name())) {
+//            /*if (!task.getStatus().name().equals(ExamStatusEnum.FINISH.name())) {
+//                throw ExceptionResultEnum.ERROR.exception("命题任务状态为已完成,才能撤回");
+//            }*/
+//            updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.STAGE).eq(ExamTask::getId, examTask.getId());
+//            return this.update(updateWrapper);
+//        }
+//        // 重新申请
+//        else if (examTask.getStatus().name().equals(ExamStatusEnum.STAGE.name())) {
+//            updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.STAGE).set(ExamTask::getReviewStatus, null).eq(ExamTask::getId, examTask.getId());
+//            return this.update(updateWrapper);
+//        }
         return false;
         return false;
     }
     }
 
 
@@ -1166,7 +1094,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     .eq(ExamTask::getPaperNumber, paperNumber));
                     .eq(ExamTask::getPaperNumber, paperNumber));
             if (examTask == null) {
             if (examTask == null) {
                 judge = false;
                 judge = false;
-            } else if (!ExamStatusEnum.FINISH.equals(examTask.getStatus())) {
+            } else if (!ExamStatusEnum.SUBMIT.equals(examTask.getStatus())) {
                 judge = false;
                 judge = false;
             }
             }
         }
         }
@@ -1210,7 +1138,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             c2.add(Calendar.DATE, configValue);
             c2.add(Calendar.DATE, configValue);
             long endTime = c2.getTimeInMillis();
             long endTime = c2.getTimeInMillis();
             // 命题任务到期预警
             // 命题任务到期预警
-            String[] examTaskStatus1 = {ExamStatusEnum.READY.name(), ExamStatusEnum.STAGE.name()};
+            String[] examTaskStatus1 = {ExamStatusEnum.SUBMIT.name()};
             List<ExamTask> examTasks1 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
             List<ExamTask> examTasks1 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
             if (examTasks1 != null && examTasks1.size() > 0) {
             if (examTasks1 != null && examTasks1.size() > 0) {
                 Map<Long, List<String>> listMap = examTasks1.stream().collect(Collectors.groupingBy(ExamTask::getUserId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
                 Map<Long, List<String>> listMap = examTasks1.stream().collect(Collectors.groupingBy(ExamTask::getUserId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
@@ -1219,7 +1147,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 }
                 }
             }
             }
             // 命题分配到期预警
             // 命题分配到期预警
-            String[] examTaskStatus2 = {ExamStatusEnum.NEW.name()};
+            String[] examTaskStatus2 = {ExamStatusEnum.SUBMIT.name()};
             List<ExamTask> examTasks2 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
             List<ExamTask> examTasks2 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
             if (examTasks2 != null && examTasks2.size() > 0) {
             if (examTasks2 != null && examTasks2.size() > 0) {
                 Map<Long, List<String>> listMap = examTasks2.stream().collect(Collectors.groupingBy(ExamTask::getCreateId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
                 Map<Long, List<String>> listMap = examTasks2.stream().collect(Collectors.groupingBy(ExamTask::getCreateId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
@@ -1257,7 +1185,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         cal.add(Calendar.DATE, -1);
         cal.add(Calendar.DATE, -1);
         long startTime = cal.getTimeInMillis();
         long startTime = cal.getTimeInMillis();
         // 命题任务已逾期
         // 命题任务已逾期
-        String[] examTaskStatus1 = {ExamStatusEnum.READY.name(), ExamStatusEnum.STAGE.name()};
+        String[] examTaskStatus1 = {ExamStatusEnum.SUBMIT.name()};
         List<ExamTask> examTasks1 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
         List<ExamTask> examTasks1 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
         if (examTasks1 != null && examTasks1.size() > 0) {
         if (examTasks1 != null && examTasks1.size() > 0) {
             Map<Long, List<String>> listMap = examTasks1.stream().collect(Collectors.groupingBy(ExamTask::getUserId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
             Map<Long, List<String>> listMap = examTasks1.stream().collect(Collectors.groupingBy(ExamTask::getUserId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
@@ -1266,7 +1194,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }
             }
         }
         }
         // 命题分配已逾期
         // 命题分配已逾期
-        String[] examTaskStatus2 = {ExamStatusEnum.NEW.name()};
+        String[] examTaskStatus2 = {ExamStatusEnum.SUBMIT.name()};
         List<ExamTask> examTasks2 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
         List<ExamTask> examTasks2 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
         if (examTasks2 != null && examTasks2.size() > 0) {
         if (examTasks2 != null && examTasks2.size() > 0) {
             Map<Long, List<String>> listMap = examTasks2.stream().collect(Collectors.groupingBy(ExamTask::getCreateId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
             Map<Long, List<String>> listMap = examTasks2.stream().collect(Collectors.groupingBy(ExamTask::getCreateId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
@@ -1329,21 +1257,21 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Override
     @Override
     public void switchCard(Long examTaskId) {
     public void switchCard(Long examTaskId) {
         ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTaskId);
         ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTaskId);
-        if(examTaskDetail == null){
+        if (examTaskDetail == null) {
             throw ExceptionResultEnum.ERROR.exception("命题任务不存在");
             throw ExceptionResultEnum.ERROR.exception("命题任务不存在");
         }
         }
-        if(examTaskDetail.getCardId() == null){
+        if (examTaskDetail.getCardId() == null) {
             throw ExceptionResultEnum.ERROR.exception("命题任务没有绑定题卡");
             throw ExceptionResultEnum.ERROR.exception("命题任务没有绑定题卡");
         }
         }
         ExamCard examCard = examCardService.getById(examTaskDetail.getCardId());
         ExamCard examCard = examCardService.getById(examTaskDetail.getCardId());
-        if(examCard == null){
+        if (examCard == null) {
             throw ExceptionResultEnum.ERROR.exception("题卡不存在");
             throw ExceptionResultEnum.ERROR.exception("题卡不存在");
         }
         }
-        if(MakeMethodEnum.CUST.equals(examCard.getMakeMethod())){
+        if (MakeMethodEnum.CUST.equals(examCard.getMakeMethod())) {
             throw ExceptionResultEnum.ERROR.exception("客服制卡方式,不能切换");
             throw ExceptionResultEnum.ERROR.exception("客服制卡方式,不能切换");
         }
         }
 
 
-        if(MakeMethodEnum.SELF.equals(examCard.getMakeMethod())) {
+        if (MakeMethodEnum.SELF.equals(examCard.getMakeMethod())) {
             UpdateWrapper<ExamCardDetail> updateWrapper = new UpdateWrapper<>();
             UpdateWrapper<ExamCardDetail> updateWrapper = new UpdateWrapper<>();
             updateWrapper.lambda().eq(ExamCardDetail::getCardId, examTaskDetail.getCardId());
             updateWrapper.lambda().eq(ExamCardDetail::getCardId, examTaskDetail.getCardId());
             examCardDetailService.remove(updateWrapper);
             examCardDetailService.remove(updateWrapper);
@@ -1355,4 +1283,19 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         examTaskDetailUpdateWrapper.lambda().set(ExamTaskDetail::getCardId, null).eq(ExamTaskDetail::getId, examTaskDetail.getId());
         examTaskDetailUpdateWrapper.lambda().set(ExamTaskDetail::getCardId, null).eq(ExamTaskDetail::getId, examTaskDetail.getId());
         examTaskDetailService.update(examTaskDetailUpdateWrapper);
         examTaskDetailService.update(examTaskDetailUpdateWrapper);
     }
     }
+
+    /**
+     * 根据流程状态查找命题任务
+     *
+     * @param schoolId
+     * @param courseCode
+     * @param courseName
+     * @param paperNumber
+     * @param flowStatus
+     * @return
+     */
+    @Override
+    public List<ExamTask> findByFlowStatus(Long schoolId, String courseCode, String courseName, String paperNumber, FlowStatusEnum flowStatus) {
+        return examTaskMapper.findByFlowStatus(schoolId, courseCode, courseName, paperNumber, Objects.nonNull(flowStatus) ? flowStatus.name() : null);
+    }
 }
 }

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

@@ -110,6 +110,9 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
     @Resource
     @Resource
     ExamPrintPlanService examPrintPlanService;
     ExamPrintPlanService examPrintPlanService;
 
 
+    @Resource
+    TFFlowApproveService tfFlowApproveService;
+
     /**
     /**
      * 保存附件
      * 保存附件
      *
      *
@@ -836,8 +839,9 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
             log.info("卷库已禁用");
             log.info("卷库已禁用");
             return;
             return;
         }
         }
+        TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(examTask.getFlowId());
         // 1.命题任务已完成
         // 1.命题任务已完成
-        if (examTask != null && examTask.getStatus().name().equals(ExamStatusEnum.FINISH.name())) {
+        if (tfFlowApprove != null && tfFlowApprove.getStatus() == FlowStatusEnum.FINISH) {
             // 2.校验考务数据是否导入
             // 2.校验考务数据是否导入
             List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
             List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
             if (examDetails != null && examDetails.size() > 0) {
             if (examDetails != null && examDetails.size() > 0) {

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

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 package com.qmth.distributed.print.business.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.entity.TFFlowApprove;
 import com.qmth.distributed.print.business.entity.TFFlowApprove;
 import com.qmth.distributed.print.business.mapper.TFFlowApproveMapper;
 import com.qmth.distributed.print.business.mapper.TFFlowApproveMapper;
@@ -17,4 +18,16 @@ import org.springframework.stereotype.Service;
 @Service
 @Service
 public class TFFlowApproveServiceImpl extends ServiceImpl<TFFlowApproveMapper, TFFlowApprove> implements TFFlowApproveService {
 public class TFFlowApproveServiceImpl extends ServiceImpl<TFFlowApproveMapper, TFFlowApprove> implements TFFlowApproveService {
 
 
+    /**
+     * 根据流程id查询流程状态
+     *
+     * @param flowId
+     * @return
+     */
+    @Override
+    public TFFlowApprove findByFlowId(Long flowId) {
+        QueryWrapper<TFFlowApprove> tfFlowApproveQueryWrapper = new QueryWrapper<>();
+        tfFlowApproveQueryWrapper.lambda().eq(TFFlowApprove::getFlowId, flowId);
+        return this.getOne(tfFlowApproveQueryWrapper);
+    }
 }
 }

+ 25 - 28
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -30,6 +30,7 @@ import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.PageSizeEnum;
 import com.qmth.teachcloud.common.enums.PageSizeEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.service.*;
@@ -230,15 +231,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 List<PdfDto> cardPdfTempList = new ArrayList<>();//备份题卡
                 List<PdfDto> cardPdfTempList = new ArrayList<>();//备份题卡
 
 
                 //查询试卷
                 //查询试卷
-                QueryWrapper<ExamTask> examTaskQueryWrapper = new QueryWrapper<>();
-                examTaskQueryWrapper.lambda().eq(ExamTask::getSchoolId, sysUser.getSchoolId())
-                        .eq(ExamTask::getCourseCode, examDetailCourse.getCourseCode())
-                        .eq(ExamTask::getCourseName, examDetailCourse.getCourseName())
-                        .eq(ExamTask::getPaperNumber, examDetailCourse.getPaperNumber())
-                        .eq(ExamTask::getEnable, true)
-                        .eq(ExamTask::getStatus, ExamStatusEnum.FINISH)
-                        .orderByAsc(ExamTask::getPaperNumber);
-                List<ExamTask> examTaskList = examTaskService.list(examTaskQueryWrapper);
+                List<ExamTask> examTaskList = examTaskService.findByFlowStatus(sysUser.getSchoolId()
+                        , examDetailCourse.getCourseCode()
+                        , examDetailCourse.getCourseName()
+                        , examDetailCourse.getPaperNumber()
+                        , FlowStatusEnum.FINISH);
                 if (Objects.isNull(examTaskList) || examTaskList.size() == 0) {
                 if (Objects.isNull(examTaskList) || examTaskList.size() == 0) {
                     throw ExceptionResultEnum.EXAM_TASK_IS_NULL.exception();
                     throw ExceptionResultEnum.EXAM_TASK_IS_NULL.exception();
                 }
                 }
@@ -1084,7 +1081,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         System.out.println(inputStream);
         System.out.println(inputStream);
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicStudentImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicStudentImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
             List<ExcelError> excelErrorTemp = new ArrayList<>();
             List<ExcelError> excelErrorTemp = new ArrayList<>();
-            Map<String,String> checkMap = new HashMap<>();
+            Map<String, String> checkMap = new HashMap<>();
             for (int i = 0; i < finalExcelList.size(); i++) {
             for (int i = 0; i < finalExcelList.size(); i++) {
                 LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
                 LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
                 List<Object> basicStudentImportDtoList = excelMap.get(i);
                 List<Object> basicStudentImportDtoList = excelMap.get(i);
@@ -1097,18 +1094,18 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     String clazz = basicStudentImportDto.getClazz();
                     String clazz = basicStudentImportDto.getClazz();
 
 
                     // 检验excel中
                     // 检验excel中
-                    if (checkMap.containsKey(studentCode)){
+                    if (checkMap.containsKey(studentCode)) {
                         throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【学生编号】:" + studentCode);
                         throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【学生编号】:" + studentCode);
-                    }else {
-                        checkMap.put(studentCode,studentName);
+                    } else {
+                        checkMap.put(studentCode, studentName);
                     }
                     }
 
 
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicStudentImportDto, y, i));
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicStudentImportDto, y, i));
-                    if (Objects.isNull(studentCode) || studentCode.length() > 30 || !studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)){
-                        excelErrorTemp.add(new ExcelError(y + 1,"excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学号]不符合输入规范"));
+                    if (Objects.isNull(studentCode) || studentCode.length() > 30 || !studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学号]不符合输入规范"));
                     }
                     }
-                    if (Objects.isNull(studentName) || studentName.length() > 30){
-                        excelErrorTemp.add(new ExcelError(y + 1,"excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学生名称]不符合输入规范"));
+                    if (Objects.isNull(studentName) || studentName.length() > 30) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[学生名称]不符合输入规范"));
                     }
                     }
                 }
                 }
             }
             }
@@ -1117,7 +1114,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             }
             }
             return finalExcelList;
             return finalExcelList;
         });
         });
-        return basicStudentService.executeBasicStudentImportLogic(finalList,map);
+        return basicStudentService.executeBasicStudentImportLogic(finalList, map);
     }
     }
 
 
     @Transactional
     @Transactional
@@ -1127,7 +1124,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         InputStream inputStream = (InputStream) map.get("inputStream");
         InputStream inputStream = (InputStream) map.get("inputStream");
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicCourseImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicCourseImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
             List<ExcelError> excelErrorTemp = new ArrayList<>();
             List<ExcelError> excelErrorTemp = new ArrayList<>();
-            Map<String,String> checkMap = new HashMap<>();
+            Map<String, String> checkMap = new HashMap<>();
             for (int i = 0; i < finalExcelList.size(); i++) {
             for (int i = 0; i < finalExcelList.size(); i++) {
                 LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
                 LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
                 List<Object> basicCourseImportDtoList = excelMap.get(i);
                 List<Object> basicCourseImportDtoList = excelMap.get(i);
@@ -1139,18 +1136,18 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     String clazz = basicCourseImportDto.getClazz();
                     String clazz = basicCourseImportDto.getClazz();
 
 
                     // 检验excel中
                     // 检验excel中
-                    if (checkMap.containsKey(courseCode)){
+                    if (checkMap.containsKey(courseCode)) {
                         throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【课程编号】:" + courseCode);
                         throw ExceptionResultEnum.ERROR.exception("导入的excel中包含在重复的【课程编号】:" + courseCode);
-                    }else {
-                        checkMap.put(courseCode,courseName);
+                    } else {
+                        checkMap.put(courseCode, courseName);
                     }
                     }
 
 
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicCourseImportDto, y, i));
                     excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicCourseImportDto, y, i));
-                    if (Objects.isNull(courseCode) || courseCode.length() > 30 || !courseCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)){
-                        excelErrorTemp.add(new ExcelError(y + 1,"excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程编号]不符合输入规范"));
+                    if (Objects.isNull(courseCode) || courseCode.length() > 30 || !courseCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程编号]不符合输入规范"));
                     }
                     }
-                    if (Objects.isNull(courseName) || courseName.length() > 30){
-                        excelErrorTemp.add(new ExcelError(y + 1,"excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]不符合输入规范"));
+                    if (Objects.isNull(courseName) || courseName.length() > 30) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]不符合输入规范"));
                     }
                     }
                 }
                 }
             }
             }
@@ -1159,11 +1156,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             }
             }
             return finalExcelList;
             return finalExcelList;
         });
         });
-        return basicCourseService.executeBasicCourseImportLogic(finalList,map);
+        return basicCourseService.executeBasicCourseImportLogic(finalList, map);
     }
     }
 
 
 
 
-    public String createTempNumber(SerialNumberParams serialNumberParams){
+    public String createTempNumber(SerialNumberParams serialNumberParams) {
         return convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit());
         return convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit());
     }
     }
 }
 }

+ 27 - 0
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -807,4 +807,31 @@
         </where>
         </where>
     </select>
     </select>
 
 
+    <select id="findByFlowStatus" resultType="com.qmth.distributed.print.business.entity.ExamTask">
+        select
+            et.*
+        from
+            exam_task et
+        left join t_f_flow_approve tffa on
+            tffa.flow_id = et.flow_id
+            <where>
+                and et.enable = true
+                <if test="schoolId != null and schoolId != ''">
+                    and et.school_id = #{schoolId}
+                </if>
+                <if test="courseCode != null and courseCode != ''">
+                    and et.course_code = #{courseCode}
+                </if>
+                <if test="courseName != null and courseName != ''">
+                    and et.course_name = #{courseName}
+                </if>
+                <if test="paperNumber != null and paperNumber != ''">
+                    and et.paper_number = #{paperNumber}
+                </if>
+                <if test="flowStatus != null and flowStatus != ''">
+                    and tffa.status = #{flowStatus}
+                </if>
+            </where>
+            order by et.paper_number asc
+    </select>
 </mapper>
 </mapper>

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

@@ -55,7 +55,6 @@ import java.util.*;
 @Api(tags = "命题任务Controller")
 @Api(tags = "命题任务Controller")
 @RestController
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.exam}/task")
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.exam}/task")
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class ExamTaskController {
 public class ExamTaskController {
 
 
     @Autowired
     @Autowired

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

@@ -27,7 +27,6 @@ import java.util.List;
 @Api(tags = "菜单权限Controller")
 @Api(tags = "菜单权限Controller")
 @RestController
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.sys}/privilege")
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.sys}/privilege")
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class SysPrivilegeController {
 public class SysPrivilegeController {
 
 
     @Autowired
     @Autowired

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

@@ -52,7 +52,6 @@ import java.util.Objects;
 @Api(tags = "流程Controller")
 @Api(tags = "流程Controller")
 @RestController
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.flow}")
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.flow}")
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class TFFlowController {
 public class TFFlowController {
     private final static Logger log = LoggerFactory.getLogger(TFFlowController.class);
     private final static Logger log = LoggerFactory.getLogger(TFFlowController.class);
 
 

+ 10 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java

@@ -21,9 +21,18 @@ import java.util.Set;
  */
  */
 public interface SysUserMapper extends BaseMapper<SysUser> {
 public interface SysUserMapper extends BaseMapper<SysUser> {
 
 
-    IPage<UserDto> listPage(Page<UserDto> page, @Param("schoolId") Long schoolId, @Param("loginName") String loginName, @Param("roleId") String roleId, @Param("enable") Boolean enable,@Param("realName")String realName);
+    IPage<UserDto> listPage(Page<UserDto> page, @Param("schoolId") Long schoolId, @Param("loginName") String loginName, @Param("roleId") String roleId, @Param("enable") Boolean enable, @Param("realName") String realName);
 
 
     List<BlurryUserDto> listUser(@Param("schoolId") Long schoolId, @Param("type") String type, @Param("courseCode") String courseCode, @Param("param") String param, @Param("orgIds") Set<Long> orgIds);
     List<BlurryUserDto> listUser(@Param("schoolId") Long schoolId, @Param("type") String type, @Param("courseCode") String courseCode, @Param("param") String param, @Param("orgIds") Set<Long> orgIds);
 
 
     IPage<UserDto> listCustomerPage(Page<UserDto> page, @Param("realName") String realName, @Param("enable") Boolean enable);
     IPage<UserDto> listCustomerPage(Page<UserDto> page, @Param("realName") String realName, @Param("enable") Boolean enable);
+
+    /**
+     * 过滤拥有审核权限的人
+     *
+     * @param schoolId
+     * @param orgIds
+     * @return
+     */
+    List<SysUser> filterFlowPrivilege(@Param("schoolId")Long schoolId,@Param("orgIds") Set<Long> orgIds);
 }
 }

+ 14 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -10,6 +10,7 @@ import com.qmth.teachcloud.common.entity.SysUser;
 
 
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchAlgorithmException;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -21,7 +22,7 @@ import java.util.List;
  */
  */
 public interface SysUserService extends IService<SysUser> {
 public interface SysUserService extends IService<SysUser> {
 
 
-    IPage<UserDto> list(String loginName, String roleId, Boolean enable,String realName, Integer pageNumber, Integer pageSize);
+    IPage<UserDto> list(String loginName, String roleId, Boolean enable, String realName, Integer pageNumber, Integer pageSize);
 
 
     boolean saveUser(UserSaveParams userSaveParams);
     boolean saveUser(UserSaveParams userSaveParams);
 
 
@@ -45,7 +46,8 @@ public interface SysUserService extends IService<SysUser> {
 
 
     /**
     /**
      * 根据外键查找教师信息
      * 根据外键查找教师信息
-     * @param schoolId 学校id
+     *
+     * @param schoolId    学校id
      * @param teacherName 教师名称
      * @param teacherName 教师名称
      * @return 学院数据
      * @return 学院数据
      */
      */
@@ -53,8 +55,18 @@ public interface SysUserService extends IService<SysUser> {
 
 
     /**
     /**
      * 临时-不鉴权保存用户 (默认创建用户角色为该学校管理员)
      * 临时-不鉴权保存用户 (默认创建用户角色为该学校管理员)
+     *
      * @param userSaveParams 用户参数
      * @param userSaveParams 用户参数
      * @return 结果
      * @return 结果
      */
      */
     boolean saveUserNoAuth(UserSaveParams userSaveParams);
     boolean saveUserNoAuth(UserSaveParams userSaveParams);
+
+    /**
+     * 过滤拥有审核权限的人
+     *
+     * @param schoolId
+     * @param orgIds
+     * @return
+     */
+    List<SysUser> filterFlowPrivilege(Long schoolId, Set<Long> orgIds);
 }
 }

+ 19 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -12,6 +12,7 @@ import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.LoginDto;
 import com.qmth.teachcloud.common.bean.dto.LoginDto;
 import com.qmth.teachcloud.common.bean.dto.UserDto;
 import com.qmth.teachcloud.common.bean.dto.UserDto;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
@@ -69,14 +70,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     private TeachcloudCommonService commonService;
     private TeachcloudCommonService commonService;
 
 
     @Resource
     @Resource
-    SysUserService sysUserService;
+    SysUserMapper sysUserMapper;
 
 
     @Override
     @Override
-    public IPage<UserDto> list(String loginName, String roleId, Boolean enable,String realName, Integer pageNumber, Integer pageSize) {
+    public IPage<UserDto> list(String loginName, String roleId, Boolean enable, String realName, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
 
 
         Page<UserDto> page = new Page<>(pageNumber, pageSize);
         Page<UserDto> page = new Page<>(pageNumber, pageSize);
-        IPage<UserDto> userDtoIPage = this.baseMapper.listPage(page, schoolId, SystemConstant.translateSpecificSign(loginName), roleId, enable,SystemConstant.translateSpecificSign(realName));
+        IPage<UserDto> userDtoIPage = this.baseMapper.listPage(page, schoolId, SystemConstant.translateSpecificSign(loginName), roleId, enable, SystemConstant.translateSpecificSign(realName));
         if (userDtoIPage.getRecords().size() > 0) {
         if (userDtoIPage.getRecords().size() > 0) {
             userDtoIPage.getRecords().forEach(m -> {
             userDtoIPage.getRecords().forEach(m -> {
                 //角色
                 //角色
@@ -263,6 +264,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @return
      * @return
      */
      */
     public boolean saveUserCommon(UserSaveParams userSaveParams) {
     public boolean saveUserCommon(UserSaveParams userSaveParams) {
+        SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
         boolean isSuccess = true;
         boolean isSuccess = true;
         try {
         try {
             Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
             Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
@@ -340,7 +342,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @param userSaveParams 用户参数
      * @param userSaveParams 用户参数
      * @return 结果
      * @return 结果
      */
      */
+    @Override
     public boolean saveUserNoAuth(UserSaveParams userSaveParams) {
     public boolean saveUserNoAuth(UserSaveParams userSaveParams) {
+        SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
         boolean isSuccess = true;
         boolean isSuccess = true;
         try {
         try {
             Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
             Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
@@ -435,4 +439,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         }
         return isSuccess;
         return isSuccess;
     }
     }
+
+    /**
+     * 过滤拥有审核权限的人
+     *
+     * @param schoolId
+     * @param orgIds
+     * @return
+     */
+    @Override
+    public List<SysUser> filterFlowPrivilege(Long schoolId, Set<Long> orgIds) {
+        return sysUserMapper.filterFlowPrivilege(schoolId, orgIds);
+    }
 }
 }

+ 31 - 0
teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

@@ -114,4 +114,35 @@
             </if>
             </if>
         </where>
         </where>
     </select>
     </select>
+
+    <select id="filterFlowPrivilege" resultType="com.qmth.teachcloud.common.entity.SysUser">
+        select
+            DISTINCT su.*
+        from
+            sys_user su
+        join sys_user_role sur on
+            sur.user_id = su.id
+        join sys_role_privilege srp on
+            srp.role_id = sur.role_id
+        join(
+            select
+                sp.id
+            from
+                sys_privilege sp
+            where
+                sp.url = 'flow'
+                and sp.name = '流程审核') t on
+            t.id = srp.privilege_id
+           <where>
+               <if test="orgIds != null">
+                   AND su.org_id IN
+                   <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
+                       #{item}
+                   </foreach>
+               </if>
+               <if test="schoolId != null and schoolId != ''">
+                   and su.school_id = #{schoolId}
+               </if>
+           </where>
+    </select>
 </mapper>
 </mapper>