Browse Source

3.2.7 优化

xiaofei 1 năm trước cách đây
mục cha
commit
68cf3fddb4
49 tập tin đã thay đổi với 765 bổ sung597 xóa
  1. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/SyncExamTaskDto.java
  2. 55 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowApproveListResult.java
  3. 62 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TBSyncTask.java
  4. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailCourseMapper.java
  5. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TBSyncTaskMapper.java
  6. 5 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TFFlowApproveMapper.java
  7. 0 20
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CloudUserPushService.java
  8. 1 14
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CloudUserPushStatusService.java
  9. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailCourseService.java
  10. 17 36
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TBSyncTaskService.java
  11. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TFFlowApproveService.java
  12. 2 232
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CloudUserPushServiceImpl.java
  13. 0 23
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CloudUserPushStatusServiceImpl.java
  14. 0 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java
  15. 6 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailCourseServiceImpl.java
  16. 4 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  17. 3 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  18. 6 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  19. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  20. 44 65
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBSyncTaskServiceImpl.java
  21. 5 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TFFlowApproveServiceImpl.java
  22. 7 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncCloudMarkingTaskService.java
  23. 14 0
      distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql
  24. 25 11
      distributed-print-business/src/main/resources/db/upgrade/3.2.7.sql
  25. 20 0
      distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml
  26. 23 0
      distributed-print-business/src/main/resources/mapper/TBSyncTaskMapper.xml
  27. 21 0
      distributed-print-business/src/main/resources/mapper/TFFlowApproveMapper.xml
  28. 5 11
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPaperStructureController.java
  29. 0 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanSyncController.java
  30. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/GradeBatchController.java
  31. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/GradeBatchPaperController.java
  32. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/GradePaperController.java
  33. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/GradePaperStructController.java
  34. 2 14
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysUserController.java
  35. 6 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/TBSyncTaskController.java
  36. 16 10
      distributed-print/src/main/java/com/qmth/distributed/print/api/TBTaskController.java
  37. 13 16
      distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java
  38. 79 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/SyncListResult.java
  39. 50 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/TaskListResult.java
  40. 70 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/TbTaskDetailResult.java
  41. 62 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/TBTask.java
  42. 0 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PushTypeEnum.java
  43. 0 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java
  44. 4 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/TBTaskMapper.java
  45. 9 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TBTaskService.java
  46. 3 28
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  47. 19 12
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TBTaskServiceImpl.java
  48. 0 20
      teachcloud-common/src/main/resources/mapper/SysUserMapper.xml
  49. 64 47
      teachcloud-common/src/main/resources/mapper/TBTaskMapper.xml

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/SyncExamTaskDto.java

@@ -2,6 +2,8 @@ package com.qmth.distributed.print.business.bean.dto;
 
 
 import cn.hutool.core.date.DateUtil;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.enums.ExamTaskSyncStatusEnum;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 
@@ -13,6 +15,10 @@ import java.util.Map;
  * @Date: 2021/3/29.
  */
 public class SyncExamTaskDto {
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long semesterId;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
 
     private String examTaskId;
     private String courseCode;
@@ -42,6 +48,22 @@ public class SyncExamTaskDto {
 
     private String paperAttachmentIds;
 
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
     public String getExamTaskId() {
         return examTaskId;
     }

+ 55 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowApproveListResult.java

@@ -51,6 +51,21 @@ public class FlowApproveListResult implements Serializable {
     @ApiModelProperty(value = "提交人")
     private String teacherUserName;
 
+    @ApiModelProperty(value = "学期")
+    private String semesterName;
+
+    @ApiModelProperty(value = "考试")
+    private String examName;
+
+    @ApiModelProperty(value = "课程代码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
     @ApiModelProperty(value = "下一级处理人id/当前处理人")
     private String pendApproveUserName;
 
@@ -197,4 +212,44 @@ public class FlowApproveListResult implements Serializable {
     public void setSetupStr(String setupStr) {
         this.setupStr = setupStr;
     }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
 }

+ 62 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TBSyncTask.java

@@ -29,6 +29,28 @@ public class TBSyncTask extends BaseEntity implements Serializable {
     @TableField("school_id")
     private Long schoolId;
 
+    @ApiModelProperty(value = "学期id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("semester_id")
+    private Long semesterId;
+
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "课程代码")
+    @TableField("course_code")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    @TableField("course_name")
+    private String courseName;
+
+    @ApiModelProperty(value = "试卷编号")
+    @TableField("paper_number")
+    private String paperNumber;
+
     @ApiModelProperty(value = "机构id")
     @JsonSerialize(using = ToStringSerializer.class)
     @TableField(value = "org_id", updateStrategy = FieldStrategy.IGNORED)
@@ -114,6 +136,46 @@ public class TBSyncTask extends BaseEntity implements Serializable {
         return serialVersionUID;
     }
 
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
     public Long getOrgId() {
         return orgId;
     }

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailCourseMapper.java

@@ -8,6 +8,7 @@ import com.qmth.distributed.print.business.bean.dto.SyncExamTaskDto;
 import com.qmth.distributed.print.business.entity.ExamDetailCourse;
 import com.qmth.distributed.print.business.enums.ExamTaskSyncStatusEnum;
 import com.qmth.distributed.print.business.enums.SyncCardTypeEnum;
+import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import org.apache.ibatis.annotations.Param;
 
@@ -43,4 +44,6 @@ public interface ExamDetailCourseMapper extends BaseMapper<ExamDetailCourse> {
     List<ExamDetailCourse> listExamDetailByExamIdAndPaperNumber(@Param("schoolId") Long schoolId, @Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 
     List<SyncExamTaskDto> listSyncCourseByExamId(@Param("schoolId") Long schoolId, @Param("examId") Long examId);
+
+    TbTaskDetailResult getByExamDetailId(Long examDetailId);
 }

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TBSyncTaskMapper.java

@@ -32,6 +32,10 @@ public interface TBSyncTaskMapper extends BaseMapper<TBSyncTask> {
      */
     IPage<SyncListResult> query(@Param("iPage") Page<SyncListResult> iPage,
                                 @Param("schoolId") Long schoolId,
+                                @Param("semesterId") Long semesterId,
+                                @Param("examId") Long examId,
+                                @Param("courseCode") String courseCode,
+                                @Param("paperNumber") String paperNumber,
                                 @Param("status") TaskStatusEnum status,
                                 @Param("type") PushTypeEnum type,
                                 @Param("result") TaskResultEnum result,

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

@@ -40,7 +40,11 @@ public interface TFFlowApproveMapper extends BaseMapper<TFFlowApprove> {
      * @param orgId
      * @return
      */
-    public IPage<FlowApproveListResult> findApproveList(IPage<Map> iPage,
+    public IPage<FlowApproveListResult> findApproveList(@Param("iPage") IPage<Map> iPage,
+                                                        @Param("semesterId") Long semesterId,
+                                                        @Param("examId") Long examId,
+                                                        @Param("courseCode") String courseCode,
+                                                        @Param("paperNumber") String paperNumber,
                                                         @Param("status") String status,
                                                         @Param("teacherUserName") String teacherUserName,
                                                         @Param("teachingRoomId") Long teachingRoomId,

+ 0 - 20
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CloudUserPushService.java

@@ -1,11 +1,6 @@
 package com.qmth.distributed.print.business.service;
 
-import com.qmth.teachcloud.common.bean.params.UserPushParam;
 import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.RoleTypeEnum;
-
-import java.util.List;
-import java.util.Map;
 
 /**
  * @Description: 云阅卷用户推送服务接口
@@ -22,19 +17,4 @@ public interface CloudUserPushService {
      */
     void pushCloudUser(Long userId, SysUser requestUser) throws IllegalAccessException;
 
-    /**
-     * 推送云阅卷用户
-     *
-     * @param userIdList  用户id集合
-     * @param requestUser 请求用户
-     */
-    void pushCloudUser(List<Long> userIdList, SysUser requestUser) throws IllegalAccessException;
-
-    /**
-     * 异步推送用户
-     *
-     * @param userPushMap 用户信息
-     * @param requestUser 请求的用户
-     */
-    void asyncPushUser(Map<Long, List<UserPushParam>> userPushMap, SysUser requestUser) throws IllegalAccessException;
 }

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

@@ -2,9 +2,6 @@ package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.entity.CloudUserPushStatus;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.userPush.SyncStatusEnum;
-import com.qmth.teachcloud.common.enums.userPush.UserPushResultEnum;
 
 import java.util.List;
 
@@ -24,19 +21,9 @@ public interface CloudUserPushStatusService extends IService<CloudUserPushStatus
      */
     CloudUserPushStatus findRecordByUserId(Long userId, Long schoolId);
 
-    /**
-     * 更新用户推送记录
-     *
-     * @param userId           用户id
-     * @param markerPushResult 评卷员推送结果
-     * @param leaderPushResult 科组长推送结果
-     * @param syncStatus       推送最终状态
-     * @param requestUser      请求用户
-     */
-    void updateUserPushRecord(Long userId, UserPushResultEnum markerPushResult, UserPushResultEnum leaderPushResult, SyncStatusEnum syncStatus, SysUser requestUser);
-
     /**
      * 查找所有需要重新推送云阅卷的用户id集合
+     *
      * @param schoolId 学校id
      * @return 用户id集合
      */

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

@@ -7,6 +7,7 @@ import com.qmth.distributed.print.business.bean.dto.SyncExamTaskDto;
 import com.qmth.distributed.print.business.entity.ExamDetailCourse;
 import com.qmth.distributed.print.business.enums.ExamTaskSyncStatusEnum;
 import com.qmth.distributed.print.business.enums.SyncCardTypeEnum;
+import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 
 import java.util.List;
@@ -42,4 +43,6 @@ public interface ExamDetailCourseService extends IService<ExamDetailCourse> {
     List<ExamDetailCourse> listExamDetailByExamIdAndPaperNumber(Long schoolId, Long examId, String paperNumber);
 
     List<SyncExamTaskDto> listSyncCourseByExamId(Long schoolId, Long examId);
+
+    TbTaskDetailResult getByExamDetailId(Long examDetailId);
 }

+ 17 - 36
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TBSyncTaskService.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.entity.ExamPaperStructure;
 import com.qmth.distributed.print.business.entity.TBSyncTask;
 import com.qmth.teachcloud.common.bean.params.UserPushParam;
 import com.qmth.teachcloud.common.bean.result.SyncListResult;
@@ -20,8 +21,11 @@ import java.util.Map;
  */
 public interface TBSyncTaskService extends IService<TBSyncTask> {
 
-    TBSyncTask saveTask(Long schoolId,  Long objectId, PushTypeEnum type, String remark);
-    TBSyncTask saveTask(Long schoolId,  Long objectId, String orgCode, String thirdRelateName, String examTime, PushTypeEnum type, String remark);
+    TBSyncTask saveTask(Long schoolId, Long objectId, PushTypeEnum type, String remark);
+
+    TBSyncTask saveTaskStructure(Long schoolId, ExamPaperStructure examPaperStructure, Long objectId, PushTypeEnum type, String remark);
+
+    TBSyncTask saveTaskBaseData(Long schoolId, Long semesterId, Long examId, String courseCode, String courseName, String paperNumber, Long objectId, String orgCode, String thirdRelateName, String examTime, PushTypeEnum type, String remark);
 
     void updateStatusAndResultById(Long id, Long thirdRelateId, TaskStatusEnum status, TaskResultEnum result, String errorMessage);
 
@@ -34,42 +38,19 @@ public interface TBSyncTaskService extends IService<TBSyncTask> {
     /**
      * 同步任务管理分页查询
      *
-     * @param schoolId   学校id
-     * @param status     任务状态
-     * @param type       同步任务类型
-     * @param result     任务结果
-     * @param pageNumber 分页页数
-     * @param pageSize   分页容量
+     * @param schoolId    学校id
+     * @param semesterId
+     * @param examId
+     * @param courseCode
+     * @param paperNumber
+     * @param status      任务状态
+     * @param type        同步任务类型
+     * @param result      任务结果
+     * @param pageNumber  分页页数
+     * @param pageSize    分页容量
      * @return 分页结果
      */
-    IPage<SyncListResult> query(Long schoolId, TaskStatusEnum status, PushTypeEnum type, TaskResultEnum result, int pageNumber, int pageSize);
-
-
-    /**
-     * 查询用户推送记录
-     *
-     * @param userId   用户id
-     * @param schoolId 学校id
-     * @return 记录
-     */
-    TBSyncTask findUserPushRecord(Long userId, Long schoolId);
-
-    /**
-     * 初始化用户推送任务
-     *
-     * @param userPushMap 用户map
-     * @param requestUser 请求用户
-     */
-    void initUserPushTasks(Map<Long, List<UserPushParam>> userPushMap, SysUser requestUser);
-
-    /**
-     * 用户推送任务进行中
-     *
-     * @param userId      用户id
-     * @param requestUser 请求用户
-     * @return 。。
-     */
-    TBSyncTask runningUserPushTask(Long userId, SysUser requestUser);
+    IPage<SyncListResult> query(Long schoolId, Long semesterId, Long examId, String courseCode, String paperNumber, TaskStatusEnum status, PushTypeEnum type, TaskResultEnum result, int pageNumber, int pageSize);
 
     /**
      * 失败任务-重新同步

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

@@ -41,6 +41,10 @@ public interface TFFlowApproveService extends IService<TFFlowApprove> {
      * @return
      */
     public IPage<FlowApproveListResult> findApproveList(IPage<Map> iPage,
+                                                        Long semesterId,
+                                                        Long examId,
+                                                        String courseCode,
+                                                        String paperNumber,
                                                         FlowStatusEnum status,
                                                         String teacherUserName,
                                                         Long teachingRoomId,

+ 2 - 232
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CloudUserPushServiceImpl.java

@@ -1,33 +1,11 @@
 package com.qmth.distributed.print.business.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.qmth.distributed.print.business.entity.TBSyncTask;
 import com.qmth.distributed.print.business.service.CloudUserPushService;
-import com.qmth.distributed.print.business.service.CloudUserPushStatusService;
-import com.qmth.distributed.print.business.service.DataSyncService;
-import com.qmth.distributed.print.business.service.TBSyncTaskService;
-import com.qmth.teachcloud.common.bean.params.UserPushParam;
-import com.qmth.teachcloud.common.bean.result.PushResult;
-import com.qmth.teachcloud.common.contant.SpringContextHolder;
-import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.RoleTypeEnum;
-import com.qmth.teachcloud.common.enums.TaskResultEnum;
-import com.qmth.teachcloud.common.enums.TaskStatusEnum;
-import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
-import com.qmth.teachcloud.common.enums.userPush.SyncStatusEnum;
-import com.qmth.teachcloud.common.enums.userPush.UserPushResultEnum;
-import com.qmth.teachcloud.common.service.SysOrgService;
-import com.qmth.teachcloud.common.service.SysUserService;
-import com.qmth.teachcloud.common.sync.CloudMarkingTaskUtils;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @Description: 云阅卷用户推送服务类
@@ -36,219 +14,11 @@ import java.util.stream.Collectors;
  */
 @Service
 public class CloudUserPushServiceImpl implements CloudUserPushService {
-    @Resource
-    private SysUserService sysUserService;
-    @Resource
-    private CloudMarkingTaskUtils stmmsUtils;
-    @Resource
-    private TBSyncTaskService tbSyncTaskService;
-    @Resource
-    private CloudUserPushStatusService cloudUserPushStatusService;
-    @Resource
-    private SysOrgService sysOrgService;
-    @Resource
-    private CloudMarkingTaskUtils cloudMarkingTaskUtils;
-    @Resource
-    private DataSyncService dataSyncService;
 
     @Override
     public void pushCloudUser(Long userId, SysUser requestUser) throws IllegalAccessException {
         List<Long> userIdList = new ArrayList<>();
         userIdList.add(userId);
-        this.pushCloudUser(userIdList, requestUser);
     }
 
-    @Override
-    public void pushCloudUser(List<Long> userIdList, SysUser requestUser) throws IllegalAccessException {
-        Long schoolId = requestUser.getSchoolId();
-        userIdList = userIdList.stream().distinct().collect(Collectors.toList());
-        if (userIdList.size() > 0) {
-            List<SysUser> sysUserList = sysUserService.listByIds(userIdList);
-            // 构建用户推送map
-            Map<Long, List<UserPushParam>> userPushMap = this.buildUserPushMap(sysUserList, schoolId);
-
-            // 初始化推送任务
-            tbSyncTaskService.initUserPushTasks(userPushMap, requestUser);
-            // 执行推送异步任务
-            CloudUserPushService cloudUserPushService = SpringContextHolder.getBean(CloudUserPushService.class);
-            cloudUserPushService.asyncPushUser(userPushMap, requestUser);
-        }
-    }
-
-    @Async
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void asyncPushUser(Map<Long, List<UserPushParam>> userPushMap, SysUser requestUser) {
-        for (Long userId : userPushMap.keySet()) {
-            String syncException = "";
-            // 更新该用户推送任务进行中
-            TBSyncTask tbSyncTask = tbSyncTaskService.runningUserPushTask(userId, requestUser);
-            // 初始化数据
-            UserPushResultEnum markerPush = null;
-            UserPushResultEnum leaderPush = null;
-            SyncStatusEnum syncStatus = null;
-            try {
-                List<UserPushParam> userPushParamList = userPushMap.get(userId);
-                for (UserPushParam userPushParam : userPushParamList) {
-                    // 推送用户
-                    SpecialPrivilegeEnum specialRole = userPushParam.getRole();
-
-                    boolean bind = userPushParam.getEnable();
-                    String account = userPushParam.getAccount();
-                    String name = userPushParam.getName();
-                    String password = userPushParam.getPassword();
-                    int roleValue = userPushParam.getRole().getValue();
-                    Boolean enable = userPushParam.getEnable();
-                    Long schoolId = userPushParam.getSchoolId();
-                    String orgCode = userPushParam.getOrgCode();
-
-                    PushResult pushResult = stmmsUtils.syncUser(account, name, roleValue, enable, schoolId, orgCode);
-                    boolean syncResult = pushResult.getSuccess();
-                    String syncExceptionCell = null;
-
-                    if (syncResult) {
-                        // 推送成功
-                        syncStatus = SyncStatusEnum.ALREADY_PUSH;
-                        switch (specialRole) {
-                            case MARKER:
-                                markerPush = bind ? UserPushResultEnum.BIND_SUCCESS : UserPushResultEnum.UNBIND_SUCCESS;
-                                break;
-                            case SUBJECT_HEADER:
-                                leaderPush = bind ? UserPushResultEnum.BIND_SUCCESS : UserPushResultEnum.UNBIND_SUCCESS;
-                                break;
-                            default:
-                                break;
-                        }
-                    } else {
-                        // 推送失败
-                        syncStatus = SyncStatusEnum.NEED_PUSH_AGAIN;
-                        String errorMessage = pushResult.getMessage();
-                        switch (specialRole) {
-                            case MARKER:
-                                markerPush = bind ? UserPushResultEnum.BIND_FAILED : UserPushResultEnum.UNBIND_FAILED;
-                                syncExceptionCell = "【" + RoleTypeEnum.MARKER.getDesc() + markerPush.getDesc() + "】" + errorMessage + "\n";
-                                break;
-                            case SUBJECT_HEADER:
-                                leaderPush = bind ? UserPushResultEnum.BIND_FAILED : UserPushResultEnum.UNBIND_FAILED;
-                                syncExceptionCell = "【" + RoleTypeEnum.MARKER_LEADER.getDesc() + leaderPush.getDesc() + "】" + errorMessage + "\n";
-                                break;
-                            default:
-                                break;
-                        }
-                    }
-                    if (SystemConstant.strNotNull(syncExceptionCell)) {
-                        syncException = syncException + syncExceptionCell;
-                    }
-                }
-            } catch (Exception e) {
-                syncException = syncException + e.getMessage();
-            } finally {
-                // 更新或新增云阅卷用户推送表状态
-                cloudUserPushStatusService.updateUserPushRecord(userId, markerPush, leaderPush, syncStatus, requestUser);
-                // 更新't_b_sync_task'表
-                if (SystemConstant.strNotNull(syncException)) {
-                    tbSyncTask.setResult(TaskResultEnum.ERROR);
-                    tbSyncTask.setErrorMessage("用户【" + sysUserService.getById(userId).getLoginName() + "】推送失败\n" + syncException);
-                } else {
-                    tbSyncTask.setResult(TaskResultEnum.SUCCESS);
-                }
-                tbSyncTask.setStatus(TaskStatusEnum.FINISH);
-                tbSyncTask.updateInfo(requestUser.getId());
-                tbSyncTaskService.saveOrUpdate(tbSyncTask);
-            }
-        }
-    }
-
-    /**
-     * 构建用户推送map 判断并推送学院机构
-     *
-     * @param sysUserList 用户集合
-     * @param schoolId    学校id
-     * @return k -> userId v-> List<UserPushParam> 有且只有两条记录
-     */
-    private Map<Long, List<UserPushParam>> buildUserPushMap(List<SysUser> sysUserList, Long schoolId) {
-        // 构建用户机构id键值对
-        Map<Long, SysOrg> orgMap = sysOrgService.list(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getSchoolId, schoolId))
-                .stream()
-                .collect(Collectors.toMap(SysOrg::getId, v -> v));
-
-        Map<Long, List<UserPushParam>> userPushMap = new HashMap<>();
-        for (SysUser sysUser : sysUserList) {
-            // 用户基础信息
-            Long userId = sysUser.getId();
-            Long orgId = sysUser.getOrgId();
-            String loginName = sysUser.getLoginName();
-            String realName = sysUser.getRealName();
-            String password = "123456";
-            SysOrg sysOrg = orgMap.get(orgId);
-
-            // 判断并推送学院机构
-            if (cloudMarkingTaskUtils.isCollegeMode(schoolId) && sysOrg.getThirdRelateId() != null) {
-                if (sysOrg.getThirdRelateId() == null) {
-                    sysOrg.setThirdRelateId(dataSyncService.saveSchool(schoolId, sysOrg.getCode(), sysOrg.getName()));
-                }
-                orgMap.put(orgId, sysOrg);
-            }
-
-            // 用户推送相关信息
-            boolean enable = sysUser.getEnable();
-            SyncStatusEnum syncStatus = cloudUserPushStatusService.findRecordByUserId(userId, schoolId).getSyncStatus();
-            boolean isMarker = sysUserService.includeSysRole(userId, RoleTypeEnum.MARKER);
-            boolean isLeader = sysUserService.includeSysRole(userId, RoleTypeEnum.MARKER_LEADER);
-
-            // 初始化推送对象
-            List<UserPushParam> userPushParamList = new ArrayList<>();
-            UserPushParam marker = new UserPushParam();
-            marker.setUserId(userId);
-            marker.setSchoolId(schoolId);
-            marker.setOrgCode(orgMap.get(orgId).getCode());
-            marker.setName(realName);
-            marker.setPassword(password);
-            marker.setRole(SpecialPrivilegeEnum.MARKER);
-            marker.setAccount(SpecialPrivilegeEnum.MARKER.getPrefix() + loginName);
-            marker.setEnable(false); // 给默认状态关闭
-
-            UserPushParam leader = new UserPushParam();
-            leader.setUserId(userId);
-            leader.setSchoolId(schoolId);
-            leader.setOrgCode(orgMap.get(orgId).getCode());
-            leader.setName(realName);
-            leader.setPassword(password);
-            leader.setRole(SpecialPrivilegeEnum.SUBJECT_HEADER);
-            leader.setAccount(SpecialPrivilegeEnum.SUBJECT_HEADER.getPrefix() + loginName);
-            leader.setEnable(false); // 给默认状态关闭
-
-            // 如果当前用户有评卷员角色
-            if (isMarker) {
-                // 如果用户是启用状态就绑定,禁用就解绑
-                marker.setEnable(enable);
-            }
-            // 如果当前用户有科组长角色
-            if (isLeader) {
-                // 如果用户是启用状态就绑定,禁用就解绑
-                leader.setEnable(enable);
-            }
-            // 如果当前用户既不是评卷员,也不是科组长,根据用户推送状态判断
-            if (!isMarker && !isLeader) {
-                // 如果该用户曾经推送过,则推送评卷员和科组长的解绑。
-                if (SyncStatusEnum.ALREADY_PUSH.equals(syncStatus) || SyncStatusEnum.NEED_PUSH_AGAIN.equals(syncStatus)) {
-                    // 评卷员解绑
-                    marker.setEnable(false);
-
-                    // 科组长解绑
-                    leader.setEnable(false);
-                } else {
-                    // 该用户曾经就不包含云阅卷特殊角色,现在也不包含云阅卷特殊角色
-                    marker = null;
-                    leader = null;
-                }
-            }
-            if (Objects.nonNull(marker)) {
-                userPushParamList.add(marker);
-                userPushParamList.add(leader);
-                userPushMap.put(userId, userPushParamList);
-            }
-        }
-        return userPushMap;
-    }
 }

+ 0 - 23
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CloudUserPushStatusServiceImpl.java

@@ -43,29 +43,6 @@ public class CloudUserPushStatusServiceImpl extends ServiceImpl<CloudUserPushSta
         return result;
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void updateUserPushRecord(Long userId, UserPushResultEnum markerPushResult, UserPushResultEnum leaderPushResult, SyncStatusEnum syncStatus, SysUser requestUser) {
-        Long schoolId = requestUser.getSchoolId();
-        // 云阅卷用户推送记录
-        CloudUserPushStatus db = this.findRecordByUserId(userId, schoolId);
-        CloudUserPushStatus cloudUserPushStatus = new CloudUserPushStatus();
-        cloudUserPushStatus.setSchoolId(schoolId);
-        cloudUserPushStatus.setUserId(userId);
-        cloudUserPushStatus.setMarkerStatus(markerPushResult);
-        cloudUserPushStatus.setMarkerLeaderStatus(leaderPushResult);
-        cloudUserPushStatus.setSyncStatus(syncStatus);
-        if (Objects.isNull(db)) {
-            // 新增
-            cloudUserPushStatus.insertInfo(requestUser.getId());
-        } else {
-            // 编辑
-            cloudUserPushStatus.setId(db.getId());
-            cloudUserPushStatus.updateInfo(requestUser.getId());
-        }
-        this.saveOrUpdate(cloudUserPushStatus);
-    }
-
     @Override
     public List<Long> findNeedPushAgainUserIdList(Long schoolId) {
         return this.list(new QueryWrapper<CloudUserPushStatus>()

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

@@ -508,7 +508,6 @@ public class DataSyncServiceImpl implements DataSyncService {
             String cloudInfoJson = cloudMarkingTaskUtils.queryPaperStructure(schoolId, examId, subjectCode, null);
             examPaperStructure.setCloudInfoJson(cloudInfoJson);
             examPaperStructure.setStructureChange(false);
-            UpdateWrapper<ExamPaperStructure> updateWrapper = new UpdateWrapper<>();
             examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.OBJECTIVE.getType(), "sync", true));
             result = TaskResultEnum.SUCCESS;
         } catch (ApiException e) {

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

@@ -17,6 +17,7 @@ import com.qmth.distributed.print.business.mapper.ExamDetailCourseMapper;
 import com.qmth.distributed.print.business.service.ExamCardService;
 import com.qmth.distributed.print.business.service.ExamDetailCourseService;
 import com.qmth.distributed.print.business.service.ExamTaskDetailService;
+import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysOrg;
@@ -170,4 +171,9 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
         }
         return syncExamTaskDtoList;
     }
+
+    @Override
+    public TbTaskDetailResult getByExamDetailId(Long examDetailId) {
+        return this.baseMapper.getByExamDetailId(examDetailId);
+    }
 }

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

@@ -22,6 +22,7 @@ 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.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
@@ -564,15 +565,15 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     }
 
     @Override
-    public boolean resubmitTask(ExamDetail examDetail) throws IOException {
+    public boolean resubmitTask(ExamDetail examDetail) {
         ExamDetail detail = this.getById(examDetail.getId());
         if (!detail.getStatus().name().equals(ExamDetailStatusEnum.PRINTING.name())
                 && !detail.getStatus().name().equals(ExamDetailStatusEnum.FINISH.name())) {
             throw ExceptionResultEnum.ERROR.exception("印刷状态为“印刷中”、“已完成”的任务可重新提交印刷");
         }
-
+        TbTaskDetailResult tbTaskDetailResult = examDetailCourseService.getByExamDetailId(detail.getId());
         // 调用生成pdf方法
-        Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, detail.getPrintPlanId(), (SysUser) ServletUtil.getRequestUser(), detail.getId());
+        Map<String, Object> map = tbTaskService.saveTask(tbTaskDetailResult, TaskTypeEnum.CREATE_PDF, detail.getPrintPlanId(), (SysUser) ServletUtil.getRequestUser(), detail.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);

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

@@ -16,6 +16,7 @@ import com.qmth.distributed.print.business.mapper.ExamTaskDetailMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
+import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -240,7 +241,8 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
             Map<Long, List<Long>> examDetailIdMap = examDetailCourses.stream().collect(Collectors.groupingBy(ExamDetailCourse::getExamDetailId, Collectors.mapping(ExamDetailCourse::getId, Collectors.toList())));
             for (Map.Entry<Long, List<Long>> listEntry : examDetailIdMap.entrySet()) {
                 SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-                Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, paperParam.getPrintPlanId(), sysUser, listEntry.getKey());
+                TbTaskDetailResult tbTaskDetailResult = examDetailCourseService.getByExamDetailId(listEntry.getKey());
+                Map<String, Object> map = tbTaskService.saveTask(tbTaskDetailResult, TaskTypeEnum.CREATE_PDF, paperParam.getPrintPlanId(), sysUser, listEntry.getKey());
                 map.computeIfAbsent("examDetailCourseIds", v -> listEntry.getValue());
                 map.computeIfAbsent("paperType", v -> paperParam.getRelatePaperType());
 //                asyncCreatePdfTempleteService.createPdf(map, null);

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

@@ -1,7 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -34,6 +33,7 @@ import com.qmth.teachcloud.common.bean.dto.excel.DescribeImportDto;
 import com.qmth.teachcloud.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
 import com.qmth.teachcloud.common.bean.result.SysUserResult;
+import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
@@ -57,7 +57,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import javax.websocket.RemoteEndpoint;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -492,7 +491,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(errors));
             }
             return finalExcelList;
-        },2);
+        }, 2);
         return executeImportExamTaskBatch(finalList);
     }
 
@@ -1083,8 +1082,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         if (stringJoiner.length() > 0) {
             throw ExceptionResultEnum.ERROR.exception(stringJoiner.toString());
         }
-
-        Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, examDetail.getPrintPlanId(), user, examDetail.getId());
+        TbTaskDetailResult tbTaskDetailResult = examDetailCourseService.getByExamDetailId(examDetail.getId());
+        Map<String, Object> map = tbTaskService.saveTask(tbTaskDetailResult, TaskTypeEnum.CREATE_PDF, examDetail.getPrintPlanId(), user, examDetail.getId());
         MqDto mqDto = new MqDto(MqTagEnum.PDF.getCode(), map, String.valueOf(map.get(SystemConstant.TB_TASK_ID)));
         redisUtil.sendMessage(mqDto.getTopic(), mqDto);
     }
@@ -1862,7 +1861,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(errors));
             }
             return finalExcelList;
-        },2);
+        }, 2);
         // 校验已经有的考生所在部门的信息是否正确
         // 导入的excel创建或查询的学生集合
         List<BasicStudentResult> studentDatasource = basicStudentService.basicStudentList(requestUser.getSchoolId(), null, null, null, null);
@@ -1922,7 +1921,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             basicStudentExtrasParam.setClazzName(e.getClazzName());
             return Stream.of(basicStudentExtrasParam);
         }).collect(Collectors.toList());
-        basicStudentService.saveBasicStudentWithExtrasList(basicStudentExtrasParamList, requestUser, false,null);
+        basicStudentService.saveBasicStudentWithExtrasList(basicStudentExtrasParamList, requestUser, false, null);
 
 
         // 考生信息回溯

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

@@ -27,6 +27,7 @@ import com.qmth.distributed.print.business.util.PdfUtil;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
+import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -56,7 +57,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
-import java.util.stream.Collectors;
 
 /**
  * @Description: 公共服务service impl
@@ -1001,8 +1001,8 @@ public class PrintCommonServiceImpl implements PrintCommonService {
                             printPlanUpdateWrapper.lambda().set(ExamPrintPlan::getStatus, PrintPlanStatusEnum.READY).eq(ExamPrintPlan::getId, examDetail.getPrintPlanId());
                             examPrintPlanService.update(printPlanUpdateWrapper);
                         }
-
-                        Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, examDetail.getPrintPlanId(), user, examDetail.getId());
+                        TbTaskDetailResult tbTaskDetailResult = examDetailCourseService.getByExamDetailId(examDetail.getId());
+                        Map<String, Object> map = tbTaskService.saveTask(tbTaskDetailResult, TaskTypeEnum.CREATE_PDF, examDetail.getPrintPlanId(), user, examDetail.getId());
                         MqDto mqDto = new MqDto(MqTagEnum.PDF.getCode(), map, String.valueOf(map.get(SystemConstant.TB_TASK_ID)));
                         redisUtil.sendMessage(mqDto.getTopic(), mqDto);
                     }

+ 44 - 65
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBSyncTaskServiceImpl.java

@@ -1,12 +1,11 @@
 package com.qmth.distributed.print.business.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.distributed.print.business.bean.marking.GroupInfo;
+import com.qmth.distributed.print.business.entity.ExamPaperStructure;
 import com.qmth.distributed.print.business.entity.TBSyncTask;
 import com.qmth.distributed.print.business.mapper.TBSyncTaskMapper;
 import com.qmth.distributed.print.business.service.*;
@@ -99,7 +98,42 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
 
     @Transactional
     @Override
-    public TBSyncTask saveTask(Long schoolId, Long objectId, String orgCode, String thirdRelateName, String examTime, PushTypeEnum type, String remark) {
+    public TBSyncTask saveTaskStructure(Long schoolId, ExamPaperStructure examPaperStructure, Long objectId, PushTypeEnum type, String remark) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        QueryWrapper<TBSyncTask> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(TBSyncTask::getSchoolId, schoolId)
+                .eq(TBSyncTask::getObjectId, objectId)
+                .eq(TBSyncTask::getType, type);
+        TBSyncTask tbSyncTask = this.getOne(queryWrapper);
+        Long id = SystemConstant.getDbUuid();
+        if (tbSyncTask != null) {
+            if (!TaskStatusEnum.FINISH.equals(tbSyncTask.getStatus())) {
+                throw ExceptionResultEnum.ERROR.exception("有任务未结束");
+            }
+            id = tbSyncTask.getId();
+            this.removeById(id);
+        }
+        tbSyncTask = new TBSyncTask();
+        tbSyncTask.setId(id);
+        tbSyncTask.setSchoolId(schoolId);
+        tbSyncTask.setSemesterId(examPaperStructure.getSemesterId());
+        tbSyncTask.setExamId(examPaperStructure.getExamId());
+        tbSyncTask.setCourseCode(examPaperStructure.getCourseCode());
+        tbSyncTask.setCourseName(examPaperStructure.getCourseName());
+        tbSyncTask.setPaperNumber(examPaperStructure.getPaperNumber());
+        tbSyncTask.setObjectId(objectId);
+        tbSyncTask.setType(type);
+        tbSyncTask.setRemark(remark);
+        tbSyncTask.setStatus(TaskStatusEnum.INIT);
+        tbSyncTask.setCreateId(sysUser.getId());
+        tbSyncTask.setCreateTime(System.currentTimeMillis());
+        this.save(tbSyncTask);
+        return tbSyncTask;
+    }
+
+    @Transactional
+    @Override
+    public TBSyncTask saveTaskBaseData(Long schoolId, Long semesterId, Long examId, String courseCode, String courseName, String paperNumber, Long objectId, String orgCode, String thirdRelateName, String examTime, PushTypeEnum type, String remark) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         QueryWrapper<TBSyncTask> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(TBSyncTask::getSchoolId, schoolId)
@@ -122,6 +156,11 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
         tbSyncTask = new TBSyncTask();
         tbSyncTask.setId(id);
         tbSyncTask.setSchoolId(schoolId);
+        tbSyncTask.setSemesterId(semesterId);
+        tbSyncTask.setExamId(examId);
+        tbSyncTask.setCourseCode(courseCode);
+        tbSyncTask.setCourseName(courseName);
+        tbSyncTask.setPaperNumber(paperNumber);
         tbSyncTask.setObjectId(objectId);
         tbSyncTask.setOrgCode(orgCode);
         tbSyncTask.setThirdRelateName(thirdRelateName);
@@ -190,12 +229,12 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
     }
 
     @Override
-    public IPage<SyncListResult> query(Long schoolId, TaskStatusEnum status, PushTypeEnum type, TaskResultEnum result, int pageNumber, int pageSize) {
+    public IPage<SyncListResult> query(Long schoolId, Long semesterId, Long examId, String courseCode, String paperNumber, TaskStatusEnum status, PushTypeEnum type, TaskResultEnum result, int pageNumber, int pageSize) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
 
-        IPage<SyncListResult> page = this.baseMapper.query(new Page<>(pageNumber, pageSize), schoolId, status, type, result, dpr);
+        IPage<SyncListResult> page = this.baseMapper.query(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, courseCode, paperNumber, status, type, result, dpr);
         List<SyncListResult> list = page.getRecords();
         for (SyncListResult syncListResult : list) {
             syncListResult.setStatus(Objects.nonNull(syncListResult.getStatus()) ? TaskStatusEnum.valueOf(syncListResult.getStatus()).getTitle() : null);
@@ -205,63 +244,6 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
         return page;
     }
 
-    @Override
-    public TBSyncTask findUserPushRecord(Long userId, Long schoolId) {
-        List<TBSyncTask> userPushList = this.list(new QueryWrapper<TBSyncTask>()
-                .lambda()
-                .eq(TBSyncTask::getSchoolId, schoolId)
-                .eq(TBSyncTask::getObjectId, userId)
-                .eq(TBSyncTask::getType, PushTypeEnum.USER_PUSH));
-        if (userPushList != null && userPushList.size() > 0) {
-            if (userPushList.size() > 1) {
-                throw ExceptionResultEnum.ERROR.exception("异常:用户【" + userId + "】拥有多条推送记录");
-            }
-            return userPushList.get(0);
-        } else {
-            return null;
-        }
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void initUserPushTasks(Map<Long, List<UserPushParam>> userPushMap, SysUser requestUser) {
-        Long schoolId = requestUser.getSchoolId();
-        for (Long userId : userPushMap.keySet()) {
-            TBSyncTask dbRecord = this.findUserPushRecord(userId, schoolId);
-            Long id;
-            if (Objects.nonNull(dbRecord)) {
-                id = dbRecord.getId();
-            } else {
-                id = SystemConstant.getDbUuid();
-            }
-            TBSyncTask tbSyncTask = new TBSyncTask();
-            tbSyncTask.setId(id);
-            tbSyncTask.setSchoolId(schoolId);
-            tbSyncTask.setType(PushTypeEnum.USER_PUSH);
-            tbSyncTask.setObjectId(userId);
-            tbSyncTask.setStatus(TaskStatusEnum.INIT);
-            tbSyncTask.setRemark(sysUserService.getById(userId).getLoginName());
-            tbSyncTask.setResult(null);
-            tbSyncTask.setCreateId(requestUser.getId());
-            tbSyncTask.setCreateTime(System.currentTimeMillis());
-            this.saveOrUpdate(tbSyncTask);
-        }
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public TBSyncTask runningUserPushTask(Long userId, SysUser requestUser) {
-        Long schoolId = requestUser.getSchoolId();
-        TBSyncTask tbSyncTask = this.findUserPushRecord(userId, schoolId);
-        if (Objects.isNull(tbSyncTask)) {
-            throw ExceptionResultEnum.ERROR.exception("用户推送表信息缺失");
-        }
-        tbSyncTask.setStatus(TaskStatusEnum.RUNNING);
-        tbSyncTask.updateInfo(requestUser.getId());
-        this.saveOrUpdate(tbSyncTask);
-        return tbSyncTask;
-    }
-
     @Override
     public void resync(Long id) throws IllegalAccessException {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
@@ -299,9 +281,6 @@ public class TBSyncTaskServiceImpl extends ServiceImpl<TBSyncTaskMapper, TBSyncT
             case CALCULATE:
                 asyncTeachCloudReportService.startCalc(gradeBatchService.getById(tbSyncTask.getObjectId()));
                 break;
-            case USER_PUSH:
-                cloudUserPushService.pushCloudUser(tbSyncTask.getObjectId(), requestUser);
-                break;
             case MARKER_PUSH:
                 asyncCloudMarkingTaskService.syncMarkerAndClass(examPaperStructureService.getById(tbSyncTask.getObjectId()));
                 break;

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

@@ -53,8 +53,12 @@ public class TFFlowApproveServiceImpl extends ServiceImpl<TFFlowApproveMapper, T
      * @return
      */
     @Override
-    public IPage<FlowApproveListResult> findApproveList(IPage<Map> iPage, FlowStatusEnum status, String teacherUserName, Long teachingRoomId, Long startTime, Long endTime, String pendApproveUserName, Long schoolId, Long orgId) {
+    public IPage<FlowApproveListResult> findApproveList(IPage<Map> iPage,Long semesterId, Long examId, String courseCode, String paperNumber, FlowStatusEnum status, String teacherUserName, Long teachingRoomId, Long startTime, Long endTime, String pendApproveUserName, Long schoolId, Long orgId) {
         return tfFlowApproveMapper.findApproveList(iPage,
+                semesterId,
+                examId,
+                courseCode,
+                paperNumber,
                 Objects.nonNull(status) ? status.name() : null,
                 teacherUserName,
                 teachingRoomId,

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

@@ -70,7 +70,7 @@ public class AsyncCloudMarkingTaskService {
                 List<SyncExamTaskDto> syncExamTaskDtos = entry.getValue();
                 List<TBSyncTask> tbSyncTaskList = new ArrayList<>();
                 for (SyncExamTaskDto syncExamTaskDto : syncExamTaskDtos) {
-                    TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(schoolId, Long.valueOf(syncExamTaskDto.getExamTaskId()), orgCode, thirdRelateName, examTime, PushTypeEnum.EXAM_PUSH, JSON.toJSONString(syncExamTaskDto));
+                    TBSyncTask tbSyncTask = tbSyncTaskService.saveTaskBaseData(schoolId, syncExamTaskDto.getSemesterId(), syncExamTaskDto.getExamId(), syncExamTaskDto.getCourseCode(), syncExamTaskDto.getCourseName(), syncExamTaskDto.getPaperNumber(), Long.valueOf(syncExamTaskDto.getExamTaskId()), orgCode, thirdRelateName, examTime, PushTypeEnum.EXAM_PUSH, JSON.toJSONString(syncExamTaskDto));
                     tbSyncTaskList.add(tbSyncTask);
                 }
                 dataSyncService.syncExamAndStudentAndCard(orgCode, thirdRelateName, examTime, tbSyncTaskList, sysUser);
@@ -78,7 +78,7 @@ public class AsyncCloudMarkingTaskService {
         } else {
             List<TBSyncTask> tbSyncTaskList = new ArrayList<>();
             for (SyncExamTaskDto syncExamTaskDto : syncDataParam.getList()) {
-                TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(schoolId, Long.valueOf(syncExamTaskDto.getExamTaskId()), null, thirdRelateName, examTime, PushTypeEnum.EXAM_PUSH, JSON.toJSONString(syncExamTaskDto));
+                TBSyncTask tbSyncTask = tbSyncTaskService.saveTaskBaseData(schoolId, syncExamTaskDto.getSemesterId(), syncExamTaskDto.getExamId(), syncExamTaskDto.getCourseCode(), syncExamTaskDto.getCourseName(), syncExamTaskDto.getPaperNumber(), Long.valueOf(syncExamTaskDto.getExamTaskId()), null, thirdRelateName, examTime, PushTypeEnum.EXAM_PUSH, JSON.toJSONString(syncExamTaskDto));
                 tbSyncTaskList.add(tbSyncTask);
             }
             dataSyncService.syncExamAndStudentAndCard(null, thirdRelateName, examTime, tbSyncTaskList, sysUser);
@@ -94,7 +94,7 @@ public class AsyncCloudMarkingTaskService {
         if (examPaperStructure == null) {
             throw ExceptionResultEnum.ERROR.exception("未找到同步数据");
         }
-        TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(examPaperStructure.getSchoolId(), examPaperStructure.getId(), PushTypeEnum.STRUCTURE_GROUP_PUSH, null);
+        TBSyncTask tbSyncTask = tbSyncTaskService.saveTaskStructure(examPaperStructure.getSchoolId(), examPaperStructure, examPaperStructure.getId(), PushTypeEnum.STRUCTURE_GROUP_PUSH, null);
         dataSyncService.syncPaperStructureAndGroup(examPaperStructure, tbSyncTask);
     }
 
@@ -107,7 +107,7 @@ public class AsyncCloudMarkingTaskService {
         if (examPaperStructure == null) {
             throw ExceptionResultEnum.ERROR.exception("请先设置评卷参数");
         }
-        TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(examPaperStructure.getSchoolId(), examPaperStructure.getId(), PushTypeEnum.PAPER_ANSWER_FILE_PUSH, null);
+        TBSyncTask tbSyncTask = tbSyncTaskService.saveTaskStructure(examPaperStructure.getSchoolId(), examPaperStructure, examPaperStructure.getId(), PushTypeEnum.PAPER_ANSWER_FILE_PUSH, null);
         dataSyncService.syncPaperAndAnswer(examPaperStructure, tbSyncTask);
     }
 
@@ -120,7 +120,7 @@ public class AsyncCloudMarkingTaskService {
         if (examPaperStructure == null) {
             throw ExceptionResultEnum.ERROR.exception("请先设置评卷参数");
         }
-        TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(examPaperStructure.getSchoolId(), examPaperStructure.getId(), PushTypeEnum.OBJECTIVE_ANSWER_PUSH, null);
+        TBSyncTask tbSyncTask = tbSyncTaskService.saveTaskStructure(examPaperStructure.getSchoolId(), examPaperStructure, examPaperStructure.getId(), PushTypeEnum.OBJECTIVE_ANSWER_PUSH, null);
         dataSyncService.syncObjectiveStructure(examPaperStructure, tbSyncTask);
     }
 
@@ -133,7 +133,7 @@ public class AsyncCloudMarkingTaskService {
         if (examPaperStructure == null) {
             throw ExceptionResultEnum.ERROR.exception("请先设置评卷参数");
         }
-        TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(examPaperStructure.getSchoolId(), examPaperStructure.getId(), PushTypeEnum.MARK_LEADER_PUSH, null);
+        TBSyncTask tbSyncTask = tbSyncTaskService.saveTaskStructure(examPaperStructure.getSchoolId(), examPaperStructure, examPaperStructure.getId(), PushTypeEnum.MARK_LEADER_PUSH, null);
         dataSyncService.syncMarkLeader(examPaperStructure, tbSyncTask);
     }
 
@@ -146,7 +146,7 @@ public class AsyncCloudMarkingTaskService {
         if (examPaperStructure == null) {
             throw ExceptionResultEnum.ERROR.exception("未找到同步数据");
         }
-        TBSyncTask tbSyncTask = tbSyncTaskService.saveTask(examPaperStructure.getSchoolId(), examPaperStructure.getId(), PushTypeEnum.MARKER_PUSH, null);
+        TBSyncTask tbSyncTask = tbSyncTaskService.saveTaskStructure(examPaperStructure.getSchoolId(), examPaperStructure, examPaperStructure.getId(), PushTypeEnum.MARKER_PUSH, null);
         dataSyncService.syncMarkerAndClass(examPaperStructure, tbSyncTask);
     }
 }

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

@@ -295,3 +295,17 @@ DELETE FROM `distributed-print-3.2.7`.`sys_privilege` WHERE (`id` = '854');
 
 ALTER TABLE `exam_paper_structure`
     ADD COLUMN `is_finish` TINYINT(1) NULL DEFAULT 0 COMMENT '是否完成。根据status中组合状态计算。用于当查询条件' AFTER `status`;
+
+ALTER TABLE `t_b_sync_task`
+    ADD COLUMN `semester_id` BIGINT(20) NULL COMMENT '学期' AFTER `school_id`,
+ADD COLUMN `exam_id` BIGINT(20) NULL COMMENT '考试' AFTER `semester_id`,
+ADD COLUMN `course_code` VARCHAR(50) NULL COMMENT '课程代码' AFTER `exam_id`,
+ADD COLUMN `course_name` VARCHAR(100) NULL COMMENT '课程名称' AFTER `course_code`,
+ADD COLUMN `paper_number` VARCHAR(45) NULL COMMENT '试卷编号' AFTER `course_name`;
+
+ALTER TABLE `t_b_task`
+    ADD COLUMN `semester_id` BIGINT(20) NULL COMMENT '学期' AFTER `id`,
+ADD COLUMN `exam_id` BIGINT(20) NULL COMMENT '考试' AFTER `semester_id`,
+ADD COLUMN `course_code` VARCHAR(50) NULL COMMENT '课程代码' AFTER `exam_id`,
+ADD COLUMN `course_name` VARCHAR(100) NULL COMMENT '课程名称' AFTER `course_code`,
+ADD COLUMN `paper_number` VARCHAR(45) NULL COMMENT '试卷编号' AFTER `course_name`;

+ 25 - 11
distributed-print-business/src/main/resources/db/upgrade/3.2.7.sql

@@ -170,16 +170,16 @@ INSERT INTO sys_privilege
 VALUES(881, '打回', 'Restart', 'LINK', 42, 6, 'AUTH', '880', 1, 0, 1);
 
 CREATE TABLE `exam_paper_class_marker` (
-                                           `id` BIGINT(20) NOT NULL,
-                                           `exam_paper_structure_id` BIGINT(20) NULL COMMENT '评卷参数id',
-                                           `marker_id` BIGINT(20) NULL COMMENT '评卷员id',
-                                           `login_name` VARCHAR(100) NULL COMMENT '评卷员登录名',
-                                           `class_name` MEDIUMTEXT NULL COMMENT '班级',
-                                           `create_id` BIGINT(20) NULL,
-                                           `create_time` BIGINT(20) NULL,
-                                           `update_id` BIGINT(20) NULL,
-                                           `update_time` BIGINT(20) NULL,
-                                           PRIMARY KEY (`id`));
+       `id` BIGINT(20) NOT NULL,
+       `exam_paper_structure_id` BIGINT(20) NULL COMMENT '评卷参数id',
+       `marker_id` BIGINT(20) NULL COMMENT '评卷员id',
+       `login_name` VARCHAR(100) NULL COMMENT '评卷员登录名',
+       `class_name` MEDIUMTEXT NULL COMMENT '班级',
+       `create_id` BIGINT(20) NULL,
+       `create_time` BIGINT(20) NULL,
+       `update_id` BIGINT(20) NULL,
+       `update_time` BIGINT(20) NULL,
+       PRIMARY KEY (`id`));
 
 ALTER TABLE `exam_paper_structure`
     ADD COLUMN `open_class_reading` TINYINT(1) NULL DEFAULT 0 COMMENT '是否开启分班阅' AFTER `object_answer_change`;
@@ -200,4 +200,18 @@ DELETE FROM `distributed-print-3.2.7`.`sys_privilege` WHERE (`id` = '753');
 DELETE FROM `distributed-print-3.2.7`.`sys_privilege` WHERE (`id` = '854');
 
 ALTER TABLE `exam_paper_structure`
-    ADD COLUMN `is_finish` TINYINT(1) NULL DEFAULT 0 COMMENT '是否完成。根据status中组合状态计算。用于当查询条件' AFTER `status`;
+    ADD COLUMN `is_finish` TINYINT(1) NULL DEFAULT 0 COMMENT '是否完成。根据status中组合状态计算。用于当查询条件' AFTER `status`;
+
+ALTER TABLE `t_b_sync_task`
+    ADD COLUMN `semester_id` BIGINT(20) NULL COMMENT '学期' AFTER `school_id`,
+ADD COLUMN `exam_id` BIGINT(20) NULL COMMENT '考试' AFTER `semester_id`,
+ADD COLUMN `course_code` VARCHAR(50) NULL COMMENT '课程代码' AFTER `exam_id`,
+ADD COLUMN `course_name` VARCHAR(100) NULL COMMENT '课程名称' AFTER `course_code`,
+ADD COLUMN `paper_number` VARCHAR(45) NULL COMMENT '试卷编号' AFTER `course_name`;
+
+ALTER TABLE `t_b_task`
+    ADD COLUMN `semester_id` BIGINT(20) NULL COMMENT '学期' AFTER `id`,
+ADD COLUMN `exam_id` BIGINT(20) NULL COMMENT '考试' AFTER `semester_id`,
+ADD COLUMN `course_code` VARCHAR(50) NULL COMMENT '课程代码' AFTER `exam_id`,
+ADD COLUMN `course_name` VARCHAR(100) NULL COMMENT '课程名称' AFTER `course_code`,
+ADD COLUMN `paper_number` VARCHAR(45) NULL COMMENT '试卷编号' AFTER `course_name`;

+ 20 - 0
distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml

@@ -123,6 +123,8 @@
     <select id="listSyncCourseByPrintPlanId"
             resultType="com.qmth.distributed.print.business.bean.dto.SyncExamTaskDto">
         SELECT
+            ets.semester_id semesterId,
+            ets.exam_id examId,
             et.id examTaskId,
             et.course_code courseCode,
             et.course_name courseName,
@@ -178,6 +180,7 @@
                 LEFT JOIN
                 (select
                      a.school_id,
+                     b.semester_id,
                      a.exam_id,
                      a.course_code,
                      a.paper_number,
@@ -372,4 +375,21 @@
             ets.sync_status != 'FINISH'
         ORDER BY et.create_time DESC
     </select>
+    <select id="getByExamDetailId" resultType="com.qmth.teachcloud.common.bean.result.TbTaskDetailResult">
+        SELECT
+            be.semester_id semesterId,
+            ed.exam_id examId,
+            GROUP_CONCAT(edc.course_code) courseCode,
+            GROUP_CONCAT(edc.course_name) courseName,
+            GROUP_CONCAT(edc.paper_number) paperNumber
+        FROM
+            exam_detail ed
+                LEFT JOIN
+            exam_detail_course edc ON ed.id = edc.exam_detail_id
+                LEFT JOIN
+            basic_exam be ON ed.exam_id = be.id
+        WHERE
+            ed.id = #{examDetailId}
+        GROUP BY be.semester_id , ed.exam_id
+    </select>
 </mapper>

+ 23 - 0
distributed-print-business/src/main/resources/mapper/TBSyncTaskMapper.xml

@@ -4,6 +4,13 @@
     <select id="query" resultType="com.qmth.teachcloud.common.bean.result.SyncListResult">
         SELECT
             tbst.id,
+            tbst.semester_id semesterId,
+            bs.name semesterName,
+            tbst.exam_id examId,
+            be.name examName,
+            tbst.course_code courseCode,
+            tbst.course_name courseName,
+            tbst.paper_number paperNumber,
             tbst.type,
             tbst.object_id objectId,
             tbst.third_relate_id thirdRelateId,
@@ -19,10 +26,26 @@
             t_b_sync_task tbst
                 LEFT JOIN
             sys_user su ON tbst.create_id = su.id
+                LEFT JOIN
+            basic_exam be ON tbst.exam_id = be.id
+                LEFT JOIN
+            basic_semester bs ON tbst.semester_id = bs.id
         <where>
             <if test="schoolId != null and schoolId != ''">
                 and tbst.school_id = #{schoolId}
             </if>
+            <if test="semesterId != null and semesterId != ''">
+                and tbst.semester_id = #{semesterId}
+            </if>
+            <if test="examId != null and examId != ''">
+                and tbst.exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and tbst.course_code = #{courseCode}
+            </if>
+            <if test="paperNumber != null and paperNumber != ''">
+                and tbst.paper_number = #{paperNumber}
+            </if>
             <if test="status != null">
                 and tbst.status = #{status}
             </if>

+ 21 - 0
distributed-print-business/src/main/resources/mapper/TFFlowApproveMapper.xml

@@ -27,6 +27,11 @@
         select
         tffa.id,
         et.user_id as teacherId,
+        be.name examName,
+        bs.name semesterName,
+        et.course_code courseCode,
+        et.course_name courseName,
+        et.paper_number paperNumber,
         (
         select
         CONCAT(su.real_name,'(',so.name,')')
@@ -55,10 +60,26 @@
         tfcfe.flow_id = tffa.flow_id
         join exam_task et on
         et.flow_id = tffa.flow_id
+        left join basic_exam be on
+        et.exam_id = be.id
+        left join basic_semester bs on
+        be.semester_id = bs.id
         <where>
             <if test="schoolId != null and schoolId != ''">
                 and tffa.school_id = #{schoolId}
             </if>
+            <if test="semesterId != null and semesterId != ''">
+                and bs.id = #{semesterId}
+            </if>
+            <if test="examId != null and examId != ''">
+                and be.id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and et.course_code = #{courseCode}
+            </if>
+            <if test="paperNumber != null and paperNumber != ''">
+                and et.paper_number = #{paperNumber}
+            </if>
             <if test="orgId != null and orgId != ''">
                 and tffa.org_id = #{orgId}
             </if>

+ 5 - 11
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPaperStructureController.java

@@ -1,17 +1,12 @@
 package com.qmth.distributed.print.api;
 
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.dto.ExamPaperStructurePageDto;
-import com.qmth.distributed.print.business.bean.marking.ClassMarker;
-import com.qmth.distributed.print.business.bean.marking.EvaluationParameters;
-import com.qmth.distributed.print.business.bean.marking.GroupInfo;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.entity.ExamPaperStructure;
-import com.qmth.distributed.print.business.service.ExamPaperGroupService;
 import com.qmth.distributed.print.business.service.ExamPaperStructureService;
 import com.qmth.distributed.print.business.templete.execute.AsyncCloudMarkingTaskService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
@@ -86,7 +81,7 @@ public class ExamPaperStructureController {
      */
     @ApiOperation(value = "上传试卷结构、标答")
     @RequestMapping(value = "/upload", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result upload(@RequestParam("examPaperStructure") String examPaperStructure,
                          @RequestParam("md5") String md5,
                          @RequestParam("keys") String keys,
@@ -98,7 +93,7 @@ public class ExamPaperStructureController {
     @ApiOperation(value = "设置评卷参数-提交")
     @RequestMapping(value = "/submit", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = EditResult.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result submitExamPaperParams(@RequestBody String evaluationParameters) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         ExamPaperStructure examPaperStructure = examPaperStructureService.submitExamPaperParams(evaluationParameters, sysUser);
@@ -116,7 +111,7 @@ public class ExamPaperStructureController {
      */
     @ApiOperation(value = "上传试卷标答文件")
     @RequestMapping(value = "/upload_answer", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result uploadAnswer(@RequestParam("id") String id,
                                @RequestParam("md5") String md5,
                                @RequestParam("file") MultipartFile file) {
@@ -134,7 +129,7 @@ public class ExamPaperStructureController {
      */
     @ApiOperation(value = "设置科组长")
     @RequestMapping(value = "/bind_mark_leader", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.PUSH)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result bindMarkLeader(@RequestBody String data) {
         ExamPaperStructure examPaperStructure = examPaperStructureService.bindMarkLeader(data);
         // 异步同步到云阅卷
@@ -151,7 +146,7 @@ public class ExamPaperStructureController {
     @ApiOperation(value = "绑定评卷员")
     @RequestMapping(value = "/bind_marker", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = EditResult.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.PUSH)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result bindMarker(@RequestBody String data) {
         ExamPaperStructure examPaperStructure = examPaperStructureService.saveMarkerAndClass(data);
         // 异步同步到云阅卷
@@ -227,7 +222,6 @@ public class ExamPaperStructureController {
      */
     @ApiOperation(value = "查询绑定班级")
     @RequestMapping(value = "/list_user_class", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result transfer(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
                            @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
         return ResultUtil.ok(examPaperStructureService.listUserClass(examId, paperNumber));

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

@@ -68,7 +68,6 @@ public class ExamPrintPlanSyncController {
     @ApiOperation(value = "印刷计划推送管理-检验同步规则,并返回学院代码")
     @RequestMapping(value = "/check_sync_mode", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.PUSH)
     public Result checkSyncMode(@RequestBody SyncDataParam syncDataParam) {
         examPrintPlanService.checkSyncMode(syncDataParam);
         return ResultUtil.ok(true, "");

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

@@ -65,7 +65,7 @@ public class GradeBatchController {
     @ApiOperation(value = "成绩分析批次-新建")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
     public Result saveGradeBatch(@Valid @RequestBody GradeBatchParam gradeBatchParam, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());

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

@@ -91,7 +91,7 @@ public class GradeBatchPaperController {
     @ApiOperation(value = "成绩分析批次课程-新建")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
     public Result saveGradeBatchPaper(@Valid @RequestBody GradeBatchPaperParam gradeBatchPaperParam, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());

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

@@ -69,7 +69,7 @@ public class GradePaperController {
     @ApiOperation(value = "成绩分析课程-新建定义")
     @RequestMapping(value = "/save_define", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
     public Result saveGradePaperDefine(@Valid @RequestBody GradePaperDefineParam gradePaperDefineParam, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());

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

@@ -57,7 +57,7 @@ public class GradePaperStructController {
     @ApiOperation(value = "成绩分析试卷结构-新建试卷结构")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
     public Result saveGradePaperStructBatch(@Valid @RequestBody GradePaperStructParam gradePaperStructParam, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());

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

@@ -150,7 +150,7 @@ public class SysUserController {
      */
     @ApiOperation(value = "新增客服")
     @RequestMapping(value = "/save_customer", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
     public Result saveCustomer(@ApiParam(value = "用户信息", required = true) @Valid @RequestBody UserSaveParams userSaveParams, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
@@ -170,7 +170,7 @@ public class SysUserController {
     public Result enable(@RequestBody SysUser user) throws NoSuchAlgorithmException, IllegalAccessException {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         if (sysUserService.enable(user)) {
-            cloudUserPushService.pushCloudUser(user.getId(), requestUser);
+//            cloudUserPushService.pushCloudUser(user.getId(), requestUser);
         }
         return ResultUtil.ok();
     }
@@ -249,18 +249,6 @@ public class SysUserController {
         return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
     }
 
-    @ApiOperation(value = "用户管理-用户推送(异步)")
-    @RequestMapping(value = "/push", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.PUSH)
-    public Result sysUserPush() throws Exception {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Long schoolId = sysUser.getSchoolId();
-        List<Long> userIdList = cloudUserPushStatusService.findNeedPushAgainUserIdList(schoolId);
-        cloudUserPushService.pushCloudUser(userIdList, sysUser);
-        return ResultUtil.ok();
-    }
-
     @ApiOperation(value = "用户管理-导出")
     @RequestMapping(value = "/export", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})

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

@@ -45,13 +45,17 @@ public class TBSyncTaskController {
     @ApiOperation(value = "同步管理查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
-    public Result syncQuery(@ApiParam(value = "任务状态") @RequestParam(required = false) TaskStatusEnum status,
+    public Result syncQuery(@ApiParam(value = "学期", required = false) @RequestParam(value = "semesterId", required = false) Long semesterId,
+                            @ApiParam(value = "考试", required = false) @RequestParam(value = "examId", required = false) Long examId,
+                            @ApiParam(value = "课程代码", required = false) @RequestParam(value = "courseCode", required = false) String courseCode,
+                            @ApiParam(value = "试着编号", required = false) @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                            @ApiParam(value = "任务状态") @RequestParam(required = false) TaskStatusEnum status,
                             @ApiParam(value = "同步类型") @RequestParam(required = false) PushTypeEnum type,
                             @ApiParam(value = "同步数据结果") @RequestParam(required = false) TaskResultEnum result,
                             @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                             @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
-        IPage<SyncListResult> page = tbSyncTaskService.query(schoolId, status, type, result, pageNumber, pageSize);
+        IPage<SyncListResult> page = tbSyncTaskService.query(schoolId, semesterId, examId, courseCode, paperNumber, status, type, result, pageNumber, pageSize);
         return ResultUtil.ok(page);
     }
 

+ 16 - 10
distributed-print/src/main/java/com/qmth/distributed/print/api/TBTaskController.java

@@ -1,19 +1,15 @@
 package com.qmth.distributed.print.api;
 
-import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.result.EditResult;
-import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
-import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.bean.result.TaskListResult;
 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.service.TBTaskService;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.Result;
@@ -28,8 +24,10 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
-import java.io.IOException;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -55,13 +53,17 @@ public class TBTaskController {
     @ApiOperation(value = "任务管理查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
-    public Result taskQuery(@ApiParam(value = "印刷计划id", required = false) @RequestParam(required = false) String printPlanId,
+    public Result taskQuery(@ApiParam(value = "学期", required = false) @RequestParam(value = "semesterId", required = false) Long semesterId,
+                            @ApiParam(value = "考试", required = false) @RequestParam(value = "examId", required = false) Long examId,
+                            @ApiParam(value = "课程代码", required = false) @RequestParam(value = "courseCode", required = false) String courseCode,
+                            @ApiParam(value = "试着编号", required = false) @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                            @ApiParam(value = "印刷计划id", required = false) @RequestParam(required = false) String printPlanId,
                             @ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
                             @ApiParam(value = "任务类型", required = false) @RequestParam(required = false) TaskTypeEnum type,
                             @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
                             @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                             @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<TaskListResult> taskListResultIPage = tbTaskService.query(new Page<>(pageNumber, pageSize), Objects.nonNull(ServletUtil.getRequestHeaderSchoolId()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString()) : null, SystemConstant.convertIdToLong(printPlanId), status, type, result);
+        IPage<TaskListResult> taskListResultIPage = tbTaskService.query(new Page<>(pageNumber, pageSize), semesterId, examId, courseCode, paperNumber, Objects.nonNull(ServletUtil.getRequestHeaderSchoolId()) ? Long.parseLong(ServletUtil.getRequestHeaderSchoolId().toString()) : null, SystemConstant.convertIdToLong(printPlanId), status, type, result);
         if (Objects.nonNull(taskListResultIPage) && Objects.nonNull(taskListResultIPage.getRecords()) && taskListResultIPage.getRecords().size() > 0) {
             List<TaskListResult> taskListResultList = taskListResultIPage.getRecords();
             for (TaskListResult taskListResult : taskListResultList) {
@@ -101,12 +103,16 @@ public class TBTaskController {
     @ApiOperation(value = "任务管理查询接口")
     @PostMapping("/query_result")
     @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
-    public Result taskQuery(@ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
+    public Result taskQuery(@ApiParam(value = "学期", required = false) @RequestParam(value = "semesterId", required = false) Long semesterId,
+                            @ApiParam(value = "考试", required = false) @RequestParam(value = "examId", required = false) Long examId,
+                            @ApiParam(value = "课程代码", required = false) @RequestParam(value = "courseCode", required = false) String courseCode,
+                            @ApiParam(value = "试着编号", required = false) @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                            @ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
                             @ApiParam(value = "任务类型", required = false) @RequestParam(required = false) TaskTypeEnum type,
                             @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
                             @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                             @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<TaskListResult> taskListResultIPage = tbTaskService.queryResult(new Page<>(pageNumber, pageSize), status, type, result);
+        IPage<TaskListResult> taskListResultIPage = tbTaskService.queryResult(new Page<>(pageNumber, pageSize), semesterId, examId, courseCode, paperNumber, status, type, result);
         if (Objects.nonNull(taskListResultIPage) && Objects.nonNull(taskListResultIPage.getRecords()) && taskListResultIPage.getRecords().size() > 0) {
             List<TaskListResult> taskListResultList = taskListResultIPage.getRecords();
             for (TaskListResult taskListResult : taskListResultList) {

+ 13 - 16
distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java

@@ -15,8 +15,13 @@ import com.qmth.distributed.print.business.bean.params.CustomFlowParam;
 import com.qmth.distributed.print.business.bean.params.CustomFlowRenameParam;
 import com.qmth.distributed.print.business.bean.params.FlowTaskApproveParam;
 import com.qmth.distributed.print.business.bean.result.*;
-import com.qmth.distributed.print.business.entity.*;
-import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.entity.TFCustomFlow;
+import com.qmth.distributed.print.business.entity.TFCustomFlowEntity;
+import com.qmth.distributed.print.business.entity.TFFlowApprove;
+import com.qmth.distributed.print.business.service.ActivitiService;
+import com.qmth.distributed.print.business.service.TFCustomFlowEntityService;
+import com.qmth.distributed.print.business.service.TFCustomFlowService;
+import com.qmth.distributed.print.business.service.TFFlowApproveService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSchool;
@@ -27,7 +32,6 @@ import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.TFCustomTypeEnum;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.service.CommonCacheService;
-import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.*;
 import io.swagger.annotations.*;
 import org.slf4j.Logger;
@@ -42,7 +46,6 @@ import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
-import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -59,7 +62,6 @@ import java.util.stream.Collectors;
 @Api(tags = "自定义流程Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_CUSTOM_FLOW)
-//@Aac(auth = BOOL.FALSE, strict = BOOL.FALSE)
 @Validated
 public class TFCustomFlowController {
     private final static Logger log = LoggerFactory.getLogger(TFCustomFlowController.class);
@@ -82,15 +84,6 @@ public class TFCustomFlowController {
     @Resource
     TFCustomFlowEntityService tfCustomFlowEntityService;
 
-    @Resource
-    SysUserService sysUserService;
-
-    @Resource
-    PrintCommonService printCommonService;
-
-    @Resource
-    ExamTaskService examTaskService;
-
     @ApiOperation(value = "保存和发布流程")
     @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
     @RequestMapping(value = "/save", method = RequestMethod.POST)
@@ -206,7 +199,11 @@ public class TFCustomFlowController {
     @ApiOperation(value = "流程审批记录列表")
     @ApiResponses({@ApiResponse(code = 200, message = "流程审批记录信息", response = FlowApproveListResult.class)})
     @RequestMapping(value = "/approve/list", method = RequestMethod.POST)
-    public Result taskApproveList(@ApiParam(value = "状态", required = false) @RequestParam(required = false) FlowStatusEnum status,
+    public Result taskApproveList(@ApiParam(value = "学期", required = false) @RequestParam(value = "semesterId", required = false) Long semesterId,
+                                  @ApiParam(value = "考试", required = false) @RequestParam(value = "examId", required = false) Long examId,
+                                  @ApiParam(value = "课程代码", required = false) @RequestParam(value = "courseCode", required = false) String courseCode,
+                                  @ApiParam(value = "试着编号", required = false) @RequestParam(value = "paperNumber", required = false) String paperNumber,
+                                  @ApiParam(value = "状态", required = false) @RequestParam(required = false) FlowStatusEnum status,
                                   @ApiParam(value = "提交人名称", required = false) @RequestParam(required = false) String teacherUserName,
                                   @ApiParam(value = "教研室", required = false) @RequestParam(required = false) String teachingRoomId,
                                   @ApiParam(value = "提交开始时间", required = false) @RequestParam(required = false) Long startTime,
@@ -214,7 +211,7 @@ public class TFCustomFlowController {
                                   @ApiParam(value = "提交人名称", required = false) @RequestParam(required = false) String pendApproveUserName,
                                   @ApiParam(value = "页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                   @ApiParam(value = "数量", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(tfFlowApproveService.findApproveList(new Page<>(pageNumber, pageSize), status, teacherUserName, SystemConstant.convertIdToLong(teachingRoomId), startTime, endTime, pendApproveUserName, SystemConstant.getHeadOrUserSchoolId(), null));
+        return ResultUtil.ok(tfFlowApproveService.findApproveList(new Page<>(pageNumber, pageSize), semesterId, examId, courseCode, paperNumber, status, teacherUserName, SystemConstant.convertIdToLong(teachingRoomId), startTime, endTime, pendApproveUserName, SystemConstant.getHeadOrUserSchoolId(), null));
     }
 
     @ApiOperation(value = "流程列表")

+ 79 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/SyncListResult.java

@@ -17,6 +17,29 @@ public class SyncListResult implements Serializable {
     @ApiModelProperty(value = "id")
     private Long id;
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学期ID")
+    private Long semesterId;
+
+    @ApiModelProperty(value = "学期名称")
+    private String semesterName;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "考试ID")
+    private Long examId;
+
+    @ApiModelProperty(value = "考试名称")
+    private String examName;
+
+    @ApiModelProperty(value = "课程代码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
     @ApiModelProperty(value = "同步任务类型:USER_PUSH(用户推送),EXAM_PUSH(考试、考生、题卡推送),STRUCTURE_PUSH(试卷结构推送),SCORE_PUSH(成绩推送)")
     private String type;
 
@@ -62,6 +85,62 @@ public class SyncListResult implements Serializable {
         this.id = id;
     }
 
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
     public String getType() {
         return type;
     }

+ 50 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/TaskListResult.java

@@ -23,6 +23,23 @@ public class TaskListResult implements Serializable {
     @ApiModelProperty(value = "id")
     Long id;
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学期ID")
+    Long semesterId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "考试ID")
+    Long examId;
+
+    @ApiModelProperty(value = "课程代码")
+    String courseCode;
+
+    @ApiModelProperty(value = "课程代码")
+    String courseName;
+
+    @ApiModelProperty(value = "试卷编号")
+    String paperNumber;
+
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "印刷计划id")
     Long printPlanId;
@@ -73,6 +90,39 @@ public class TaskListResult implements Serializable {
     @ApiModelProperty(value = "人工错误原因")
     String errorMessage;
 
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
     public String getErrorMessage() {
         return errorMessage;
     }

+ 70 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/TbTaskDetailResult.java

@@ -0,0 +1,70 @@
+package com.qmth.teachcloud.common.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 生成pdf考场信息查询结果
+ */
+public class TbTaskDetailResult implements Serializable {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学期ID")
+    private Long semesterId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "考试ID")
+    private Long examId;
+
+    @ApiModelProperty(value = "课程代码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+}

+ 62 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/TBTask.java

@@ -29,6 +29,28 @@ public class TBTask extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty(value = "学期id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("semester_id")
+    private Long semesterId;
+
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @TableField("exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "课程代码")
+    @TableField("course_code")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    @TableField("course_name")
+    private String courseName;
+
+    @ApiModelProperty(value = "试卷编号")
+    @TableField("paper_number")
+    private String paperNumber;
+
     @ApiModelProperty(value = "任务类型,USER_IMPORT:用户导入, QUESTION_MISSION_BATCH_CREATE:批量新建命题任务, SAMPLE_EXPORT:导出审核样本, PAPER_DOWNLOAD:卷库下载, EXAMINATION_IMPORT:考务数据导入, EXAMINATION_EXPORT:考务数据导出, PRINT_PDF_DOWNLOAD:批量下载pdf, CREATE_PDF:生成pdf, COURSE_IMPORT:课程导入,STATISTICS_IMPORT:命题统计导入")
     @TableField(value = "type")
     private TaskTypeEnum type;
@@ -113,6 +135,46 @@ public class TBTask extends BaseEntity implements Serializable {
     @TableField(value = "error_message", updateStrategy = FieldStrategy.IGNORED)
     private String errorMessage;
 
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
     public String getErrorMessage() {
         return errorMessage;
     }

+ 0 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PushTypeEnum.java

@@ -10,7 +10,6 @@ import java.util.Objects;
  * @Date: 2021-11-01
  */
 public enum PushTypeEnum {
-    USER_PUSH("用户推送"),
 
     EXAM_PUSH("考试、考生、题卡数据推送"),
 

+ 0 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java

@@ -112,8 +112,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      */
     List<ApproveUserResult> findByRoldIdAndMemberName(@Param("roleId") Long roleId, @Param("name") String name, @Param("schoolId") Long schoolId);
 
-    List<CloudUserPushStatusDto> findCloudUserPushStatus(@Param("userId") Long userId, @Param("schoolId") Long schoolId);
-
     List<UserExportDto> listExportData(@Param("schoolId") Long schoolId, @Param("userInfo") String userInfo, @Param("orgId") Long orgId, @Param("roleId") String roleId, @Param("enable") Boolean enable);
 
     /**

+ 4 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/TBTaskMapper.java

@@ -21,6 +21,10 @@ public interface TBTaskMapper extends BaseMapper<TBTask> {
 
     public IPage<TaskListResult> query(IPage<Map> iPage,
                                        @Param("schoolId") Long schoolId,
+                                       @Param("semesterId") Long semesterId,
+                                       @Param("examId") Long examId,
+                                       @Param("courseCode") String courseCode,
+                                       @Param("paperNumber") String paperNumber,
                                        @Param("printPlanId") Long printPlanId,
                                        @Param("status") String status,
                                        @Param("type") String type,

+ 9 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TBTaskService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.bean.result.TaskListResult;
+import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.TBTask;
@@ -13,7 +14,6 @@ import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -76,7 +76,7 @@ public interface TBTaskService extends IService<TBTask> {
      * @param entityId
      * @return
      */
-    public Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum, Long printPlanId, SysUser sysUser, Long entityId);
+    public Map<String, Object> saveTask(TbTaskDetailResult tbTaskDetailResult, TaskTypeEnum taskTypeEnum, Long printPlanId, SysUser sysUser, Long entityId);
 
     /**
      * 保存任务
@@ -90,10 +90,11 @@ public interface TBTaskService extends IService<TBTask> {
 
     /**
      * 保存任务
+     *
      * @param taskTypeEnum 任务类型
      * @return 结果
      */
-    Map<String,Object> saveTask(TaskTypeEnum taskTypeEnum);
+    Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum);
 
     /**
      * 查询任务列表
@@ -107,6 +108,10 @@ public interface TBTaskService extends IService<TBTask> {
      * @return
      */
     public IPage<TaskListResult> query(IPage<Map> iPage,
+                                       Long semesterId,
+                                       Long examId,
+                                       String courseCode,
+                                       String paperNumber,
                                        Long schoolId,
                                        Long printPlanId,
                                        TaskStatusEnum status,
@@ -134,5 +139,5 @@ public interface TBTaskService extends IService<TBTask> {
      */
     public TBTask saveTaskCommon(BasicAttachment basicAttachment, TaskTypeEnum taskTypeEnum, Map map, SysUser sysUser);
 
-    IPage<TaskListResult> queryResult(Page<Map> iPage, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result);
+    IPage<TaskListResult> queryResult(Page<Map> iPage, Long semesterId, Long examId, String courseCode, String paperNumber, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result);
 }

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

@@ -906,42 +906,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
     @Override
     public SpecialPrivilegeEnum findUserSpecialPrivilegeByUserId(Long userId, Long schoolId) {
-
-
         // 知学知考评卷员-科组长角色
         boolean markerRole = this.includeSysRole(userId, RoleTypeEnum.MARKER);
         boolean leaderRole = this.includeSysRole(userId, RoleTypeEnum.MARKER_LEADER);
 
         // 记录的云阅卷应该的状态(云阅卷自己不改)
-        boolean cloudMarker = true;
-        boolean cloudLeader = true;
-        List<CloudUserPushStatusDto> userPushDtoList = this.baseMapper.findCloudUserPushStatus(userId, schoolId);
-        if (userPushDtoList != null) {
-            if (userPushDtoList.size() > 1) {
-                String userName = this.getById(userId).getLoginName();
-                throw ExceptionResultEnum.ERROR.exception("用户【" + userName + "】存在多条推送状态记录异常");
-            }
-            if (userPushDtoList.size() == 1) {
-                CloudUserPushStatusDto pushStatusDto = userPushDtoList.get(0);
-                if (!UserPushResultEnum.BIND_SUCCESS.equals(UserPushResultEnum.valueOf(pushStatusDto.getMarkerStatus()))) {
-                    // 有推送记录但推送状态不是评卷员绑定成功
-                    cloudMarker = false;
-                }
-                if (!UserPushResultEnum.BIND_SUCCESS.equals(UserPushResultEnum.valueOf(pushStatusDto.getMarkerLeaderStatus()))) {
-                    // 有推送记录但推送状态不是科组长绑定成功
-                    cloudLeader = false;
-                }
-            }
-        }
-        boolean marker = markerRole && cloudMarker;
-        boolean leader = leaderRole && cloudLeader;
-
         SpecialPrivilegeEnum result;
-        if (marker && leader) {
+        if (markerRole && leaderRole) {
             result = SpecialPrivilegeEnum.COMPOSITE;
-        } else if (marker) {
+        } else if (markerRole) {
             result = SpecialPrivilegeEnum.MARKER;
-        } else if (leader) {
+        } else if (leaderRole) {
             result = SpecialPrivilegeEnum.SUBJECT_HEADER;
         } else {
             result = SpecialPrivilegeEnum.UNIDENTIFIED;

+ 19 - 12
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TBTaskServiceImpl.java

@@ -8,6 +8,7 @@ import com.qmth.boot.api.exception.ApiException;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.bean.result.TaskListResult;
+import com.qmth.teachcloud.common.bean.result.TbTaskDetailResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -29,7 +30,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * <p>
@@ -127,13 +131,20 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
      * @return
      */
     @Override
-    public Map<String, Object> saveTask(TaskTypeEnum taskTypeEnum, Long printPlanId, SysUser sysUser, Long entityId) {
+    public Map<String, Object> saveTask(TbTaskDetailResult tbTaskDetailResult, TaskTypeEnum taskTypeEnum, Long printPlanId, SysUser sysUser, Long entityId) {
         Map<String, Object> map = new HashMap<>();
         try {
             if (Objects.nonNull(entityId)) {
                 map.computeIfAbsent("entityId", v -> entityId);
             }
             TBTask tbTask = saveTaskCommon(null, taskTypeEnum, map, sysUser);
+            if (tbTaskDetailResult != null) {
+                tbTask.setSemesterId(tbTaskDetailResult.getSemesterId());
+                tbTask.setExamId(tbTaskDetailResult.getExamId());
+                tbTask.setCourseCode(tbTaskDetailResult.getCourseCode());
+                tbTask.setCourseName(tbTaskDetailResult.getCourseName());
+                tbTask.setPaperNumber(tbTaskDetailResult.getPaperNumber());
+            }
             tbTask.setPrintPlanId(printPlanId);
             this.save(tbTask);
         } catch (Exception e) {
@@ -204,14 +215,10 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
      * @return
      */
     @Override
-    public IPage<TaskListResult> query(IPage<Map> iPage, Long schoolId, Long printPlanId, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result) {
+    public IPage<TaskListResult> query(IPage<Map> iPage, Long semesterId, Long examId, String courseCode, String paperNumber, Long schoolId, Long printPlanId, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-//        Set<Long> orgIds = null;
-//        if (TaskTypeEnum.CREATE_PDF.equals(type)) {
-//            orgIds = teachcloudCommonService.listSubOrgIds(null);
-//        }
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId,sysUser.getId(),ServletUtil.getRequest().getServletPath());
-        return tbTaskMapper.query(iPage, schoolId, printPlanId, Objects.nonNull(status) ? status.name() : null, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(result) ? result.name() : null, dpr);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        return tbTaskMapper.query(iPage, schoolId, semesterId, examId, courseCode, paperNumber, printPlanId, Objects.nonNull(status) ? status.name() : null, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(result) ? result.name() : null, dpr);
     }
 
     /**
@@ -267,10 +274,10 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
     }
 
     @Override
-    public IPage<TaskListResult> queryResult(Page<Map> iPage, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result) {
+    public IPage<TaskListResult> queryResult(Page<Map> iPage, Long semesterId, Long examId, String courseCode, String paperNumber, TaskStatusEnum status, TaskTypeEnum type, TaskResultEnum result) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId,sysUser.getId(),ServletUtil.getRequest().getServletPath());
-        return tbTaskMapper.query(iPage, schoolId, null, Objects.nonNull(status) ? status.name() : null, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(result) ? result.name() : null, dpr);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        return tbTaskMapper.query(iPage, schoolId, semesterId, examId, courseCode, paperNumber, null, Objects.nonNull(status) ? status.name() : null, Objects.nonNull(type) ? type.name() : null, Objects.nonNull(result) ? result.name() : null, dpr);
     }
 }

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

@@ -353,26 +353,6 @@
             and srgm.enable = 1
         </where>
     </select>
-    <select id="findCloudUserPushStatus"
-            resultType="com.qmth.teachcloud.common.bean.dto.CloudUserPushStatusDto">
-        SELECT
-            school_id AS schoolId,
-            user_id AS userId,
-            marker_status AS markerStatus,
-            marker_leader_status AS markerLeaderStatus,
-            sync_status AS syncStatus
-        FROM
-            cloud_user_push_status
-        <where>
-            <if test="schoolId != null and schoolId != ''">
-                AND school_id = #{schoolId}
-            </if>
-            <if test="userId != null and userId != ''">
-                AND user_id = #{userId}
-            </if>
-        </where>
-    </select>
-
     <select id="listExportData" resultType="com.qmth.teachcloud.common.bean.dto.UserExportDto">
         SELECT
         a.id,

+ 64 - 47
teachcloud-common/src/main/resources/mapper/TBTaskMapper.xml

@@ -4,54 +4,71 @@
 
     <select id="query" resultType="com.qmth.teachcloud.common.bean.result.TaskListResult">
         select
-            tbt.id,
-            tbt.print_plan_id as printPlanId,
-            concat_ws('-', epp.name, tbt.obj_name) as printPlanName,
-            tbt.`type`,
-            tbt.status,
-            tbt.`result`,
-            tbt.create_time as createTime,
-            tbt.create_id as createId,
-            su.real_name as createName,
-            if(ISNULL(tbt.import_file_path),false,true) as hasImportFile,
-            IF(tbt.result_file_path is null, IF(tbt.import_file_path is null, false, true), true) as hasResultFile,
-            if(ISNULL(tbt.report_file_path),false,true) as hasReportFile,
-            if(ISNULL(tbt.error_file_path),false,true) as hasErrorFile,
-            tbt.reset_count as resetCount,
-            tbt.error_message as errorMessage
-            from
-            t_b_task tbt
-            left join exam_print_plan epp on
-            epp.id = tbt.print_plan_id
-            left join sys_user su on su.id = tbt.create_id
-            <where>
-                <if test="schoolId != null and schoolId != ''">
-                    and tbt.school_id = #{schoolId}
+        tbt.id,
+        tbt.semester_id semesterId,
+        tbt.exam_id examId,
+        tbt.course_code courseCode,
+        tbt.course_name courseName,
+        tbt.paper_number paperNumber,
+        tbt.print_plan_id as printPlanId,
+        concat_ws('-', epp.name, tbt.obj_name) as printPlanName,
+        tbt.`type`,
+        tbt.status,
+        tbt.`result`,
+        tbt.create_time as createTime,
+        tbt.create_id as createId,
+        su.real_name as createName,
+        if(ISNULL(tbt.import_file_path),false,true) as hasImportFile,
+        IF(tbt.result_file_path is null, IF(tbt.import_file_path is null, false, true), true) as hasResultFile,
+        if(ISNULL(tbt.report_file_path),false,true) as hasReportFile,
+        if(ISNULL(tbt.error_file_path),false,true) as hasErrorFile,
+        tbt.reset_count as resetCount,
+        tbt.error_message as errorMessage
+        from
+        t_b_task tbt
+        left join exam_print_plan epp on
+        epp.id = tbt.print_plan_id
+        left join sys_user su on su.id = tbt.create_id
+        <where>
+            <if test="schoolId != null and schoolId != ''">
+                and tbt.school_id = #{schoolId}
+            </if>
+            <if test="semesterId != null and semesterId != ''">
+                and tbt.semester_id = #{semesterId}
+            </if>
+            <if test="examId != null and examId != ''">
+                and tbt.exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and tbt.course_code = #{courseCode}
+            </if>
+            <if test="paperNumber != null and paperNumber != ''">
+                and tbt.paper_number = #{paperNumber}
+            </if>
+            <if test="printPlanId != null and printPlanId != ''">
+                and tbt.print_plan_id = #{printPlanId}
+            </if>
+            <if test="status != null and status != ''">
+                and tbt.status = #{status}
+            </if>
+            <if test="type != null and type != ''">
+                and tbt.type = #{type}
+            </if>
+            <if test="result != null and result != ''">
+                and tbt.result = #{result}
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND su.id = #{dpr.requestUserId}
                 </if>
-                <if test="printPlanId != null and printPlanId != ''">
-                    and tbt.print_plan_id = #{printPlanId}
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
                 </if>
-                <if test="status != null and status != ''">
-                    and tbt.status = #{status}
-                </if>
-                <if test="type != null and type != ''">
-                    and tbt.type = #{type}
-                </if>
-                <if test="result != null and result != ''">
-                    and tbt.result = #{result}
-                </if>
-                <if test="dpr != null">
-                    <if test="dpr.requestUserId != null">
-                        AND su.id = #{dpr.requestUserId}
-                    </if>
-                    <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
-                        AND su.org_id IN
-                        <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
-                            #{item}
-                        </foreach>
-                    </if>
-                </if>
-            </where>
-            order by tbt.create_time desc
+            </if>
+        </where>
+        order by tbt.create_time desc
     </select>
 </mapper>