Ver Fonte

3.2.7 bug修改

xiaofei há 1 ano atrás
pai
commit
d492cce9b2
18 ficheiros alterados com 161 adições e 65 exclusões
  1. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java
  2. 17 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPaperStructureServiceImpl.java
  3. 6 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  4. 13 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  5. 2 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncSysUserDataImportService.java
  6. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  7. 12 0
      distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql
  8. 11 0
      distributed-print-business/src/main/resources/db/upgrade/3.2.7.sql
  9. 6 1
      distributed-print-business/src/main/resources/mapper/ExamPaperStructureMapper.xml
  10. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskQueryController.java
  11. BIN
      distributed-print/src/main/resources/temps/user.xlsx
  12. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysRoleMapper.java
  13. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysRoleService.java
  14. 11 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicRoleDataPermissionServiceImpl.java
  15. 29 10
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java
  16. 15 9
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java
  17. 15 17
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  18. 14 1
      teachcloud-common/src/main/resources/mapper/SysRoleMapper.xml

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

@@ -15,7 +15,6 @@ import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ClassifyEnum;
 import com.qmth.teachcloud.common.enums.ClassifyEnum;
-import com.qmth.teachcloud.common.enums.PushTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
@@ -195,11 +194,12 @@ public interface PrintCommonService {
      *
      *
      * @param schoolId
      * @param schoolId
      * @param printPlanId
      * @param printPlanId
+     * @param examId
      * @param courseCode
      * @param courseCode
      * @param paperNumber
      * @param paperNumber
      * @return
      * @return
      */
      */
-    Boolean checkExamDetailStatus(Long schoolId, Long printPlanId, String courseCode, String paperNumber);
+    Boolean checkExamDetailStatus(Long schoolId, Long printPlanId, Long examId, String courseCode, String paperNumber);
 
 
     /**
     /**
      * 生成唯一的试卷编号
      * 生成唯一的试卷编号

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

@@ -21,6 +21,7 @@ import com.qmth.distributed.print.business.enums.ExamPaperStructureStatusTypeEnu
 import com.qmth.distributed.print.business.enums.ExamTaskSyncStatusEnum;
 import com.qmth.distributed.print.business.enums.ExamTaskSyncStatusEnum;
 import com.qmth.distributed.print.business.mapper.ExamPaperStructureMapper;
 import com.qmth.distributed.print.business.mapper.ExamPaperStructureMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
+import com.qmth.teachcloud.common.bean.auth.AuthBean;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.UserRoleDto;
 import com.qmth.teachcloud.common.bean.dto.UserRoleDto;
 import com.qmth.teachcloud.common.bean.dto.stmms.ExamCloudPaperStructDto;
 import com.qmth.teachcloud.common.bean.dto.stmms.ExamCloudPaperStructDto;
@@ -108,13 +109,25 @@ public class ExamPaperStructureServiceImpl extends ServiceImpl<ExamPaperStructur
     @Resource
     @Resource
     ExamPaperClassMarkerService examPaperClassMarkerService;
     ExamPaperClassMarkerService examPaperClassMarkerService;
 
 
+    @Resource
+    CommonCacheService commonCacheService;
+
     @Override
     @Override
     public IPage<ExamPaperStructurePageDto> listByPropositionTeacherId(Long semesterId, Long examId, Integer pageNumber, Integer pageSize, Boolean ready) {
     public IPage<ExamPaperStructurePageDto> listByPropositionTeacherId(Long semesterId, Long examId, Integer pageNumber, Integer pageSize, Boolean ready) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        String url = "/api/admin/exam/structure/list";
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, sysUser.getId(), url);
         Page<ExamPaperStructure> page = new Page<>(pageNumber, pageSize);
         Page<ExamPaperStructure> page = new Page<>(pageNumber, pageSize);
-        IPage<ExamPaperStructurePageDto> examPaperStructureIPage = this.baseMapper.listByPropositionTeacherId(page, schoolId, semesterId, examId, ExamTaskSyncStatusEnum.FINISH.name(), ready, dpr);
+        String syncStatus = ExamTaskSyncStatusEnum.FINISH.name();
+        // 查看是否有评卷参数管理权限
+        AuthBean authBean = commonCacheService.userAuthCache(sysUser.getId());
+        Set<String> urls = authBean.getUrls();
+        int privilegeCount = Objects.nonNull(urls) ? (int) urls.stream().filter(s -> s.equalsIgnoreCase(url)).count() : 0;
+        if (privilegeCount == 0) {
+            syncStatus = null;
+        }
+        IPage<ExamPaperStructurePageDto> examPaperStructureIPage = this.baseMapper.listByPropositionTeacherId(page, schoolId, semesterId, examId, syncStatus, ready, dpr);
         examPaperStructureIPage.getRecords().forEach(m -> {
         examPaperStructureIPage.getRecords().forEach(m -> {
             // 试卷结构同步任务状态
             // 试卷结构同步任务状态
             if (m.getId() != null) {
             if (m.getId() != null) {
@@ -338,7 +351,8 @@ public class ExamPaperStructureServiceImpl extends ServiceImpl<ExamPaperStructur
     public long countByPropositionTeacherId(Boolean ready) {
     public long countByPropositionTeacherId(Boolean ready) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        List<ExamPaperStructure> examPaperStructureList = this.baseMapper.listByPropositionTeacherId(schoolId, null, null, sysUser.getId(), ExamTaskSyncStatusEnum.FINISH.name(), ready, null);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, sysUser.getId(), "/api/admin/exam/structure/list");
+        List<ExamPaperStructure> examPaperStructureList = this.baseMapper.listByPropositionTeacherId(schoolId, null, null, sysUser.getId(), ExamTaskSyncStatusEnum.FINISH.name(), ready, dpr);
         return CollectionUtils.isEmpty(examPaperStructureList) ? 0 : examPaperStructureList.size();
         return CollectionUtils.isEmpty(examPaperStructureList) ? 0 : examPaperStructureList.size();
     }
     }
 
 

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

@@ -188,7 +188,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         ExamPrintPlan examPrintPlan = examPrintPlanService.getById(paperParam.getPrintPlanId());
         ExamPrintPlan examPrintPlan = examPrintPlanService.getById(paperParam.getPrintPlanId());
         ExamTask examTask = examTaskService.getById(paperParam.getExamTaskId());
         ExamTask examTask = examTaskService.getById(paperParam.getExamTaskId());
         // 校验课程关联考场,是否已经提交打印
         // 校验课程关联考场,是否已经提交打印
-        Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), examPrintPlan.getId(), examTask.getCourseCode(), examTask.getPaperNumber());
+        Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), examPrintPlan.getId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber());
         if (isCreate) {
         if (isCreate) {
             // 提交印刷的考场,不允许修改关联试卷
             // 提交印刷的考场,不允许修改关联试卷
             List<ExamDetail> examDetails = examDetailService.listByPrintPlanIdAndCourseCodeAndPaperNumber(examTask.getSchoolId(), paperParam.getPrintPlanId(), examTask.getCourseCode(), examTask.getPaperNumber());
             List<ExamDetail> examDetails = examDetailService.listByPrintPlanIdAndCourseCodeAndPaperNumber(examTask.getSchoolId(), paperParam.getPrintPlanId(), examTask.getCourseCode(), examTask.getPaperNumber());
@@ -571,6 +571,11 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
 //                    mapVar.put(SystemConstant.SEND_FLOW_MQ, true);
 //                    mapVar.put(SystemConstant.SEND_FLOW_MQ, true);
 //                }
 //                }
 //            }
 //            }
+        } else {
+            // 不需要审核
+            UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.STAGE).eq(ExamTask::getId, examTaskDetail.getExamTaskId());
+            examTaskService.update(updateWrapper);
         }
         }
         mapVar.put(SystemConstant.SUCCESS, true);
         mapVar.put(SystemConstant.SUCCESS, true);
         return mapVar;
         return mapVar;

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

@@ -49,6 +49,7 @@ import org.springframework.util.FileCopyUtils;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.swing.plaf.basic.BasicTableUI;
 import java.io.*;
 import java.io.*;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.nio.charset.StandardCharsets;
@@ -701,7 +702,7 @@ public class PrintCommonServiceImpl implements PrintCommonService {
     private void validateOrg(Long id) {
     private void validateOrg(Long id) {
         // 机构下是否有用户
         // 机构下是否有用户
         List<SysUser> sysUsers = sysUserService.listByOrgId(id);
         List<SysUser> sysUsers = sysUserService.listByOrgId(id);
-        if (sysUsers != null && sysUsers.size() > 0) {
+        if (!CollectionUtils.isEmpty(sysUsers)) {
             throw ExceptionResultEnum.ERROR.exception("该机构下有用户,不能删除");
             throw ExceptionResultEnum.ERROR.exception("该机构下有用户,不能删除");
         }
         }
 
 
@@ -709,16 +710,17 @@ public class PrintCommonServiceImpl implements PrintCommonService {
         QueryWrapper<SysOrg> orgQueryWrapper = new QueryWrapper<>();
         QueryWrapper<SysOrg> orgQueryWrapper = new QueryWrapper<>();
         orgQueryWrapper.lambda().eq(SysOrg::getParentId, id);
         orgQueryWrapper.lambda().eq(SysOrg::getParentId, id);
         List<SysOrg> sysOrgs = sysOrgService.list(orgQueryWrapper);
         List<SysOrg> sysOrgs = sysOrgService.list(orgQueryWrapper);
-        if (sysOrgs != null && sysOrgs.size() > 0) {
+        if (!CollectionUtils.isEmpty(sysOrgs)) {
             throw ExceptionResultEnum.ERROR.exception("该机构下有子机构,不能删除");
             throw ExceptionResultEnum.ERROR.exception("该机构下有子机构,不能删除");
         }
         }
 
 
-//        QueryWrapper<BasicTemplateOrg> queryWrapper = new QueryWrapper<>();
-//        queryWrapper.lambda().eq(BasicTemplateOrg::getOrgId, id);
-//        List<BasicTemplateOrg> basicTemplateOrgs = basicTemplateOrgService.list(queryWrapper);
-//        if (basicTemplateOrgs != null && basicTemplateOrgs.size() > 0) {
-//            throw ExceptionResultEnum.ERROR.exception("机构已绑定,不能删除");
-//        }
+        // 机构下是否有子机构
+        QueryWrapper<BasicStudent> basicStudentQueryWrapper = new QueryWrapper<>();
+        basicStudentQueryWrapper.lambda().eq(BasicStudent::getBelongOrgId, id);
+        List<BasicStudent> basicStudentList = basicStudentService.list(basicStudentQueryWrapper);
+        if (!CollectionUtils.isEmpty(basicStudentList)) {
+            throw ExceptionResultEnum.ERROR.exception("该机构下有学生,不能删除");
+        }
     }
     }
 
 
     /**
     /**
@@ -913,18 +915,19 @@ public class PrintCommonServiceImpl implements PrintCommonService {
      *
      *
      * @param schoolId
      * @param schoolId
      * @param printPlanId
      * @param printPlanId
+     * @param examId
      * @param courseCode
      * @param courseCode
      * @param paperNumber
      * @param paperNumber
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public Boolean checkExamDetailStatus(Long schoolId, Long printPlanId, String courseCode, String paperNumber) {
+    public Boolean checkExamDetailStatus(Long schoolId, Long printPlanId, Long examId, String courseCode, String paperNumber) {
         List<ExamDetail> examDetails;
         List<ExamDetail> examDetails;
         ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
         ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
         if (printPlanId != null) {
         if (printPlanId != null) {
             examDetails = examDetailService.listByPrintPlanIdAndCourseCodeAndPaperNumber(schoolId, printPlanId, courseCode, paperNumber);
             examDetails = examDetailService.listByPrintPlanIdAndCourseCodeAndPaperNumber(schoolId, printPlanId, courseCode, paperNumber);
         } else {
         } else {
-            examDetails = examDetailService.listByCourseCodeAndPaperNumber(schoolId, examPrintPlan.getExamId(), courseCode, paperNumber);
+            examDetails = examDetailService.listByCourseCodeAndPaperNumber(schoolId, examId, courseCode, paperNumber);
         }
         }
         if (examDetails != null && examDetails.size() > 0) {
         if (examDetails != null && examDetails.size() > 0) {
             long count = examDetails.stream().filter(m -> !ExamDetailStatusEnum.NEW.name().equals(m.getStatus().name()) && !ExamDetailStatusEnum.READY.name().equals(m.getStatus().name())).count();
             long count = examDetails.stream().filter(m -> !ExamDetailStatusEnum.NEW.name().equals(m.getStatus().name()) && !ExamDetailStatusEnum.READY.name().equals(m.getStatus().name())).count();

+ 2 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncSysUserDataImportService.java

@@ -54,15 +54,14 @@ public class AsyncSysUserDataImportService extends AsyncImportTaskTemplete {
             // 执行导入基础用户数据
             // 执行导入基础用户数据
             Map<String, Object> result = taskLogicService.executeImportSysUserLogic(map);
             Map<String, Object> result = taskLogicService.executeImportSysUserLogic(map);
 
 
+            tbTask.setResult(TaskResultEnum.SUCCESS);
             //错误数据,生成文件
             //错误数据,生成文件
             if (result.containsKey(SystemConstant.ERROR_DATA_LIST)) {
             if (result.containsKey(SystemConstant.ERROR_DATA_LIST)) {
-                tbTask.setResult(TaskResultEnum.ERROR);
                 List<SysUserErrorExportDto> errorDataList = (List<SysUserErrorExportDto>) result.get(SystemConstant.ERROR_DATA_LIST);
                 List<SysUserErrorExportDto> errorDataList = (List<SysUserErrorExportDto>) result.get(SystemConstant.ERROR_DATA_LIST);
                 if (CollectionUtils.isNotEmpty(errorDataList)) {
                 if (CollectionUtils.isNotEmpty(errorDataList)) {
+                    tbTask.setResult(TaskResultEnum.ERROR);
                     super.createErrorFile(tbTask, SysUserErrorExportDto.class, errorDataList);
                     super.createErrorFile(tbTask, SysUserErrorExportDto.class, errorDataList);
                 }
                 }
-            } else {
-                tbTask.setResult(TaskResultEnum.SUCCESS);
             }
             }
 
 
 //            // 执行用户同步数据
 //            // 执行用户同步数据

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

@@ -1540,14 +1540,14 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     }
                     }
 
 
                     if (Objects.nonNull(code) && !code.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
                     if (Objects.nonNull(code) && !code.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
-                        errorStringJoiner.add("[工号]不符合规范");
+                        errorStringJoiner.add("工号[" + code + "]不符合规范");
                     }
                     }
                     if (Objects.nonNull(phoneNumber) && !phoneNumber.matches(SystemConstant.REGULAR_EXPRESSION_OF_PHONE)) {
                     if (Objects.nonNull(phoneNumber) && !phoneNumber.matches(SystemConstant.REGULAR_EXPRESSION_OF_PHONE)) {
-                        errorStringJoiner.add("[手机号]不符合输入规范");
+                        errorStringJoiner.add("手机号[" + phoneNumber + "]不符合输入规范");
                     }
                     }
                     if (Objects.nonNull(phoneNumber)) {
                     if (Objects.nonNull(phoneNumber)) {
                         if (phoneNumberMap.containsKey(phoneNumber)) {
                         if (phoneNumberMap.containsKey(phoneNumber)) {
-                            errorStringJoiner.add("excel中的[手机号]不能重复");
+                            errorStringJoiner.add("excel中的手机号[" + phoneNumber + "]不能重复");
                         } else {
                         } else {
                             phoneNumberMap.put(phoneNumber, y);
                             phoneNumberMap.put(phoneNumber, y);
                         }
                         }

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

@@ -307,3 +307,15 @@ UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('330', '重新生成pdf', 'CreatePdf', 'LINK', '47', '6', 'AUTH', '190', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('330', '重新生成pdf', 'CreatePdf', 'LINK', '47', '6', 'AUTH', '190', '1', '0', '1');
 UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '857');
 UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '857');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('140', '模糊查询-试卷编号', '/api/admin/exam/task/paper_number_query', 'URL', '136', '4', 'SYS', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('140', '模糊查询-试卷编号', '/api/admin/exam/task/paper_number_query', 'URL', '136', '4', 'SYS', '1', '1', '1');
+
+
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '357');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '359');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '360');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '361');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '372');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '373');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '374');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '375');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '376');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '391');

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

@@ -213,3 +213,14 @@ UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('330', '重新生成pdf', 'CreatePdf', 'LINK', '47', '6', 'AUTH', '190', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('330', '重新生成pdf', 'CreatePdf', 'LINK', '47', '6', 'AUTH', '190', '1', '0', '1');
 UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '857');
 UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '857');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('140', '模糊查询-试卷编号', '/api/admin/exam/task/paper_number_query', 'URL', '136', '4', 'SYS', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('140', '模糊查询-试卷编号', '/api/admin/exam/task/paper_number_query', 'URL', '136', '4', 'SYS', '1', '1', '1');
+
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '357');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '359');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '360');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '361');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '372');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '373');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '374');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '375');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '376');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '391');

+ 6 - 1
distributed-print-business/src/main/resources/mapper/ExamPaperStructureMapper.xml

@@ -67,7 +67,12 @@
                 and be.id = #{examId}
                 and be.id = #{examId}
             </if>
             </if>
             <if test="ready != null">
             <if test="ready != null">
-                and eps.is_finish = #{ready}
+                <if test="ready == false">
+                    and (eps.is_finish = #{ready} or eps.is_finish is null)
+                </if>
+                <if test="ready == true">
+                    and eps.is_finish = #{ready}
+                </if>
             </if>
             </if>
             <if test="dpr != null">
             <if test="dpr != null">
                 <if test="dpr.requestUserId != null">
                 <if test="dpr.requestUserId != null">

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

@@ -116,7 +116,7 @@ public class ExamTaskQueryController {
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             ExamTask examTask = examTaskService.getById(examTaskDetail.getId());
             ExamTask examTask = examTaskService.getById(examTaskDetail.getId());
             // 校验课程关联考场,是否已经提交打印
             // 校验课程关联考场,是否已经提交打印
-            Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), null, examTask.getCourseCode(), examTask.getPaperNumber());
+            Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), null, examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber());
             // 校验是否可以提交打印状态
             // 校验是否可以提交打印状态
             if (isCreate) {
             if (isCreate) {
                 printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
                 printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);

BIN
distributed-print/src/main/resources/temps/user.xlsx


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

@@ -23,4 +23,6 @@ public interface SysRoleMapper extends BaseMapper<SysRole> {
     IPage<SysRole> listPage(Page<SysRole> page, @Param("schoolId") Long schoolId, @Param("name") String name, @Param("enable") Boolean enable);
     IPage<SysRole> listPage(Page<SysRole> page, @Param("schoolId") Long schoolId, @Param("name") String name, @Param("enable") Boolean enable);
 
 
     List<SysRole> listRolesBySchoolId(@Param("schoolId") Long schoolId);
     List<SysRole> listRolesBySchoolId(@Param("schoolId") Long schoolId);
+
+    List<SysRole> getByRoleName(@Param("schoolId") Long schoolId, @Param("roleName") String roleName);
 }
 }

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

@@ -55,4 +55,6 @@ public interface SysRoleService extends IService<SysRole> {
     List<SysRole> findCustomRole();
     List<SysRole> findCustomRole();
 
 
     boolean builtin(Long id, boolean defaultRole);
     boolean builtin(Long id, boolean defaultRole);
+
+    List<SysRole> getByRoleName(String roleName);
 }
 }

+ 11 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicRoleDataPermissionServiceImpl.java

@@ -7,6 +7,7 @@ import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicRoleDataPermission;
 import com.qmth.teachcloud.common.entity.BasicRoleDataPermission;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
+import com.qmth.teachcloud.common.entity.SysRole;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.DataPermissionTypeEnum;
 import com.qmth.teachcloud.common.enums.DataPermissionTypeEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
@@ -194,10 +195,16 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
         PrivilegeEnum type = privilege.getType();
         PrivilegeEnum type = privilege.getType();
         // 如果是菜单,搜索该菜单是否绑定了数据权限
         // 如果是菜单,搜索该菜单是否绑定了数据权限
         if (PrivilegeEnum.MENU.equals(type)) {
         if (PrivilegeEnum.MENU.equals(type)) {
-            BasicRoleDataPermission basicRoleDataPermission = this.getOne(new QueryWrapper<BasicRoleDataPermission>().lambda()
-                    .eq(BasicRoleDataPermission::getSchoolId, schoolId)
-                    .eq(BasicRoleDataPermission::getRoleId, roleId)
-                    .eq(BasicRoleDataPermission::getPrivilegeId, privilegeId));
+            SysRole sysRole = sysRoleService.getById(roleId);
+            QueryWrapper<BasicRoleDataPermission> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().eq(BasicRoleDataPermission::getRoleId, roleId)
+                    .eq(BasicRoleDataPermission::getPrivilegeId, privilegeId);
+            if (sysRole.getDefaultRole()) {
+                queryWrapper.lambda().isNull(BasicRoleDataPermission::getSchoolId);
+            } else {
+                queryWrapper.lambda().eq(BasicRoleDataPermission::getSchoolId, schoolId);
+            }
+            BasicRoleDataPermission basicRoleDataPermission = this.getOne(queryWrapper);
             if (Objects.nonNull(basicRoleDataPermission)) {
             if (Objects.nonNull(basicRoleDataPermission)) {
                 // 有数据权限
                 // 有数据权限
                 return basicRoleDataPermission.getDataPermissionType();
                 return basicRoleDataPermission.getDataPermissionType();

+ 29 - 10
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java

@@ -420,18 +420,37 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
         basicStudent.setSchoolId(schoolId);
         basicStudent.setSchoolId(schoolId);
         basicStudent.setOrgId(collegeId);
         basicStudent.setOrgId(collegeId);
 
 
-        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());
+        if (basicStudentParams.getId() != null) {
+            if (!studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
+                throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]不符合规范");
+            }
+            BasicStudent basicStudentOld = this.getById(basicStudentParams.getId());
+            if (!basicStudentOld.getStudentCode().equals(studentCode)) {
+                List<BasicStudent> checkCodeList = this.list(new QueryWrapper<BasicStudent>().lambda()
+                        .eq(BasicStudent::getSchoolId, schoolId)
+                        .eq(BasicStudent::getStudentCode, studentCode)
+                        .ne(BasicStudent::getId, basicStudentParams.getId()));
+                if (!CollectionUtils.isEmpty(checkCodeList)) {
+                    throw ExceptionResultEnum.ERROR.exception("学号[" + studentCode + "]已存在");
+                }
+            }
+
+            basicStudent.setId(basicStudentParams.getId());
         } else {
         } else {
-            basicStudent.setId(SystemConstant.getDbUuid());
-            basicStudent.insertInfo(sysUser.getId());
+            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 basicStudent;
         return basicStudent;
     }
     }
 }
 }

+ 15 - 9
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java

@@ -91,15 +91,8 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
             role.setName(sysRolePrivilegeParams.getName());
             role.setName(sysRolePrivilegeParams.getName());
             role.setPrivilegeIds(sysRolePrivilegeParams.getPrivilegeIds().stream().map(SystemConstant::convertIdToLong).toArray(Long[]::new));
             role.setPrivilegeIds(sysRolePrivilegeParams.getPrivilegeIds().stream().map(SystemConstant::convertIdToLong).toArray(Long[]::new));
             role.setDefaultRole(sysRolePrivilegeParams.getDefaultRole() == null ? false : sysRolePrivilegeParams.getDefaultRole());
             role.setDefaultRole(sysRolePrivilegeParams.getDefaultRole() == null ? false : sysRolePrivilegeParams.getDefaultRole());
-            if (role.getDefaultRole()) {
-                role.setSource(RoleSourceEnum.SYS);
-                role.setInterpret("系统内置");
-            }else {
-                role.setInterpret(sysRolePrivilegeParams.getInterpret());
-            }
             // 内置角色学校为null
             // 内置角色学校为null
             role.setSchoolId(role.getDefaultRole() ? null : schoolId);
             role.setSchoolId(role.getDefaultRole() ? null : schoolId);
-
             List<SysRole> sysRoleList = this.list();
             List<SysRole> sysRoleList = this.list();
             // 内置角色检验
             // 内置角色检验
             if (role.getDefaultRole()) {
             if (role.getDefaultRole()) {
@@ -130,12 +123,13 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
 
 
             //编辑
             //编辑
             if (Objects.nonNull(role.getId())) {
             if (Objects.nonNull(role.getId())) {
+                if (!role.getDefaultRole()) {
+                    role.setInterpret(sysRolePrivilegeParams.getInterpret());
+                }
                 role.updateInfo(sysUser.getId());
                 role.updateInfo(sysUser.getId());
                 sysRoleService.updateById(role);
                 sysRoleService.updateById(role);
                 commonCacheService.updateRoleCache(role.getId());
                 commonCacheService.updateRoleCache(role.getId());
-
                 boolean isChange = sysRolePrivilegeService.saveBatch(role);//角色权限
                 boolean isChange = sysRolePrivilegeService.saveBatch(role);//角色权限
-
                 if (isChange) {
                 if (isChange) {
                     commonCacheService.updateRolePrivilegeCache(role.getId());
                     commonCacheService.updateRolePrivilegeCache(role.getId());
                     //绑定该角色的用户都需要清除鉴权缓存
                     //绑定该角色的用户都需要清除鉴权缓存
@@ -144,6 +138,12 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
                 }
                 }
             } else {
             } else {
                 role.insertInfo(sysUser.getId());
                 role.insertInfo(sysUser.getId());
+                if (role.getDefaultRole()) {
+                    role.setSource(RoleSourceEnum.SYS);
+                    role.setInterpret("系统内置");
+                } else {
+                    role.setInterpret(sysRolePrivilegeParams.getInterpret());
+                }
                 sysRoleService.save(role);
                 sysRoleService.save(role);
                 sysRolePrivilegeService.saveBatch(role);//角色权限
                 sysRolePrivilegeService.saveBatch(role);//角色权限
                 commonCacheService.updateCustomRoleCache();
                 commonCacheService.updateCustomRoleCache();
@@ -390,4 +390,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         commonCacheService.removeCustomRoleCache();
         commonCacheService.removeCustomRoleCache();
         return this.updateById(sysRole);
         return this.updateById(sysRole);
     }
     }
+
+    @Override
+    public List<SysRole> getByRoleName(String roleName) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        return this.baseMapper.getByRoleName(schoolId, roleName);
+    }
 }
 }

+ 15 - 17
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -755,7 +755,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         List<SysUserErrorExportDto> errorDataList = JSON.parseArray(JSON.toJSONString(map.get(SystemConstant.ERROR_DATA_LIST)), SysUserErrorExportDto.class);
         List<SysUserErrorExportDto> errorDataList = JSON.parseArray(JSON.toJSONString(map.get(SystemConstant.ERROR_DATA_LIST)), SysUserErrorExportDto.class);
         if (Objects.isNull(errorDataList)) {
         if (Objects.isNull(errorDataList)) {
             errorDataList = new ArrayList<>();
             errorDataList = new ArrayList<>();
-            map.put(SystemConstant.ERROR_DATA_LIST,errorDataList);
+            map.put(SystemConstant.ERROR_DATA_LIST, errorDataList);
         }
         }
 
 
         SysUser requestUser = (SysUser) map.get(SystemConstant.SYS_USER);
         SysUser requestUser = (SysUser) map.get(SystemConstant.SYS_USER);
@@ -783,7 +783,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                         String orgName = sysUserImportDto.getOrgName();
                         String orgName = sysUserImportDto.getOrgName();
                         if (!orgInfoMap.containsKey(orgName)) {
                         if (!orgInfoMap.containsKey(orgName)) {
                             // 系统异常
                             // 系统异常
-                            throw ExceptionResultEnum.ERROR.exception("在解析的机构map集合中,没有找到excel数据中的用户机构名称【" + orgName + "】");
+                            throw ExceptionResultEnum.ERROR.exception("系统中未查询到机构名称[" + orgName + "]");
                         }
                         }
                         // 直接解析机构id
                         // 直接解析机构id
                         Long orgId = orgInfoMap.get(orgName);
                         Long orgId = orgInfoMap.get(orgName);
@@ -1296,26 +1296,24 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     /**
     /**
      * 根据角色名称获取角色id集合
      * 根据角色名称获取角色id集合
      *
      *
-     * @param schoolId 学校id
-     * @param roleName 角色名称组
+     * @param schoolId  学校id
+     * @param roleNames 角色名称组
      * @return 角色集合
      * @return 角色集合
      */
      */
-    private LinkedHashSet<Long> analyzeRoleName(Long schoolId, String roleName) {
+    private LinkedHashSet<Long> analyzeRoleName(Long schoolId, String roleNames) {
         LinkedHashSet<Long> roleIdList = new LinkedHashSet<>();
         LinkedHashSet<Long> roleIdList = new LinkedHashSet<>();
-        String[] arr = roleName.split(SystemConstant.COMMA);
+        String[] arr = roleNames.split(SystemConstant.COMMA);
         for (String cell : arr) {
         for (String cell : arr) {
-            QueryWrapper<SysRole> sysRoleQueryWrapper = new QueryWrapper<>();
-            sysRoleQueryWrapper.lambda().eq(SysRole::getEnable, true)
-                    .eq(SysRole::getName, cell.trim());
-            if (Objects.isNull(RoleTypeEnum.convertDescToEnum(cell.trim()))) {
-                // 自定义角色带学校id查
-                sysRoleQueryWrapper.lambda().eq(SysRole::getSchoolId, schoolId);
-            }
-            SysRole sysRole = sysRoleService.getOne(sysRoleQueryWrapper);
-            if (Objects.isNull(sysRole)) {
-                throw ExceptionResultEnum.ERROR.exception("系统中不存在excel导入的角色【" + cell.trim() + "】");
+            String roleName = cell.trim();
+            List<SysRole> sysRoles = sysRoleService.getByRoleName(roleName);
+            if (CollectionUtils.isEmpty(sysRoles)) {
+                throw ExceptionResultEnum.ERROR.exception("角色[" + roleName + "]不存在");
+            } else if (sysRoles.size() > 1) {
+                throw ExceptionResultEnum.ERROR.exception("角色[" + roleName + "]查询到多条数据,请联系管理员处理");
+            } else if (!sysRoles.get(0).getEnable()) {
+                throw ExceptionResultEnum.ERROR.exception("角色[" + roleName + "]已禁用");
             }
             }
-            roleIdList.add(sysRole.getId());
+            roleIdList.add(sysRoles.get(0).getId());
         }
         }
         return roleIdList;
         return roleIdList;
     }
     }

+ 14 - 1
teachcloud-common/src/main/resources/mapper/SysRoleMapper.xml

@@ -14,11 +14,13 @@
         <result column="update_id" property="updateId" />
         <result column="update_id" property="updateId" />
         <result column="update_time" property="updateTime" />
         <result column="update_time" property="updateTime" />
         <result column="default_role" property="defaultRole" />
         <result column="default_role" property="defaultRole" />
+        <result column="source" property="source" />
+        <result column="interpret" property="interpret" />
     </resultMap>
     </resultMap>
 
 
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-        select t.id, t.school_id, t.name, t.enable, t.type, t.create_id, t.create_time, t.update_id, t.update_time, t.default_role, t.interpret from sys_role t
+        select t.id, t.school_id, t.name, t.enable, t.type, t.create_id, t.create_time, t.update_id, t.update_time, t.default_role, t.source, t.interpret from sys_role t
     </sql>
     </sql>
 
 
     <select id="listRolesByUserId" resultMap="BaseResultMap">
     <select id="listRolesByUserId" resultMap="BaseResultMap">
@@ -91,4 +93,15 @@
         <include refid="Base_Column_List" />
         <include refid="Base_Column_List" />
         where t.default_role = 1 and (t.type = 'SCHOOL_ADMIN' or t.type = 'SCHOOL_TEACHER' or t.type = 'ASSISTANT')
         where t.default_role = 1 and (t.type = 'SCHOOL_ADMIN' or t.type = 'SCHOOL_TEACHER' or t.type = 'ASSISTANT')
     </select>
     </select>
+    <select id="getByRoleName" resultMap="BaseResultMap">
+        SELECT
+            *
+        FROM
+            sys_role
+        WHERE
+            name = #{roleName}
+          AND ((school_id IS NULL
+            AND default_role = TRUE)
+            OR school_id = #{schoolId})
+    </select>
 </mapper>
 </mapper>