Browse Source

fix:电子交卷部分改动

caozixuan 3 years ago
parent
commit
7fbae71390
20 changed files with 314 additions and 100 deletions
  1. 48 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDto.java
  2. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java
  3. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicPrintConfigService.java
  4. 9 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTemplateOrgService.java
  5. 10 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskPrintService.java
  6. 3 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  7. 1 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicPrintConfigServiceImpl.java
  8. 19 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateOrgServiceImpl.java
  9. 62 33
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPrintServiceImpl.java
  10. 51 36
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  11. 2 4
      distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml
  12. 14 0
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  13. 16 11
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java
  14. 12 10
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  15. 14 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/annotation/GradeAnalyzeApi.java
  16. 11 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/TaskPrintClassDto.java
  17. 24 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/TeachBasicEnum.java
  18. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCourseService.java
  19. 10 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java
  20. 4 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java

+ 48 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDto.java

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.business.bean.dto;
 package com.qmth.distributed.print.business.bean.dto;
 
 
-import com.qmth.distributed.print.business.enums.ExamStatusEnum;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
@@ -45,6 +46,20 @@ public class ExamTaskDto {
     @ApiModelProperty(value = "审批表展示状态")
     @ApiModelProperty(value = "审批表展示状态")
     private Boolean approveFormStatus;
     private Boolean approveFormStatus;
 
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "考试id")
+    private Long examId;
+
+    @ApiModelProperty(value = "考试名称")
+    private String examName;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学期id")
+    private Long semesterId;
+
+    @ApiModelProperty(value = "学期名称")
+    private String semesterName;
+
     public Boolean getApproveFormStatus() {
     public Boolean getApproveFormStatus() {
         return approveFormStatus;
         return approveFormStatus;
     }
     }
@@ -288,4 +303,36 @@ public class ExamTaskDto {
     public void setSetup(Integer setup) {
     public void setSetup(Integer setup) {
         this.setup = setup;
         this.setup = setup;
     }
     }
+
+    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 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;
+    }
 }
 }

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

@@ -26,7 +26,7 @@ import java.util.Set;
  */
  */
 public interface ExamTaskMapper extends BaseMapper<ExamTask> {
 public interface ExamTaskMapper extends BaseMapper<ExamTask> {
 
 
-    IPage<ExamTaskDto> listPage(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId, @Param("enable") Boolean enable, @Param("status") String status, @Param("cardRuleId") Long cardRuleId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds, @Param("userName") String userName, @Param("createName") String createName);
+    IPage<ExamTaskDto> listPage(Page<ExamTaskDto> page, @Param("schoolId") Long schoolId,@Param("semesterId") Long semesterId,@Param("examId") Long examId, @Param("enable") Boolean enable, @Param("status") String status, @Param("cardRuleId") Long cardRuleId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("orgIds") Set<Long> orgIds, @Param("userName") String userName, @Param("createName") String createName);
 
 
     List<BlurryUserDto> listUser(@Param("schoolId") Long schoolId, @Param("param") String param, @Param("orgIds") Set<Long> orgIds);
     List<BlurryUserDto> listUser(@Param("schoolId") Long schoolId, @Param("param") String param, @Param("orgIds") Set<Long> orgIds);
 
 

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

@@ -36,4 +36,5 @@ public interface BasicPrintConfigService extends IService<BasicPrintConfig> {
      * @return BasicPrintConfig
      * @return BasicPrintConfig
      */
      */
     BasicPrintConfig getByCourseCodeAndPaperNumber(String courseCode, String paperNumber);
     BasicPrintConfig getByCourseCodeAndPaperNumber(String courseCode, String paperNumber);
+
 }
 }

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTemplateOrgService.java

@@ -31,4 +31,13 @@ public interface BasicTemplateOrgService extends IService<BasicTemplateOrg> {
      * @return 模板信息集合
      * @return 模板信息集合
      */
      */
     List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids);
     List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids);
+
+    /**
+     * 查询基础机构模板对应关系根据课程编号
+     * @param courseCode 课程编号
+     * @param templateTypeEnum 类型
+     * @param schoolId 学校id
+     * @return 对应关系
+     */
+    List<BasicTemplateOrg> findByCourseCodeAndType(String courseCode,TemplateTypeEnum templateTypeEnum,Long schoolId);
 }
 }

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

@@ -39,5 +39,15 @@ public interface ExamTaskPrintService extends IService<ExamTaskPrint> {
 
 
     void submitTaskPrint(ExamTaskPrintParams examTaskPrintParams) throws IOException;
     void submitTaskPrint(ExamTaskPrintParams examTaskPrintParams) throws IOException;
 
 
+    /**
+     * 查找考场
+     * <p>
+     * 入库申请里——新建任务,需要命题老师提交试卷+考务数据的模式,课程选择范围依然是从字典里取数据,列表显示当前用户所在机构下的全部课程,
+     * 考务数据选择班级,优先查看基础信息里是否有当前用户自己在基础管理里创建的数据,如果没有选择字典
+     * 如果基础管理创建的班级数据,无命题老师想选择的,选择班级下拉列表应该有一个选项,创建班级
+     * </p>
+     * @param courseCode 课程编号
+     * @return 结果
+     */
     List<TaskPrintClassDto> listExamTaskClass(String courseCode);
     List<TaskPrintClassDto> listExamTaskClass(String courseCode);
 }
 }

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

@@ -37,7 +37,8 @@ public interface ExamTaskService extends IService<ExamTask> {
 
 
     List<ExamTask> listByCourseCode(Long schoolId, String code);
     List<ExamTask> listByCourseCode(Long schoolId, String code);
 
 
-    IPage<ExamTaskDto> list(Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize);
+
+    IPage<ExamTaskDto> list(Long semesterId, Long examId, Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize);
 
 
     List<String> listPaperNumber(String param, List<Long> printPlanIdList);
     List<String> listPaperNumber(String param, List<Long> printPlanIdList);
 
 
@@ -253,6 +254,7 @@ public interface ExamTaskService extends IService<ExamTask> {
 
 
     /**
     /**
      * 印刷员驳回,命题老师重新提交
      * 印刷员驳回,命题老师重新提交
+     *
      * @param map
      * @param map
      */
      */
     void applyResave(ExamTaskReApplyParam map);
     void applyResave(ExamTaskReApplyParam map);

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

@@ -19,7 +19,6 @@ import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.common.service.BasicCourseService;
-import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -148,7 +147,7 @@ public class BasicPrintConfigServiceImpl extends ServiceImpl<BasicPrintConfigMap
         }
         }
         List<BasicPrintConfig> basicPrintConfigs = this.baseMapper.listBySchoolIdAndExamIdAndOrgId(schoolId, examId, orgId, TemplateTypeEnum.PRINT_CONFIG.name());
         List<BasicPrintConfig> basicPrintConfigs = this.baseMapper.listBySchoolIdAndExamIdAndOrgId(schoolId, examId, orgId, TemplateTypeEnum.PRINT_CONFIG.name());
         if (basicPrintConfigs == null || basicPrintConfigs.size() == 0) {
         if (basicPrintConfigs == null || basicPrintConfigs.size() == 0) {
-            throw ExceptionResultEnum.ERROR.exception("查询出多个印品配置");
+            throw ExceptionResultEnum.ERROR.exception("未找到课程【" + basicCourseService.findByCourseCode(courseCode,schoolId).getName() + "】对应的印品配置");
         }
         }
         if (basicPrintConfigs.size() != 1) {
         if (basicPrintConfigs.size() != 1) {
             throw ExceptionResultEnum.ERROR.exception("查询出多个印品配置");
             throw ExceptionResultEnum.ERROR.exception("查询出多个印品配置");

+ 19 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateOrgServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 package com.qmth.distributed.print.business.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
 import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
@@ -7,7 +8,10 @@ import com.qmth.distributed.print.business.entity.BasicTemplateOrg;
 import com.qmth.distributed.print.business.mapper.BasicTemplateOrgMapper;
 import com.qmth.distributed.print.business.mapper.BasicTemplateOrgMapper;
 import com.qmth.distributed.print.business.service.BasicTemplateOrgService;
 import com.qmth.distributed.print.business.service.BasicTemplateOrgService;
 import com.qmth.distributed.print.business.enums.TemplateTypeEnum;
 import com.qmth.distributed.print.business.enums.TemplateTypeEnum;
+import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysOrg;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.BasicCourseService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
@@ -15,6 +19,7 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.Objects;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -28,6 +33,8 @@ import java.util.Map;
 public class BasicTemplateOrgServiceImpl extends ServiceImpl<BasicTemplateOrgMapper, BasicTemplateOrg> implements BasicTemplateOrgService {
 public class BasicTemplateOrgServiceImpl extends ServiceImpl<BasicTemplateOrgMapper, BasicTemplateOrg> implements BasicTemplateOrgService {
     @Resource
     @Resource
     private BasicTemplateOrgMapper basicTemplateOrgMapper;
     private BasicTemplateOrgMapper basicTemplateOrgMapper;
+    @Resource
+    private BasicCourseService basicCourseService;
 
 
     @Override
     @Override
     public List<SysOrg> listByTypeAndTemplateId(String type, Long templateId) {
     public List<SysOrg> listByTypeAndTemplateId(String type, Long templateId) {
@@ -61,4 +68,16 @@ public class BasicTemplateOrgServiceImpl extends ServiceImpl<BasicTemplateOrgMap
     public List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids) {
     public List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids) {
         return basicTemplateOrgMapper.templateListByOrgIds(ids);
         return basicTemplateOrgMapper.templateListByOrgIds(ids);
     }
     }
+
+    @Override
+    public List<BasicTemplateOrg> findByCourseCodeAndType(String courseCode, TemplateTypeEnum templateTypeEnum, Long schoolId) {
+        BasicCourse basicCourse = basicCourseService.getOne(new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getSchoolId,schoolId).eq(BasicCourse::getCode,courseCode));
+        if (Objects.isNull(basicCourse)){
+            throw ExceptionResultEnum.ERROR.exception("未找到基础课程信息");
+        }
+        return this.list(new QueryWrapper<BasicTemplateOrg>().lambda()
+                .eq(BasicTemplateOrg::getSchoolId,schoolId)
+                .eq(BasicTemplateOrg::getType,templateTypeEnum)
+                .eq(BasicTemplateOrg::getOrgId,basicCourse.getTeachingRoomId()));
+    }
 }
 }

+ 62 - 33
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPrintServiceImpl.java

@@ -1,13 +1,15 @@
 package com.qmth.distributed.print.business.service.impl;
 package com.qmth.distributed.print.business.service.impl;
 
 
-import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.distributed.print.business.bean.dto.*;
+import com.qmth.distributed.print.business.bean.dto.ExamTaskPrintDetailDto;
+import com.qmth.distributed.print.business.bean.dto.ExamTaskPrintDto;
+import com.qmth.distributed.print.business.bean.dto.TaskPrintExtendFieldsDto;
+import com.qmth.distributed.print.business.bean.dto.TaskPrintHouseDto;
 import com.qmth.distributed.print.business.bean.params.ExamTaskPrintParams;
 import com.qmth.distributed.print.business.bean.params.ExamTaskPrintParams;
 import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
 import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.entity.*;
@@ -16,27 +18,15 @@ import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.mapper.ExamTaskPrintMapper;
 import com.qmth.distributed.print.business.mapper.ExamTaskPrintMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
-import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.bean.dto.TaskPrintClassDto;
 import com.qmth.teachcloud.common.bean.dto.TaskPrintClassDto;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.BasicStudent;
-import com.qmth.teachcloud.common.entity.BasicUserCourse;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.entity.TBTask;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.enums.MqTagEnum;
-import com.qmth.teachcloud.common.enums.OrgTypeEnum;
-import com.qmth.teachcloud.common.enums.TaskTypeEnum;
-import com.qmth.teachcloud.common.service.BasicClazzService;
-import com.qmth.teachcloud.common.service.BasicStudentService;
-import com.qmth.teachcloud.common.service.BasicUserCourseService;
-import com.qmth.teachcloud.common.service.TBTaskService;
-import com.qmth.teachcloud.common.util.ConvertUtil;
+import com.qmth.teachcloud.common.entity.*;
+import com.qmth.teachcloud.common.enums.*;
+import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -45,7 +35,6 @@ import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.io.IOException;
 import java.io.IOException;
 import java.util.*;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 /**
 /**
@@ -54,40 +43,52 @@ import java.util.stream.Collectors;
 @Service
 @Service
 public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, ExamTaskPrint> implements ExamTaskPrintService {
 public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, ExamTaskPrint> implements ExamTaskPrintService {
 
 
-    @Autowired
+    @Resource
     private BasicStudentService basicStudentService;
     private BasicStudentService basicStudentService;
 
 
-    @Autowired
+    @Resource
     private ExamDetailService examDetailService;
     private ExamDetailService examDetailService;
 
 
-    @Autowired
+    @Resource
     private ExamDetailCourseService examDetailCourseService;
     private ExamDetailCourseService examDetailCourseService;
 
 
-    @Autowired
+    @Resource
     private ExamStudentService examStudentService;
     private ExamStudentService examStudentService;
 
 
-    @Autowired
+    @Resource
     private ExamPrintPlanService examPrintPlanService;
     private ExamPrintPlanService examPrintPlanService;
 
 
-    @Autowired
+    @Resource
     private BasicExamRuleService basicExamRuleService;
     private BasicExamRuleService basicExamRuleService;
 
 
-    @Autowired
+    @Resource
     private BasicUserCourseService basicUserCourseService;
     private BasicUserCourseService basicUserCourseService;
 
 
     @Resource
     @Resource
     TBTaskService tbTaskService;
     TBTaskService tbTaskService;
 
 
-    @Autowired
+    @Resource
     @Lazy
     @Lazy
     PrintCommonService printCommonService;
     PrintCommonService printCommonService;
 
 
-    @Autowired
+    @Resource
     BasicClazzService basicClazzService;
     BasicClazzService basicClazzService;
 
 
     @Resource
     @Resource
     RedisUtil redisUtil;
     RedisUtil redisUtil;
 
 
+    @Resource
+    private TeachCourseService teachCourseService;
+
+    @Resource
+    private TeachClazzService teachClazzService;
+
+    @Resource
+    private TeachStudentService teachStudentService;
+
+    @Resource
+    private BasicCourseService basicCourseService;
+
     @Override
     @Override
     public IPage<BasicStudent> listStudentByClass(String classId, Integer pageNumber, Integer pageSize) {
     public IPage<BasicStudent> listStudentByClass(String classId, Integer pageNumber, Integer pageSize) {
         Page<BasicStudent> page = new Page<>(pageNumber, pageSize);
         Page<BasicStudent> page = new Page<>(pageNumber, pageSize);
@@ -376,15 +377,43 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
 
 
     @Override
     @Override
     public List<TaskPrintClassDto> listExamTaskClass(String courseCode) {
     public List<TaskPrintClassDto> listExamTaskClass(String courseCode) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        List<BasicUserCourse> courseList = basicUserCourseService.listBySchoolIdAndCourseCode(schoolId, courseCode);
-        Set<String> stringList = courseList.stream().map(m -> String.valueOf(m.getClazzId())).collect(Collectors.toSet());
+        List<TaskPrintClassDto> taskPrintClassDtos = new ArrayList<>();
+        BasicCourse basicCourse = basicCourseService.findByCourseCode(courseCode,schoolId);
+        // 1.判断教学表中是否有数据
+        List<TeachCourse> teachCourseDatasource = teachCourseService.list(new QueryWrapper<TeachCourse>().lambda()
+                .eq(TeachCourse::getSchoolId,schoolId)
+                .eq(TeachCourse::getUserId,requestUser.getId()));
+        if (teachCourseDatasource != null && teachCourseDatasource.size() > 0){
+            // 如果该用户创建了任意教学课程,则走教学课程查询逻辑
+            List<TeachCourse> teachCourseList = teachCourseDatasource.stream().filter(e -> e.getBasicCourseCode().equals(courseCode)).collect(Collectors.toList());
+            if (teachCourseList.size() > 1){
+                throw ExceptionResultEnum.ERROR.exception("基础信息管理中【" + basicCourse.getName() + "】教学课程信息存在多条数据异常");
+            }
+            if (teachCourseList.size() == 0){
+                // 没创建该教学课程
+                throw ExceptionResultEnum.ERROR.exception("请优先在基础信息管理中创建【" + basicCourse.getName() + "】的教学课程信息");
+            }
+            TeachCourse teachCourse = teachCourseList.get(0);
+            List<TeachClazz> teachClazzList = teachClazzService.list(new QueryWrapper<TeachClazz>().lambda().in(TeachClazz::getTeachCourseId,teachCourse.getId()));
+            for (TeachClazz teachClazz : teachClazzList) {
+                TaskPrintClassDto dto = new TaskPrintClassDto();
+                dto.setClassId(String.valueOf(teachClazz.getId()));
+                dto.setTeachBasicEnum(TeachBasicEnum.TEACH_CLAZZ);
+                dto.setClassName(teachClazz.getTeachClazzName());
+                dto.setStudentCount(teachStudentService.count(new QueryWrapper<TeachStudent>().lambda().eq(TeachStudent::getTeachClazzId,teachClazz.getId())));
+                taskPrintClassDtos.add(dto);
+            }
+        }else {
+            List<BasicUserCourse> courseList = basicUserCourseService.listBySchoolIdAndCourseCode(schoolId, courseCode);
+            Set<String> stringList = courseList.stream().map(m -> String.valueOf(m.getClazzId())).collect(Collectors.toSet());
 
 
-        if (!CollectionUtils.isEmpty(stringList)) {
-            List<TaskPrintClassDto> taskPrintClassDtos = basicStudentService.listByClass(schoolId, stringList);
-            return taskPrintClassDtos;
+            if (!CollectionUtils.isEmpty(stringList)) {
+                taskPrintClassDtos = basicStudentService.listByClass(schoolId, stringList);
+            }
         }
         }
-        return null;
+        return taskPrintClassDtos;
     }
     }
 
 
     private void validateClass(List<ExamTaskPrint> examTaskPrints, List<String> classIds) {
     private void validateClass(List<ExamTaskPrint> examTaskPrints, List<String> classIds) {

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

@@ -35,7 +35,6 @@ import org.activiti.engine.task.Task;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -66,62 +65,62 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
 
     private static final Logger logger = LoggerFactory.getLogger(ExamTaskServiceImpl.class);
     private static final Logger logger = LoggerFactory.getLogger(ExamTaskServiceImpl.class);
 
 
-    @Autowired
+    @Resource
     private ExamTaskTempService examTaskTempService;
     private ExamTaskTempService examTaskTempService;
 
 
-    @Autowired
+    @Resource
     private BasicExamRuleService basicExamRuleService;
     private BasicExamRuleService basicExamRuleService;
 
 
-    @Autowired
+    @Resource
     private ExamTaskReviewLogService examTaskReviewLogService;
     private ExamTaskReviewLogService examTaskReviewLogService;
 
 
-    @Autowired
+    @Resource
     private ExamTaskDetailService examTaskDetailService;
     private ExamTaskDetailService examTaskDetailService;
 
 
-    @Autowired
+    @Resource
     private BasicAttachmentService basicAttachmentService;
     private BasicAttachmentService basicAttachmentService;
 
 
-    @Autowired
+    @Resource
     @Lazy
     @Lazy
     private PrintCommonService printCommonService;
     private PrintCommonService printCommonService;
 
 
     @Resource
     @Resource
     ExamTaskMapper examTaskMapper;
     ExamTaskMapper examTaskMapper;
 
 
-    @Autowired
+    @Resource
     private BasicCourseService basicCourseService;
     private BasicCourseService basicCourseService;
 
 
-    @Autowired
+    @Resource
     private SysUserService sysUserService;
     private SysUserService sysUserService;
 
 
-    @Autowired
+    @Resource
     private SysUserRoleService sysUserRoleService;
     private SysUserRoleService sysUserRoleService;
 
 
-    @Autowired
+    @Resource
     private ExamCardService examCardService;
     private ExamCardService examCardService;
 
 
-    @Autowired
+    @Resource
     private ExamCardDetailService examCardDetailService;
     private ExamCardDetailService examCardDetailService;
 
 
-    @Autowired
+    @Resource
     private ExamDetailCourseService examDetailCourseService;
     private ExamDetailCourseService examDetailCourseService;
 
 
     @Resource
     @Resource
     private ExamDetailService examDetailService;
     private ExamDetailService examDetailService;
 
 
-    @Autowired
+    @Resource
     private BasicTemplateService basicTemplateService;
     private BasicTemplateService basicTemplateService;
 
 
     @Resource
     @Resource
     TBTaskService tbTaskService;
     TBTaskService tbTaskService;
 
 
-    @Autowired
+    @Resource
     private ExamTaskPaperLogService examTaskPaperLogService;
     private ExamTaskPaperLogService examTaskPaperLogService;
 
 
-    @Autowired
+    @Resource
     private SysConfigService sysConfigService;
     private SysConfigService sysConfigService;
 
 
-    @Autowired
+    @Resource
     private BasicMessageService basicMessageService;
     private BasicMessageService basicMessageService;
 
 
     @Resource
     @Resource
@@ -142,7 +141,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     @Resource
     BasicCardRuleService basicCardRuleService;
     BasicCardRuleService basicCardRuleService;
 
 
-    @Autowired
+    @Resource
     ExamPrintPlanService examPrintPlanService;
     ExamPrintPlanService examPrintPlanService;
 
 
     @Resource
     @Resource
@@ -166,7 +165,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     @Resource
     BasicCampusService basicCampusService;
     BasicCampusService basicCampusService;
 
 
-    @Autowired
+    @Resource
     ExamStudentService examStudentService;
     ExamStudentService examStudentService;
 
 
     @Resource
     @Resource
@@ -175,6 +174,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     @Resource
     CreatePdfUtil createPdfUtil;
     CreatePdfUtil createPdfUtil;
 
 
+    @Resource
+    BasicPrintConfigService basicPrintConfigService;
+
     @Override
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -183,13 +185,13 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
     }
 
 
     @Override
     @Override
-    public IPage<ExamTaskDto> list(Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize) {
+    public IPage<ExamTaskDto> list(Long semesterId, Long examId, Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         userName = SystemConstant.translateSpecificSign(userName);
         userName = SystemConstant.translateSpecificSign(userName);
         createName = SystemConstant.translateSpecificSign(createName);
         createName = SystemConstant.translateSpecificSign(createName);
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
-        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listPage(page, schoolId, enable, status, cardRuleId, courseCode, paperNumber, startTime, endTime, orgIds, userName, createName);
+        IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listPage(page, schoolId, semesterId, examId, enable, status, cardRuleId, courseCode, paperNumber, startTime, endTime, orgIds, userName, createName);
         for (ExamTaskDto record : examTaskDtoIPage.getRecords()) {
         for (ExamTaskDto record : examTaskDtoIPage.getRecords()) {
             // 判断审批表状态
             // 判断审批表状态
             String cellPaperNumber = record.getPaperNumber();
             String cellPaperNumber = record.getPaperNumber();
@@ -391,9 +393,13 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     public ExamTask saveExamTaskNew(ExamTask examTask) {
     public ExamTask saveExamTaskNew(ExamTask examTask) {
         try {
         try {
             Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
             Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+            Long examId = examTask.getExamId();
+            String courseCode = examTask.getCourseCode();
+            BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(examId, courseCode);
+            examTask.setExamId(examId);
+            examTask.setCardRuleId(basicPrintConfig.getCardRuleId());
             examTask.setSchoolId(schoolId);
             examTask.setSchoolId(schoolId);
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-
             if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
             if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
                 QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
                 QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
                 taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
                 taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
@@ -416,9 +422,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }
             }
             examTask.insertInfo(sysUser.getId());
             examTask.insertInfo(sysUser.getId());
             examTask.updateInfo(sysUser.getId());
             examTask.updateInfo(sysUser.getId());
-            examTask.setReview(basicExamRule.getReview());
+            // TODO: 2022/2/21  新建命题任务先屏蔽流程
+            examTask.setReview(false);
+//            examTask.setReview(basicExamRule.getReview());
             // 取课程所在机构
             // 取课程所在机构
-            Long teachingRoomId = basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, examTask.getCourseCode());
+            Long teachingRoomId = basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, courseCode);
             examTask.setOrgId(teachingRoomId);
             examTask.setOrgId(teachingRoomId);
             examTask.setTeachingRoomId(teachingRoomId);
             examTask.setTeachingRoomId(teachingRoomId);
             Long flowEntityId = null;
             Long flowEntityId = null;
@@ -426,10 +434,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examTask.setStatus(ExamStatusEnum.DRAFT);
                 examTask.setStatus(ExamStatusEnum.DRAFT);
             } else if (examTask.getReview()) {
             } else if (examTask.getReview()) {
                 examTask.setStatus(ExamStatusEnum.STAGE);
                 examTask.setStatus(ExamStatusEnum.STAGE);
-//                Map<String, Object> map = new HashMap<>();
-//                map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
-//                map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
-//                ProcessInstance processInstance = activitiService.flowStart(map);
                 Map<String, Object> map = activitiService.customFlowStart(examTask.getId(), examTask.getUserId());
                 Map<String, Object> map = activitiService.customFlowStart(examTask.getId(), examTask.getUserId());
                 examTask.setFlowId(SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ID)));
                 examTask.setFlowId(SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ID)));
                 flowEntityId = SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ENTITY_ID));
                 flowEntityId = SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ENTITY_ID));
@@ -437,12 +441,13 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examTask.setStatus(ExamStatusEnum.STAGE);
                 examTask.setStatus(ExamStatusEnum.STAGE);
             }
             }
             this.save(examTask);
             this.save(examTask);
-            Map<String, Object> texamTaskFlowMap = new HashMap<>();
-            texamTaskFlowMap.computeIfAbsent(SystemConstant.SCHOOL_ID, v -> examTask.getSchoolId());
-            texamTaskFlowMap.computeIfAbsent(SystemConstant.EXAM_TASK_ID, v -> examTask.getId());
-            texamTaskFlowMap.computeIfAbsent(SystemConstant.FLOW_ID, v -> examTask.getFlowId());
-            texamTaskFlowMap.put(SystemConstant.FLOW_ENTITY_ID, flowEntityId);
-            tExamTaskFlowService.saveOrUpdate(texamTaskFlowMap);
+            // TODO: 2022/2/22 流程相关
+//            Map<String, Object> texamTaskFlowMap = new HashMap<>();
+//            texamTaskFlowMap.computeIfAbsent(SystemConstant.SCHOOL_ID, v -> examTask.getSchoolId());
+//            texamTaskFlowMap.computeIfAbsent(SystemConstant.EXAM_TASK_ID, v -> examTask.getId());
+//            texamTaskFlowMap.computeIfAbsent(SystemConstant.FLOW_ID, v -> examTask.getFlowId());
+//            texamTaskFlowMap.put(SystemConstant.FLOW_ENTITY_ID, flowEntityId);
+//            tExamTaskFlowService.saveOrUpdate(texamTaskFlowMap);
         } catch (Exception e) {
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             log.error(SystemConstant.LOG_ERROR, e);
             if (e instanceof ActivitiObjectNotFoundException) {
             if (e instanceof ActivitiObjectNotFoundException) {
@@ -649,6 +654,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Override
     @Override
     public List<ExamTask> saveBatch(ExamTask task) {
     public List<ExamTask> saveBatch(ExamTask task) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        Long examId = task.getExamId();
+
         task.setSchoolId(schoolId);
         task.setSchoolId(schoolId);
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
 
@@ -668,12 +675,19 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         List<Map<String, String>> userList = task.getUsers();
         List<Map<String, String>> userList = task.getUsers();
 
 
         for (Map<String, String> userMap : userList) {
         for (Map<String, String> userMap : userList) {
+            String courseCode = userMap.get("courseCode");
+            // 配置信息
+            BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(examId,courseCode);
+            Long cardRuleId = basicPrintConfig.getCardRuleId();
+
             ExamTask examTask = new ExamTask();
             ExamTask examTask = new ExamTask();
             examTask.setSchoolId(task.getSchoolId());
             examTask.setSchoolId(task.getSchoolId());
-            examTask.setOrgId(basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, userMap.get("courseCode")));
+            examTask.setOrgId(basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, courseCode));
             examTask.setCourseCode(userMap.get("courseCode"));
             examTask.setCourseCode(userMap.get("courseCode"));
             examTask.setCourseName(userMap.get("courseName"));
             examTask.setCourseName(userMap.get("courseName"));
             examTask.setSpecialty(userMap.get("specialty"));
             examTask.setSpecialty(userMap.get("specialty"));
+            examTask.setExamId(examId);
+            examTask.setCardRuleId(cardRuleId);
 
 
             if (StringUtils.isNotBlank(userMap.get("paperNumber"))) {
             if (StringUtils.isNotBlank(userMap.get("paperNumber"))) {
                 if (paperNumbers.contains(userMap.get("paperNumber"))) {
                 if (paperNumbers.contains(userMap.get("paperNumber"))) {
@@ -699,7 +713,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setStartTime(task.getStartTime());
             examTask.setStartTime(task.getStartTime());
             examTask.setEndTime(task.getEndTime());
             examTask.setEndTime(task.getEndTime());
             examTask.setEnable(true);
             examTask.setEnable(true);
-            examTask.setCardRuleId(task.getCardRuleId());
             examTask.setBatchNo(task.getBatchNo());
             examTask.setBatchNo(task.getBatchNo());
             examTask.insertInfo(sysUser.getId());
             examTask.insertInfo(sysUser.getId());
 
 
@@ -725,6 +738,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
         }
         this.saveBatch(list);
         this.saveBatch(list);
         for (ExamTask examTask : list) {
         for (ExamTask examTask : list) {
+            // TODO: 2022/2/23 先不走流程
+            examTask.setReview(false);
             if (examTask.getReview() && Objects.nonNull(examTask.getUserId()) && Objects.isNull(examTask.getFlowId())) {
             if (examTask.getReview() && Objects.nonNull(examTask.getUserId()) && Objects.isNull(examTask.getFlowId())) {
                 Map<String, Object> map = new HashMap<>();
                 Map<String, Object> map = new HashMap<>();
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));

+ 2 - 4
distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml

@@ -114,18 +114,16 @@
         FROM
         FROM
             exam_card a
             exam_card a
                 JOIN
                 JOIN
-            basic_template b ON a.template_id = b.id
-                JOIN
             (SELECT
             (SELECT
                 *
                 *
             FROM
             FROM
                 basic_template_org
                 basic_template_org
             WHERE
             WHERE
-                type = 'GENERIC') c ON b.id = c.rule_id
+                type = 'GENERIC') c ON a.id = c.rule_id
         WHERE
         WHERE
             a.school_id = #{schoolId}
             a.school_id = #{schoolId}
             AND a.type = #{type}
             AND a.type = #{type}
-            AND b.enable = TRUE
+            AND a.enable = TRUE
             <if test="orgIds != null">
             <if test="orgIds != null">
                 AND c.org_id IN
                 AND c.org_id IN
                 <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
                 <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">

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

@@ -40,6 +40,10 @@
         a.card_rule_id cardRuleId,
         a.card_rule_id cardRuleId,
         case a.card_rule_id when -1 then '全部通卡' else b.name end cardRuleName,
         case a.card_rule_id when -1 then '全部通卡' else b.name end cardRuleName,
         a.user_id userId,
         a.user_id userId,
+        f.id as examId,
+        f.name as examName,
+        g.id as semesterId,
+        g.name as semesterName,
         c.real_name userName,
         c.real_name userName,
         d.real_name createName,
         d.real_name createName,
         a.start_time startTime,
         a.start_time startTime,
@@ -78,10 +82,20 @@
         sys_user d ON a.create_id = d.id
         sys_user d ON a.create_id = d.id
         LEFT JOIN
         LEFT JOIN
         t_f_flow_approve e ON a.flow_id = e.flow_id
         t_f_flow_approve e ON a.flow_id = e.flow_id
+        LEFT JOIN
+        basic_exam f ON a.exam_id = f.id
+        LEFT JOIN
+        basic_semester g ON f.semester_id = g.id
         <where>
         <where>
             <if test="schoolId != null and schoolId != ''">
             <if test="schoolId != null and schoolId != ''">
                 and a.school_id = #{schoolId}
                 and a.school_id = #{schoolId}
             </if>
             </if>
+            <if test="examId != null and examId != ''">
+                and f.id = #{examId}
+            </if>
+            <if test="semesterId != null and semesterId != ''">
+                and g.id = #{semesterId}
+            </if>
             <if test="orgIds != null">
             <if test="orgIds != null">
                 AND d.org_id IN
                 AND d.org_id IN
                 <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
                 <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">

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

@@ -7,14 +7,14 @@ import com.qmth.distributed.print.business.bean.dto.CardCustDto;
 import com.qmth.distributed.print.business.bean.dto.CardDetailDto;
 import com.qmth.distributed.print.business.bean.dto.CardDetailDto;
 import com.qmth.distributed.print.business.bean.params.ExamCardParams;
 import com.qmth.distributed.print.business.bean.params.ExamCardParams;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardParams;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardParams;
-import com.qmth.distributed.print.business.entity.BasicTemplate;
 import com.qmth.distributed.print.business.entity.ExamCard;
 import com.qmth.distributed.print.business.entity.ExamCard;
+import com.qmth.distributed.print.business.service.BasicPrintConfigService;
 import com.qmth.distributed.print.business.service.ExamCardService;
 import com.qmth.distributed.print.business.service.ExamCardService;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicPrintConfig;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
-import com.sun.org.apache.xpath.internal.operations.Bool;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
@@ -43,6 +43,9 @@ public class ExamCardController {
     @Resource
     @Resource
     private ExamCardService examCardService;
     private ExamCardService examCardService;
 
 
+    @Resource
+    private BasicPrintConfigService basicPrintConfigService;
+
     //====================================通卡接口(start)===================================
     //====================================通卡接口(start)===================================
 
 
     /**
     /**
@@ -169,18 +172,20 @@ public class ExamCardController {
 
 
     /**
     /**
      * 选择已有题卡列表
      * 选择已有题卡列表
-     *
-     * @param courseCode
-     * @param cardRuleId
-     * @param paperType
-     * @return
+     * @param examId 考试id
+     * @param courseCode 课程编号
+     * @param paperType 试卷类型
+     * @return 结果
      */
      */
     @ApiOperation(value = "选择已有题卡列表")
     @ApiOperation(value = "选择已有题卡列表")
     @RequestMapping(value = "/select_card_list", method = RequestMethod.POST)
     @RequestMapping(value = "/select_card_list", method = RequestMethod.POST)
-    public Result selectCardList(@RequestParam String courseCode,
-                                 @RequestParam Long cardRuleId,
-                                 @RequestParam String paperType) {
-        List<ExamCard> list = examCardService.listSelectCard(courseCode, cardRuleId, paperType);
+    public Result selectCardList(@RequestParam(required = false) String examId,@RequestParam String courseCode, @RequestParam String paperType) {
+        // TODO: 2022/2/23 模拟前端参数 examId
+        if (!SystemConstant.strNotNull(examId)){
+            examId = "228554176387354624";
+        }
+        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(SystemConstant.convertIdToLong(examId),courseCode);
+        List<ExamCard> list = examCardService.listSelectCard(courseCode, basicPrintConfig.getCardRuleId(), paperType);
         return ResultUtil.ok(list);
         return ResultUtil.ok(list);
     }
     }
 
 

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

@@ -32,7 +32,6 @@ import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.task.Task;
 import org.activiti.engine.task.Task;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
@@ -62,28 +61,28 @@ import java.util.stream.Collectors;
 @Validated
 @Validated
 public class ExamTaskController {
 public class ExamTaskController {
 
 
-    @Autowired
+    @Resource
     private ExamTaskService examTaskService;
     private ExamTaskService examTaskService;
 
 
-    @Autowired
+    @Resource
     private ExamTaskDetailService examTaskDetailService;
     private ExamTaskDetailService examTaskDetailService;
 
 
-    @Autowired
+    @Resource
     private ExamTaskReviewLogService examTaskReviewLogService;
     private ExamTaskReviewLogService examTaskReviewLogService;
 
 
-    @Autowired
+    @Resource
     private BasicAttachmentService basicAttachmentService;
     private BasicAttachmentService basicAttachmentService;
 
 
     @Resource
     @Resource
     private AsyncTaskReviewSampleExportService asyncTaskReviewSampleExportService;
     private AsyncTaskReviewSampleExportService asyncTaskReviewSampleExportService;
 
 
-    @Autowired
+    @Resource
     private PrintCommonService printCommonService;
     private PrintCommonService printCommonService;
 
 
     @Resource
     @Resource
     private BasicMessageService basicMessageService;
     private BasicMessageService basicMessageService;
 
 
-    @Autowired
+    @Resource
     private ExamTaskPrintService examTaskPrintService;
     private ExamTaskPrintService examTaskPrintService;
 
 
     @Resource
     @Resource
@@ -95,7 +94,7 @@ public class ExamTaskController {
     @Resource
     @Resource
     ActivitiService activitiService;
     ActivitiService activitiService;
 
 
-    @Autowired
+    @Resource
     ExamTaskApplyTempService examTaskApplyTempService;
     ExamTaskApplyTempService examTaskApplyTempService;
 
 
     @Resource
     @Resource
@@ -118,7 +117,9 @@ public class ExamTaskController {
      */
      */
     @ApiOperation(value = "命题任务管理-查询")
     @ApiOperation(value = "命题任务管理-查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     @RequestMapping(value = "/list", method = RequestMethod.POST)
-    public Result list(@RequestParam(required = false) Boolean enable,
+    public Result list(@RequestParam(required = false) String semesterId,
+                       @RequestParam(required = false) String examId,
+                       @RequestParam(required = false) Boolean enable,
                        @RequestParam(required = false) String status,
                        @RequestParam(required = false) String status,
                        @RequestParam(required = false) String cardRuleId,
                        @RequestParam(required = false) String cardRuleId,
                        @RequestParam(required = false) String courseCode,
                        @RequestParam(required = false) String courseCode,
@@ -129,7 +130,8 @@ public class ExamTaskController {
                        @RequestParam(required = false) String createName,
                        @RequestParam(required = false) String createName,
                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(examTaskService.list(enable, status, SystemConstant.convertIdToLong(cardRuleId), courseCode, paperNumber, startTime, endTime, userName, createName, pageNumber, pageSize));
+
+        return ResultUtil.ok(examTaskService.list(SystemConstant.convertIdToLong(semesterId),SystemConstant.convertIdToLong(examId),enable, status, SystemConstant.convertIdToLong(cardRuleId), courseCode, paperNumber, startTime, endTime, userName, createName, pageNumber, pageSize));
     }
     }
 
 
     /**
     /**

+ 14 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/annotation/GradeAnalyzeApi.java

@@ -0,0 +1,14 @@
+package com.qmth.teachcloud.common.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @Description: 仅教研分析使用的方法
+ * @Author: CaoZixuan
+ * @Date: 2022-02-18
+ */
+@Documented
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface GradeAnalyzeApi {
+}

+ 11 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/TaskPrintClassDto.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.common.bean.dto;
 package com.qmth.teachcloud.common.bean.dto;
 
 
+import com.qmth.teachcloud.common.enums.TeachBasicEnum;
+
 /**
 /**
  * @Date: 2021/3/29.
  * @Date: 2021/3/29.
  */
  */
@@ -10,6 +12,7 @@ public class TaskPrintClassDto {
     private String printHouseId;
     private String printHouseId;
     private String printHouseName;
     private String printHouseName;
     private Integer studentCount;
     private Integer studentCount;
+    private TeachBasicEnum teachBasicEnum;
 
 
     public String getClassId() {
     public String getClassId() {
         return classId;
         return classId;
@@ -50,4 +53,12 @@ public class TaskPrintClassDto {
     public void setStudentCount(Integer studentCount) {
     public void setStudentCount(Integer studentCount) {
         this.studentCount = studentCount;
         this.studentCount = studentCount;
     }
     }
+
+    public TeachBasicEnum getTeachBasicEnum() {
+        return teachBasicEnum;
+    }
+
+    public void setTeachBasicEnum(TeachBasicEnum teachBasicEnum) {
+        this.teachBasicEnum = teachBasicEnum;
+    }
 }
 }

+ 24 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/TeachBasicEnum.java

@@ -0,0 +1,24 @@
+package com.qmth.teachcloud.common.enums;
+
+/**
+ * @Description: 考试考场数据来源表
+ * @Author: CaoZixuan
+ * @Date: 2022-02-23
+ */
+public enum TeachBasicEnum {
+    TEACH_CLAZZ("教学班级"),
+    TEACH_STUDENT("教学学生"),
+    BASIC_CLAZZ("班级字典"),
+    BASIC_STUDENT("学生字典"),
+    ;
+
+    private final String desc;
+
+    TeachBasicEnum(String desc) {
+        this.desc = desc;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCourseService.java

@@ -45,6 +45,8 @@ public interface BasicCourseService extends IService<BasicCourse> {
 
 
     BasicCourse findByCourseCode(String courseCode);
     BasicCourse findByCourseCode(String courseCode);
 
 
+    BasicCourse findByCourseCode(String courseCode,Long schoolId);
+
     /**
     /**
      * 创建课程
      * 创建课程
      *
      *

+ 10 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java

@@ -96,11 +96,21 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
         return basicCourseMapper.findByUserLoginNameAndRealName(loginName, realName);
         return basicCourseMapper.findByUserLoginNameAndRealName(loginName, realName);
     }
     }
 
 
+    @Deprecated
     @Override
     @Override
     public BasicCourse findByCourseCode(String courseCode) {
     public BasicCourse findByCourseCode(String courseCode) {
         return this.getOne(new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getCode, courseCode));
         return this.getOne(new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getCode, courseCode));
     }
     }
 
 
+    @Override
+    public BasicCourse findByCourseCode(String courseCode, Long schoolId) {
+        BasicCourse basicCourse = this.getOne(new QueryWrapper<BasicCourse>().lambda().eq(BasicCourse::getCode, courseCode).eq(BasicCourse::getSchoolId,schoolId));
+        if (Objects.isNull(basicCourse)){
+            throw ExceptionResultEnum.ERROR.exception("未找到课程编号为【" + courseCode + "】的基础课程");
+        }
+        return basicCourse;
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public void createCourse(Long schoolId, String courseCode, String courseName) {
     public void createCourse(Long schoolId, String courseCode, String courseName) {

+ 4 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java

@@ -16,6 +16,7 @@ import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import com.qmth.teachcloud.common.enums.TeachBasicEnum;
 import com.qmth.teachcloud.common.mapper.BasicStudentMapper;
 import com.qmth.teachcloud.common.mapper.BasicStudentMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -68,7 +69,9 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
 
 
     @Override
     @Override
     public List<TaskPrintClassDto> listByClass(Long schoolId, Set<String> stringList) {
     public List<TaskPrintClassDto> listByClass(Long schoolId, Set<String> stringList) {
-        return this.baseMapper.listByClass(schoolId, stringList);
+        return this.baseMapper.listByClass(schoolId, stringList).stream()
+                .peek(e -> e.setTeachBasicEnum(TeachBasicEnum.BASIC_CLAZZ))
+                .collect(Collectors.toList());
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)