Răsfoiți Sursa

3.2.7 优化

xiaofei 2 ani în urmă
părinte
comite
bb4923a16d
65 a modificat fișierele cu 494 adăugiri și 1356 ștergeri
  1. 0 11
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/DictionaryResult.java
  2. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicTemplate.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicExamMapper.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicTemplateMapper.java
  5. 0 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicTemplateOrgMapper.java
  6. 0 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamCardMapper.java
  7. 0 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java
  8. 1 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicExamService.java
  9. 1 15
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicPrintConfigService.java
  10. 0 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTemplateOrgService.java
  11. 1 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTemplateService.java
  12. 0 13
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamCardService.java
  13. 0 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskDetailService.java
  14. 0 11
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  15. 1 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java
  16. 31 67
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamServiceImpl.java
  17. 2 59
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicPrintConfigServiceImpl.java
  18. 0 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateOrgServiceImpl.java
  19. 14 83
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java
  20. 32 155
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java
  21. 5 22
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  22. 0 37
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  23. 1 24
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  24. 1 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  25. 55 41
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  26. 55 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CodeUtils.java
  27. 19 0
      distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql
  28. 3 3
      distributed-print-business/src/main/resources/mapper/BasicExamMapper.xml
  29. 0 11
      distributed-print-business/src/main/resources/mapper/BasicTemplateOrgMapper.xml
  30. 0 86
      distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml
  31. 0 10
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  32. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicClazzController.java
  33. 3 18
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicExamController.java
  34. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicMajorController.java
  35. 11 37
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicPrintConfigController.java
  36. 7 9
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicSemesterController.java
  37. 11 19
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicStudentController.java
  38. 11 13
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicTemplateController.java
  39. 4 64
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java
  40. 2 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  41. 7 19
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  42. 4 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysOrgController.java
  43. 3 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/excel/BasicStudentImportDto.java
  44. 4 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicStudentParams.java
  45. 0 11
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/BasicSemesterResult.java
  46. 0 12
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicExam.java
  47. 0 10
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicSemester.java
  48. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicStudentMapper.java
  49. 0 10
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicCourseService.java
  50. 2 11
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicSemesterService.java
  51. 3 12
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicStudentService.java
  52. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java
  53. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TBTaskService.java
  54. 0 8
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TeachcloudCommonService.java
  55. 24 28
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicClazzServiceImpl.java
  56. 0 17
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicCourseServiceImpl.java
  57. 28 28
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicMajorServiceImpl.java
  58. 7 43
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicSemesterServiceImpl.java
  59. 122 238
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java
  60. 2 5
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java
  61. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TBTaskServiceImpl.java
  62. 0 16
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java
  63. 2 2
      teachcloud-common/src/main/resources/mapper/BasicMajorMapper.xml
  64. 1 2
      teachcloud-common/src/main/resources/mapper/BasicSemesterMapper.xml
  65. 4 7
      teachcloud-common/src/main/resources/mapper/BasicStudentMapper.xml

+ 0 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/DictionaryResult.java

@@ -23,9 +23,6 @@ public class DictionaryResult implements Serializable {
     @ApiModelProperty(value = "编号")
     private String code;
 
-    @ApiModelProperty(value = "当前使用的(学期...)")
-    private Boolean inUsed;
-
     public Long getId() {
         return id;
     }
@@ -49,12 +46,4 @@ public class DictionaryResult implements Serializable {
     public void setCode(String code) {
         this.code = code;
     }
-
-    public Boolean getInUsed() {
-        return inUsed;
-    }
-
-    public void setInUsed(Boolean inUsed) {
-        this.inUsed = inUsed;
-    }
 }

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

@@ -52,6 +52,7 @@ public class BasicTemplate extends BaseEntity implements Serializable {
     /**
      * 预览地址
      */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String previewPath;
     /**
      * 模板附件ID(保存到附件表ID)

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

@@ -21,5 +21,5 @@ public interface BasicExamMapper extends BaseMapper<BasicExam> {
      * @param schoolId 学校id
      * @return 分页结果
      */
-    IPage<BasicExamDto> findBasicExamPage(@Param("objectPage") Page<Object> objectPage, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("enable") Boolean enable, @Param("o") Object o,@Param("dpr") DataPermissionRule dpr);
+    IPage<BasicExamDto> findBasicExamPage(@Param("objectPage") Page<Object> objectPage, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("enable") Boolean enable, @Param("dpr") DataPermissionRule dpr);
 }

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

@@ -21,7 +21,7 @@ import java.util.List;
  */
 public interface BasicTemplateMapper extends BaseMapper<BasicTemplate> {
 
-    IPage<TemplateDto> listPage(Page<TemplateDto> page, @Param("schoolId") Long schoolId, @Param("enable") Boolean enable, @Param("type") String type, @Param("name") String name, @Param("startTime") Long startTime, @Param("endTime") Long endTime,@Param("dpr") DataPermissionRule dpr);
+    IPage<TemplateDto> listPage(Page<TemplateDto> page, @Param("schoolId") Long schoolId, @Param("enable") Boolean enable, @Param("name") String name, @Param("startTime") Long startTime, @Param("endTime") Long endTime,@Param("dpr") DataPermissionRule dpr);
 
     /**
      * 查找模版(机构同级及以下)

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

@@ -18,8 +18,6 @@ import java.util.List;
  */
 public interface BasicTemplateOrgMapper extends BaseMapper<BasicTemplateOrg> {
 
-    List<SysOrg> listByTypeAndTemplateId(@Param("type") String type, @Param("templateId") Long templateId);
-
     /**
      * 查询机构集合所使用的印品模板信息
      * @param orgIds 机构集合

+ 0 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamCardMapper.java

@@ -3,10 +3,8 @@ package com.qmth.distributed.print.business.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-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.ExamCardPageDto;
-import com.qmth.distributed.print.business.bean.dto.SyncExamCardDto;
 import com.qmth.distributed.print.business.entity.ExamCard;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import org.apache.ibatis.annotations.Param;
@@ -23,8 +21,6 @@ import java.util.List;
  */
 public interface ExamCardMapper extends BaseMapper<ExamCard> {
 
-    IPage<CardCustDto> listCardCust(Page<CardCustDto> page, @Param("schoolId") String schoolId, @Param("status") String status, @Param("paperNumber") String paperNumber, @Param("userId") String userId, @Param("applyStartTime") Long applyStartTime, @Param("applyEndTime") Long applyEndTime, @Param("finishStartTime") Long finishStartTime, @Param("finishEndTime") Long finishEndTime);
-
     CardDetailDto getCardDetail(Long cardId);
 
     List<ExamCard> listGenericCard(@Param("schoolId") Long schoolId, @Param("type") String type, @Param("cardRuleId") Long cardRuleId);
@@ -33,8 +29,6 @@ public interface ExamCardMapper extends BaseMapper<ExamCard> {
 
     CardDetailDto getCardDetailBySelect(Long cardId);
 
-    List<SyncExamCardDto> listSyncCardByCourseCodeAndPaperNumber(@Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
-
     IPage<ExamCardPageDto> listPage(@Param("page") Page<ExamCardPageDto> page, @Param("schoolId") Long schoolId, @Param("cardType") String cardType, @Param("title") String title, @Param("createMethod") String createMethod, @Param("enable") Boolean enable, @Param("createStartTime") Long createStartTime, @Param("createEndTime") Long createEndTime, @Param("dpr") DataPermissionRule dpr);
 
     List<ExamCard> listCustomByExamStage(@Param("schoolId") Long schoolId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("type") String type);

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

@@ -47,8 +47,6 @@ public interface ExamTaskMapper extends BaseMapper<ExamTask> {
 
     List<ClientExamTaskDto> listClientExamTaskPage(@Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("machineCode") String machineCode, @Param("printPlanId") Long printPlanId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("isTry") Boolean isTry, @Param("isPass") Boolean isPass, @Param("orgId") Long orgId, @Param("printPlanStatus") String printPlanStatus, @Param("examDetailStatus") String[] examDetailStatus);
 
-    List<ExamTask> listExamTaskByCardId(Long cardId);
-
     /**
      * 查询审核样品
      *

+ 1 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicExamService.java

@@ -36,16 +36,8 @@ public interface BasicExamService extends IService<BasicExam> {
      *
      * @param semesterId 学期ID
      * @param examModels 需要查询的模式集合
-     * @param inUsed     是否当前使用考试
      */
-    List<BasicExam> query(Long semesterId, List<ExamModelEnum> examModels, Boolean inUsed);
-
-    /**
-     * 设置当前使用考试
-     *
-     * @param id 考试ID
-     */
-    boolean setInUsed(Long id);
+    List<BasicExam> query(Long semesterId, List<ExamModelEnum> examModels);
 
     /**
      * 分页查询

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

@@ -33,23 +33,9 @@ public interface BasicPrintConfigService extends IService<BasicPrintConfig> {
      * 根据examId和orgId查询印品
      *
      * @param examId 考试ID
-     * @param orgId 机构ID
      * @return BasicPrintConfig
      */
-    BasicPrintConfig getByExamIdAndOrgId(Long examId, Long orgId);
-
-    /**
-     * 查询考试下设置印品的机构集合
-     * @param id
-     * @param examId 考试ID
-     */
-    List<String> listOrgIdsByExamId(Long id, Long examId);
-
-    /**
-     * 删除
-     * @param idList 印品配置ID
-     */
-    boolean delete(List<Long> idList);
+    BasicPrintConfig getByExamIdAndOrgId(Long examId);
 
     List<BasicPrintConfig> listBySchoolId(Long schoolId);
 }

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

@@ -17,10 +17,6 @@ import java.util.List;
  */
 public interface BasicTemplateOrgService extends IService<BasicTemplateOrg> {
 
-    List<SysOrg> listByTypeAndTemplateId(String type, Long templateId);
-
-    void removeByRuleId(Long id);
-
     void saveBatch(Long schoolId, TemplateTypeEnum type, Long ruleId, Long[] orgIds, Long createId);
 
 //    /**

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

@@ -19,7 +19,7 @@ import java.util.List;
  */
 public interface BasicTemplateService extends IService<BasicTemplate> {
 
-    IPage<TemplateDto> list(Boolean enable, String type, String name, Long startTime, Long endTime, Integer pageNumber, Integer pageSize);
+    IPage<TemplateDto> list(Boolean enable, String name, Long startTime, Long endTime, Integer pageNumber, Integer pageSize);
 
     boolean saveTemplate(String data) throws Exception;
 
@@ -27,8 +27,6 @@ public interface BasicTemplateService extends IService<BasicTemplate> {
 
     BasicTemplate getOne(Long id);
 
-    Object readContent(Long attachmentId);
-
     /**
      * 查找模版(机构同级及以下)
      *

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

@@ -2,14 +2,11 @@ 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.bean.dto.CardCustDto;
 import com.qmth.distributed.print.business.bean.dto.CardDetailDto;
 import com.qmth.distributed.print.business.bean.dto.ExamCardPageDto;
-import com.qmth.distributed.print.business.bean.dto.SyncExamCardDto;
 import com.qmth.distributed.print.business.bean.params.ExamCardParams;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardParams;
 import com.qmth.distributed.print.business.entity.ExamCard;
-import com.qmth.teachcloud.common.bean.params.ArraysParams;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -26,20 +23,10 @@ public interface ExamCardService extends IService<ExamCard> {
 
     String saveExamCard(ExamCardParams examCardParams) throws Exception;
 
-    IPage<CardCustDto> listCardCust(String schoolId, String status, String paperNumber, String userId, Long applyStartTime, Long applyEndTime, Long finishStartTime, Long finishEndTime, Integer pageNumber, Integer pageSize);
-
-    String saveExamCardCust(ExamCardParams examCardParams);
-
     CardDetailDto getCardDetail(Long cardId);
 
-    ExamCard getOneByTemplateId(Long id);
-
     List<ExamCard> listSelectCard(String courseCode, Long cardRuleId, String paperNumber);
 
-    void downloadFiles(HttpServletResponse response, ArraysParams arraysParams) throws Exception;
-
-    List<SyncExamCardDto> listSyncCardByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
-
     IPage<ExamCardPageDto> listPage(String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize);
 
     Long saveGeneric(GenericExamCardParams params) throws Exception;

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

@@ -28,10 +28,6 @@ public interface ExamTaskDetailService extends IService<ExamTaskDetail> {
     List<ExamTaskDetailDto> list(Long semesterId, Long examId, String relateType, List<Long> printPlanId, String courseCode, String paperNumber, String userName, Long cardRuleId);
     Map listTotal(Long semesterId, Long examId, String relateType, List<Long> printPlanId, String courseCode, String paperNumber, String userName, Long cardRuleId);
 
-    List<ExamTaskDetail> listByCardId(Long cardId);
-
-    void bindCardId(String examTaskId, ExamCard examCard);
-
     void resetCardId(Long id);
 
     List<Map<String, String>> getPaperUrl(Long schoolId, Long printPlanId, Long examTaskId);

+ 0 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -87,15 +87,6 @@ public interface ExamTaskService extends IService<ExamTask> {
 
     List<ClientExamTaskDto> listTryTask(Long schoolId, Long semesterId, Long examId, String machineCode, Long orgId, Long printPlanId, String courseCode, String paperNumber, Boolean isTry, Boolean isPass);
 
-    /**
-     * 检测考务数据的试卷编号和课程代码的正确性(根据试卷编号查询命题任务的试卷编号,如果存在,查询该命题任务记录对应的课程代码和考务数据导入的该条课程代码是否一致)
-     *
-     * @param schoolId    考务数据导入的学校代码
-     * @param paperNumber 考务数据导入的试卷编号
-     * @param courseCode  考务数据导入的课程代码
-     */
-    void verifyCourseCodeByPaperNumber(Long schoolId, Long examId, String paperNumber, String courseCode);
-
     /**
      * 根据考务-考场检验该考场下的所有命题任务是否已经完成,全部完成则生成pdf
      *
@@ -104,8 +95,6 @@ public interface ExamTaskService extends IService<ExamTask> {
      */
     void checkDataByExamination(Long printPlanId, Long examDetailId, SysUser user) throws IOException;
 
-    List<ExamTask> listExamTaskByCardId(Long cardId);
-
     /**
      * 根据命题任务id从('exam_task_detail'表和'exam_task_paper_log'表查找审核样品信息)
      *

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

@@ -260,12 +260,10 @@ public interface PrintCommonService {
      * @param extendFields                   扩展字段
      * @param examTaskStudentObjectParamList 学生参数集合
      * @param examDetailCourseId             考察表id
-     * @param examShortCode                  考试shortCode
-     * @param courseShortCode                课程shortCode
      * @param sysUser                        请求用户
      * @return 结果
      */
-    List<ExamStudent> createBatchStudentByStudentList(Long schoolId, Long examId, String semesterId, String paperNumber, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, String examShortCode, String courseShortCode, Long cardRuleId, SysUser sysUser);
+    List<ExamStudent> createBatchStudentByStudentList(Long schoolId, Long examId, String semesterId, String paperNumber, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, Long cardRuleId, SysUser sysUser);
 
     /**
      * 生成准考证号

+ 31 - 67
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamServiceImpl.java

@@ -7,9 +7,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.dto.BasicExamDto;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
+import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.mapper.BasicExamMapper;
 import com.qmth.distributed.print.business.service.BasicExamService;
 import com.qmth.distributed.print.business.service.ExamPrintPlanService;
+import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.distributed.print.business.util.CodeUtils;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicExam;
@@ -18,17 +21,12 @@ import com.qmth.teachcloud.common.enums.ExamModelEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
-import java.util.Optional;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -37,10 +35,16 @@ import java.util.stream.Collectors;
  */
 @Service
 public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam> implements BasicExamService {
+
+    @Resource
+    ExamTaskService examTaskService;
     @Resource
-    private ExamPrintPlanService examPrintPlanService;
+    ExamPrintPlanService examPrintPlanService;
     @Resource
-    private BasicRoleDataPermissionService basicRoleDataPermissionService;
+    BasicRoleDataPermissionService basicRoleDataPermissionService;
+
+    @Resource
+    CodeUtils codeUtils;
 
     @Transactional
     @Override
@@ -52,11 +56,10 @@ public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam
         BasicExam checkName = this.getOne(new QueryWrapper<BasicExam>().lambda()
                 .eq(BasicExam::getSchoolId, schoolId)
                 .eq(BasicExam::getSemesterId, basicExam.getSemesterId())
-                .eq(BasicExam::getName, basicExam.getName())
-                .eq(BasicExam::getEnable, true));
+                .eq(BasicExam::getName, basicExam.getName()));
         // 校验考试名称唯一性
         if (Objects.nonNull(checkName) && !checkName.getId().equals(id)) {
-            throw ExceptionResultEnum.ERROR.exception("考试名称【" + basicExam.getName() + "】已存在");
+            throw ExceptionResultEnum.ERROR.exception("考试名称[" + basicExam.getName() + "]已使用");
         }
         if (SystemConstant.longNotNull(id)) {
             // 编辑
@@ -77,7 +80,7 @@ public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam
             basicExam.setCreateId(sysUser.getId());
             basicExam.setCreateTime(System.currentTimeMillis());
             // 生成简码
-            String shortCode = createShortCode(schoolId);
+            String shortCode = codeUtils.createBasicExamShortCode(schoolId);
             basicExam.setShortCode(shortCode);
             this.save(basicExam);
         }
@@ -87,18 +90,24 @@ public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam
     @Transactional
     @Override
     public boolean deleteBasicExamById(Long id) {
-        List<ExamPrintPlan> examPrintPlanList = examPrintPlanService.list(new QueryWrapper<ExamPrintPlan>().lambda().eq(ExamPrintPlan::getExamId, id));
-        if (examPrintPlanList.size() > 0) {
-            throw ExceptionResultEnum.ERROR.exception("考试已被绑定,不能删除");
+        BasicExam basicExam = this.getById(id);
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        int countExamTask = examTaskService.count(new QueryWrapper<ExamTask>().lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getExamId, id));
+        if (countExamTask > 0) {
+            throw ExceptionResultEnum.ERROR.exception("命题任务已使用考试[" + basicExam.getName() + "],不能删除");
+        }
+        int countExamPrint = examPrintPlanService.count(new QueryWrapper<ExamPrintPlan>().lambda().eq(ExamPrintPlan::getSchoolId, schoolId).eq(ExamPrintPlan::getExamId, id));
+        if (countExamPrint > 0) {
+            throw ExceptionResultEnum.ERROR.exception("印刷计划已使用考试[" + basicExam.getName() + "],不能删除");
         }
         return this.removeById(id);
     }
 
     @Override
-    public List<BasicExam> query(Long semesterId, List<ExamModelEnum> examModels, Boolean inUsed) {
+    public List<BasicExam> query(Long semesterId, List<ExamModelEnum> examModels) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId,requestUser.getId(),ServletUtil.getRequest().getServletPath());
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
 
         QueryWrapper<BasicExam> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicExam::getSchoolId, schoolId)
@@ -107,46 +116,21 @@ public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam
         if (Objects.nonNull(examModels) && !examModels.isEmpty()) {
             queryWrapper.lambda().in(BasicExam::getExamModel, examModels);
         }
-        if (Objects.nonNull(inUsed)) {
-            queryWrapper.lambda().eq(BasicExam::getInUsed, inUsed);
-        }
-        if (SystemConstant.longNotNull(dpr.getRequestUserId())){
-            queryWrapper.lambda().eq(BasicExam::getCreateId,dpr.getRequestUserId());
+        if (SystemConstant.longNotNull(dpr.getRequestUserId())) {
+            queryWrapper.lambda().eq(BasicExam::getCreateId, dpr.getRequestUserId());
         }
-        if (dpr.getOrgIdSet() != null && dpr.getOrgIdSet().size() > 0){
-            queryWrapper.lambda().in(BasicExam::getOrgId,dpr.getOrgIdSet());
+        if (dpr.getOrgIdSet() != null && dpr.getOrgIdSet().size() > 0) {
+            queryWrapper.lambda().in(BasicExam::getOrgId, dpr.getOrgIdSet());
         }
         return this.list(queryWrapper);
     }
 
-    @Transactional
-    @Override
-    public boolean setInUsed(Long id) {
-        BasicExam exam = this.getById(id);
-        // 只能设置一个当前使用考试
-        if (!exam.getInUsed()) {
-            QueryWrapper<BasicExam> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(BasicExam::getSchoolId, exam.getSchoolId())
-                    .eq(BasicExam::getSemesterId, exam.getSemesterId());
-            List<BasicExam> list = this.list(queryWrapper);
-            if (!CollectionUtils.isEmpty(list)) {
-                list = list.stream().map(m -> {
-                    m.setInUsed(false);
-                    return m;
-                }).collect(Collectors.toList());
-                this.updateBatchById(list);
-            }
-        }
-        exam.setInUsed(!exam.getInUsed());
-        return this.updateById(exam);
-    }
-
     @Override
     public IPage<BasicExamDto> basicExamPage(Long semesterId, Boolean enable, Integer pageNumber, Integer pageSize) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
-        return this.baseMapper.findBasicExamPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, enable, null, dpr);
+        return this.baseMapper.findBasicExamPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, enable, dpr);
     }
 
     /**
@@ -159,25 +143,5 @@ public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam
         return this.update(updateWrapper);
     }
 
-    /**
-     * 生成考试简码
-     *
-     * @param schoolId 学校ID
-     */
-    private String createShortCode(Long schoolId) {
-        QueryWrapper<BasicExam> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(BasicExam::getSchoolId, schoolId);
-        List<BasicExam> basicExams = this.baseMapper.selectList(queryWrapper);
-        if (basicExams.isEmpty()) {
-            return "001";
-        } else {
-            Optional<BasicExam> max = basicExams.stream().filter(m -> StringUtils.isNotBlank(m.getShortCode())).max(Comparator.comparing(BasicExam::getShortCode));
-            if (!max.isPresent()) {
-                return "001";
-            }
-            String maxShortCode = max.get().getShortCode();
-            int shortCode = StringUtils.isBlank(maxShortCode) ? 0 : Integer.parseInt(maxShortCode);
-            return String.format("%03d", shortCode + 1);
-        }
-    }
+
 }

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

@@ -78,26 +78,19 @@ public class BasicPrintConfigServiceImpl extends ServiceImpl<BasicPrintConfigMap
         basicPrintConfig.setSchoolId(schoolId);
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
-        boolean isSuccess;
-
         // 新增
         if (Objects.isNull(basicPrintConfig.getId())) {
             basicPrintConfig.setId(SystemConstant.getDbUuid());
             basicPrintConfig.setOrgId(sysUser.getOrgId());
             basicPrintConfig.setCreateId(sysUser.getId());
             basicPrintConfig.setCreateTime(System.currentTimeMillis());
-            isSuccess = this.save(basicPrintConfig);
         }
         // 修改
         else {
             basicPrintConfig.setUpdateId(sysUser.getId());
             basicPrintConfig.setUpdateTime(System.currentTimeMillis());
-
-            //删除权限
-            basicTemplateOrgService.removeByRuleId(basicPrintConfig.getId());
-            isSuccess = this.updateById(basicPrintConfig);
         }
-        return isSuccess;
+        return this.saveOrUpdate(basicPrintConfig);
     }
 
     @Override
@@ -115,7 +108,7 @@ public class BasicPrintConfigServiceImpl extends ServiceImpl<BasicPrintConfigMap
     }
 
     @Override
-    public BasicPrintConfig getByExamIdAndOrgId(Long examId, Long orgId) {
+    public BasicPrintConfig getByExamIdAndOrgId(Long examId) {
         BasicExam basicExam = basicExamService.getById(examId);
         BasicPrintConfig printConfig = this.baseMapper.getBySchoolIdAndExamId(basicExam.getSchoolId(), examId);
         if (printConfig == null) {
@@ -127,56 +120,6 @@ public class BasicPrintConfigServiceImpl extends ServiceImpl<BasicPrintConfigMap
         return printConfig;
     }
 
-    @Override
-    public List<String> listOrgIdsByExamId(Long id, Long examId) {
-        QueryWrapper<BasicPrintConfig> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(BasicPrintConfig::getExamId, examId);
-        if (id != null) {
-            queryWrapper.lambda().ne(BasicPrintConfig::getId, id);
-        }
-        List<BasicPrintConfig> basicPrintConfigs = this.list(queryWrapper);
-        List<String> orgIds = new ArrayList<>();
-        for (BasicPrintConfig basicPrintConfig : basicPrintConfigs) {
-            List<SysOrg> sysOrgList = basicTemplateOrgService.listByTypeAndTemplateId(TemplateTypeEnum.PRINT_CONFIG.name(), basicPrintConfig.getId());
-            for (SysOrg sysOrg : sysOrgList) {
-                orgIds.add(String.valueOf(sysOrg.getId()));
-            }
-        }
-        return orgIds;
-    }
-
-    @Transactional
-    @Override
-    public boolean delete(List<Long> idList) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        QueryWrapper<BasicPrintConfig> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(BasicPrintConfig::getSchoolId, schoolId);
-        List<BasicPrintConfig> basicPrintConfigs = basicPrintConfigService.list(queryWrapper);
-        List<Long> templateIds = new ArrayList<>();
-        if (!basicPrintConfigs.isEmpty()) {
-            for (BasicPrintConfig basicPrintConfig : basicPrintConfigs) {
-                Set<Long> variableLongs = JSON.parseArray(basicPrintConfig.getVariableContent(), JSONObject.class).stream().map(m -> m.getLong("templateId")).collect(Collectors.toSet());
-                if (!variableLongs.isEmpty()) {
-                    templateIds.addAll(variableLongs);
-                }
-
-                Set<Long> ordinaryLongs = JSON.parseArray(basicPrintConfig.getOrdinaryContent(), JSONObject.class).stream().map(m -> m.getLong("templateId")).collect(Collectors.toSet());
-                if (!ordinaryLongs.isEmpty()) {
-                    templateIds.addAll(ordinaryLongs);
-                }
-            }
-
-        }
-
-        for (Long aLong : idList) {
-            if (!templateIds.isEmpty() && templateIds.contains(aLong)) {
-                throw ExceptionResultEnum.ERROR.exception("印品已经考试绑定,不能删除");
-            }
-            this.removeById(aLong);
-        }
-        return true;
-    }
-
     @Override
     public List<BasicPrintConfig> listBySchoolId(Long schoolId) {
         QueryWrapper<BasicPrintConfig> queryWrapper = new QueryWrapper<>();

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

@@ -31,18 +31,6 @@ public class BasicTemplateOrgServiceImpl extends ServiceImpl<BasicTemplateOrgMap
     @Resource
     private BasicCourseService basicCourseService;
 
-    @Override
-    public List<SysOrg> listByTypeAndTemplateId(String type, Long templateId) {
-        return this.baseMapper.listByTypeAndTemplateId(type, templateId);
-    }
-
-    @Override
-    public void removeByRuleId(Long id) {
-        UpdateWrapper<BasicTemplateOrg> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().eq(BasicTemplateOrg::getRuleId, id);
-        this.remove(updateWrapper);
-    }
-
     @Override
     public void saveBatch(Long schoolId, TemplateTypeEnum type, Long ruleId, Long[] orgIds, Long createId) {
         List<BasicTemplateOrg> list = new ArrayList<>();

+ 14 - 83
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java

@@ -11,12 +11,10 @@ import com.qmth.distributed.print.business.bean.dto.TemplateDto;
 import com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult;
 import com.qmth.distributed.print.business.entity.BasicExamRule;
 import com.qmth.distributed.print.business.entity.BasicTemplate;
-import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.mapper.BasicTemplateMapper;
 import com.qmth.distributed.print.business.service.BasicExamRuleService;
 import com.qmth.distributed.print.business.service.BasicPrintConfigService;
 import com.qmth.distributed.print.business.service.BasicTemplateService;
-import com.qmth.distributed.print.business.service.ExamPrintPlanService;
 import com.qmth.distributed.print.business.util.PdfFillUtils;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -38,7 +36,10 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -64,9 +65,6 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
     @Resource
     BasicPrintConfigService basicPrintConfigService;
 
-    @Resource
-    ExamPrintPlanService examPrintPlanService;
-
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
@@ -74,11 +72,11 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
     private BasicExamRuleService basicExamRuleService;
 
     @Override
-    public IPage<TemplateDto> list(Boolean enable, String type, String name, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
+    public IPage<TemplateDto> list(Boolean enable, String name, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
-        return this.baseMapper.listPage(new Page<>(pageNumber, pageSize), schoolId, enable, type, SystemConstant.translateSpecificSign(name), startTime, endTime, dpr);
+        return this.baseMapper.listPage(new Page<>(pageNumber, pageSize), schoolId, enable, SystemConstant.translateSpecificSign(name), startTime, endTime, dpr);
     }
 
     @Transactional
@@ -96,10 +94,9 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
         // 新增
         if (Objects.isNull(template.getId())) {
             if (basicTemplate != null) {
-                throw ExceptionResultEnum.ERROR.exception("模板名称已存在");
+                throw ExceptionResultEnum.ERROR.exception("模板名称已使用");
             }
             template.insertInfo(sysUser.getId());
-            isSuccess = this.save(template);
         }
         // 修改
         else {
@@ -107,6 +104,7 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
                 if (basicTemplate.getId().longValue() != template.getId().longValue()) {
                     throw ExceptionResultEnum.ERROR.exception("模板名称已存在");
                 }
+                // 删除预览时生成的附件
                 if (StringUtils.isNotBlank((basicTemplate.getPreviewPath()))) {
                     JSONObject jsonObject = JSON.parseObject(basicTemplate.getPreviewPath());
                     String type = jsonObject.getString(SystemConstant.TYPE);
@@ -115,53 +113,14 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
                     }
                 }
             }
-
-            template.setPreviewPath("");
+            template.setPreviewPath(null);
             template.updateInfo(sysUser.getId());
-            //删除权限
-//            basicTemplateOrgService.removeByRuleId(template.getId());
-            isSuccess = this.updateById(template);
         }
-
-        // 新增权限
-//        basicTemplateOrgService.saveBatch(schoolId, template.getType(), template.getId(), template.getOrgIds(), template.getCreateId());
-
-//        if (TemplateTypeEnum.GENERIC.name().equals(template.getType().name())) {
-//            // 通用题卡,同步更新exam_card
-//            BasicAttachment attachment = basicAttachmentService.getById(template.getAttachmentId());
-//
-//            ExamCard examCard1 = examCardService.getOneByTemplateId(template.getId());
-//            if (examCard1 == null) {
-//                ExamCard examCard = examCardService.getOneByTemplateId(template.getId());
-//                ExamCardParams examCardParams = new ExamCardParams();
-//                examCardParams.setId(examCard == null ? null : examCard.getId());
-//                examCardParams.setOrgId(sysUser.getOrgId());
-//                examCardParams.setTitle(template.getName());
-//                examCardParams.setMakeMethod(MakeMethodEnum.SELECT);// 默认SELECT
-//                examCardParams.setType(CardTypeEnum.GENERIC); // 默认GENERIC
-//                examCardParams.setTemplateId(template.getId());
-//                examCardParams.setStatus(CardStatusEnum.SUBMIT); // 默认SUBMIT
-//                examCardParams.setHtmlContent(teachcloudCommonService.readFileContent(attachment.getPath()));
-//                examCardService.saveExamCard(examCardParams);
-//            } else {
-//                examCard1.setTitle(template.getName());
-//                examCardService.updateById(examCard1);
-//
-//                ExamCardDetail examCardDetail = examCardDetailService.getByCardId(examCard1.getId());
-//                examCardDetail.setHtmlContent(teachcloudCommonService.readFileContent(attachment.getPath()));
-//                examCardDetailService.updateById(examCardDetail);
-//            }
-//        }
-        return isSuccess;
+        return this.saveOrUpdate(template);
     }
 
     @Override
     public boolean enable(BasicTemplate template) {
-        // 校验模板是否已有绑定命题任务
-//        boolean used = examCardService.usedCardByTemplateId(template.getId());
-//        if (used && !template.getEnable()) {
-//            throw ExceptionResultEnum.ERROR.exception("通用题卡模板已绑定任务,不能禁用");
-//        }
         UpdateWrapper<BasicTemplate> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(BasicTemplate::getEnable, template.getEnable()).eq(BasicTemplate::getId, template.getId());
         return this.update(updateWrapper);
@@ -173,7 +132,7 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
         if (basicTemplate.getAttachmentId() != null) {
             BasicAttachment basicAttachment = basicAttachmentService.getById(basicTemplate.getAttachmentId());
             if (basicAttachment == null) {
-                throw ExceptionResultEnum.ERROR.exception("附件数据异常");
+                throw ExceptionResultEnum.ERROR.exception("上传附件数据丢失,请重新上传");
             }
             String url = teachcloudCommonService.filePreview(basicAttachment.getPath());
             basicTemplate.setUrl(url);
@@ -188,7 +147,7 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
             // 签到表
             if (basicTemplate.getClassify().equals(ClassifyEnum.SIGN)) {
                 if (StringUtils.isBlank(basicExamRule.getSignScope())) {
-                    throw ExceptionResultEnum.ERROR.exception("签到表字段未配置");
+                    throw ExceptionResultEnum.ERROR.exception("通用规则中签到表字段未配置");
                 }
                 // basic部分
                 JSONObject signObject = JSONObject.parseObject(basicExamRule.getSignScope());
@@ -201,7 +160,6 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
                         jsonObject.put("enable", false);
                     }
                 }
-
                 object.put("basic", signBasicList);
 
                 // table部分
@@ -223,7 +181,7 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
             // 卷袋贴
             if (basicTemplate.getClassify().equals(ClassifyEnum.PACKAGE)) {
                 if (StringUtils.isBlank(basicExamRule.getPackageScope())) {
-                    throw ExceptionResultEnum.ERROR.exception("卷袋贴字段未配置");
+                    throw ExceptionResultEnum.ERROR.exception("通用规则中卷袋贴字段未配置");
                 }
                 JSONObject packageObject = JSONObject.parseObject(basicExamRule.getPackageScope());
                 List<JSONObject> packageScopeList = JSONObject.parseArray(packageObject.getString("basic"), JSONObject.class);
@@ -235,7 +193,6 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
                         jsonObject.put("enable", false);
                     }
                 }
-
                 object.put("basic", packageScopeList);
                 basicTemplate.setDisplayRange(JSONObject.toJSONString(object));
             }
@@ -243,15 +200,6 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
         return basicTemplate;
     }
 
-    @Override
-    public Object readContent(Long attachmentId) {
-        BasicAttachment attachment = basicAttachmentService.getById(attachmentId);
-        if (attachment.getType().equals(SystemConstant.FTL_PREFIX) || attachment.getType().equals(SystemConstant.HTML_PREFIX)) {
-            return teachcloudCommonService.readFileContent(attachment.getPath());
-        }
-        return null;
-    }
-
     /**
      * 查找模版(机构同级及以下)
      *
@@ -324,27 +272,10 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
                 }
                 List<JSONObject> jsonObjects = objects.stream().filter(m -> m.getString("type").equals(basicTemplate.getClassify().name()) && m.getLong("templateId").equals(id)).collect(Collectors.toList());
                 if (!jsonObjects.isEmpty()) {
-                    throw ExceptionResultEnum.ERROR.exception("该印品已在考试中设置,不能删除");
+                    throw ExceptionResultEnum.ERROR.exception("模板名称[" + basicTemplate.getName() + "]的" + basicTemplate.getClassify().getDesc() + "已使用,不能删除");
                 }
             }
         }
-        // 计划关联印品
-        List<ExamPrintPlan> examPrintPlans = examPrintPlanService.listBySchoolId(schoolId);
-        if (!examPrintPlans.isEmpty()) {
-            List<JSONObject> objects = new ArrayList<>();
-            for (ExamPrintPlan examPrintPlan : examPrintPlans) {
-                if (ClassifyEnum.SIGN.equals(basicTemplate.getClassify()) || ClassifyEnum.PACKAGE.equals(basicTemplate.getClassify())) {
-                    objects = JSON.parseArray(examPrintPlan.getVariableContent(), JSONObject.class);
-                } else if (ClassifyEnum.CHECK_IN.equals(basicTemplate.getClassify())) {
-                    objects = JSON.parseArray(examPrintPlan.getOrdinaryContent(), JSONObject.class);
-                }
-                List<JSONObject> jsonObjects = objects.stream().filter(m -> m.getString("type").equals(basicTemplate.getClassify().name()) && m.getLong("templateId").equals(id)).collect(Collectors.toList());
-                if (!jsonObjects.isEmpty()) {
-                    throw ExceptionResultEnum.ERROR.exception("该印品已在印刷计划中设置,不能删除");
-                }
-            }
-        }
-
         return this.removeById(id);
     }
 }

+ 32 - 155
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamCardServiceImpl.java

@@ -7,8 +7,8 @@ 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.google.gson.JsonObject;
-import com.qmth.distributed.print.business.bean.dto.*;
+import com.qmth.distributed.print.business.bean.dto.CardDetailDto;
+import com.qmth.distributed.print.business.bean.dto.ExamCardPageDto;
 import com.qmth.distributed.print.business.bean.marking.ConvertJpgStorage;
 import com.qmth.distributed.print.business.bean.params.ExamCardParams;
 import com.qmth.distributed.print.business.bean.params.GenericExamCardParams;
@@ -22,8 +22,6 @@ import com.qmth.distributed.print.business.util.CreatePdfUtil;
 import com.qmth.distributed.print.business.util.HtmlToJpgUtil;
 import com.qmth.distributed.print.business.util.HtmlToPdfUtil;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
-import com.qmth.teachcloud.common.bean.params.ArraysParams;
-import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.BasicCourse;
@@ -31,7 +29,6 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.CardCreateMethodEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.PageSizeEnum;
-import com.qmth.teachcloud.common.enums.SyncFileTypeEnum;
 import com.qmth.teachcloud.common.service.BasicAttachmentService;
 import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
@@ -50,7 +47,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -98,8 +94,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
 
     @Transactional
     @Override
-    public String saveExamCard(ExamCardParams examCardParams) throws Exception {
-        // ↓专卡
+    public String saveExamCard(ExamCardParams examCardParams) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser user = (SysUser) ServletUtil.getRequestUser();
 
@@ -194,54 +189,6 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         return String.valueOf(examCard.getId());
     }
 
-    @Override
-    public IPage<CardCustDto> listCardCust(String schoolId, String status, String paperNumber, String userId, Long applyStartTime, Long applyEndTime, Long finishStartTime, Long finishEndTime, Integer pageNumber, Integer pageSize) {
-        Page<CardCustDto> page = new Page<>(pageNumber, pageSize);
-        IPage<CardCustDto> cardCustDtoIPage = this.baseMapper.listCardCust(page, schoolId, status, paperNumber, userId, applyStartTime, applyEndTime, finishStartTime, finishEndTime);
-        return cardCustDtoIPage;
-    }
-
-    @Transactional
-    @Override
-    public String saveExamCardCust(ExamCardParams examCardParams) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        SysUser user = (SysUser) ServletUtil.getRequestUser();
-
-        if (!MakeMethodEnum.CUST.name().equals(examCardParams.getMakeMethod().name())) {
-            throw ExceptionResultEnum.ERROR.exception("题卡制作类型错误");
-        }
-        if (StringUtils.isBlank(examCardParams.getCustAttachmentId())) {
-            throw ExceptionResultEnum.ERROR.exception("客户制卡时,附件未上传");
-        }
-
-        ExamCard examCard = new ExamCard();
-        examCard.setId(SystemConstant.getDbUuid());
-        examCard.setSchoolId(schoolId);
-        examCard.setOrgId(user.getOrgId());
-        examCard.setCourseCode(examCardParams.getCourseCode());
-        examCard.setCourseName(examCardParams.getCourseName());
-        examCard.setMakeMethod(examCardParams.getMakeMethod());
-        examCard.setTitle(examCardParams.getTitle());
-        examCard.setStatus(examCardParams.getStatus());
-        examCard.setType(CardTypeEnum.CUSTOM);
-        examCard.setCreateId(user.getId());
-        examCard.setCreateTime(System.currentTimeMillis());
-        this.save(examCard);
-
-        ExamCardDetail examCardDetail = new ExamCardDetail();
-        examCardDetail.setId(SystemConstant.getDbUuid());
-        examCardDetail.setCardId(examCard.getId());
-        examCardDetail.setCustAttachmentId(examCardParams.getCustAttachmentId());
-        examCardDetail.setCreateId(user.getId());
-        examCardDetail.setCreateTime(System.currentTimeMillis());
-        examCardDetailService.save(examCardDetail);
-
-        // 绑定命题任务
-        examTaskDetailService.bindCardId(examCardParams.getExamTaskId(), examCard);
-
-        return String.valueOf(examCard.getId());
-    }
-
     @Override
     public CardDetailDto getCardDetail(Long cardId) {
         ExamCard examCard = this.getById(cardId);
@@ -252,13 +199,6 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         }
     }
 
-    @Override
-    public ExamCard getOneByTemplateId(Long templateId) {
-        QueryWrapper<ExamCard> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ExamCard::getAttachmentId, templateId);
-        return this.getOne(queryWrapper);
-    }
-
     @Override
     public List<ExamCard> listSelectCard(String courseCode, Long cardRuleId, String paperNumber) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -293,55 +233,6 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         return list;
     }
 
-    @Override
-    public void downloadFiles(HttpServletResponse response, ArraysParams arraysParams) throws Exception {
-        // 路径规则:download-temp/{time}/{schoolId}/{courseCode}-{couseName}/{paperNumber}/{fileName}
-        File fileTemp = null;
-        String rootPath = null;
-        try {
-            long time = System.nanoTime();
-            fileTemp = SystemConstant.getFileTempDirVar(String.valueOf(time) + File.separator + SystemConstant.getNanoId(), SystemConstant.TEMP_PREFIX);
-            rootPath = fileTemp.getParent();
-            Long[] cardIds = arraysParams.getIds();
-            // 根据题卡取命题任务
-            for (Long cardId : cardIds) {
-                List<ExamTask> examTasks = examTaskService.listExamTaskByCardId(cardId);
-                if (examTasks.isEmpty() || examTasks.size() > 1) {
-                    throw ExceptionResultEnum.ERROR.exception("题卡数据异常");
-                }
-                ExamTask examTask = examTasks.get(0);
-                StringJoiner sj = new StringJoiner(File.separator);
-                sj.add(rootPath).add(examTask.getSchoolId().toString()).add(examTask.getCourseCode() + SystemConstant.HYPHEN + examTask.getCourseName()).add(examTask.getPaperNumber());
-
-                // 附件ID
-                ExamCardDetail examCardDetail = examCardDetailService.getByCardId(cardId);
-                BasicAttachment attachment = basicAttachmentService.getById(examCardDetail.getCustAttachmentId());
-                String fileName = attachment.getName() + attachment.getType();
-                teachcloudCommonService.copyFile(sj.toString(), fileName, attachment);
-            }
-            if (Objects.nonNull(fileTemp)) {
-                fileTemp.delete();
-            }
-            // 压缩
-            teachcloudCommonService.downloadFileAndZip(response, rootPath, time);
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        } finally {
-            if (Objects.nonNull(fileTemp)) {
-                fileTemp.delete();
-            }
-            if (Objects.nonNull(rootPath)) {
-                ConvertUtil.delFolder(rootPath);
-            }
-        }
-    }
-
-    @Override
-    public List<SyncExamCardDto> listSyncCardByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber) {
-        return this.baseMapper.listSyncCardByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
-    }
-
-
     @Override
     public IPage<ExamCardPageDto> listPage(String cardType, String title, String createMethod, Boolean enable, Long createStartTime, Long createEndTime, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -352,6 +243,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
             if (StringUtils.isNotBlank(record.getJpgAttachmentInfo())) {
                 List<JSONObject> mapList = JSON.parseArray(record.getJpgAttachmentInfo(), JSONObject.class);
                 List<String> imageUrls = new ArrayList<>();
+                // 组装图片访问url
                 for (JSONObject object : mapList) {
                     imageUrls.add(teachcloudCommonService.filePreview(object.getLong("attachmentId")));
                 }
@@ -368,21 +260,23 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
         QueryWrapper<ExamCard> checkTitleQueryWrapper = new QueryWrapper<>();
-        checkTitleQueryWrapper.lambda().eq(ExamCard::getSchoolId, schoolId).eq(ExamCard::getType, CardTypeEnum.GENERIC).eq(ExamCard::getTitle, params.getTitle().trim());
+        checkTitleQueryWrapper.lambda().eq(ExamCard::getSchoolId, schoolId)
+                .eq(ExamCard::getType, CardTypeEnum.GENERIC)
+                .eq(ExamCard::getTitle, params.getTitle().trim());
         ExamCard checkTitleExamCardList = this.getOne(checkTitleQueryWrapper);
 
         ExamCard examCard = new ExamCard();
         ExamCardDetail examCardDetail = new ExamCardDetail();
         // 新增
         if (Objects.isNull(params.getId())) {
+            if (checkTitleExamCardList != null) {
+                throw ExceptionResultEnum.ERROR.exception("题卡名称已使用");
+            }
             // 保存题卡
             examCard.setId(SystemConstant.getDbUuid());
             examCard.setSchoolId(schoolId);
             examCard.setOrgId(sysUser.getOrgId());
 
-            if (checkTitleExamCardList != null) {
-                throw ExceptionResultEnum.ERROR.exception("题卡名称重复");
-            }
             examCard.setTitle(params.getTitle());
             examCard.setMakeMethod(MakeMethodEnum.SELECT); // 默认值
             // 上传题卡,状态为提交
@@ -403,14 +297,14 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
             examCardDetail.setCreateId(sysUser.getId());
             examCardDetail.setCreateTime(System.currentTimeMillis());
             // 方式为上传
-            String htmlContent = "";
+            String htmlContent;
             if (CardCreateMethodEnum.UPLOAD.equals(params.getCreateMethod())) {
                 if (params.getAttachmentId() == null) {
                     throw ExceptionResultEnum.ERROR.exception("请上传模板文件");
                 }
                 BasicAttachment attachment = basicAttachmentService.getById(params.getAttachmentId());
                 if (attachment == null) {
-                    throw ExceptionResultEnum.ERROR.exception("无模板文件记录");
+                    throw ExceptionResultEnum.ERROR.exception("无模板文件记录,请重新上传");
                 }
                 if (!SystemConstant.HTML_PREFIX.equalsIgnoreCase(attachment.getType())) {
                     throw ExceptionResultEnum.ERROR.exception("只能上传后缀为.html文件");
@@ -419,17 +313,15 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 examCardDetail.setHtmlContent(htmlContent);
             }
             // 方式为自定义
-            else if (CardCreateMethodEnum.STANDARD.equals(params.getCreateMethod()) || CardCreateMethodEnum.FREE.equals(params.getCreateMethod())) {
+            else if (CardCreateMethodEnum.STANDARD.equals(params.getCreateMethod())
+                    || CardCreateMethodEnum.FREE.equals(params.getCreateMethod())) {
                 examCardDetail.setContent(params.getContent());
                 htmlContent = params.getHtmlContent();
                 examCardDetail.setHtmlContent(htmlContent);
             } else {
-                throw ExceptionResultEnum.ERROR.exception("题卡创建方式异常");
-            }
-            List<ConvertJpgStorage> convertJpgStorageList = htmlToJpgUtil.convertHtmlToJpgByCard(examCard.getTitle(), htmlContent, PageSizeEnum.A3);
-            if (convertJpgStorageList.size() > 0) {
-                examCardDetail.setJpgAttachmentInfo(JSON.toJSONString(convertJpgStorageList));
+                throw ExceptionResultEnum.ERROR.exception("不存在的题卡创建方式");
             }
+
             examCardDetailService.save(examCardDetail);
         }
         // 修改
@@ -459,7 +351,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 }
                 BasicAttachment attachment = basicAttachmentService.getById(params.getAttachmentId());
                 if (attachment == null) {
-                    throw ExceptionResultEnum.ERROR.exception("无模板文件记录");
+                    throw ExceptionResultEnum.ERROR.exception("无模板文件记录,请重新上传");
                 }
                 if (!SystemConstant.HTML_PREFIX.equalsIgnoreCase(attachment.getType())) {
                     throw ExceptionResultEnum.ERROR.exception("只能上传后缀为.html文件");
@@ -475,14 +367,15 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 htmlContent = params.getHtmlContent();
                 examCardDetail.setHtmlContent(htmlContent);
             } else {
-                throw ExceptionResultEnum.ERROR.exception("题卡创建方式异常");
+                throw ExceptionResultEnum.ERROR.exception("不存在的题卡创建方式");
             }
-            List<ConvertJpgStorage> convertJpgStorageList = htmlToJpgUtil.convertHtmlToJpgByCard(examCard.getTitle(), htmlContent, PageSizeEnum.A3);
-            if (convertJpgStorageList.size() > 0) {
-                examCardDetail.setJpgAttachmentInfo(JSON.toJSONString(convertJpgStorageList));
-            }
-            examCardDetailService.updateById(examCardDetail);
         }
+        // 生成题卡图片
+        List<ConvertJpgStorage> convertJpgStorageList = htmlToJpgUtil.convertHtmlToJpgByCard(examCard.getTitle(), examCardDetail.getHtmlContent(), PageSizeEnum.A3);
+        if (convertJpgStorageList.size() > 0) {
+            examCardDetail.setJpgAttachmentInfo(JSON.toJSONString(convertJpgStorageList));
+        }
+        examCardDetailService.saveOrUpdate(examCardDetail);
         return examCard.getId();
     }
 
@@ -490,14 +383,10 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
     @Override
     public Boolean deleteGeneric(Long id) {
         // 校验题卡是否被绑定
-//        QueryWrapper<ExamTaskDetail> queryWrapper = new QueryWrapper<>();
-//        queryWrapper.lambda().eq(ExamTaskDetail::getCardId, id);
-//        List<ExamTaskDetail> examTaskDetails = examTaskDetailService.list(queryWrapper);
         List<ExamTaskDetail> examTaskDetails = examTaskDetailService.getExamTaskDetailByCardIdJson(id);
         if (examTaskDetails != null && examTaskDetails.size() > 0) {
             throw ExceptionResultEnum.ERROR.exception("题卡已绑定命题任务,不能删除");
         }
-
         examCardDetailService.removeByCardId(id);
         return this.removeById(id);
     }
@@ -698,16 +587,16 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
             throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
         }
 
-        if (Objects.nonNull(examCardParams.getMakeMethod()) && StringUtils.isBlank(examCardParams.getMakeMethod().name())) {
+        if (Objects.isNull(examCardParams.getMakeMethod())) {
             throw ExceptionResultEnum.ERROR.exception("题卡制作方式不能为空");
         }
         if (examCardParams.getStatus() == null) {
             throw ExceptionResultEnum.ERROR.exception("提交方式不能为空");
         }
-        if (CardTypeEnum.CUSTOM.name().equals(examCardParams.getType())) {
-            if (examCardParams.getExamTaskId() == null) {
-                throw ExceptionResultEnum.ERROR.exception("命题任务ID不能为空");
-            }
+        if (CardTypeEnum.CUSTOM.name().equals(examCardParams.getType().name())) {
+//            if (examCardParams.getExamTaskId() == null) {
+//                throw ExceptionResultEnum.ERROR.exception("命题任务ID不能为空");
+//            }
             if (StringUtils.isBlank(examCardParams.getCourseCode())) {
                 throw ExceptionResultEnum.ERROR.exception("课程代码不能为空");
             }
@@ -718,12 +607,7 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                 if (examCardParams.getId() == null) {
                     throw ExceptionResultEnum.ERROR.exception("选择已有题卡时,题卡ID不能为空");
                 }
-                // 当前选择题卡是否已绑定
-                List<ExamTaskDetail> list = examTaskDetailService.listByCardId(examCardParams.getId());
-                if (list != null && list.size() > 0) {
-                    throw ExceptionResultEnum.ERROR.exception("选择的题卡已被其它命题任务绑定");
-                }
-
+                // 当前选择题卡是否已绑定(不再校验是否使用  2023-06-20)
             } else if (MakeMethodEnum.SELF.name().equals(examCardParams.getMakeMethod().name())) {
                 if (StringUtils.isBlank(examCardParams.getTitle())) {
                     throw ExceptionResultEnum.ERROR.exception("题卡标题不能为空");
@@ -736,15 +620,8 @@ public class ExamCardServiceImpl extends ServiceImpl<ExamCardMapper, ExamCard> i
                         throw ExceptionResultEnum.ERROR.exception("提交题卡时,html内容不能为空");
                     }
                 }
-            } else if (MakeMethodEnum.CUST.name().equals(examCardParams.getMakeMethod().name())) {
-                if (StringUtils.isBlank(examCardParams.getContent())) {
-                    throw ExceptionResultEnum.ERROR.exception("题卡内容不能为空");
-                }
-                if (CardStatusEnum.SUBMIT.name().equals(examCardParams.getStatus().name())) {
-                    if (StringUtils.isBlank(examCardParams.getHtmlContent())) {
-                        throw ExceptionResultEnum.ERROR.exception("提交题卡时,html内容不能为空");
-                    }
-                }
+            } else {
+                throw ExceptionResultEnum.ERROR.exception("不支持的题卡制作方式");
             }
         }
     }

+ 5 - 22
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -229,17 +229,14 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Transactional(rollbackFor = Exception.class)
     @Override
     public List<FieldsDto> findExaminationFields(Long schoolId) {
-        BasicExamRule basicExamRule = basicExamRuleService.list(new QueryWrapper<BasicExamRule>().lambda().eq(BasicExamRule::getSchoolId, schoolId)).get(0);
+        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
         if (basicExamRule == null) {
-            throw ExceptionResultEnum.ERROR.exception("找不到该学校考务字段信息");
+            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
         }
         String requiredFields = basicExamRule.getRequiredFields();
         String extendFields = basicExamRule.getExtendFields();
-        // 必选字段
+        // 基础字段
         List<FieldsDto> requiredFieldsList = JSONObject.parseArray(requiredFields, FieldsDto.class);
-//        if (requiredFieldsList.stream().anyMatch(e -> !e.getEnable())) {
-//            throw ExceptionResultEnum.ERROR.exception("该学校考务字段设置存在必选字段禁用的情况");
-//        }
         requiredFieldsList = requiredFieldsList.stream().filter(m -> m.getEnable()).collect(Collectors.toList());
         for (FieldsDto fieldsDto : requiredFieldsList) {
             fieldsDto.setLevel("primary");
@@ -250,7 +247,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         List<String> extendCodeList = extendFieldsList.stream().map(FieldsDto::getCode).collect(Collectors.toList());
         List<FieldsDto> finalRequiredFieldsList = requiredFieldsList;
         if (extendCodeList.stream().anyMatch(e -> finalRequiredFieldsList.stream().map(FieldsDto::getCode).collect(Collectors.toList()).contains(e))) {
-            throw ExceptionResultEnum.ERROR.exception("该学校考务字段设置存在相同的代码");
+            throw ExceptionResultEnum.ERROR.exception("扩展字段中存在和基础字段相同的字段变量名");
         }
         // 有效的扩展字段
         List<FieldsDto> validExtendList = extendFieldsList.stream().filter(FieldsDto::getEnable).collect(Collectors.toList());
@@ -572,14 +569,6 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             return Stream.of(map);
         }).distinct().collect(Collectors.toList());
 
-//        // 同一任务是否有多个校区
-//        Map<String, List<Map<String, Object>>> stringListMap = examDetailKeyList.stream().collect(Collectors.groupingBy(m -> m.get("schoolId") + "#" + m.get("printPlanId") + "#" + m.get("printPlanName") + "#" + m.get("examPlace") + "#" + m.get("examRoom") + "#" + m.get("examStartTime") + "#" + m.get("examEndTime")));
-//        for (Map.Entry<String, List<Map<String, Object>>> entry : stringListMap.entrySet()) {
-//            if (entry.getValue().size() > 1) {
-//                throw ExceptionResultEnum.ERROR.exception("同一考场对应校区指派的印刷室只能为一个");
-//            }
-//        }
-
         List<ExamDetail> examDetailList = new ArrayList<>();
         for (Map<String, Object> map : examDetailKeyList) {
             Long schoolId = Long.valueOf(String.valueOf(map.get("schoolId")));
@@ -587,10 +576,8 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             String examRoom = String.valueOf(map.get("examRoom"));
             String examStartTime = String.valueOf(map.get("examStartTime"));
             String examEndTime = String.valueOf(map.get("examEndTime"));
-//            Long printHouseId = Long.valueOf(String.valueOf(map.get("printHouseId")));
 
-            long totalSubjects = dataList.stream()
-                    .filter(e -> e.getExamPlace().equals(examPlace) &&
+            long totalSubjects = dataList.stream().filter(e -> e.getExamPlace().equals(examPlace) &&
                             e.getExamRoom().equals(examRoom) &&
                             e.getExamStartTime().equals(examStartTime) &&
                             e.getExamEndTime().equals(examEndTime)).count();
@@ -611,7 +598,6 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examDetail.setExamEndTime(SystemConstant.convertIdToLong(examEndTime));
             examDetail.setExamDataSource(ExamDataSourceEnum.FILE_IMPORT);
             examDetail.setNormal(true);
-//            examDetail.setPrintHouseId(printHouseId);
             examDetail.setCreateId(userId);
             examDetail.setUpdateId(userId);
             examDetail.setBackupCount(examPrintPlan.getBackupCount());
@@ -661,11 +647,8 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
                     e.getCourseName().equals(courseName) &&
                     e.getPaperNumber().equals(paperNumber)).collect(Collectors.toList());
 
-            System.out.println(JSON.toJSONString(sameCourseList));
-
             int totalSubjects = sameCourseList.size();
 
-
             List<ExamDetail> examDetailList = this.list(new QueryWrapper<ExamDetail>().lambda()
                     .eq(ExamDetail::getPrintPlanId, printPlanId)
                     .eq(ExamDetail::getExamPlace, examPlace)

+ 0 - 37
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -290,45 +290,8 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         return map;
     }
 
-    @Override
-    public List<ExamTaskDetail> listByCardId(Long cardId) {
-//        QueryWrapper<ExamTaskDetail> queryWrapper = new QueryWrapper<>();
-//        queryWrapper.lambda().eq(ExamTaskDetail::getCardId, cardId);
-        return this.getExamTaskDetailByCardIdJson(cardId);
-    }
-
-    @Override
-    public void bindCardId(String examTaskId, ExamCard examCard) {
-//        UpdateWrapper<ExamTaskDetail> updateWrapper = new UpdateWrapper<>();
-//        updateWrapper.lambda().set(ExamTaskDetail::getCardId, examCard.getId()).set(ExamTaskDetail::getMakeMethod, examCard.getMakeMethod().name()).eq(ExamTaskDetail::getExamTaskId, examTaskId);
-//        this.update(updateWrapper);
-        List<ExamTaskDetail> examTaskDetails = new ArrayList<>();
-        if (SystemConstant.strNotNull(examTaskId)) {
-            QueryWrapper<ExamTaskDetail> examTaskDetailQueryWrapper = new QueryWrapper<>();
-            examTaskDetailQueryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, Long.parseLong(examTaskId));
-            examTaskDetails = this.list(examTaskDetailQueryWrapper);
-        }
-        if (!CollectionUtils.isEmpty(examTaskDetails)) {
-            for (ExamTaskDetail e : examTaskDetails) {
-                e.setMakeMethod(examCard.getMakeMethod().name());
-                if (Objects.nonNull(e.getPaperAttachmentIds())) {
-                    JSONArray jsonArrayPaper = JSONArray.parseArray(e.getPaperAttachmentIds());
-                    for (int i = 0; i < jsonArrayPaper.size(); i++) {
-                        JSONObject object = jsonArrayPaper.getJSONObject(i);
-                        object.put("cardId", String.valueOf(examCard.getId()));
-                    }
-                    e.setPaperAttachmentIds(jsonArrayPaper.toJSONString());
-                }
-            }
-            this.updateBatchById(examTaskDetails);
-        }
-    }
-
     @Override
     public void resetCardId(Long id) {
-//        UpdateWrapper<ExamTaskDetail> updateWrapper = new UpdateWrapper<>();
-//        updateWrapper.lambda().set(ExamTaskDetail::getCardId, null).eq(ExamTaskDetail::getExamTaskId, id);
-//        this.update(updateWrapper);
         QueryWrapper<ExamTaskDetail> examTaskDetailQueryWrapper = new QueryWrapper<>();
         examTaskDetailQueryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, id);
         List<ExamTaskDetail> examTaskDetails = this.list(examTaskDetailQueryWrapper);

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

@@ -1170,24 +1170,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         return this.baseMapper.listClientExamTaskPage(schoolId, semesterId, examId, machineCode, printPlanId, courseCode, paperNumber, isTry, isPass, orgId, PrintPlanStatusEnum.PRINTING.name(), examDetailStatus);
     }
 
-    @Transactional
-    @Override
-    public void verifyCourseCodeByPaperNumber(Long schoolId, Long examId, String paperNumber, String courseCode) {
-        List<ExamTask> examTaskList = this.list(new QueryWrapper<ExamTask>().lambda()
-                .eq(ExamTask::getSchoolId, schoolId)
-                .eq(ExamTask::getExamId, examId)
-                .eq(ExamTask::getPaperNumber, paperNumber));
-        if (examTaskList.size() > 1) {
-            BasicExam basicExam = basicExamService.getById(examId);
-            throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]在考试[%s]下有多条命题任务", paperNumber, basicExam.getName()));
-        } else if (examTaskList.size() == 1) {
-            ExamTask examTask = examTaskList.get(0);
-            if (!courseCode.equals(examTask.getCourseCode())) {
-                throw ExceptionResultEnum.ERROR.exception(String.format("文件中试卷编号[%s]对应课程代码为[%s],但该试卷编号对应命题任务课程代码为[%s]", paperNumber, courseCode, examTask.getCourseCode()));
-            }
-        }
-    }
-
     @Override
     public void checkDataByExamination(Long printPlanId, Long examDetailId, SysUser user) throws IOException {
         boolean judge = true;
@@ -1225,11 +1207,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
     }
 
-    @Override
-    public List<ExamTask> listExamTaskByCardId(Long cardId) {
-        return this.baseMapper.listExamTaskByCardId(cardId);
-    }
-
     @Override
     public ReviewSampleDto findReviewSampleInfoByExamTaskId(Long examTaskId) {
         List<ReviewSampleDto> reviewSampleDtoList = examTaskMapper.listReviewSampleInfoByExamTaskId(examTaskId);
@@ -1826,7 +1803,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
                         // 更新实际考生数量
                         List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList = examDetailList.getExamTaskStudentObjectParamList();
-                        List<ExamStudent> examStudents = printCommonService.createBatchStudentByStudentList(schoolId, examPrintPlan.getExamId(), basicExam.getSemesterId(), paperNumber, examDetailList.getExtendFields(), examTaskStudentObjectParamList, examDetailCourse.getId(), basicExam.getShortCode(), basicCourse.getShortCode(), basicPrintConfig.getCardRuleId(), sysUser);
+                        List<ExamStudent> examStudents = printCommonService.createBatchStudentByStudentList(schoolId, examPrintPlan.getExamId(), basicExam.getSemesterId(), paperNumber, examDetailList.getExtendFields(), examTaskStudentObjectParamList, examDetailCourse.getId(), basicPrintConfig.getCardRuleId(), sysUser);
                         if (!CollectionUtils.isEmpty(examStudents)) {
                             examStudentService.insertBatch(examStudents);
                         }

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

@@ -149,18 +149,12 @@ public class PrintCommonServiceImpl implements PrintCommonService {
     @Resource
     BasicClazzService basicClazzService;
 
-    @Resource
-    BasicExamRuleService basicExamRuleService;
-
     @Resource
     CreatePrintPdfUtil createPrintPdfUtil;
 
     @Resource
     CommonCacheService commonCacheService;
 
-    @Resource
-    BasicRoleDataPermissionService basicRoleDataPermissionService;
-
     /**
      * 保存附件
      *
@@ -1109,7 +1103,7 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public List<ExamStudent> createBatchStudentByStudentList(Long schoolId, Long examId, String semesterId, String paperNumber, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, String examShortCode, String courseShortCode, Long cardRuleId, SysUser sysUser) {
+    public List<ExamStudent> createBatchStudentByStudentList(Long schoolId, Long examId, String semesterId, String paperNumber, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, Long cardRuleId, SysUser sysUser) {
         AtomicInteger atomicInteger = new AtomicInteger(1);
 
         BasicCardRule basicCardRule = basicCardRuleService.getById(cardRuleId);

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

@@ -80,7 +80,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     private final static Logger log = LoggerFactory.getLogger(TaskLogicServiceImpl.class);
 
     @Resource
-    ExamDetailService detailService;
+    BasicExamService basicExamService;
 
     @Resource
     ExamPrintPlanService examPrintPlanService;
@@ -106,9 +106,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Resource
     ExamDetailService examDetailService;
 
-//    @Resource
-//    OssUtil ossUtil;
-
     @Resource
     CommonCacheService commonCacheService;
 
@@ -207,13 +204,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         }
         examDetailQueryWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.NEW)
                 .set(ExamDetail::getAttachmentPath, null);
-        detailService.update(examDetailQueryWrapper);
+        examDetailService.update(examDetailQueryWrapper);
 
         //所有考场都撤回,印刷任务状态改为就绪
         QueryWrapper<ExamDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(ExamDetail::getPrintPlanId, tbTask.getPrintPlanId())
                 .notIn(ExamDetail::getStatus, ExamDetailStatusEnum.NEW, ExamDetailStatusEnum.READY);
-        List<ExamDetail> examDetails = detailService.list(queryWrapper);
+        List<ExamDetail> examDetails = examDetailService.list(queryWrapper);
         if (CollectionUtils.isEmpty(examDetails)) {
             UpdateWrapper<ExamPrintPlan> printPlanUpdateWrapper = new UpdateWrapper<>();
             printPlanUpdateWrapper.lambda().set(ExamPrintPlan::getStatus, PrintPlanStatusEnum.READY).eq(ExamPrintPlan::getId, tbTask.getPrintPlanId());
@@ -357,7 +354,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     examTaskDetail.setRelatePaperType(String.join(",", relatePaperTypes));
                     examDetailCourse.setPaperType(String.join(",", studentPaperTypes));
 
-                    studentPaperTypes.forEach(m->{
+                    studentPaperTypes.forEach(m -> {
                         ExamDetailCoursePaperType examDetailCoursePaperType = new ExamDetailCoursePaperType();
                         examDetailCoursePaperType.setId(SystemConstant.getDbUuid());
                         examDetailCoursePaperType.setExamDetailCourseId(examDetailCourse.getId());
@@ -562,7 +559,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             }
 
             BasicSchool basicSchool = commonCacheService.schoolCache(examPrintPlan.getSchoolId());
-            BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndOrgId(examPrintPlan.getExamId(), examPrintPlan.getOrgId());
+            BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndOrgId(examPrintPlan.getExamId());
             if (Objects.isNull(basicPrintConfig)) {
                 throw ExceptionResultEnum.EXAM_PRINT_CONFIG_IS_NULL.exception();
             }
@@ -576,7 +573,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             } else if (Objects.nonNull(examDetailIds)) {
                 examDetailQueryWrapper.lambda().in(ExamDetail::getId, examDetailIds);
             }
-            List<ExamDetail> examDetailList = detailService.list(examDetailQueryWrapper);
+            List<ExamDetail> examDetailList = examDetailService.list(examDetailQueryWrapper);
             if (Objects.isNull(examDetailList) || examDetailList.size() == 0) {
                 throw ExceptionResultEnum.EXAM_DETAIL_IS_NULL.exception();
             }
@@ -593,7 +590,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(examDetailCourseQueryWrapper);
 
                 // 考场内没有任务课程数据,直接跳过
-                if(CollectionUtils.isEmpty(examDetailCourseList)){
+                if (CollectionUtils.isEmpty(examDetailCourseList)) {
                     continue;
                 }
                 List<PdfDto> variablePdfList = new ArrayList<>();//变量印品(签到表、卷袋贴)
@@ -711,28 +708,25 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         InputStream inputStream = (InputStream) map.get("inputStream");
         Long printPlanId = tbTask.getPrintPlanId();
         Long schoolId = tbTask.getSchoolId();
-        if (!tbTaskService.countByPrintPlanIdAndEntityId(schoolId, printPlanId, null)) {
-            throw ExceptionResultEnum.ERROR.exception("当前印刷计划正在生成pdf文件,无法导入考务数据");
-        }
-        Long userId = tbTask.getCreateId();
         ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
-
         if (examPrintPlan == null) {
             throw ExceptionResultEnum.ERROR.exception("印刷计划不存在");
         }
 
+        String printPlanName = examPrintPlan.getName();
+        if (!tbTaskService.countByPrintPlanIdAndEntityId(schoolId, printPlanId, null)) {
+            throw ExceptionResultEnum.ERROR.exception("印刷计划[" + printPlanName + "]正在生成pdf文件,无法导入考务数据");
+        }
+        Long userId = tbTask.getCreateId();
+
         PrintPlanStatusEnum printPlanStatus = examPrintPlan.getStatus();
         if (PrintPlanStatusEnum.NEW != printPlanStatus && PrintPlanStatusEnum.READY != printPlanStatus) {
-            throw ExceptionResultEnum.ERROR.exception(printPlanStatus + "状态下的印刷计划不允许导入");
+            throw ExceptionResultEnum.ERROR.exception("印刷计划状态为[" + PrintPlanStatusEnum.NEW.getDesc() + "、" + PrintPlanStatusEnum.READY.getDesc() + "]时才可导入,当前状态[" + printPlanStatus.getDesc() + "]");
         }
 
-        String printPlanName = examPrintPlan.getName();
-
-        // 该学校有效考务数据
+        // 该学校有效考务规则字段
         List<FieldsDto> fieldsDtoList = examDetailService.findExaminationFields(schoolId);
-        if (fieldsDtoList.size() == 0) {
-            throw ExceptionResultEnum.ERROR.exception("该学校没有设置考务数据");
-        }
+
         String importFilePath = tbTask.getImportFilePath();
         Map importFilePathMap = JSONObject.parseObject(importFilePath);
         String path = String.valueOf(importFilePathMap.get(SystemConstant.PATH));
@@ -742,7 +736,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         } else if (path.endsWith(SystemConstant.XLS)) {
             workbook = new HSSFWorkbook(inputStream);
         } else {
-            throw ExceptionResultEnum.ERROR.exception("文件格式异常");
+            throw ExceptionResultEnum.ERROR.exception("不支持的文件格式。只允许上传后缀为" + SystemConstant.XLSX + "、" + SystemConstant.XLS + "的文件");
         }
         // 读取第一个工作表
         Sheet sheet = workbook.getSheetAt(0);
@@ -774,7 +768,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         // 搜索所有有效字段 excel中的表头是否包含
         for (FieldsDto fieldsDto : fieldsDtoList) {
             if (!headList.contains(fieldsDto.getName())) {
-                throw ExceptionResultEnum.ERROR.exception("学校考务必填字段 :'" + fieldsDto.getName() + "' 不存在");
+                throw ExceptionResultEnum.ERROR.exception("考务数据必填字段[" + fieldsDto.getName() + "]在表头中不存在");
             }
         }
         List<ExaminationImportDto> examinationImportDtoList = new ArrayList<>();
@@ -785,7 +779,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 continue;
             }
 
-            List<FieldsDto> secondaryFieldList = new ArrayList<>(); // 备选字段
+            // 备选字段
+            List<FieldsDto> secondaryFieldList = new ArrayList<>();
 
             ExaminationImportDto examinationImportDto = new ExaminationImportDto();
             Field[] examinationImportDtoFields = examinationImportDto.getClass().getDeclaredFields();
@@ -799,11 +794,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 if (Objects.nonNull(row)) {
                     Cell cell = row.getCell(index);
                     if (cell == null) {
-                        throw ExceptionResultEnum.ERROR.exception("excel中第[" + (r + 1) + "]行,第[" + (index + 1) + "]列,字段[" + name + "]必填");
+                        throw ExceptionResultEnum.ERROR.exception("第[" + (r + 1) + "]行,第[" + (index + 1) + "]列,字段[" + name + "]必填");
                     }
                     String cellValue = String.valueOf(ExcelUtil.convert(cell));
                     if (cellValue == null || cellValue.length() < 1 || cellValue.equals("null")) {
-                        throw ExceptionResultEnum.ERROR.exception("excel中第[" + (r + 1) + "]行,第[" + (index + 1) + "]列,字段[" + name + "]必填");
+                        throw ExceptionResultEnum.ERROR.exception("第[" + (r + 1) + "]行,第[" + (index + 1) + "]列,字段[" + name + "]必填");
                     }
 
                     for (Field examinationImportDtoField : examinationImportDtoFields) {
@@ -812,7 +807,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                             // 如果没有注解,说明该数据库必须字段不是从excel中获得的,直接跳过
                             continue;
                         }
-
                         // 如果数据库字段中文名和必填字段中文名称对应,则通过反射为数据库必选字段赋值
                         String dbName = excelDBFieldDesc.name();
                         int dbLength = excelDBFieldDesc.length();
@@ -838,10 +832,31 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 }
             }
             // 校验试卷编号
-            examTaskService.verifyCourseCodeByPaperNumber(schoolId, examPrintPlan.getExamId(), examinationImportDto.getPaperNumber(), examinationImportDto.getCourseCode());
+            Long examId = examPrintPlan.getExamId();
+            String paperNumber = examinationImportDto.getPaperNumber();
+            String courseCode = examinationImportDto.getCourseCode();
+            List<ExamTask> examTaskList = examTaskService.list(new QueryWrapper<ExamTask>().lambda()
+                    .eq(ExamTask::getSchoolId, schoolId)
+                    .eq(ExamTask::getExamId, examPrintPlan.getExamId())
+                    .eq(ExamTask::getPaperNumber, paperNumber));
+            if (examTaskList.size() > 1) {
+                BasicExam basicExam = basicExamService.getById(examId);
+                throw ExceptionResultEnum.ERROR.exception(String.format("试卷编号[%s]在考试[%s]下有多条命题任务", paperNumber, basicExam.getName()));
+            } else if (examTaskList.size() == 1) {
+                ExamTask examTask = examTaskList.get(0);
+                if (!courseCode.equals(examTask.getCourseCode())) {
+                    throw ExceptionResultEnum.ERROR.exception(String.format("文件中试卷编号[%s]对应课程代码为[%s],命题任务中对应课程代码为[%s]", paperNumber, courseCode, examTask.getCourseCode()));
+                }
+            }
 
             // 校验课程信息
-            basicCourseService.verifyCourseInfo(schoolId, examinationImportDto.getCourseCode(), examinationImportDto.getCourseName(), userId);
+            String courseName = examinationImportDto.getCourseName();
+            QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode);
+            BasicCourse tmp = basicCourseService.getOne(queryWrapper);
+            if (tmp != null && !courseName.equals(tmp.getName())) {
+                throw ExceptionResultEnum.ERROR.exception(String.format("文件中课程代码[%s]对应课程名称为[%s],课程管理中对应课程名称为[%s]", courseCode, courseName, tmp.getName()));
+            }
 
             // 解析时间
             Map<String, Object> timeMap = ConvertUtil.analyzeStartAndEndTime(examinationImportDto.getExamDate(), examinationImportDto.getExamTime());
@@ -858,8 +873,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         }
 
         // 按考点+开始时间+课程代码+考场排序
-        examinationImportDtoList.sort(
-                Comparator.comparing(ExaminationImportDto::getExamPlace)
+        examinationImportDtoList.sort(Comparator.comparing(ExaminationImportDto::getExamPlace)
                         .thenComparing(ExaminationImportDto::getExamStartTime)
                         .thenComparing(ExaminationImportDto::getCourseCode)
                         .thenComparing(ExaminationImportDto::getExamRoom)
@@ -1407,13 +1421,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     BeanUtils.copyProperties(basicStudentImportDto, basicStudentErrorExportDto);
 
 
-                    String studentName = basicStudentImportDto.getStudentName();
-                    String studentCode = basicStudentImportDto.getStudentCode();
-                    String phoneNumber = basicStudentImportDto.getPhoneNumber();
-                    String clazzName = basicStudentImportDto.getClazzName();
+                    String studentName = StringUtils.isNotBlank(basicStudentImportDto.getStudentName()) ? basicStudentImportDto.getStudentName().trim() : null;
+                    String studentCode = StringUtils.isNotBlank(basicStudentImportDto.getStudentCode()) ? basicStudentImportDto.getStudentCode().trim() : null;
+                    String phoneNumber = StringUtils.isNotBlank(basicStudentImportDto.getPhoneNumber()) ? basicStudentImportDto.getPhoneNumber().trim() : null;
                     studentCodeList.add(studentCode);
 
                     StringJoiner errorStringJoiner = new StringJoiner(";");
+                    // 必填字段校验
                     String errorStringEmpty = ExcelUtil.checkExcelField(basicStudentImportDto);
                     if (errorStringEmpty.length() > 0) {
                         errorStringJoiner.add(errorStringEmpty);
@@ -1422,7 +1436,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     // 检验学号
                     if (SystemConstant.strNotNull(studentCode)) {
                         if (checkCodeMap.containsKey(studentCode)) {
-                            errorStringJoiner.add("学号[" + studentCode + "]重复");
+                            errorStringJoiner.add("学号[" + studentCode + "]查询到多条数据");
                         } else {
                             checkCodeMap.put(studentCode, studentName);
                         }
@@ -1430,17 +1444,17 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     // 如果电话有值则检验电话excel中唯一性
                     if (SystemConstant.strNotNull(phoneNumber)) {
                         if (checkPhoneMap.containsKey(phoneNumber)) {
-                            errorStringJoiner.add("手机号[" + phoneNumber + "]重复");
+                            errorStringJoiner.add("手机号[" + phoneNumber + "]查询到多条数据");
                         } else {
                             checkPhoneMap.put(phoneNumber, studentCode);
                         }
                     }
 
-                    if (Objects.isNull(studentCode) || !studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
-                        errorStringJoiner.add("[学号]不符合规范");
+                    if (Objects.nonNull(studentCode) && !studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
+                        errorStringJoiner.add("学号[" + studentCode + "]不符合规范");
                     }
                     if (Objects.nonNull(phoneNumber) && !phoneNumber.matches(SystemConstant.REGULAR_EXPRESSION_OF_PHONE)) {
-                        errorStringJoiner.add("[手机号]不符合规范");
+                        errorStringJoiner.add("手机号[" + phoneNumber + "]不符合规范");
                     }
                     String errorString = errorStringJoiner.toString();
                     if (errorString.length() > 0) {

+ 55 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CodeUtils.java

@@ -0,0 +1,55 @@
+package com.qmth.distributed.print.business.util;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.distributed.print.business.service.BasicExamService;
+import com.qmth.teachcloud.common.entity.BasicExam;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * 生成编码、准考证号等工具类
+ */
+@Component
+public class CodeUtils {
+
+    Lock lock = new ReentrantLock();
+
+    @Resource
+    BasicExamService basicExamService;
+
+    /**
+     * 生成考试简码
+     *
+     * @param schoolId 学校ID
+     */
+    public String createBasicExamShortCode(Long schoolId) {
+        try {
+            lock.lock();
+            QueryWrapper<BasicExam> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(BasicExam::getSchoolId, schoolId);
+            List<BasicExam> basicExams = basicExamService.list(queryWrapper);
+            if (basicExams.isEmpty()) {
+                return "001";
+            } else {
+                Optional<BasicExam> max = basicExams.stream().filter(m -> StringUtils.isNotBlank(m.getShortCode())).max(Comparator.comparing(BasicExam::getShortCode));
+                if (!max.isPresent()) {
+                    return "001";
+                }
+                String maxShortCode = max.get().getShortCode();
+                int shortCode = StringUtils.isBlank(maxShortCode) ? 0 : Integer.parseInt(maxShortCode);
+                return String.format("%03d", shortCode + 1);
+            }
+        } catch (NumberFormatException e) {
+            throw new RuntimeException("生成考试编码失败");
+        } finally {
+            lock.unlock();
+        }
+    }
+}

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

@@ -99,3 +99,22 @@ ALTER TABLE `exam_task` ADD COLUMN `cancel_remark` MEDIUMTEXT NULL COMMENT '作
 
 -----------------------3.2.7 start 优化需求 2023-06-20----------------------
 ALTER TABLE `basic_card_rule` CHANGE COLUMN `name` `name` VARCHAR(100) NOT NULL COMMENT '题卡规则名称' ;
+ALTER TABLE `basic_exam` DROP COLUMN `in_used`;
+ALTER TABLE `basic_semester` DROP COLUMN `in_used`;
+
+UPDATE `sys_privilege` SET `related` = '620,621,622,623,49' WHERE (`id` = '614');
+DELETE FROM `sys_privilege` WHERE (`id` = '646');
+DELETE FROM `sys_privilege` WHERE (`id` = '645');
+
+ALTER TABLE `basic_major`
+    CHANGE COLUMN `belong_org_id` `belong_org_id` BIGINT NOT NULL COMMENT '所属机构id' AFTER `org_id`,
+DROP INDEX `major_schoolId_name_idx` ,
+ADD UNIQUE INDEX `major_schoolId_name_idx` USING BTREE (`school_id`, `name`, `belong_org_id`) VISIBLE;
+
+
+ALTER TABLE `basic_clazz`
+DROP INDEX `clazz_schoolId_name_idx` ,
+ADD UNIQUE INDEX `clazz_schoolId_name_idx` USING BTREE (`school_id`, `major_id`, `clazz_name`) VISIBLE;
+
+
+

+ 3 - 3
distributed-print-business/src/main/resources/mapper/BasicExamMapper.xml

@@ -23,11 +23,11 @@
             a.id,
             a.school_id schoolId,
             a.semester_id semesterId,
-            b.NAME semesterName,
-            a.NAME,
+            b.name semesterName,
+            a.name,
             a.category,
             a.exam_model examModel,
-            a.ENABLE,
+            a.enable,
             a.create_id createId,
             a.create_time createTime,
             a.update_id updateId,

+ 0 - 11
distributed-print-business/src/main/resources/mapper/BasicTemplateOrgMapper.xml

@@ -16,17 +16,6 @@
         ,
         type, rule_id, org_id
     </sql>
-
-    <select id="listByTypeAndTemplateId" resultType="com.qmth.teachcloud.common.entity.SysOrg">
-        SELECT a.id,
-               a.code,
-               a.name
-        FROM sys_org a
-                 JOIN
-             basic_template_org b ON a.id = b.org_id AND b.type = #{type}
-        WHERE b.rule_id = #{templateId}
-    </select>
-
     <select id="templateListByOrgIds"
             resultType="com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult">
         SELECT

+ 0 - 86
distributed-print-business/src/main/resources/mapper/ExamCardMapper.xml

@@ -31,66 +31,6 @@
         id,
         school_id,org_id, course_code, course_name, title, make_method, status, create_id, create_time, update_id, update_time, type, create_method, attachment_id, sync_status, enable, used, remark, card_rule_id
     </sql>
-    <select id="listCardCust" resultType="com.qmth.distributed.print.business.bean.dto.CardCustDto">
-        SELECT
-            c.id examTaskId,
-            a.id cardId,
-            c.card_rule_id cardRuleId,
-            a.course_code courseCode,
-            a.course_name courseName,
-            a.status,
-            c.paper_number paperNumber,
-            d.school_id schoolId,
-            e.name schoolName,
-            d.org_id orgId,
-            f.name orgName,
-            a.create_id createId,
-            a.create_time createTime,
-            g.real_name createName,
-            a.update_time updateTime
-        FROM
-            exam_card a
-                LEFT JOIN
-            exam_task_detail b ON FIND_IN_SET(a.id, REPLACE(REPLACE(substring_index(substring_index(CONVERT((b.paper_attachment_ids ->>'$[*].cardId') USING utf8), ']', 1), '[',-1),' "','"'),'"',''))
-                LEFT JOIN
-            exam_task c ON b.exam_task_id = c.id
-                LEFT JOIN
-            sys_user d ON c.user_id = d.id
-                LEFT JOIN
-            basic_school e ON d.school_id = e.id
-                LEFT JOIN
-            sys_org f ON d.org_id = f.id
-                LEFT JOIN
-            sys_user g ON a.create_id = g.id
-        <where>
-            a.make_method = 'CUST'
-            <if test="schoolId != null and schoolId != ''">
-                and a.school_id = #{schoolId}
-            </if>
-            <if test="status != null and status != ''">
-                and a.status = #{status}
-            </if>
-            <if test="paperNumber != null and paperNumber != ''">
-                and c.paper_number = #{paperNumber}
-            </if>
-            <if test="userId != null and userId != ''">
-                and a.create_id = #{userId}
-            </if>
-            <if test="applyStartTime != null and applyStartTime != ''">
-                and a.create_time &gt; #{applyStartTime}
-            </if>
-            <if test="applyEndTime != null and applyEndTime != ''">
-                and a.create_time &lt; #{applyEndTime}
-            </if>
-            <if test="finishStartTime != null and finishStartTime != ''">
-                and a.update_time &gt; #{finishStartTime}
-            </if>
-            <if test="finishEndTime != null and finishEndTime != ''">
-                and a.update_time &lt; #{finishEndTime}
-            </if>
-        </where>
-        order by a.create_time desc
-    </select>
     <select id="getCardDetail" resultType="com.qmth.distributed.print.business.bean.dto.CardDetailDto">
         SELECT
             a.id cardId,
@@ -153,32 +93,6 @@
             exam_card_detail b ON a.id = b.card_id
         where a.id = #{cardId}
     </select>
-    <select id="listSyncCardByCourseCodeAndPaperNumber"
-            resultType="com.qmth.distributed.print.business.bean.dto.SyncExamCardDto">
-        SELECT
-            c.id,
-            a.school_id schoolId,
-            a.course_code courseCode,
-            a.paper_number paperNumber,
-            a.sequence,
-            c.title,
-            d.content
-        FROM
-            exam_task a
-                left JOIN
-            exam_task_detail b ON a.id = b.exam_task_id
-                JOIN
-            exam_card c ON FIND_IN_SET(c.id, REPLACE(REPLACE(substring_index(substring_index(CONVERT((b.paper_attachment_ids ->>'$[*].cardId') USING utf8), ']', 1), '[',-1),' "','"'),'"',''))
-                left JOIN
-            exam_card_detail d ON c.id = d.card_id
-        WHERE
-            a.school_id = #{schoolId}
-                AND a.course_code = #{courseCode}
-                AND a.paper_number = #{paperNumber}
-                AND c.status = 'SUBMIT'
-                AND (c.make_method != 'SELECT'
-                    or (c.make_method != 'SELECT' and c.type = 'GENERIC' and c.create_method != 'UPLOAD'))
-    </select>
     <select id="listPage" resultType="com.qmth.distributed.print.business.bean.dto.ExamCardPageDto">
         select
             ec.id id,

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

@@ -723,16 +723,6 @@
             </if>
         </where>
     </select>
-    <select id="listExamTaskByCardId" resultMap="BaseResultMap">
-        SELECT
-            a.*
-        FROM
-            exam_task a
-                LEFT JOIN
-            exam_task_detail b ON a.id = b.exam_task_id
-        WHERE
-            FIND_IN_SET(#{cardId}, REPLACE(REPLACE(substring_index(substring_index(CONVERT((b.paper_attachment_ids ->>'$[*].cardId') USING utf8), ']', 1), '[',-1),' "','"'),'"',''))
-    </select>
     <select id="listReviewSampleInfoByExamTaskId"
             resultType="com.qmth.distributed.print.business.bean.dto.ReviewSampleDto">
         SELECT

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

@@ -69,7 +69,7 @@ public class BasicClazzController {
         return ResultUtil.ok(basicClazzService.saveBasicClazz(basicClazzParams, sysUser));
     }
 
-    @ApiOperation(value = "班级基本信息管理-批量删除(逻辑)")
+    @ApiOperation(value = "班级基本信息管理-批量删除")
     @RequestMapping(value = "/delete_batch", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)

+ 3 - 18
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicExamController.java

@@ -53,16 +53,13 @@ public class BasicExamController {
 
     /**
      * 模糊查询
-     *
-     * @param inUsed 1:只查询当前使用的学期  0:只查询不是当前使用的学期  null:查询所有
      */
     @ApiOperation(value = "考试模糊查询")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result query(@RequestParam(value = "semesterId", required = false) Long semesterId,
-                        @RequestParam(value = "examModels", required = false) List<ExamModelEnum> examModels,
-                        @RequestParam(value = "inUsed", required = false) Boolean inUsed) {
-        return ResultUtil.ok(basicExamService.query(semesterId, examModels, inUsed));
+                        @RequestParam(value = "examModels", required = false) List<ExamModelEnum> examModels) {
+        return ResultUtil.ok(basicExamService.query(semesterId, examModels));
     }
 
     /**
@@ -101,7 +98,7 @@ public class BasicExamController {
      *
      * @param id 考试ID
      */
-    @ApiOperation(value = "考试管理-删除(逻辑)")
+    @ApiOperation(value = "考试管理-删除")
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
@@ -109,16 +106,4 @@ public class BasicExamController {
         return ResultUtil.ok(basicExamService.deleteBasicExamById(SystemConstant.convertIdToLong(id)));
     }
 
-    /**
-     * 设置为当前使用考试
-     *
-     * @param id 考试ID
-     */
-    @ApiOperation(value = "考试管理-设置为当前使用考试")
-    @RequestMapping(value = "/set_in_used", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = EditResult.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
-    public Result saveBasicExam(@RequestParam("id") Long id) {
-        return ResultUtil.ok(basicExamService.setInUsed(id));
-    }
 }

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

@@ -61,7 +61,7 @@ public class BasicMajorController {
         return ResultUtil.ok(basicMajorService.saveBasicMajor(basicMajorParams,sysUser));
     }
 
-    @ApiOperation(value = "专业管理-删除(逻辑)")
+    @ApiOperation(value = "专业管理-删除")
     @RequestMapping(value = "/delete", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)

+ 11 - 37
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicPrintConfigController.java

@@ -28,7 +28,7 @@ import java.util.List;
  * @author xf
  * @since 2022-02-10
  */
-@Api(tags = "印品配置Controller")
+@Api(tags = "印品管理Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_BASIC + "/print_config")
 @Validated
@@ -38,16 +38,17 @@ public class BasicPrintConfigController {
     private BasicPrintConfigService basicPrintConfigService;
 
     /**
-     *  分页查询
-     * @param enable 启用/禁用
+     * 分页查询
+     *
+     * @param enable          启用/禁用
      * @param createStartTime 创建开始时间
-     * @param createEndTime 创建结束时间
-     * @param pageNumber 分页页码
-     * @param pageSize 分页数量
+     * @param createEndTime   创建结束时间
+     * @param pageNumber      分页页码
+     * @param pageSize        分页数量
      */
     @ApiOperation(value = "分页查询")
     @RequestMapping(value = "/page", method = RequestMethod.POST)
-    public Result list(@RequestParam(value = "examId", required = false) Long examId,
+    public Result list(@RequestParam(value = "examId") Long examId,
                        @RequestParam(value = "enable", required = false) Boolean enable,
                        @RequestParam(value = "createStartTime", required = false) Long createStartTime,
                        @RequestParam(value = "createEndTime", required = false) Long createEndTime,
@@ -66,13 +67,11 @@ public class BasicPrintConfigController {
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
     public Result save(@RequestBody BasicPrintConfig basicPrintConfig) {
-        boolean isSuccess = basicPrintConfigService.savePrintConfig(basicPrintConfig);
-        return ResultUtil.ok(isSuccess);
+        return ResultUtil.ok(basicPrintConfigService.savePrintConfig(basicPrintConfig));
     }
 
     /**
      * 启用/禁用
-     *
      */
     @ApiOperation(value = "启用/禁用")
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
@@ -83,40 +82,15 @@ public class BasicPrintConfigController {
         return ResultUtil.ok(isSuccess);
     }
 
-    /**
-     *
-     * @param idList 印品配置ID
-     */
-    @ApiOperation(value = "删除")
-    @RequestMapping(value = "/delete_batch", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
-    public Result delete(@RequestParam(value = "idList", required = false) List<Long> idList) {
-        boolean isSuccess = basicPrintConfigService.delete(idList);
-        return ResultUtil.ok(isSuccess);
-    }
-
     /**
      * 启用/禁用
-     *
      */
     @ApiOperation(value = "查询orgId印品")
     @RequestMapping(value = "/get_by_exam_id_and_org_id", method = RequestMethod.POST)
-    public Result getByOrgId(@RequestParam(value = "examId") Long examId,
-                             @RequestParam(value = "orgId") Long orgId) {
-        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndOrgId(examId, orgId);
+    public Result getByOrgId(@RequestParam(value = "examId") Long examId) {
+        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndOrgId(examId);
         return ResultUtil.ok(basicPrintConfig);
     }
 
-    /**
-     *  查询考试下设置印品的机构集合
-     * @param examId 考试ID
-     */
-    @ApiOperation(value = "查询考试下设置印品的机构集合")
-    @RequestMapping(value = "/list_org_id_by_exam_id", method = RequestMethod.POST)
-    public Result listOrgIdsByExamId(@RequestParam(value = "id", required = false) Long id,
-                             @RequestParam(value = "examId") Long examId) {
-        List<String> orgIds = basicPrintConfigService.listOrgIdsByExamId(id, examId);
-        return ResultUtil.ok(orgIds);
-    }
 }
 

+ 7 - 9
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicSemesterController.java

@@ -4,21 +4,19 @@ package com.qmth.distributed.print.api;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.bean.params.BasicSemesterParams;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicSemester;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.service.BasicSemesterService;
-import com.qmth.teachcloud.common.bean.params.BasicSemesterParams;
-import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
-import org.apache.xmlbeans.impl.jam.xml.TunnelledException;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import javax.swing.border.EmptyBorder;
 import javax.validation.Valid;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
@@ -44,21 +42,20 @@ public class BasicSemesterController {
     public Result findBasicSemesterList(@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(ServletUtil.getRequestHeaderSchoolId().toString());
-        return ResultUtil.ok(basicSemesterService.basicSemesterPage(schoolId,pageNumber,pageSize));
+        return ResultUtil.ok(basicSemesterService.basicSemesterPage(schoolId, pageNumber, pageSize));
     }
 
     /**
      * 模糊查询
-     * @param inUsed 1:只查询当前使用的学期  0:只查询不是当前使用的学期  null:查询所有
+     *
      * @return
      */
     @ApiOperation(value = "学期模糊查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
-    public Result list(@RequestParam(value = "inUsed", required = false) Boolean inUsed,
-                       @RequestParam(value = "enable", required = false, defaultValue = "1") Boolean enable) {
+    public Result list(@RequestParam(value = "enable", required = false, defaultValue = "1") Boolean enable) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
-        return ResultUtil.ok(basicSemesterService.list(schoolId, inUsed, enable));
+        return ResultUtil.ok(basicSemesterService.list(schoolId, enable));
     }
 
     @ApiOperation(value = "学期管理-新增/编辑")
@@ -82,6 +79,7 @@ public class BasicSemesterController {
 
     /**
      * 启用/禁用
+     *
      * @param basicSemester
      * @return
      */

+ 11 - 19
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicStudentController.java

@@ -43,7 +43,6 @@ import java.util.stream.Collectors;
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_BASIC + "/student")
 @Validated
-//@Aac(strict = BOOL.FALSE, auth = BOOL.FALSE)
 public class BasicStudentController {
     @Resource
     private BasicStudentService basicStudentService;
@@ -52,25 +51,19 @@ public class BasicStudentController {
     @Resource
     private AsyncStudentDataImportService asyncStudentDataImportService;
 
-    @ApiOperation(value = "学生基本信息管理-查询")
+    @ApiOperation(value = "学生管理-查询")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result findBasicStudentList(@ApiParam(value = "查询参数(学生学号或姓名)") @RequestParam(required = false) String queryParams,
-                                       @ApiParam(value = "学院主键") @RequestParam(required = false) String collegeId,
-                                       @ApiParam(value = "专业主键") @RequestParam(required = false) String majorId,
-                                       @ApiParam(value = "班级主键") @RequestParam(required = false) String clazzId,
+                                       @ApiParam(value = "学院主键") @RequestParam(required = false) Long collegeId,
+                                       @ApiParam(value = "专业主键") @RequestParam(required = false) Long majorId,
+                                       @ApiParam(value = "班级主键") @RequestParam(required = false) Long clazzId,
                                        @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) {
-        Set<Long> clazzIdSet = new HashSet<>();
-        if (SystemConstant.strNotNull(clazzId)) {
-            clazzIdSet.add(SystemConstant.convertIdToLong(clazzId));
-        } else {
-            clazzIdSet = null;
-        }
-        return ResultUtil.ok(basicStudentService.basicStudentPage(queryParams, SystemConstant.convertIdToLong(collegeId), SystemConstant.convertIdToLong(majorId), clazzIdSet, pageNumber, pageSize));
+        return ResultUtil.ok(basicStudentService.basicStudentPage(queryParams, collegeId, majorId, clazzId, pageNumber, pageSize));
     }
 
-    @ApiOperation(value = "学生基本信息管理-新增/编辑")
+    @ApiOperation(value = "学生管理-新增/编辑")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
@@ -78,11 +71,10 @@ public class BasicStudentController {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(basicStudentService.saveBasicStudent(basicStudentParams, sysUser));
+        return ResultUtil.ok(basicStudentService.saveBasicStudent(basicStudentParams));
     }
 
-    @ApiOperation(value = "学生基本信息管理-批量删除(物理)")
+    @ApiOperation(value = "学生管理-批量删除")
     @RequestMapping(value = "/delete_batch", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
@@ -90,7 +82,7 @@ public class BasicStudentController {
         return ResultUtil.ok(basicStudentService.removeBasicStudentBatch(idList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList())));
     }
 
-    @ApiOperation(value = "学生基本信息管理-根据条件删除(物理)")
+    @ApiOperation(value = "学生管理-根据条件删除")
     @RequestMapping(value = "/delete_by_condition", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
@@ -110,7 +102,7 @@ public class BasicStudentController {
         return ResultUtil.ok(basicStudentService.removeBasicStudentByCondition(queryParams, SystemConstant.convertIdToLong(collegeId), SystemConstant.convertIdToLong(majorId), clazzIdSet));
     }
 
-    @ApiOperation(value = "学生基本信息管理-批量导入(异步)")
+    @ApiOperation(value = "学生管理-批量导入(异步)")
     @RequestMapping(value = "/data_import", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
@@ -124,7 +116,7 @@ public class BasicStudentController {
         return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
     }
 
-    @ApiOperation(value = "用户管理-导出")
+    @ApiOperation(value = "学生管理-导出")
     @RequestMapping(value = "/export", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EXPORT)

+ 11 - 13
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicTemplateController.java

@@ -24,13 +24,13 @@ import javax.validation.constraints.Min;
 
 /**
  * <p>
- * 通用模板 前端控制器
+ * 印品管理 前端控制器
  * </p>
  *
  * @author xf
  * @since 2021-03-23
  */
-@Api(tags = "通用模板Controller")
+@Api(tags = "印品管理Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_BASIC + "/template")
 @Validated
@@ -42,25 +42,23 @@ public class BasicTemplateController {
     /**
      * 查询
      *
-     * @param enable
-     * @param type
-     * @param name
-     * @param startTime
-     * @param endTime
-     * @param pageNumber
-     * @param pageSize
+     * @param enable     启用/禁用
+     * @param name       模板名称
+     * @param startTime  创建时间(开始)
+     * @param endTime    创建时间(结束)
+     * @param pageNumber 分页
+     * @param pageSize   分页
      * @return
      */
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     public Result list(@RequestParam(value = "enable", required = false) Boolean enable,
-                       @RequestParam(value = "type", required = false) String type,
                        @RequestParam(value = "name", required = false) String name,
                        @RequestParam(value = "startTime", required = false) Long startTime,
                        @RequestParam(value = "endTime", required = false) Long endTime,
                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<TemplateDto> templateDtoIPage = basicTemplateService.list(enable, type, name, startTime, endTime, pageNumber, pageSize);
+        IPage<TemplateDto> templateDtoIPage = basicTemplateService.list(enable, name, startTime, endTime, pageNumber, pageSize);
         return ResultUtil.ok(templateDtoIPage);
     }
 
@@ -68,7 +66,7 @@ public class BasicTemplateController {
     /**
      * 根据ID查询单个信息
      *
-     * @param id
+     * @param id ID
      * @return
      */
     @ApiOperation(value = "根据ID查询单个信息")
@@ -115,7 +113,7 @@ public class BasicTemplateController {
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/remove", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
-    public Result enable(@RequestParam(value = "id", required = true) Long id) {
+    public Result enable(@RequestParam(value = "id") Long id) {
         return ResultUtil.ok(basicTemplateService.remove(id));
     }
 

+ 4 - 64
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamCardController.java

@@ -3,7 +3,6 @@ package com.qmth.distributed.print.api;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.constant.ApiConstant;
-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.ExamCardPageDto;
 import com.qmth.distributed.print.business.bean.params.ExamCardParams;
@@ -12,14 +11,12 @@ 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.teachcloud.common.annotation.OperationLogDetail;
-import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicPrintConfig;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -53,7 +50,7 @@ public class ExamCardController {
     //====================================通卡接口(start)===================================
 
     /**
-     * 题卡管理
+     * 题卡管理-分页查询
      *
      * @param cardType        题卡类型(通卡或专卡)
      * @param title           题卡名称模糊查询
@@ -102,8 +99,7 @@ public class ExamCardController {
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/delete_generic", method = RequestMethod.POST)
     public Result save(@RequestParam(value = "id") Long id) {
-        Boolean success = examCardService.deleteGeneric(id);
-        return ResultUtil.ok(success);
+        return ResultUtil.ok(examCardService.deleteGeneric(id));
     }
 
     //====================================通卡接口↑(end)===================================
@@ -120,50 +116,6 @@ public class ExamCardController {
         return ResultUtil.ok(cardId, "");
     }
 
-    /**
-     * 客服制卡申请
-     *
-     * @param examCardParams
-     * @return
-     */
-    @ApiOperation(value = "客服制卡申请")
-    @RequestMapping(value = "/cust_save", method = RequestMethod.POST)
-    public Result custSave(@RequestBody ExamCardParams examCardParams) {
-        String cardId = examCardService.saveExamCardCust(examCardParams);
-        return ResultUtil.ok(cardId, "");
-    }
-
-    /**
-     * 客服制卡审核查询
-     *
-     * @param schoolId
-     * @param status
-     * @param paperNumber
-     * @param userId
-     * @param applyStartTime
-     * @param applyEndTime
-     * @param finishStartTime
-     * @param finishEndTime
-     * @param pageNumber
-     * @param pageSize
-     * @return
-     */
-    @ApiOperation(value = "客服制卡审核查询")
-    @RequestMapping(value = "/cust_list", method = RequestMethod.POST)
-    public Result list(@RequestParam(value = "schoolId", required = false) String schoolId,
-                       @RequestParam(value = "status", required = false) String status,
-                       @RequestParam(value = "paperNumber", required = false) String paperNumber,
-                       @RequestParam(value = "userId", required = false) String userId,
-                       @RequestParam(value = "applyStartTime", required = false) Long applyStartTime,
-                       @RequestParam(value = "applyEndTime", required = false) Long applyEndTime,
-                       @RequestParam(value = "finishStartTime", required = false) Long finishStartTime,
-                       @RequestParam(value = "finishEndTime", required = false) Long finishEndTime,
-                       @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                       @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<CardCustDto> cardCustDtoIPage = examCardService.listCardCust(schoolId, status, paperNumber, userId, applyStartTime, applyEndTime, finishStartTime, finishEndTime, pageNumber, pageSize);
-        return ResultUtil.ok(cardCustDtoIPage);
-    }
-
     /**
      * 根据ID获取题卡详情
      *
@@ -192,18 +144,6 @@ public class ExamCardController {
         return ResultUtil.ok(list);
     }
 
-    /**
-     * 批量下载客服制卡文件
-     *
-     * @param response
-     * @param arraysParams
-     */
-    @ApiOperation(value = "批量下载文件")
-    @RequestMapping(value = "/download_files", method = RequestMethod.POST)
-    public void taskPaperDownload(HttpServletResponse response, @RequestBody ArraysParams arraysParams) throws Exception {
-        examCardService.downloadFiles(response, arraysParams);
-    }
-
     /**
      * 复制题卡
      *
@@ -218,7 +158,7 @@ public class ExamCardController {
     }
 
     /**
-     * 题卡转图片
+     * 生成图片
      *
      * @param id 题卡id
      */
@@ -230,7 +170,7 @@ public class ExamCardController {
     }
 
     /**
-     * 导出题卡pdf,html,json,jpg
+     * 下载(包含pdf,html,json,jpg)
      *
      * @param response
      * @param id       题卡ID

+ 2 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -895,11 +895,10 @@ public class ExamTaskController {
      */
     @ApiOperation(value = "卷库查询-发布印刷任务-查看考生")
     @RequestMapping(value = "/list_task_print_student", method = RequestMethod.POST)
-    public Result listTaskPrintStudent(@RequestParam(value = "classId") String classId,
+    public Result listTaskPrintStudent(@RequestParam(value = "classId") Long classId,
                                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        Set<Long> classIds = Arrays.stream(classId.split(",")).map(SystemConstant::convertIdToLong).collect(Collectors.toSet());
-        return ResultUtil.ok(basicStudentService.basicStudentPage(null, null, null, classIds, pageNumber, pageSize));
+        return ResultUtil.ok(basicStudentService.basicStudentPage(null, null, null, classId, pageNumber, pageSize));
     }
 
     /**

+ 7 - 19
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -654,29 +654,17 @@ public class SysController {
                     dictionaryResult.setId(e.getId());
                     dictionaryResult.setCode(e.getCode());
                     dictionaryResult.setName(e.getName());
-                    dictionaryResult.setInUsed(e.getInUsed());
                     return dictionaryResult;
                 }).collect(Collectors.toList());
                 break;
             case COLLEGE:
-                String privilegeId = ServletUtil.getCurrentPrivilegeId().toString();
-                if ("392".equals(privilegeId)) {
-                    List<SysOrg> sysOrgs = conditionService.listCollege();
-                    dictionaryResultList = sysOrgs.stream().map(e -> {
-                        DictionaryResult dictionaryResult = new DictionaryResult();
-                        dictionaryResult.setId(e.getId());
-                        dictionaryResult.setName(e.getName());
-                        return dictionaryResult;
-                    }).collect(Collectors.toList());
-                } else {
-                    List<BasicCollege> basicCollegeList = basicCollegeService.list(new QueryWrapper<BasicCollege>().lambda().eq(BasicCollege::getSchoolId, schoolId));
-                    dictionaryResultList = basicCollegeList.stream().map(e -> {
-                        DictionaryResult dictionaryResult = new DictionaryResult();
-                        dictionaryResult.setId(e.getId());
-                        dictionaryResult.setName(e.getCollegeName());
-                        return dictionaryResult;
-                    }).collect(Collectors.toList());
-                }
+                List<SysOrg> sysOrgs = conditionService.listCollege();
+                dictionaryResultList = sysOrgs.stream().map(e -> {
+                    DictionaryResult dictionaryResult = new DictionaryResult();
+                    dictionaryResult.setId(e.getId());
+                    dictionaryResult.setName(e.getName());
+                    return dictionaryResult;
+                }).collect(Collectors.toList());
                 break;
 //            case COLLEGE:
 //                if (Objects.nonNull(semesterId)) {

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

@@ -6,11 +6,13 @@ import com.qmth.distributed.print.business.service.PrintCommonService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 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.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
@@ -65,7 +67,8 @@ public class SysOrgController {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
-        return ResultUtil.ok(sysOrgService.saveOrg(org));
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        return ResultUtil.ok(sysOrgService.saveOrg(org, sysUser));
     }
 
     /**

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/excel/BasicStudentImportDto.java

@@ -25,12 +25,15 @@ public class BasicStudentImportDto implements Serializable {
     private String phoneNumber;
 
     @ExcelNote(value = "学院")
+    @NotNull
     private String collegeName;
 
     @ExcelNote(value = "专业")
+    @NotNull
     private String majorName;
 
     @ExcelNote(value = "班级")
+    @NotNull
     private String clazzName;
 
     public String getStudentName() {

+ 4 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/params/BasicStudentParams.java

@@ -28,10 +28,10 @@ public class BasicStudentParams {
     @DBVerify(value = "学生名称",required = true)
     private String studentName;
 
-    @ApiModelProperty(value = "学生学号")
-    @NotNull(message = "请输入学生学号")
-    @Length(min = 1,message = "请输入学生学号")
-    @DBVerify(value = "学生学号",required = true)
+    @ApiModelProperty(value = "学号")
+    @NotNull(message = "请输入学号")
+    @Length(min = 1,message = "请输入学号")
+    @DBVerify(value = "学号",required = true)
     private String studentCode;
 
     @ApiModelProperty(value = "手机号码")

+ 0 - 11
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/BasicSemesterResult.java

@@ -29,9 +29,6 @@ public class BasicSemesterResult {
     @ApiModelProperty(value = "是否启用")
     private Boolean enable;
 
-    @ApiModelProperty(value = "是否当前使用")
-    private Boolean inUsed;
-
     public Long getId() {
         return id;
     }
@@ -79,12 +76,4 @@ public class BasicSemesterResult {
     public void setEnable(Boolean enable) {
         this.enable = enable;
     }
-
-    public Boolean getInUsed() {
-        return inUsed;
-    }
-
-    public void setInUsed(Boolean inUsed) {
-        this.inUsed = inUsed;
-    }
 }

+ 0 - 12
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicExam.java

@@ -55,10 +55,6 @@ public class BasicExam extends BaseEntity implements Serializable {
     @TableField("enable")
     private Boolean enable;
 
-    @ApiModelProperty(value = "是否当前使用")
-    @TableField("in_used")
-    private Boolean inUsed;
-
     public Long getSchoolId() {
         return schoolId;
     }
@@ -122,12 +118,4 @@ public class BasicExam extends BaseEntity implements Serializable {
     public void setEnable(Boolean enable) {
         this.enable = enable;
     }
-
-    public Boolean getInUsed() {
-        return inUsed;
-    }
-
-    public void setInUsed(Boolean inUsed) {
-        this.inUsed = inUsed;
-    }
 }

+ 0 - 10
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicSemester.java

@@ -44,9 +44,6 @@ public class BasicSemester extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "是否启用,0:停用,1:启用")
     private Boolean enable;
 
-    @ApiModelProperty(value = "是否当前使用学期,0:否,1:是")
-    private Boolean inUsed;
-
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -107,11 +104,4 @@ public class BasicSemester extends BaseEntity implements Serializable {
         this.enable = enable;
     }
 
-    public Boolean getInUsed() {
-        return inUsed;
-    }
-
-    public void setInUsed(Boolean inUsed) {
-        this.inUsed = inUsed;
-    }
 }

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

@@ -31,7 +31,7 @@ public interface BasicStudentMapper extends BaseMapper<BasicStudent> {
                                                    @Param("schoolId") Long schoolId,
                                                    @Param("collegeId") Long collegeId,
                                                    @Param("majorId") Long majorId,
-                                                   @Param("clazzIdList") Set<Long> clazzIdList,
+                                                   @Param("clazzId") Long clazzId,
                                                    @Param("dpr") DataPermissionRule dpr);
 
     /**

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

@@ -26,16 +26,6 @@ public interface BasicCourseService extends IService<BasicCourse> {
 
     List<BasicCourse> listCoursesByUserId(Long userId);
 
-    /**
-     * 校验课程信息
-     *
-     * @param schoolId   学校id
-     * @param courseCode 课程代码
-     * @param courseName 课程名称
-     * @param userId     当前用户id
-     */
-    void verifyCourseInfo(Long schoolId, String courseCode, String courseName, Long userId);
-
     BasicCourse findByCourseCode(String courseCode);
 
     BasicCourse findByCourseCode(String courseCode, Long schoolId);

+ 2 - 11
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicSemesterService.java

@@ -2,9 +2,9 @@ package com.qmth.teachcloud.common.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.teachcloud.common.entity.BasicSemester;
 import com.qmth.teachcloud.common.bean.params.BasicSemesterParams;
 import com.qmth.teachcloud.common.bean.result.BasicSemesterResult;
+import com.qmth.teachcloud.common.entity.BasicSemester;
 import com.qmth.teachcloud.common.entity.SysUser;
 
 import java.util.List;
@@ -62,19 +62,10 @@ public interface BasicSemesterService extends IService<BasicSemester> {
      * 查询学期
      *
      * @param schoolId
-     * @param inUsed
      * @param enable
      * @return
      */
-    List<BasicSemester> list(Long schoolId, Boolean inUsed, Boolean enable);
-
-    /**
-     * 设置当前使用学期
-     *
-     * @param id
-     * @return
-     */
-    boolean setInUsed(Long id);
+    List<BasicSemester> list(Long schoolId, Boolean enable);
 
     BasicSemester selectByExamId(Long examId);
 

+ 3 - 12
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicStudentService.java

@@ -36,12 +36,12 @@ public interface BasicStudentService extends IService<BasicStudent> {
      * @param queryParams 查询参数(学生学号或姓名)
      * @param collegeId   校区主键
      * @param majorId     专业主键
-     * @param clazzIdList 班级主键集合
+     * @param clazzId     班级ID
      * @param pageNumber  分页页码
      * @param pageSize    分页容量
      * @return 分页结果
      */
-    IPage<BasicStudentResult> basicStudentPage(String queryParams, Long collegeId, Long majorId, Set<Long> clazzIdList, int pageNumber, int pageSize);
+    IPage<BasicStudentResult> basicStudentPage(String queryParams, Long collegeId, Long majorId, Long clazzId, int pageNumber, int pageSize);
 
     /**
      * 根据id查询基础学生数据
@@ -67,18 +67,9 @@ public interface BasicStudentService extends IService<BasicStudent> {
      * 新增/编辑 学生基础信息
      *
      * @param basicStudentParams 基础学生信息参数
-     * @param requestUser        新增或编辑的校区id
      * @return id
      */
-    Long saveBasicStudent(BasicStudentParams basicStudentParams, SysUser requestUser);
-
-    /**
-     * 批量新增或更新基础学生信息
-     *
-     * @param basicStudentParamsList 学生参数集合
-     * @param requestUser            请求人
-     */
-    void saveOrUpdateBasicStudentBatch(List<BasicStudentParams> basicStudentParamsList, SysUser requestUser);
+    Long saveBasicStudent(BasicStudentParams basicStudentParams);
 
     /**
      * 保存 - 基础学生信息和学生附加信息(院、专、班)

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -40,7 +40,7 @@ public interface SysOrgService extends IService<SysOrg> {
      */
     List<OrgDto> listOrgAll(Long schoolId);
 
-    boolean saveOrg(SysOrg org);
+    boolean saveOrg(SysOrg org, SysUser sysUser);
 
     boolean saveReportOrg(SysOrg org);
 

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

@@ -121,7 +121,7 @@ public interface TBTaskService extends IService<TBTask> {
      * @param entityIds
      * @return
      */
-    public boolean countByPrintPlanIdAndEntityId(Long schoolId, Long printPlanId, List<Long> entityIds);
+    boolean countByPrintPlanIdAndEntityId(Long schoolId, Long printPlanId, List<Long> entityIds);
 
     /**
      * 保存task

+ 0 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/TeachcloudCommonService.java

@@ -186,14 +186,6 @@ public interface TeachcloudCommonService {
      */
     public void downloadFileAndZip(HttpServletResponse response, String filePath, String zipRootPath, String zipFileName);
 
-    /**
-     * 下载文件到本地并压缩返回
-     *
-     * @param filePath 文件根目录
-     * @param time     zip文件名(时间戳)
-     */
-    public void downloadFileAndZip(HttpServletResponse response, String filePath, long time);
-
     /**
      * 根据orgId查询所有子机构ID集合
      *

+ 24 - 28
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicClazzServiceImpl.java

@@ -23,6 +23,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
@@ -55,7 +56,7 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         queryParams = SystemConstant.translateSpecificSign(queryParams);
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId,requestUser.getId(),ServletUtil.getRequest().getServletPath());
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
         return basicClazzMapper.findBasicClazzPage(new Page<>(pageNumber, pageSize), queryParams, schoolId, dpr);
     }
 
@@ -74,7 +75,7 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
     public Boolean removeBasicClazzBatch(List<Long> idList) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         if (idList.size() == 0) {
-            throw ExceptionResultEnum.ERROR.exception("请选择要删除的目标");
+            throw ExceptionResultEnum.ERROR.exception("请选择要删除的班级");
         }
         // 业务处理 - 判断'exam_task_print'表中是否已经选中该班级
         List<Map<Object, Object>> mapList = basicClazzMapper.findExamTaskPrintByClazzIdSet(schoolId, idList);
@@ -83,41 +84,35 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
             for (Map<Object, Object> map : mapList) {
                 clazzNames.append(map.get("clazzName")).append(",");
             }
-            throw ExceptionResultEnum.ERROR.exception("【班级】 : " + clazzNames.substring(0, clazzNames.length() - 1) + "生成了未结束的印刷任务,无法删除");
+            throw ExceptionResultEnum.ERROR.exception("班级[" + clazzNames.substring(0, clazzNames.length() - 1) + "]生成了未结束的印刷任务,无法删除");
         }
 
         // 异常处理
         String errorStudent = "";
         String errorCourse = "";
-        List<BasicStudent> basicStudentCheck = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getEnable, true).in(BasicStudent::getClazzId, idList));
-        if (basicStudentCheck.size() > 0) {
+        List<BasicStudent> basicStudentCheck = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().in(BasicStudent::getClazzId, idList));
+        if (!CollectionUtils.isEmpty(basicStudentCheck)) {
             Set<Long> ids = basicStudentCheck.stream().map(BasicStudent::getClazzId).collect(Collectors.toSet());
-            List<String> exStudentClazz = this.list(new QueryWrapper<BasicClazz>().lambda()
-                    .in(BasicClazz::getId, ids)).stream().map(BasicClazz::getClazzName).collect(Collectors.toList());
-            errorStudent = StringUtils.join(exStudentClazz, ',');
+            String studentClazzName = this.list(new QueryWrapper<BasicClazz>().lambda()
+                    .in(BasicClazz::getId, ids)).stream().map(BasicClazz::getClazzName).collect(Collectors.joining(","));
+            if (StringUtils.isNotBlank(studentClazzName)) {
+                throw ExceptionResultEnum.ERROR.exception("班级[" + errorStudent + "]绑定了学生,无法删除");
+            }
         }
 
         List<BasicUserCourse> basicUserCourseCheck = basicUserCourseService.list(new QueryWrapper<BasicUserCourse>().lambda()
-                .in(BasicUserCourse::getClazzId, idList)
-                .eq(BasicUserCourse::getEnable, true));
+                .in(BasicUserCourse::getClazzId, idList));
         if (basicUserCourseCheck.size() > 0) {
             Set<Long> ids = basicUserCourseCheck.stream().map(BasicUserCourse::getClazzId).collect(Collectors.toSet());
-            List<String> exUserCourseClazz = this.list(new QueryWrapper<BasicClazz>().lambda().in(BasicClazz::getId, ids)).stream().map(BasicClazz::getClazzName).collect(Collectors.toList());
-            errorCourse = StringUtils.join(exUserCourseClazz, ',');
-        }
-
-        if (SystemConstant.strNotNull(errorStudent) && SystemConstant.strNotNull(errorCourse)) {
-            throw ExceptionResultEnum.ERROR.exception("学生已绑定了要删除的【班级】 : " + errorStudent + ",课程已绑定了要删除的【班级】 : " + errorCourse);
-        } else if (SystemConstant.strNotNull(errorStudent) && !SystemConstant.strNotNull(errorCourse)) {
-            throw ExceptionResultEnum.ERROR.exception("学生已绑定了要删除的【班级】 : " + errorStudent);
-        } else if (SystemConstant.strNotNull(errorCourse) && !SystemConstant.strNotNull(errorCourse)) {
-            throw ExceptionResultEnum.ERROR.exception("课程已绑定了要删除的【班级】 : " + errorCourse);
+            String exUserCourseClazz = this.list(new QueryWrapper<BasicClazz>().lambda().in(BasicClazz::getId, ids)).stream().map(BasicClazz::getClazzName).collect(Collectors.joining(","));
+            if (StringUtils.isNotBlank(exUserCourseClazz)) {
+                throw ExceptionResultEnum.ERROR.exception("班级[" + errorStudent + "]绑定了课程,无法删除");
+            }
         }
 
         // 物理删除
         // 删除课程班级绑定关系
         basicUserCourseService.remove(new QueryWrapper<BasicUserCourse>().lambda()
-                .eq(BasicUserCourse::getEnable, false)
                 .in(BasicUserCourse::getClazzId, idList));
         return this.removeByIds(idList);
     }
@@ -175,16 +170,16 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
         // TODO: 2022/8/17 czx - 废弃方法
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId,requestUser.getId(),ServletUtil.getRequest().getServletPath());
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
         QueryWrapper<BasicClazz> basicClazzQueryWrapper = new QueryWrapper<>();
 
         basicClazzQueryWrapper.lambda().eq(BasicClazz::getEnable, true)
                 .eq(BasicClazz::getSchoolId, schoolId);
-        if (dpr.getOrgIdSet() != null && dpr.getOrgIdSet().size() > 0){
-            basicClazzQueryWrapper.lambda().in(BasicClazz::getOrgId,dpr.getOrgIdSet());
+        if (dpr.getOrgIdSet() != null && dpr.getOrgIdSet().size() > 0) {
+            basicClazzQueryWrapper.lambda().in(BasicClazz::getOrgId, dpr.getOrgIdSet());
         }
-        if (SystemConstant.longNotNull(dpr.getRequestUserId())){
-            basicClazzQueryWrapper.lambda().eq(BasicClazz::getCreateId,dpr.getRequestUserId());
+        if (SystemConstant.longNotNull(dpr.getRequestUserId())) {
+            basicClazzQueryWrapper.lambda().eq(BasicClazz::getCreateId, dpr.getRequestUserId());
         }
 
         return this.list(basicClazzQueryWrapper).stream()
@@ -217,16 +212,17 @@ public class BasicClazzServiceImpl extends ServiceImpl<BasicClazzMapper, BasicCl
 
             // 校验专业不存在
             if (Objects.isNull(basicMajorService.getById(majorId))) {
-                throw ExceptionResultEnum.ERROR.exception("所选专业不存在");
+                throw ExceptionResultEnum.ERROR.exception("专业不存在");
             }
 
             // 检验班级名称在学校的唯一性(字典班级在全校唯一)
             BasicClazz checkName = this.getOne(new QueryWrapper<BasicClazz>().lambda()
                     .eq(BasicClazz::getSchoolId, schoolId)
+                    .eq(BasicClazz::getMajorId, majorId)
                     .eq(BasicClazz::getClazzName, clazzName));
             if (Objects.nonNull(checkName)) {
                 if (!checkName.getId().equals(id)) {
-                    throw ExceptionResultEnum.ERROR.exception("班级名称【" + clazzName + "】重复");
+                    throw ExceptionResultEnum.ERROR.exception("班级名称[" + clazzName + "]重复");
                 }
             }
 

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

@@ -83,23 +83,6 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
         return this.baseMapper.listCoursesByUserId(userId);
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void verifyCourseInfo(Long schoolId, String courseCode, String courseName, Long userId) {
-        QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, courseCode).eq(BasicCourse::getEnable, true);
-
-        BasicCourse tmp = this.getOne(queryWrapper);
-        if (tmp != null) {
-            if (!courseName.equals(tmp.getName())) {
-                throw ExceptionResultEnum.ERROR
-                        .exception("课程代码和课程名称不匹配,课程代码为 :'" + courseCode + "',输入的课程名称 :'" + courseName + "',实际该代码对应的课程名称 :'" + tmp.getName() + "'。");
-            }
-        } else {
-            throw ExceptionResultEnum.ERROR.exception("考务文件中 【课程代码】为 :" + courseCode + ",【课程名称】为 : " + courseName + ",在基础课程信息中不存在,请先添加课程");
-        }
-    }
-
     @Deprecated
     @Override
     public BasicCourse findByCourseCode(String courseCode) {

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

@@ -1,7 +1,6 @@
 package com.qmth.teachcloud.common.service.impl;
 
 
-
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -50,16 +49,16 @@ public class BasicMajorServiceImpl extends ServiceImpl<BasicMajorMapper, BasicMa
     @Override
     public IPage<BasicMajorResult> basicMajorPage(Long schoolId, String majorName, int pageNumber, int pageSize) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId,requestUser.getId(),ServletUtil.getRequest().getServletPath());
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
 
         majorName = SystemConstant.translateSpecificSign(majorName);
-        return this.baseMapper.findBasicMajorPage(new Page<>(pageNumber, pageSize),schoolId,majorName,dpr);
+        return this.baseMapper.findBasicMajorPage(new Page<>(pageNumber, pageSize), schoolId, majorName, dpr);
     }
 
     @Transactional
     @Override
-    public Long saveBasicMajor(BasicMajorParams basicMajorParams,SysUser requestUser) throws IllegalAccessException {
-        SystemConstant.verifyDBFields(basicMajorParams,basicMajorParams.getClass());
+    public Long saveBasicMajor(BasicMajorParams basicMajorParams, SysUser requestUser) throws IllegalAccessException {
+        SystemConstant.verifyDBFields(basicMajorParams, basicMajorParams.getClass());
 
         Long id = basicMajorParams.getId();
         Long schoolId = requestUser.getSchoolId();
@@ -68,32 +67,33 @@ public class BasicMajorServiceImpl extends ServiceImpl<BasicMajorMapper, BasicMa
 
         // 校验专业唯一性(名称在学院下)
         BasicMajor checkName = this.getOne(new QueryWrapper<BasicMajor>().lambda()
-                .eq(BasicMajor::getEnable,true)
-                .eq(BasicMajor::getSchoolId,schoolId)
-                .eq(BasicMajor::getName,majorName));
-        if (Objects.nonNull(checkName) && !checkName.getId().equals(id)){
-            throw ExceptionResultEnum.ERROR.exception("专业名称【" + majorName + "】重复");
+                .eq(BasicMajor::getSchoolId, schoolId)
+                .eq(BasicMajor::getBelongOrgId, collegeId)
+                .eq(BasicMajor::getName, majorName));
+        if (Objects.nonNull(checkName) && !checkName.getId().equals(id)) {
+            throw ExceptionResultEnum.ERROR.exception("专业名称[" + majorName + "]重复");
         }
-        if (SystemConstant.longNotNull(id)){
+        if (SystemConstant.longNotNull(id)) {
             // 编辑
             BasicMajor old = this.getById(id);
-            if (Objects.isNull(old) || old.getEnable().equals(false)){
-                throw ExceptionResultEnum.ERROR.exception("所选专业不存在或被禁用");
+            if (Objects.isNull(old)) {
+                throw ExceptionResultEnum.ERROR.exception("所选专业不存在");
             }
             this.update(new UpdateWrapper<BasicMajor>().lambda()
-                    .eq(BasicMajor::getId,id)
-                    .set(BasicMajor::getName,majorName)
-                    .set(BasicMajor::getBelongOrgId,collegeId)
-                    .set(BasicMajor::getUpdateId,requestUser.getId()));
+                    .eq(BasicMajor::getId, id)
+                    .set(BasicMajor::getName, majorName)
+                    .set(BasicMajor::getBelongOrgId, collegeId)
+                    .set(BasicMajor::getEnable, true)
+                    .set(BasicMajor::getUpdateId, requestUser.getId()));
 
             // 如果更新了专业所属学院则更新学生级联关系
-            if (!collegeId.equals(old.getBelongOrgId())){
-                List<BasicStudent> basicStudentList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getMajorId,id));
+            if (!collegeId.equals(old.getBelongOrgId())) {
+                List<BasicStudent> basicStudentList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getMajorId, id));
                 basicStudentList.forEach(e -> e.setBelongOrgId(collegeId));
                 basicStudentService.updateBatchById(basicStudentList);
             }
 
-        }else {
+        } else {
             // 新增
             id = SystemConstant.getDbUuid();
             BasicMajor basicMajor = new BasicMajor();
@@ -114,24 +114,24 @@ public class BasicMajorServiceImpl extends ServiceImpl<BasicMajorMapper, BasicMa
     @Override
     public boolean deleteBasicMajorByIdList(List<Long> idList) {
         // 判断班级
-        List<BasicClazz> basicClazzList = basicClazzService.list(new QueryWrapper<BasicClazz>().lambda().in(BasicClazz::getMajorId,idList));
-        if (basicClazzList.size() > 0){
+        List<BasicClazz> basicClazzList = basicClazzService.list(new QueryWrapper<BasicClazz>().lambda().in(BasicClazz::getMajorId, idList));
+        if (basicClazzList.size() > 0) {
             List<Long> majorIdList = basicClazzList.stream().map(BasicClazz::getMajorId).distinct().collect(Collectors.toList());
-            String majorNames = this.list(new QueryWrapper<BasicMajor>().lambda().in(BasicMajor::getId,majorIdList))
+            String majorNames = this.list(new QueryWrapper<BasicMajor>().lambda().in(BasicMajor::getId, majorIdList))
                     .stream()
                     .map(BasicMajor::getName)
                     .collect(Collectors.joining(","));
-            throw ExceptionResultEnum.ERROR.exception("专业【" + majorNames + "】被班级绑定,无法优先删除");
+            throw ExceptionResultEnum.ERROR.exception("专业[" + majorNames + "]绑定了班级,无法删除");
         }
         // 判断学生
-        List<BasicStudent> basicStudentList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().in(BasicStudent::getMajorId,idList));
-        if (basicStudentList.size() > 0){
+        List<BasicStudent> basicStudentList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().in(BasicStudent::getMajorId, idList));
+        if (basicStudentList.size() > 0) {
             List<Long> majorIdList = basicStudentList.stream().map(BasicStudent::getMajorId).distinct().collect(Collectors.toList());
-            String majorNames = this.list(new QueryWrapper<BasicMajor>().lambda().in(BasicMajor::getId,majorIdList))
+            String majorNames = this.list(new QueryWrapper<BasicMajor>().lambda().in(BasicMajor::getId, majorIdList))
                     .stream()
                     .map(BasicMajor::getName)
                     .collect(Collectors.joining(","));
-            throw ExceptionResultEnum.ERROR.exception("专业【" + majorNames + "】被学生绑定,无法优先删除");
+            throw ExceptionResultEnum.ERROR.exception("专业[" + majorNames + "]绑定了学生,无法删除");
         }
         return this.removeByIds(idList);
     }

+ 7 - 43
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicSemesterServiceImpl.java

@@ -79,18 +79,14 @@ public class BasicSemesterServiceImpl extends ServiceImpl<BasicSemesterMapper, B
                 // 如果是开放接口(分布式印刷推学期给教研分析),就算没有教研分析学期id,只要名称一致就视为编辑
                 id = checkName.getId();
             } else {
-                throw ExceptionResultEnum.ERROR.exception("学期名称【" + semesterName + "】重复");
+                throw ExceptionResultEnum.ERROR.exception("学期名称[" + semesterName + "]已使用");
             }
         }
         if (SystemConstant.longNotNull(id)) {
             // 编辑
-            BasicSemester old = this.getById(id);
-            if (Objects.isNull(old) || old.getEnable().equals(false)) {
-                throw ExceptionResultEnum.ERROR.exception("所选学期不存在或被禁用");
-            }
             UpdateWrapper<BasicSemester> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().eq(BasicSemester::getId, id)
-                    .set(BasicSemester::getName, semesterName);
+            updateWrapper.lambda().set(BasicSemester::getName, semesterName)
+                    .eq(BasicSemester::getId, id);
             if (SystemConstant.longNotNull(userId)) {
                 updateWrapper.lambda().set(BasicSemester::getUpdateId, userId);
             }
@@ -108,11 +104,6 @@ public class BasicSemesterServiceImpl extends ServiceImpl<BasicSemesterMapper, B
             if (SystemConstant.longNotNull(userId)) {
                 basicSemester.setCreateId(userId);
             }
-            QueryWrapper<BasicSemester> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(BasicSemester::getSchoolId, schoolId);
-            List<BasicSemester> basicSemesters = this.list(queryWrapper);
-
-            basicSemester.setInUsed(basicSemesters == null || basicSemesters.size() == 0);
             this.save(basicSemester);
         }
         return id;
@@ -121,49 +112,22 @@ public class BasicSemesterServiceImpl extends ServiceImpl<BasicSemesterMapper, B
     @Transactional
     @Override
     public boolean deleteBasicSemesterById(Long id) {
-        if (SystemConstant.longNotNull(id)) {
-            if (this.baseMapper.countBasicExamBySemesterId(id) > 0) {
-                throw ExceptionResultEnum.ERROR.exception("所选学期中包含考试 不能被删除");
-            }
-            return this.removeById(id);
-        } else {
-            return true;
+        if (this.baseMapper.countBasicExamBySemesterId(id) > 0) {
+            throw ExceptionResultEnum.ERROR.exception("学期下已创建考试,不能删除");
         }
+        return this.removeById(id);
     }
 
     @Override
-    public List<BasicSemester> list(Long schoolId, Boolean inUsed, Boolean enable) {
-        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-
+    public List<BasicSemester> list(Long schoolId, Boolean enable) {
         QueryWrapper<BasicSemester> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicSemester::getSchoolId, schoolId).eq(BasicSemester::getEnable, true);
-        if (Objects.nonNull(inUsed)) {
-            queryWrapper.lambda().eq(BasicSemester::getInUsed, inUsed);
-        }
         if (Objects.nonNull(enable)) {
             queryWrapper.lambda().eq(BasicSemester::getEnable, true);
         }
         return this.list(queryWrapper);
     }
 
-    @Transactional
-    @Override
-    public boolean setInUsed(Long id) {
-        BasicSemester semester = this.getById(id);
-        // 只能设置一个当前使用学期
-        if (!semester.getInUsed()) {
-            QueryWrapper<BasicSemester> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(BasicSemester::getSchoolId, semester.getSchoolId());
-            List<BasicSemester> list = this.list(queryWrapper);
-            if (!CollectionUtils.isEmpty(list)) {
-                list = list.stream().peek(m -> m.setInUsed(false)).collect(Collectors.toList());
-                this.updateBatchById(list);
-            }
-        }
-        semester.setInUsed(!semester.getInUsed());
-        return this.updateById(semester);
-    }
-
     @Override
     public BasicSemester selectByExamId(Long examId) {
         return this.baseMapper.selectByExamId(examId);

+ 122 - 238
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java

@@ -18,17 +18,20 @@ import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.TeachBasicEnum;
+import com.qmth.teachcloud.common.enums.paperGroup.MarkModeEnum;
 import com.qmth.teachcloud.common.mapper.BasicStudentMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.LinkedMultiValueMap;
+import sun.swing.StringUIClientPropertyKey;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
@@ -54,17 +57,20 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
     private BasicMajorService basicMajorService;
     @Resource
     private BasicCollegeService basicCollegeService;
+
+    @Resource
+    private SysOrgService sysOrgService;
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
 
     @Override
-    public IPage<BasicStudentResult> basicStudentPage(String queryParams, Long collegeId, Long majorId, Set<Long> clazzIdList, int pageNumber, int pageSize) {
+    public IPage<BasicStudentResult> basicStudentPage(String queryParams, Long collegeId, Long majorId, Long clazzId, int pageNumber, int pageSize) {
         Long schoolId = SystemConstant.convertIdToLong(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
         queryParams = SystemConstant.translateSpecificSign(queryParams);
-        return basicStudentMapper.findBasicStudentPage(new Page<>(pageNumber, pageSize), queryParams, schoolId, collegeId, majorId, clazzIdList, dpr);
+        return basicStudentMapper.findBasicStudentPage(new Page<>(pageNumber, pageSize), queryParams, schoolId, collegeId, majorId, clazzId, dpr);
     }
 
     @Override
@@ -100,30 +106,27 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public Long saveBasicStudent(BasicStudentParams basicStudentParams, SysUser requestUser) {
-        List<BasicStudentParams> basicStudentParamsList = new ArrayList<>();
-        basicStudentParamsList.add(basicStudentParams);
-        BasicStudent basicStudent = this.editEntityHelp(basicStudentParamsList, requestUser).get(0);
+    public Long saveBasicStudent(BasicStudentParams basicStudentParams) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        BasicStudent basicStudent = this.editEntityHelp(basicStudentParams, sysUser);
         this.saveOrUpdate(basicStudent);
         return basicStudent.getId();
     }
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void saveOrUpdateBasicStudentBatch(List<BasicStudentParams> basicStudentParamsList, SysUser requestUser) {
-        this.saveOrUpdateBatch(this.editEntityHelp(basicStudentParamsList, requestUser));
-    }
-
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void saveBasicStudentWithExtrasList(List<BasicStudentExtrasParam> basicStudentExtrasParamList, SysUser requestUser, boolean saveBasicStudent) throws IllegalAccessException {
         Long schoolId = requestUser.getSchoolId();
-        // key = collegeName
-        Map<String, Long> collegeMap = new HashMap<>();
-        // key = schoolId + "-" + majorName
-        Map<String, Long> majorMap = new HashMap<>();
-        // key = schoolId + "-" + clazzName
-        Map<String, Long> clazzMap = new HashMap<>();
+
+        // 查询所有学院map
+        List<SysOrg> sysOrgList = sysOrgService.findCollegeLevelOrgList(schoolId);
+        Map<String, Long> collegeMap = CollectionUtils.isEmpty(sysOrgList) ? new HashMap<>() : sysOrgList.stream().collect(Collectors.toMap(SysOrg::getName, SysOrg::getId));
+        // 查询所有专业map
+        List<BasicMajor> basicMajorList = basicMajorService.list(new QueryWrapper<BasicMajor>().lambda().eq(BasicMajor::getSchoolId, schoolId));
+        Map<String, Long> majorMap = CollectionUtils.isEmpty(basicMajorList) ? new HashMap<>() : basicMajorList.stream().collect(Collectors.toMap(k -> k.getOrgId() + SystemConstant.HYPHEN + k.getName(), v -> v.getId()));
+        // 查询所有班级map
+        List<BasicClazz> basicClazzList = basicClazzService.list(new QueryWrapper<BasicClazz>().lambda().eq(BasicClazz::getSchoolId, schoolId));
+        Map<String, Long> clazzMap = CollectionUtils.isEmpty(basicClazzList) ? new HashMap<>() : basicClazzList.stream().collect(Collectors.toMap(k -> k.getMajorId() + SystemConstant.HYPHEN + k.getClazzName(), v -> v.getId()));
 
         List<BasicStudentParams> addBasicStudentParamsList = new ArrayList<>();
         for (BasicStudentExtrasParam basicStudentExtrasParam : basicStudentExtrasParamList) {
@@ -136,113 +139,78 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
             String clazzName = basicStudentExtrasParam.getClazzName();
 
             // 学院
-            Long collegeId = null;
-            if (SystemConstant.strNotNull(collegeName)) {
-                BasicCollege basicCollege;
-                if (collegeMap.containsKey(collegeName)) {
-                    collegeId = collegeMap.get(collegeName);
-                } else {
-                    basicCollege = basicCollegeService.getOne(new QueryWrapper<BasicCollege>().lambda()
-                            .eq(BasicCollege::getSchoolId, schoolId)
-                            .eq(BasicCollege::getCollegeName, collegeName));
-                    if (Objects.isNull(basicCollege)) {
-                        // 新增一个basicCollege
-                        BasicCollegeParams basicCollegeParams = new BasicCollegeParams();
-                        basicCollegeParams.setCollegeName(collegeName);
-                        collegeId = basicCollegeService.saveBasicCollege(basicCollegeParams, requestUser);
-                    } else {
-                        collegeId = basicCollege.getId();
-                    }
-                    collegeMap.put(collegeName, collegeId);
-                }
+            if (StringUtils.isBlank(collegeName)) {
+                throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]的数据,学院必填");
+            }
+            if (!collegeMap.containsKey(collegeName)) {
+                SysOrg sysOrg = new SysOrg();
+                sysOrg.setSchoolId(schoolId);
+                sysOrg.setName(collegeName);
+                sysOrg.setParentId(sysOrgService.findRootOrg(schoolId).getId());
+                sysOrgService.saveOrg(sysOrg, requestUser);
+                collegeMap.put(collegeName, sysOrg.getId());
+            }
+            Long collegeId = collegeMap.get(collegeName);
+            if (collegeId == null) {
+                throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]的数据,学院查询失败");
             }
 
             // 专业
-            Long majorId = null;
-            if (SystemConstant.strNotNull(majorName)) {
-                if (!SystemConstant.longNotNull(collegeId)) {
-                    throw ExceptionResultEnum.ERROR.exception("学生专业信息缺失学院信息异常");
-                }
-                String majorKey = schoolId + SystemConstant.HYPHEN + majorName;
-                if (majorMap.containsKey(majorKey)) {
-                    majorId = majorMap.get(majorKey);
-                } else {
-                    BasicMajor basicMajor = basicMajorService.getOne(new QueryWrapper<BasicMajor>().lambda()
-                            .eq(BasicMajor::getSchoolId, schoolId)
-                            .eq(BasicMajor::getName, majorName));
-                    if (Objects.isNull(basicMajor)) {
-                        // 新增一个major
-                        BasicMajorParams basicMajorParams = new BasicMajorParams();
-                        basicMajorParams.setMajorName(majorName);
-                        basicMajorParams.setCollegeId(collegeId);
-                        majorId = basicMajorService.saveBasicMajor(basicMajorParams, requestUser);
-                    } else {
-                        majorId = basicMajor.getId();
-                    }
-                    majorMap.put(majorKey, majorId);
-                }
+            if (StringUtils.isBlank(majorName)) {
+                throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]的数据,专业必填");
+            }
+            String majorKey = collegeId + SystemConstant.HYPHEN + majorName;
+            if (!majorMap.containsKey(majorKey)) {
+                // 新增一个major
+                BasicMajorParams basicMajorParams = new BasicMajorParams();
+                basicMajorParams.setMajorName(majorName);
+                basicMajorParams.setCollegeId(collegeId);
+                Long majorId = basicMajorService.saveBasicMajor(basicMajorParams, requestUser);
+                majorMap.put(majorKey, majorId);
+            }
+            Long majorId = majorMap.get(majorKey);
+            if (majorId == null) {
+                throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]的数据,专业查询失败");
             }
 
             // 班级
-            Long clazzId = null;
-            if (SystemConstant.strNotNull(clazzName)) {
-                if (!SystemConstant.longNotNull(collegeId)) {
-                    throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失学院信息异常");
-                }
-                if (!SystemConstant.longNotNull(majorId)) {
-                    throw ExceptionResultEnum.ERROR.exception("学生班级信息缺失专业信息异常");
-                }
-
-                String clazzKey = schoolId + SystemConstant.HYPHEN + clazzName;
-                if (clazzMap.containsKey(clazzKey)) {
-                    clazzId = clazzMap.get(clazzKey);
-                } else {
-                    // 2022-03-30 字典班级在全校唯一
-                    BasicClazz basicClazz = basicClazzService.getOne(new QueryWrapper<BasicClazz>().lambda()
-                            .eq(BasicClazz::getSchoolId, schoolId)
-                            .eq(BasicClazz::getClazzName, clazzName));
-                    if (Objects.isNull(basicClazz)) {
-                        // 新增一个clazz
-                        BasicClazzParams basicClazzParams = new BasicClazzParams();
-                        basicClazzParams.setMajorId(majorId);
-                        basicClazzParams.setClazzName(clazzName);
-                        clazzId = basicClazzService.saveBasicClazz(basicClazzParams, requestUser);
-                    } else {
-                        clazzId = basicClazz.getId();
-                    }
-                    clazzMap.put(clazzKey, clazzId);
-                }
+            if (StringUtils.isBlank(clazzName)) {
+                throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]的数据,班级必填");
             }
+            String clazzKey = majorId + SystemConstant.HYPHEN + clazzName;
+            if (!clazzMap.containsKey(clazzKey)) {
+                // 新增一个clazz
+                BasicClazzParams basicClazzParams = new BasicClazzParams();
+                basicClazzParams.setMajorId(majorId);
+                basicClazzParams.setClazzName(clazzName);
+                Long clazzId = basicClazzService.saveBasicClazz(basicClazzParams, requestUser);
+                clazzMap.put(clazzKey, clazzId);
+            }
+            Long clazzId = clazzMap.get(clazzKey);
+            if (majorId == null) {
+                throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]的数据,班级查询失败");
+            }
+
             if (saveBasicStudent) {
                 // 学生信息组装
                 BasicStudentParams basicStudentParams = new BasicStudentParams();
                 basicStudentParams.setStudentName(studentName);
                 basicStudentParams.setStudentCode(studentCode);
                 basicStudentParams.setPhoneNumber(phoneNumber);
-                if (SystemConstant.longNotNull(collegeId)) {
-                    basicStudentParams.setCollegeId(collegeId);
-                }
-                if (SystemConstant.longNotNull(majorId)) {
-                    basicStudentParams.setMajorId(majorId);
-                }
-                if (SystemConstant.longNotNull(clazzId)) {
-                    basicStudentParams.setClazzId(clazzId);
-                }
-
-                BasicStudent tmp = this.getOne(new QueryWrapper<BasicStudent>().lambda()
-                        .eq(BasicStudent::getSchoolId, requestUser.getSchoolId())
-                        .eq(BasicStudent::getEnable, true)
-                        .eq(BasicStudent::getStudentCode, studentCode));
-                if (Objects.nonNull(tmp)) {
-                    basicStudentParams.setId(tmp.getId());
-                }
+                basicStudentParams.setCollegeId(collegeId);
+                basicStudentParams.setMajorId(majorId);
+                basicStudentParams.setClazzId(clazzId);
                 addBasicStudentParamsList.add(basicStudentParams);
             }
         }
         if (!CollectionUtils.isEmpty(addBasicStudentParamsList)) {
-            List<BasicStudent> basicStudentList = this.editEntityHelp(addBasicStudentParamsList, requestUser);
+            List<BasicStudent> editEntityList = new ArrayList<>();
+            for (BasicStudentParams basicStudentParams : addBasicStudentParamsList) {
+                BasicStudent basicStudent = this.editEntityHelp(basicStudentParams, requestUser);
+                editEntityList.add(basicStudent);
+            }
             try {
-                this.saveOrUpdateBatch(basicStudentList);
+                this.saveOrUpdateBatch(editEntityList);
             } catch (Exception e) {
                 if (e instanceof DataIntegrityViolationException) {
                     String error = e.getCause().toString();
@@ -321,7 +289,6 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
             LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
             List<Object> basicStudentImportDtoList = excelMap.get(i);
 
-//            assert !basicStudentImportDtoList.isEmpty();
             if (basicStudentImportDtoList.isEmpty() || basicStudentImportDtoList.get(0) instanceof DescribeImportDto) {
                 continue;
             }
@@ -333,16 +300,15 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
 
             List<BasicStudentExtrasParam> basicStudentExtrasParamList = datasource.stream().flatMap(e -> {
                 BasicStudentExtrasParam basicStudentExtrasParam = new BasicStudentExtrasParam();
-                basicStudentExtrasParam.setStudentName(e.getStudentName());
-                basicStudentExtrasParam.setStudentCode(e.getStudentCode());
-                basicStudentExtrasParam.setPhoneNumber(e.getPhoneNumber());
-                basicStudentExtrasParam.setCollegeName(e.getCollegeName());
-                basicStudentExtrasParam.setMajorName(e.getMajorName());
-                basicStudentExtrasParam.setClazzName(e.getClazzName());
+                basicStudentExtrasParam.setStudentName(StringUtils.isNotBlank(e.getStudentName()) ? e.getStudentName().trim() : null);
+                basicStudentExtrasParam.setStudentCode(StringUtils.isNotBlank(e.getStudentCode()) ? e.getStudentCode().trim() : null);
+                basicStudentExtrasParam.setPhoneNumber(StringUtils.isNotBlank(e.getPhoneNumber()) ? e.getPhoneNumber().trim() : null);
+                basicStudentExtrasParam.setCollegeName(StringUtils.isNotBlank(e.getCollegeName()) ? e.getCollegeName().trim() : null);
+                basicStudentExtrasParam.setMajorName(StringUtils.isNotBlank(e.getMajorName()) ? e.getMajorName().trim() : null);
+                basicStudentExtrasParam.setClazzName(StringUtils.isNotBlank(e.getClazzName()) ? e.getClazzName().trim() : null);
                 return Stream.of(basicStudentExtrasParam);
             }).collect(Collectors.toList());
             this.saveBasicStudentWithExtrasList(basicStudentExtrasParamList, sysUser, true);
-            map.put("dataCount", datasource.size());
         }
         return map;
     }
@@ -363,136 +329,54 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
     /**
      * 学生保存助手方法(应对学生保存和导入批量保存)
      *
-     * @param basicStudentParamsList 学生参数
-     * @param sysUser                操作人
+     * @param basicStudentParams 学生参数
+     * @param sysUser            操作人
      * @return 结果
      */
-    private List<BasicStudent> editEntityHelp(List<BasicStudentParams> basicStudentParamsList, SysUser sysUser) {
-
+    private BasicStudent editEntityHelp(BasicStudentParams basicStudentParams, SysUser sysUser) {
         Long schoolId = sysUser.getSchoolId();
-        List<BasicStudent> editEntityList = new ArrayList<>();
-        Map<String, BasicStudentParams> checkRepeatMap = new HashMap<>();
-        for (BasicStudentParams basicStudentParams : basicStudentParamsList) {
-            // 普通参数
-            String studentName = basicStudentParams.getStudentName();
-            String studentCode = basicStudentParams.getStudentCode();
-            String phoneNumber = basicStudentParams.getPhoneNumber();
-            Long clazzId = basicStudentParams.getClazzId();
-            Long majorId = basicStudentParams.getMajorId();
-            Long collegeId = basicStudentParams.getCollegeId();
-            if (checkRepeatMap.containsKey(studentCode)) {
-                // 校验整个导入批次是否有重复数据
-                BasicStudentParams check = checkRepeatMap.get(studentCode);
-                if (!Objects.equals(studentName, check.getStudentName())) {
-                    throw ExceptionResultEnum.ERROR.exception("导入批次学号为【" + studentCode + "】的学生,存在不同姓名");
-                }
-                if (!Objects.equals(phoneNumber, check.getPhoneNumber())) {
-                    throw ExceptionResultEnum.ERROR.exception("导入批次学号为【" + studentCode + "】的学生,存在不同电话");
-                }
-                if (!Objects.equals(clazzId, check.getClazzId())) {
-                    throw ExceptionResultEnum.ERROR.exception("导入批次学号为【" + studentCode + "】的学生,存在不同班级");
-                }
-                if (!Objects.equals(majorId, check.getMajorId())) {
-                    throw ExceptionResultEnum.ERROR.exception("导入批次学号为【" + studentCode + "】的学生,存在不同专业");
-                }
-                if (!Objects.equals(collegeId, check.getCollegeId())) {
-                    throw ExceptionResultEnum.ERROR.exception("导入批次学号为【" + studentCode + "】的学生,存在不同学院");
-                }
-                continue;
-            } else {
-                checkRepeatMap.put(studentCode, basicStudentParams);
-            }
-
-            // 班级验证
-            if (SystemConstant.longNotNull(clazzId)) {
-                // 如果有班级id 再验证
-                BasicClazz basicClazz = basicClazzService.getById(clazzId);
-                if (Objects.isNull(basicClazz)) {
-                    throw ExceptionResultEnum.ERROR.exception("所选班级不存在");
-                }
-                if (SystemConstant.longNotNull(majorId)) {
-                    if (!majorId.equals(basicClazz.getMajorId())) {
-                        String exception = "学生信息【" + studentName + "(" + studentCode + ")" + SystemConstant.HYPHEN + basicMajorService.getById(majorId).getName() + "】中的专业和学生所属班级信息【" + basicClazz.getClazzName() + "-" + basicMajorService.getById(basicClazz.getMajorId()).getName() + "】中的专业不对应";
-                        throw ExceptionResultEnum.ERROR.exception(exception);
-                    }
-                }
-            }
-
-
-            // 专业验证
-            if (SystemConstant.longNotNull(majorId)) {
-                BasicMajor basicMajor = basicMajorService.getById(majorId);
-                if (Objects.isNull(basicMajor)) {
-                    throw ExceptionResultEnum.ERROR.exception("所选专业不存在");
-                }
-                if (SystemConstant.longNotNull(collegeId)) {
-                    if (!collegeId.equals(basicMajor.getBelongOrgId())) {
-                        String exception = "学生信息【" + studentName + "(" + studentCode + ")" + SystemConstant.HYPHEN + basicCollegeService.getById(collegeId).getCollegeName() +
-                                "】中的学院和学生所属专业信息【" +
-                                basicMajor.getName() + SystemConstant.HYPHEN + basicCollegeService.getById(basicMajor.getBelongOrgId()).getCollegeName() + "】中的学院不对应";
-                        throw ExceptionResultEnum.ERROR.exception(exception);
-                    }
-                }
-            }
-
-            Long id = basicStudentParams.getId();
-            // 检验学号在学校的唯一性
-            BasicStudent checkCode = this.getOne(new QueryWrapper<BasicStudent>().lambda()
+        // 普通参数
+        String studentName = basicStudentParams.getStudentName();
+        String studentCode = basicStudentParams.getStudentCode();
+        String phoneNumber = basicStudentParams.getPhoneNumber();
+        Long clazzId = basicStudentParams.getClazzId();
+        Long majorId = basicStudentParams.getMajorId();
+        Long collegeId = basicStudentParams.getCollegeId();
+
+        // 检验有值的电话在学校的唯一性
+        if (SystemConstant.strNotNull(phoneNumber)) {
+            BasicStudent checkPhone = this.getOne(new QueryWrapper<BasicStudent>().lambda()
                     .eq(BasicStudent::getSchoolId, schoolId)
-                    .eq(BasicStudent::getStudentCode, studentCode)
-                    .eq(BasicStudent::getEnable, true));
-            if (Objects.nonNull(checkCode)) {
-                if (!checkCode.getId().equals(id)) {
-                    throw ExceptionResultEnum.ERROR.exception("学生编号【" + studentCode + "】重复");
+                    .eq(BasicStudent::getPhoneNumber, phoneNumber));
+            if (Objects.nonNull(checkPhone)) {
+                if (!checkPhone.getStudentCode().equals(studentCode)) {
+                    throw ExceptionResultEnum.ERROR.exception("电话[" + phoneNumber + "]绑定了不同学号");
                 }
             }
+        }
 
-            // 检验有值的电话在学校的唯一性
-            if (SystemConstant.strNotNull(phoneNumber)) {
-                BasicStudent checkPhone = this.getOne(new QueryWrapper<BasicStudent>().lambda()
-                        .eq(BasicStudent::getSchoolId, schoolId)
-                        .eq(BasicStudent::getPhoneNumber, phoneNumber)
-                        .eq(BasicStudent::getEnable, true));
-                if (Objects.nonNull(checkPhone)) {
-                    if (!checkPhone.getId().equals(id)) {
-                        throw ExceptionResultEnum.ERROR.exception("学生电话【" + phoneNumber + "】重复");
-                    }
-                }
-            }
-
-            // 组装基础参数
-            Long orgId;
-            BasicStudent basicStudent = new BasicStudent();
-            basicStudent.setStudentCode(studentCode);
-            basicStudent.setStudentName(studentName);
-            basicStudent.setPhoneNumber(phoneNumber);
-            basicStudent.setBelongOrgId(collegeId);
-            basicStudent.setMajorId(majorId);
-            basicStudent.setClazzId(clazzId);
-            basicStudent.setSchoolId(schoolId);
-
-            // 保存
-            if (!SystemConstant.longNotNull(id)) {
-                // id为空 -> 新增
-                // 获取分布式id
-                orgId = sysUser.getOrgId();
-                id = SystemConstant.getDbUuid();
-                basicStudent.setId(id);
-
-                basicStudent.setCreateId(sysUser.getId());
-            } else {
-                // id不为空 -> 更新
-                BasicStudent old = this.getById(id);
-                if (Objects.isNull(old) || old.getEnable().equals(false)) {
-                    throw ExceptionResultEnum.ERROR.exception("学生主键不存在或被禁用");
-                }
-                orgId = old.getOrgId();
-                basicStudent.setId(id);
-                basicStudent.setUpdateId(sysUser.getId());
-            }
-            basicStudent.setOrgId(orgId);
-            editEntityList.add(basicStudent);
+        // 组装基础参数
+        BasicStudent basicStudent = new BasicStudent();
+        basicStudent.setStudentCode(studentCode);
+        basicStudent.setStudentName(studentName);
+        basicStudent.setPhoneNumber(phoneNumber);
+        basicStudent.setBelongOrgId(collegeId);
+        basicStudent.setMajorId(majorId);
+        basicStudent.setClazzId(clazzId);
+        basicStudent.setSchoolId(schoolId);
+
+        BasicStudent checkCode = this.getOne(new QueryWrapper<BasicStudent>().lambda()
+                .eq(BasicStudent::getSchoolId, schoolId)
+                .eq(BasicStudent::getStudentCode, studentCode));
+        if (checkCode != null) {
+            basicStudent.setId(checkCode.getId());
+            // 禁用的学生,此时启用
+            basicStudent.setEnable(true);
+            basicStudent.updateInfo(sysUser.getId());
+        } else {
+            basicStudent.setId(SystemConstant.getDbUuid());
+            basicStudent.insertInfo(sysUser.getId());
         }
-        return editEntityList;
+        return basicStudent;
     }
 }

+ 2 - 5
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -147,13 +147,10 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
 
     @Override
     @Transactional
-    public boolean saveOrg(SysOrg org) {
+    public boolean saveOrg(SysOrg org, SysUser sysUser) {
         boolean success = false;
         try {
-            Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-            org.setSchoolId(schoolId);
-            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-
+            Long schoolId = sysUser.getSchoolId();
             // 机构代码不为空,校验唯一性
             if (StringUtils.isNotBlank(org.getCode())) {
                 QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();

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

@@ -225,7 +225,7 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
     @Override
     public boolean countByPrintPlanIdAndEntityId(Long schoolId, Long printPlanId, List<Long> entityIds) {
         QueryWrapper<TBTask> tbTaskQueryWrapper = new QueryWrapper<>();
-        tbTaskQueryWrapper.lambda().ne(TBTask::getStatus, TaskStatusEnum.FINISH).isNotNull(TBTask::getStatus)
+        tbTaskQueryWrapper.lambda().ne(TBTask::getStatus, TaskStatusEnum.FINISH)
                 .eq(TBTask::getType, TaskTypeEnum.CREATE_PDF);
         if (Objects.nonNull(schoolId)) {
             tbTaskQueryWrapper.lambda().eq(TBTask::getSchoolId, schoolId);
@@ -236,7 +236,7 @@ public class TBTaskServiceImpl extends ServiceImpl<TBTaskMapper, TBTask> impleme
         if (Objects.nonNull(entityIds)) {
             tbTaskQueryWrapper.lambda().in(TBTask::getEntityId, entityIds);
         }
-        return this.count(tbTaskQueryWrapper) == 0 ? true : false;
+        return this.count(tbTaskQueryWrapper) == 0;
     }
 
     /**

+ 0 - 16
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -700,22 +700,6 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         }
     }
 
-    @Override
-    public void downloadFileAndZip(HttpServletResponse response, String rootPath, long time) {
-        File zipFile = SystemConstant.getFileTempDirVarForZip(time + SystemConstant.ZIP_PREFIX, null);
-        try {
-            Zip4jUtil.zipEncryptFile(zipFile.getPath(), rootPath, SystemConstant.ZIP_ENCRYPT_PWD);
-            outputFile(response, zipFile, String.valueOf(time));
-        } catch (Exception e) {
-            throw ExceptionResultEnum.ERROR.exception("下载失败");
-        } finally {
-            // 删除zip文件
-            FileUtil.del(zipFile);
-            // 删除压缩内容
-            FileUtil.del(rootPath);
-        }
-    }
-
     @Override
     public Set<Long> listSubOrgIds(Long id) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();

+ 2 - 2
teachcloud-common/src/main/resources/mapper/BasicMajorMapper.xml

@@ -11,11 +11,11 @@
             bm.create_id AS createId,
             bm.create_time AS createTime,
             bc.id AS collegeId,
-            bc.college_name AS collegeName
+            bc.name AS collegeName
         FROM
             basic_major bm
                 LEFT JOIN
-            basic_college bc ON bm.belong_org_id = bc.id
+            sys_org bc ON bm.belong_org_id = bc.id
         <where>
             AND bm.enable = true
             <if test="schoolId != null and schoolId != ''">

+ 1 - 2
teachcloud-common/src/main/resources/mapper/BasicSemesterMapper.xml

@@ -9,8 +9,7 @@
             code AS semesterCode,
             start_time AS startTime,
             end_time AS endTime,
-            enable,
-            in_used inUsed
+            enable
         FROM
             basic_semester bs
         <where>

+ 4 - 7
teachcloud-common/src/main/resources/mapper/BasicStudentMapper.xml

@@ -39,7 +39,7 @@
             student_code AS studentCode,
             phone_number AS phoneNumber,
             bc.id AS collegeId,
-            bc.college_name AS collegeName,
+            bc.name AS collegeName,
             bm.id AS majorId,
             bm.name AS majorName,
             clazz_id AS clazzId,
@@ -54,7 +54,7 @@
                 LEFT JOIN
             basic_major bm ON stu.major_id = bm.id AND bm.enable = TRUE
                 LEFT JOIN
-            basic_college bc ON stu.belong_org_id = bc.id
+            sys_org bc ON stu.belong_org_id = bc.id
         <where>
             and stu.enable = true
             <if test="queryParams != null and queryParams != ''">
@@ -69,11 +69,8 @@
             <if test="majorId != null and majorId != ''">
                 and stu.major_id = #{majorId}
             </if>
-            <if test="clazzIdList != null and clazzIdList != '' and clazzIdList.size > 0">
-                AND stu.clazz_id IN
-                <foreach collection="clazzIdList" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            <if test="clazzId != null and clazzId != ''">
+                and stu.clazz_id = #{clazzId}
             </if>
             <if test="dpr != null">
                 <if test="dpr.requestUserId != null">