浏览代码

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

xiaof 2 年之前
父节点
当前提交
97560ee678
共有 16 个文件被更改,包括 397 次插入87 次删除
  1. 二进制
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/.DS_Store
  2. 二进制
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/.DS_Store
  3. 58 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamDetailPdfDownloadDto.java
  4. 13 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java
  5. 11 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  6. 25 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  7. 14 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchServiceImpl.java
  8. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/TaskLogicService.java
  9. 138 52
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  10. 29 0
      distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml
  11. 14 6
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PdfTypeEnum.java
  12. 5 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java
  13. 53 6
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  14. 30 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/GsonUtil.java
  15. 1 2
      teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataGetAndEditServiceImpl.java
  16. 5 2
      teachcloud-report/src/main/java/com/qmth/teachcloud/report/start/StartRunning.java

二进制
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/.DS_Store


二进制
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/custom/.DS_Store


+ 58 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamDetailPdfDownloadDto.java

@@ -0,0 +1,58 @@
+package com.qmth.distributed.print.business.bean.dto;
+
+import com.qmth.distributed.print.business.entity.ExamDetail;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: examDetail pdf dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/10/13
+ */
+public class ExamDetailPdfDownloadDto extends ExamDetail {
+
+    @ApiModelProperty(value = "学期名称")
+    private String semesterName;
+
+    @ApiModelProperty(value = "考试名称")
+    private String examName;
+
+    @ApiModelProperty(value = "课程名(课程代码)")
+    private String courseNameCode;
+
+    @ApiModelProperty(value = "试卷编号")
+    private String paperNumber;
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public String getCourseNameCode() {
+        return courseNameCode;
+    }
+
+    public void setCourseNameCode(String courseNameCode) {
+        this.courseNameCode = courseNameCode;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+}

+ 13 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java

@@ -3,7 +3,10 @@ package com.qmth.distributed.print.business.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.distributed.print.business.bean.dto.*;
+import com.qmth.distributed.print.business.bean.dto.ClientExamStudentDto;
+import com.qmth.distributed.print.business.bean.dto.ExamDetailPdfDownloadDto;
+import com.qmth.distributed.print.business.bean.dto.PrintTaskDto;
+import com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
 import com.qmth.distributed.print.business.bean.result.ExaminationResult;
 import com.qmth.distributed.print.business.bean.result.ExaminationResult;
 import com.qmth.distributed.print.business.entity.ExamDetail;
 import com.qmth.distributed.print.business.entity.ExamDetail;
@@ -102,5 +105,13 @@ public interface ExamDetailMapper extends BaseMapper<ExamDetail> {
                              @Param("printHouseId") Long printHouseId,
                              @Param("printHouseId") Long printHouseId,
                              @Param("orgIds") Set<Long> orgIds);
                              @Param("orgIds") Set<Long> orgIds);
 
 
-    List<ExamDetailCourse> listSyncPaperNumberByPrintPlanId(Long printPlanId);
+    List<ExamDetailCourse> listSyncPaperNumberByPrintPlanId(@Param("printPlanId") Long printPlanId);
+
+    /**
+     * 根据id下载examDetail
+     *
+     * @param ids
+     * @return
+     */
+    List<ExamDetailPdfDownloadDto> findPdfDownload(@Param("ids") List<Long> ids);
 }
 }

+ 11 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -45,7 +45,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
      */
      */
     double calculateTotalPackages(Long printPlanId);
     double calculateTotalPackages(Long printPlanId);
 
 
-    IPage<PrintTaskDto> listPrintTask(Long semesterId,Long examId, Long printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId, Integer pageNumber, Integer pageSize);
+    IPage<PrintTaskDto> listPrintTask(Long semesterId, Long examId, Long printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId, Integer pageNumber, Integer pageSize);
 
 
     PrintTaskTotalDto taskTotalData(Long printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId);
     PrintTaskTotalDto taskTotalData(Long printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId);
 
 
@@ -114,7 +114,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
     /**
     /**
      * 查询考务数据-明细
      * 查询考务数据-明细
      *
      *
-     * @param schoolId      学校id
+     * @param schoolId        学校id
      * @param semesterId      学期id
      * @param semesterId      学期id
      * @param examId          考试id
      * @param examId          考试id
      * @param printPlanIdList 印刷计划id集合
      * @param printPlanIdList 印刷计划id集合
@@ -129,7 +129,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * @param pageSize        分页数量
      * @param pageSize        分页数量
      * @return 查询结果
      * @return 查询结果
      */
      */
-    IPage<ExaminationDetailResult> findExaminationDetail(Long schoolId,Long semesterId,Long examId, List<Long> printPlanIdList, String courseCode, String paperNumber, String examPlace,
+    IPage<ExaminationDetailResult> findExaminationDetail(Long schoolId, Long semesterId, Long examId, List<Long> printPlanIdList, String courseCode, String paperNumber, String examPlace,
                                                          String examRoom, String studentParams, Long startDate, Long endDate, int pageNumber, int pageSize);
                                                          String examRoom, String studentParams, Long startDate, Long endDate, int pageNumber, int pageSize);
 
 
     IPage<ExaminationDetailResult> findExaminationDetail(Long convertIdToLong, int pageNumber, int pageSize);
     IPage<ExaminationDetailResult> findExaminationDetail(Long convertIdToLong, int pageNumber, int pageSize);
@@ -231,4 +231,12 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * @return 班级名称组
      * @return 班级名称组
      */
      */
     String findClazzNamesByClazzIds(List<Long> clazzIdList, String separator);
     String findClazzNamesByClazzIds(List<Long> clazzIdList, String separator);
+
+    /**
+     * 根据id下载examDetail
+     *
+     * @param ids
+     * @return
+     */
+    List<ExamDetailPdfDownloadDto> findPdfDownload(List<Long> ids);
 }
 }

+ 25 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -21,7 +21,6 @@ import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.enums.StudentClazzEnum;
 import com.qmth.distributed.print.business.enums.StudentClazzEnum;
 import com.qmth.distributed.print.business.mapper.ExamDetailMapper;
 import com.qmth.distributed.print.business.mapper.ExamDetailMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
-import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.teachcloud.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -66,34 +65,41 @@ import java.util.stream.Stream;
  */
  */
 @Service
 @Service
 public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDetail> implements ExamDetailService {
 public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDetail> implements ExamDetailService {
+    private final static Logger log = LoggerFactory.getLogger(ExamDetailServiceImpl.class);
+
     @Resource
     @Resource
     private ExamDetailCourseService examDetailCourseService;
     private ExamDetailCourseService examDetailCourseService;
+
     @Resource
     @Resource
     private BasicExamRuleService basicExamRuleService;
     private BasicExamRuleService basicExamRuleService;
+
     @Resource
     @Resource
     private ExamDetailMapper examDetailMapper;
     private ExamDetailMapper examDetailMapper;
+
     @Resource
     @Resource
     private CommonCacheService commonCacheService;
     private CommonCacheService commonCacheService;
+
     @Resource
     @Resource
     private ExamStudentService examStudentService;
     private ExamStudentService examStudentService;
+
     @Resource
     @Resource
     private ExamPrintPlanService examPrintPlanService;
     private ExamPrintPlanService examPrintPlanService;
+
     @Resource
     @Resource
     private BasicAttachmentService basicAttachmentService;
     private BasicAttachmentService basicAttachmentService;
+
     @Resource
     @Resource
     private BasicStudentService basicStudentService;
     private BasicStudentService basicStudentService;
 
 
     @Resource
     @Resource
     TBTaskService tbTaskService;
     TBTaskService tbTaskService;
+
     @Resource
     @Resource
     ConvertUtil convertUtil;
     ConvertUtil convertUtil;
 
 
     @Autowired
     @Autowired
     private ClientPrintDataService clientPrintDataService;
     private ClientPrintDataService clientPrintDataService;
 
 
-    @Resource
-    AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
-
     @Autowired
     @Autowired
     ClientStatusService clientStatusService;
     ClientStatusService clientStatusService;
 
 
@@ -115,8 +121,6 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Resource
     @Resource
     TeachClazzService teachClazzService;
     TeachClazzService teachClazzService;
 
 
-    private final static Logger log = LoggerFactory.getLogger(ExamDetailServiceImpl.class);
-
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public double calculateTotalSubjects(Long printPlanId) {
     public double calculateTotalSubjects(Long printPlanId) {
@@ -159,25 +163,25 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         List<JSONObject> list = new ArrayList<>();
         List<JSONObject> list = new ArrayList<>();
         if (examDetail.getAttachmentId() != null) {
         if (examDetail.getAttachmentId() != null) {
             JSONObject jsonObject = new JSONObject();
             JSONObject jsonObject = new JSONObject();
-            jsonObject.put("type", PdfTypeEnum.PAPER);
+            jsonObject.put(SystemConstant.TYPE, PdfTypeEnum.PAPER);
             BasicAttachment attachment = basicAttachmentService.getById(examDetail.getAttachmentId());
             BasicAttachment attachment = basicAttachmentService.getById(examDetail.getAttachmentId());
             jsonObject.put("url", attachment == null ? null : teachcloudCommonService.filePreview(attachment.getPath()));
             jsonObject.put("url", attachment == null ? null : teachcloudCommonService.filePreview(attachment.getPath()));
             list.add(jsonObject);
             list.add(jsonObject);
         }
         }
         if (examDetail.getCardAttachmentId() != null) {
         if (examDetail.getCardAttachmentId() != null) {
             JSONObject jsonObject = new JSONObject();
             JSONObject jsonObject = new JSONObject();
-            jsonObject.put("type", PdfTypeEnum.CARD_A3);
+            jsonObject.put(SystemConstant.TYPE, PdfTypeEnum.CARD_A3);
             BasicAttachment attachment = basicAttachmentService.getById(examDetail.getCardAttachmentId());
             BasicAttachment attachment = basicAttachmentService.getById(examDetail.getCardAttachmentId());
             jsonObject.put("url", attachment == null ? null : teachcloudCommonService.filePreview(attachment.getPath()));
             jsonObject.put("url", attachment == null ? null : teachcloudCommonService.filePreview(attachment.getPath()));
             list.add(jsonObject);
             list.add(jsonObject);
         }
         }
         if (Objects.nonNull(examDetail.getAttachmentPath())) {
         if (Objects.nonNull(examDetail.getAttachmentPath())) {
             JSONObject js = JSONObject.parseObject(examDetail.getAttachmentPath());
             JSONObject js = JSONObject.parseObject(examDetail.getAttachmentPath());
-            JSONArray jsonArray = js.getJSONArray("path");
+            JSONArray jsonArray = js.getJSONArray(SystemConstant.PATH);
             for (int i = 0; i < jsonArray.size(); i++) {
             for (int i = 0; i < jsonArray.size(); i++) {
                 JSONObject object = jsonArray.getJSONObject(i);
                 JSONObject object = jsonArray.getJSONObject(i);
                 JSONObject jsonObject = new JSONObject();
                 JSONObject jsonObject = new JSONObject();
-                jsonObject.put("type", Objects.nonNull(object.get("printType")) ? PdfTypeEnum.valueOf((String) object.get("printType")) : null);
+                jsonObject.put(SystemConstant.TYPE, Objects.nonNull(object.get("printType")) ? PdfTypeEnum.valueOf((String) object.get("printType")) : null);
                 jsonObject.put("url", Objects.nonNull(object.get(SystemConstant.PDF_PATH)) ? teachcloudCommonService.filePreviewByPathAndType((String) object.get(SystemConstant.PDF_PATH), (String) object.get("type"), false) : null);
                 jsonObject.put("url", Objects.nonNull(object.get(SystemConstant.PDF_PATH)) ? teachcloudCommonService.filePreviewByPathAndType((String) object.get(SystemConstant.PDF_PATH), (String) object.get("type"), false) : null);
                 list.add(jsonObject);
                 list.add(jsonObject);
             }
             }
@@ -879,6 +883,17 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         return String.join(separator, clazzNameList);
         return String.join(separator, clazzNameList);
     }
     }
 
 
+    /**
+     * 根据id下载examDetail
+     *
+     * @param ids
+     * @return
+     */
+    @Override
+    public List<ExamDetailPdfDownloadDto> findPdfDownload(List<Long> ids) {
+        return examDetailMapper.findPdfDownload(ids);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @Override
     @Override
     public void deleteExaminationData(Long printPlanId, ExamDataSourceEnum source) {
     public void deleteExaminationData(Long printPlanId, ExamDataSourceEnum source) {

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

@@ -28,7 +28,6 @@ import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.service.*;
-import com.qmth.teachcloud.common.sync.TeachCloudReportTaskUtils;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -478,20 +477,32 @@ public class GradeBatchServiceImpl extends ServiceImpl<GradeBatchMapper, GradeBa
             if (orgIds.size() != 1) {
             if (orgIds.size() != 1) {
                 throw ExceptionResultEnum.SUCCESS.exception("任课老师" + key[0] + "对应课程不能属于不同学院");
                 throw ExceptionResultEnum.SUCCESS.exception("任课老师" + key[0] + "对应课程不能属于不同学院");
             }
             }
+            Long courseSecondaryOrgId = orgIds.get(0);
 
 
             SysUser sysUser;
             SysUser sysUser;
             if (sysUserList.isEmpty()) {
             if (sysUserList.isEmpty()) {
                 //新增
                 //新增
                 sysUser = new SysUser(schoolId, key[0], key[1], null, true);
                 sysUser = new SysUser(schoolId, key[0], key[1], null, true);
                 sysUser.setCode(key[0]);
                 sysUser.setCode(key[0]);
-                sysUser.setOrgId(orgIds.get(0));
+                sysUser.setOrgId(courseSecondaryOrgId);
                 sysUserService.save(sysUser);
                 sysUserService.save(sysUser);
             } else {
             } else {
                 //修改
                 //修改
                 sysUser = sysUserList.get(0);
                 sysUser = sysUserList.get(0);
+                Long orgId = sysUser.getOrgId();
+                SysOrg userSecondaryOrg = sysOrgService.findCollegeLevelOrgByOrgId(orgId);
+                Long userSecondaryOrgId = userSecondaryOrg.getId();
+                if (!courseSecondaryOrgId.equals(userSecondaryOrgId)){
+                    throw ExceptionResultEnum.ERROR.exception("导入的excel中,工号为【" + key[0] + "】的用户所在学院为【" + userSecondaryOrg.getName() +
+                            "】,和课程所在学院【" + sysOrgService.getById(courseSecondaryOrgId).getName() + "】不一致");
+                }
+                String dbRealName = sysUser.getRealName();
+                if (!dbRealName.equals(key[1])){
+                    throw ExceptionResultEnum.ERROR.exception("导入的excel中,工号为【" + key[0] + "】的用户姓名【" + key[1] +
+                            "】,与系统用户姓名【" + dbRealName + "】不一致 请检查excel数据");
+                }
                 sysUser.setRealName(key[1]);
                 sysUser.setRealName(key[1]);
                 sysUser.setEnable(true);
                 sysUser.setEnable(true);
-                sysUser.setOrgId(orgIds.get(0));
                 sysUserService.updateById(sysUser);
                 sysUserService.updateById(sysUser);
             }
             }
 
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/TaskLogicService.java

@@ -133,5 +133,5 @@ public interface TaskLogicService {
      */
      */
     Map<String, Object> executeDownloadScoreLogic(Map<String, Object> map) throws Exception;
     Map<String, Object> executeDownloadScoreLogic(Map<String, Object> map) throws Exception;
 
 
-    Map<String,Object> executeDownloadPaperFileBatch(Map<String, Object> map) throws Exception;
+    Map<String, Object> executeDownloadPaperFileBatch(Map<String, Object> map) throws Exception;
 }
 }

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

@@ -36,6 +36,7 @@ import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.common.util.excel.ExcelError;
 import com.qmth.teachcloud.common.util.excel.ExcelError;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Cell;
@@ -909,6 +910,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Override
     @Override
     @Transactional
     @Transactional
     public Map<String, Object> executeDownloadPdfLogic(Map<String, Object> map) throws Exception {
     public Map<String, Object> executeDownloadPdfLogic(Map<String, Object> map) throws Exception {
+        List<File> sourceFileList = null;
+        File zipFile = null;
+        String zipLocalRootPath = null;
         try {
         try {
             TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
             TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
             JSONArray jsonArray = JSONArray.parseArray(tbTask.getRemark());
             JSONArray jsonArray = JSONArray.parseArray(tbTask.getRemark());
@@ -918,59 +922,80 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             }
             }
 
 
             //查询examDetail
             //查询examDetail
-            List<ExamDetail> examDetailList = examDetailService.listByIds(Arrays.asList(arraysParams.getIds()));
-            if (Objects.nonNull(examDetailList)) {
-                Set<Long> attachmentIds = new HashSet<>();
-                Set<Long> allAttachmentIds = examDetailList.stream().map(ExamDetail::getAttachmentId).collect(Collectors.toSet());
-                if (!CollectionUtils.isEmpty(allAttachmentIds)) {
-                    attachmentIds.addAll(allAttachmentIds);
-                }
-                Set<Long> cardAttachmentIds = examDetailList.stream().map(ExamDetail::getCardAttachmentId).collect(Collectors.toSet());
-                if (!CollectionUtils.isEmpty(cardAttachmentIds)) {
-                    attachmentIds.addAll(cardAttachmentIds);
+//            List<ExamDetail> examDetailList = examDetailService.listByIds(Arrays.asList(arraysParams.getIds()));
+            List<ExamDetailPdfDownloadDto> examDetailList = examDetailService.findPdfDownload(Arrays.asList(arraysParams.getIds()));
+            if (!CollectionUtils.isEmpty(examDetailList)) {
+                LocalDateTime nowTime = LocalDateTime.now();
+                StringJoiner stringJoiner = new StringJoiner("")
+                        .add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
+                StringJoiner dirName = new StringJoiner("")
+                        .add(UploadFileEnum.FILE.getTitle()).add(File.separator)
+                        .add(String.valueOf(nowTime.getYear())).add(File.separator)
+                        .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
+                        .add(String.format("%02d", nowTime.getDayOfMonth()))
+                        .add(File.separator).add(SystemConstant.getUuid()).add(SystemConstant.ZIP_PREFIX);
+                zipFile = new File(stringJoiner.toString() + dirName.toString());
+                if (!zipFile.getParentFile().exists()) {
+                    zipFile.getParentFile().mkdirs();
                 }
                 }
-                List<BasicAttachment> basicAttachmentList = basicAttachmentService.listByIds(attachmentIds);
-
-                if (Objects.nonNull(basicAttachmentList) && basicAttachmentList.size() > 0) {
-                    LocalDateTime nowTime = LocalDateTime.now();
-                    StringJoiner stringJoiner = new StringJoiner("")
-                            .add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-                    StringJoiner dirName = new StringJoiner("")
-                            .add(UploadFileEnum.FILE.getTitle()).add(File.separator)
-                            .add(String.valueOf(nowTime.getYear())).add(File.separator)
-                            .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                            .add(String.format("%02d", nowTime.getDayOfMonth()))
-                            .add(File.separator).add(SystemConstant.getUuid()).add(SystemConstant.ZIP_PREFIX);
-
-                    File zipFile = new File(stringJoiner.toString() + dirName.toString());
-                    if (!zipFile.getParentFile().exists()) {
-                        zipFile.getParentFile().mkdirs();
-//                        zipFile.createNewFile();
-                    }
 
 
-                    boolean oss = dictionaryConfig.sysDomain().isOss();
+                Long time = System.currentTimeMillis();
+                zipLocalRootPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + time;
+                sourceFileList = new ArrayList<>(examDetailList.size() * 5);
+                for (ExamDetailPdfDownloadDto e : examDetailList) {
+                    StringJoiner dirPath = new StringJoiner("")
+                            .add(String.valueOf(time)).add(File.separator)
+                            .add(e.getSemesterName()).add(File.separator)
+                            .add(e.getExamName()).add(File.separator)
+                            .add(e.getCourseNameCode()).add(File.separator)
+                            .add(e.getPackageCode()).add(File.separator)
+                            .add(e.getCourseNameCode()).add("-")
+                            .add(e.getPaperNumber()).add("-");
+                    //试卷合并文件
+                    if (Objects.nonNull(e.getAttachmentId())) {
+                        BasicAttachment attachment = basicAttachmentService.getById(e.getAttachmentId());
+                        File paperFile = getAttachmentFile(attachment, dirPath.toString() + PdfTypeEnum.PAPER.getTitle() + SystemConstant.PDF_PREFIX);
+                        if (Objects.nonNull(paperFile)) {
+                            sourceFileList.add(paperFile);
+                        }
+                    }
 
 
-                    List<File> sourceFiles = new ArrayList<>();
-                    for (BasicAttachment basicAttachment : basicAttachmentList) {
-                        JSONObject jsonObject = JSONObject.parseObject(basicAttachment.getPath());
-                        UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-
-                        StringJoiner stringJoinerPdf = new StringJoiner("")
-                                .add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator)
-                                .add((String) jsonObject.get(SystemConstant.PATH));
-                        File htmlFile = null;
-                        if (oss) {
-                            htmlFile = fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), stringJoinerPdf.toString(), uploadFileEnum.getFssType());
-                        } else {
-                            htmlFile = new File((String) jsonObject.get(SystemConstant.PATH));
+                    //题卡合并文件
+                    if (Objects.nonNull(e.getCardAttachmentId())) {
+                        BasicAttachment cardAttachment = basicAttachmentService.getById(e.getCardAttachmentId());
+                        File cardFile = getAttachmentFile(cardAttachment, dirPath.toString() + PdfTypeEnum.CARD_A3.getTitle() + SystemConstant.PDF_PREFIX);
+                        if (Objects.nonNull(cardFile)) {
+                            sourceFileList.add(cardFile);
                         }
                         }
-                        sourceFiles.add(htmlFile);
                     }
                     }
-//                    FileUtil.doZip(zipFile, sourceFiles);
 
 
-                    Zip4jUtil.zipEncryptFile(zipFile.getPath(), sourceFiles, SystemConstant.ZIP_ENCRYPT_PWD);
+                    //卷袋贴/签到表/登记表文件
+                    if (Objects.nonNull(e.getCardAttachmentId())) {
+                        JSONObject js = JSONObject.parseObject(e.getAttachmentPath());
+                        JSONArray jsonArrayTemp = js.getJSONArray(SystemConstant.PATH);
+                        for (int i = 0; i < jsonArrayTemp.size(); i++) {
+                            JSONObject object = jsonArrayTemp.getJSONObject(i);
+                            PdfTypeEnum pdfTypeEnum = PdfTypeEnum.valueOf((String) object.get("printType"));
+                            switch (pdfTypeEnum) {
+                                case PACKAGE:
+                                case SIGN:
+                                case CHECK_IN:
+                                    File file = getJsonFile(object, dirPath.toString() + pdfTypeEnum.getTitle() + SystemConstant.PDF_PREFIX);
+                                    if (Objects.nonNull(file)) {
+                                        sourceFileList.add(file);
+                                    }
+                                    break;
+                                default:
+                                    break;
+                            }
+                        }
+                    }
+                }
+                if (!CollectionUtils.isEmpty(sourceFileList)) {
+                    Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipLocalRootPath, SystemConstant.ZIP_ENCRYPT_PWD);
                     String ossDirName = dirName.toString().replaceAll("\\\\", "/");
                     String ossDirName = dirName.toString().replaceAll("\\\\", "/");
                     JSONObject jsonObject = new JSONObject();
                     JSONObject jsonObject = new JSONObject();
+                    boolean oss = dictionaryConfig.sysDomain().isOss();
                     if (oss) {//上传至oss
                     if (oss) {//上传至oss
                         fileStoreUtil.ossUpload(ossDirName, zipFile, BinaryUtil.toBase64String(HexUtils.decodeHex(DigestUtils.md5Hex(new FileInputStream(zipFile)))), fileStoreUtil.getUploadEnumByPath(ossDirName).getFssType());
                         fileStoreUtil.ossUpload(ossDirName, zipFile, BinaryUtil.toBase64String(HexUtils.decodeHex(DigestUtils.md5Hex(new FileInputStream(zipFile)))), fileStoreUtil.getUploadEnumByPath(ossDirName).getFssType());
                         jsonObject.put(SystemConstant.PATH, ossDirName);
                         jsonObject.put(SystemConstant.PATH, ossDirName);
@@ -981,15 +1006,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     }
                     }
                     jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
                     jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
                     tbTask.setResultFilePath(jsonObject.toJSONString());
                     tbTask.setResultFilePath(jsonObject.toJSONString());
-                    if (Objects.nonNull(dictionaryConfig.sysDomain()) && dictionaryConfig.sysDomain().isOss()) {
-                        for (File file : sourceFiles) {
-                            file.delete();
-                        }
-                        zipFile.delete();
-                    }
                 }
                 }
-                map.computeIfAbsent(SystemConstant.SIZE, v -> attachmentIds.size());
             }
             }
+            map.put(SystemConstant.SIZE, Objects.nonNull(sourceFileList) ? sourceFileList.size() : 0);
         } catch (Exception e) {
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             log.error(SystemConstant.LOG_ERROR, e);
             if (e instanceof ApiException) {
             if (e instanceof ApiException) {
@@ -997,10 +1016,77 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             } else {
             } else {
                 ResultUtil.error(e.getMessage());
                 ResultUtil.error(e.getMessage());
             }
             }
+        } finally {
+            if (!CollectionUtils.isEmpty(sourceFileList)) {
+                for (File file : sourceFileList) {
+                    file.delete();
+                }
+            }
+            if (Objects.nonNull(dictionaryConfig.sysDomain()) && dictionaryConfig.sysDomain().isOss() && Objects.nonNull(zipFile)) {
+                zipFile.delete();
+            }
         }
         }
         return map;
         return map;
     }
     }
 
 
+    /**
+     * 获取附件文件
+     *
+     * @param jsonObject
+     * @param pathName
+     * @return
+     * @throws Exception
+     */
+    private File getJsonFile(JSONObject jsonObject, String pathName) throws Exception {
+        File file = null;
+        String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
+        StringJoiner stringJoinerPdf = new StringJoiner("")
+                .add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator)
+                .add(pathName);
+        if (Objects.nonNull(attachmentType) && !Objects.equals(attachmentType, SystemConstant.LOCAL)) {
+            file = fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PDF_PATH), stringJoinerPdf.toString(), UploadFileEnum.PDF.getFssType());
+        } else {
+            file = new File(stringJoinerPdf.toString());
+            if (!file.exists()) {
+                file.getParentFile().mkdirs(); //目标文件目录不存在的话需要创建目录
+                file.createNewFile();
+            }
+            IOUtils.copy(new FileInputStream((String) jsonObject.get(SystemConstant.PDF_PATH)), new FileOutputStream(file));
+        }
+        return file;
+    }
+
+    /**
+     * 获取附件文件
+     *
+     * @param pathName
+     * @param pathName
+     * @return
+     * @throws Exception
+     */
+    private File getAttachmentFile(BasicAttachment attachment, String pathName) throws Exception {
+        File file = null;
+        if (Objects.nonNull(attachment) && Objects.nonNull(attachment.getPath())) {
+            JSONObject jsonObject = JSONObject.parseObject(attachment.getPath());
+            String attachmentType = (String) jsonObject.get(SystemConstant.TYPE);
+            UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
+            StringJoiner stringJoinerPdf = new StringJoiner("")
+                    .add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator)
+                    .add(pathName);
+            if (Objects.nonNull(attachmentType) && !Objects.equals(attachmentType, SystemConstant.LOCAL)) {
+                file = fileStoreUtil.ossDownload((String) jsonObject.get(SystemConstant.PATH), stringJoinerPdf.toString(), uploadFileEnum.getFssType());
+            } else {
+                file = new File(stringJoinerPdf.toString());
+                if (!file.exists()) {
+                    file.getParentFile().mkdirs(); //目标文件目录不存在的话需要创建目录
+                    file.createNewFile();
+                }
+                IOUtils.copy(new FileInputStream((String) jsonObject.get(SystemConstant.PATH)), new FileOutputStream(file));
+            }
+        }
+        return file;
+    }
+
     @Override
     @Override
     @Transactional
     @Transactional
     public Map<String, Object> executeExportSampleLogic(Map<String, Object> map) throws Exception {
     public Map<String, Object> executeExportSampleLogic(Map<String, Object> map) throws Exception {

+ 29 - 0
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -516,4 +516,33 @@
             a.print_plan_id = #{printPlanId}
             a.print_plan_id = #{printPlanId}
     </select>
     </select>
 
 
+    <select id="findPdfDownload" resultType="com.qmth.distributed.print.business.bean.dto.ExamDetailPdfDownloadDto">
+        select
+            ed.*,
+            bs.name as semesterName,
+            be.name as examName,
+            GROUP_CONCAT(CONCAT(edc.course_name, '(', edc.course_code, ')')) as courseNameCode,
+            GROUP_CONCAT(edc.paper_number) paperNumber
+        from
+            exam_detail ed
+                join exam_print_plan epp on
+                epp.id = ed.print_plan_id
+                join basic_exam be on
+                be.id = epp.exam_id
+                join basic_semester bs on
+                bs.id = be.semester_id
+                join exam_detail_course edc on
+                edc.exam_detail_id = ed.id
+        <where>
+            <if test="ids != null and ids != '' and ids.size > 0">
+                AND ed.id IN
+                <foreach collection="ids" item="id" index="index" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+            edc.exam_detail_id
+        order by bs.name
+    </select>
 </mapper>
 </mapper>

+ 14 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PdfTypeEnum.java

@@ -5,26 +5,34 @@ import java.util.List;
 
 
 /**
 /**
  * 角色类型
  * 角色类型
+ *
  * @Date: 2021/3/23.
  * @Date: 2021/3/23.
  */
  */
 public enum PdfTypeEnum {
 public enum PdfTypeEnum {
 
 
-    PAPER("试卷合并文件"),
-    CARD_A3("题卡A3合并文件"),
-    PACKAGE("卷袋贴文件"),
-    SIGN("签到表文件"),
-    CHECK_IN("登记表文件");
+    PAPER("试卷合并文件", "试卷"),
+    CARD_A3("题卡A3合并文件", "题卡"),
+    PACKAGE("卷袋贴文件", "卷袋贴"),
+    SIGN("签到表文件", "签到表"),
+    CHECK_IN("登记表文件", "考试情况登记表");
 
 
-    PdfTypeEnum(String desc) {
+    PdfTypeEnum(String desc, String title) {
         this.desc = desc;
         this.desc = desc;
+        this.title = title;
     }
     }
 
 
     private String desc;
     private String desc;
 
 
+    private String title;
+
     public String getDesc() {
     public String getDesc() {
         return desc;
         return desc;
     }
     }
 
 
+    public String getTitle() {
+        return title;
+    }
+
     /**
     /**
      * @param hasAdmin 是否需要管理员
      * @param hasAdmin 是否需要管理员
      * @return
      * @return

+ 5 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -251,4 +251,9 @@ public interface SysUserService extends IService<SysUser> {
      * @return true:包含 || false:不包含
      * @return true:包含 || false:不包含
      */
      */
     boolean includeSysRole(Long userId, RoleTypeEnum defaultRole);
     boolean includeSysRole(Long userId, RoleTypeEnum defaultRole);
+
+    /**
+     * 为没有学校管理员的学校自动创建一个学校管理员
+     */
+    void buildAdministratorForSchool();
 }
 }

+ 53 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -593,15 +593,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
         SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
         boolean isSuccess = true;
         boolean isSuccess = true;
         try {
         try {
-            Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
+            Long schoolId = userSaveParams.getSchoolId();
             if (schoolId == null) {
             if (schoolId == null) {
-                schoolId = userSaveParams.getSchoolId();
+                schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
             }
             }
             List<SysUser> requestUserList = this.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, schoolId).like(SysUser::getLoginName, "admin"));
             List<SysUser> requestUserList = this.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, schoolId).like(SysUser::getLoginName, "admin"));
-            if (requestUserList.size() == 0) {
+            if (requestUserList.size() == 0 && !Objects.equals(userSaveParams.getRealName(), "学校管理员")) {
                 throw ExceptionResultEnum.ERROR.exception("该学校没有内置的学校管理员");
                 throw ExceptionResultEnum.ERROR.exception("该学校没有内置的学校管理员");
             }
             }
-            SysUser requestUser = requestUserList.get(0);
+            Long requestUserId = 1L;
+            if (requestUserList.size() > 0) {
+                requestUserId = requestUserList.get(0).getId();
+            }
             Gson gson = new Gson();
             Gson gson = new Gson();
             userSaveParams.setSchoolId(schoolId);
             userSaveParams.setSchoolId(schoolId);
             SysUser sysUser = gson.fromJson(gson.toJson(userSaveParams), SysUser.class);
             SysUser sysUser = gson.fromJson(gson.toJson(userSaveParams), SysUser.class);
@@ -619,7 +622,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                     throw ExceptionResultEnum.ERROR.exception("用户名已存在");
                     throw ExceptionResultEnum.ERROR.exception("用户名已存在");
                 }
                 }
 
 
-                sysUser.insertInfo(requestUser.getId());
+                sysUser.insertInfo(requestUserId);
                 sysUserService.save(sysUser);
                 sysUserService.save(sysUser);
                 for (Long roleId : userSaveParams.getRoleIds()) {
                 for (Long roleId : userSaveParams.getRoleIds()) {
                     commonService.addUserRolePrivilege(sysUser, roleId);
                     commonService.addUserRolePrivilege(sysUser, roleId);
@@ -630,7 +633,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
                 Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
                 int count = (int) dbUserRolesList.stream().filter(userRolesList::contains).count();
                 int count = (int) dbUserRolesList.stream().filter(userRolesList::contains).count();
                 SysUser dbUser = sysUserService.getById(sysUser.getId());
                 SysUser dbUser = sysUserService.getById(sysUser.getId());
-                sysUser.updateInfo(requestUser.getId());
+                sysUser.updateInfo(requestUserId);
                 sysUserService.updateById(sysUser);
                 sysUserService.updateById(sysUser);
                 List<SysRole> list = sysUserRoleService.listRoleByUserId(sysUser.getId());
                 List<SysRole> list = sysUserRoleService.listRoleByUserId(sysUser.getId());
                 boolean containsQuestionTeacher = list.stream().anyMatch(m -> RoleTypeEnum.SCHOOL_ADMIN.equals(m.getType()));
                 boolean containsQuestionTeacher = list.stream().anyMatch(m -> RoleTypeEnum.SCHOOL_ADMIN.equals(m.getType()));
@@ -995,6 +998,50 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return false;
         return false;
     }
     }
 
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void buildAdministratorForSchool() {
+        // 为没有学校管理员的学校自动创建一个学校管理员
+        List<BasicSchool> basicSchoolList = basicSchoolService.list();
+        SysRole role = sysRoleService.list(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType, RoleTypeEnum.SCHOOL_ADMIN)).get(0);
+        List<Long> roleIds = new ArrayList<>();
+        roleIds.add(role.getId());
+        for (BasicSchool basicSchool : basicSchoolList) {
+            Long schoolId = basicSchool.getId();
+            SysOrg schoolOrg = sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda()
+                    .eq(SysOrg::getSchoolId, schoolId)
+                    .eq(SysOrg::getType, OrgTypeEnum.SCHOOL));
+            if (Objects.isNull(schoolOrg)) {
+                throw ExceptionResultEnum.ERROR.exception("未找到学校对应的顶级机构");
+            }
+            // 用户id集合
+            List<Long> adminUserIdList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda()
+                            .in(SysUserRole::getRoleId, roleIds))
+                    .stream()
+                    .map(SysUserRole::getUserId)
+                    .distinct().collect(Collectors.toList());
+            if (adminUserIdList.size() > 0) {
+                List<SysUser> adminUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda()
+                        .eq(SysUser::getSchoolId, schoolId)
+                        .in(SysUser::getId, adminUserIdList));
+                if (adminUserList.size() > 0) {
+                    // 存在管理员
+                    continue;
+                }
+            }
+            UserSaveParams userSaveParams = new UserSaveParams();
+            userSaveParams.setSchoolId(schoolId);
+            userSaveParams.setLoginName("admin");
+            userSaveParams.setRealName("学校管理员");
+            userSaveParams.setPassword(SystemConstant.DEFAULT_PASSWORD);
+
+            userSaveParams.setOrgId(schoolOrg.getId());
+            userSaveParams.setEnable(true);
+            userSaveParams.setRoleIds(roleIds.toArray(new Long[0]));
+            sysUserService.saveUserNoAuth(userSaveParams);
+        }
+    }
+
     /**
     /**
      * 批量处理用户信息帮助类
      * 批量处理用户信息帮助类
      *
      *

+ 30 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/GsonUtil.java

@@ -0,0 +1,30 @@
+package com.qmth.teachcloud.common.util;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonParseException;
+
+import java.lang.reflect.Type;
+
+/**
+ * @Description: Json工具类
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/10/12
+ */
+public class GsonUtil {
+    private static Gson gson = new GsonBuilder().create();
+
+    public static String toJson(Object value) {
+        return gson.toJson(value);
+    }
+
+    public static <T> T fromJson(String json, Class<T> classOfT) throws JsonParseException {
+        return gson.fromJson(json, classOfT);
+    }
+
+    public static <T> T fromJson(String json, Type typeOfT) throws JsonParseException {
+        return (T) gson.fromJson(json, typeOfT);
+    }
+}

+ 1 - 2
teachcloud-report-business/src/main/java/com/qmth/teachcloud/report/business/service/impl/AnalyzeDataGetAndEditServiceImpl.java

@@ -551,8 +551,7 @@ public class AnalyzeDataGetAndEditServiceImpl implements AnalyzeDataGetAndEditSe
             }
             }
             SysUser old = sysUserService.getOne(new QueryWrapper<SysUser>().lambda()
             SysUser old = sysUserService.getOne(new QueryWrapper<SysUser>().lambda()
                     .eq(SysUser::getSchoolId, tbSchoolTeacherDto.getSchoolId())
                     .eq(SysUser::getSchoolId, tbSchoolTeacherDto.getSchoolId())
-                    .eq(SysUser::getLoginName, tbSchoolTeacherDto.getTeacherCode())
-                    .eq(SysUser::getRealName, tbSchoolTeacherDto.getTeacherName()));
+                    .eq(SysUser::getLoginName, tbSchoolTeacherDto.getTeacherCode()));
             checkMap.put(tbSchoolTeacherDto.getTeacherCode(), tbSchoolTeacherDto.getTeacherName());
             checkMap.put(tbSchoolTeacherDto.getTeacherCode(), tbSchoolTeacherDto.getTeacherName());
             Long id = 0L;
             Long id = 0L;
             if (Objects.nonNull(old)) {
             if (Objects.nonNull(old)) {

+ 5 - 2
teachcloud-report/src/main/java/com/qmth/teachcloud/report/start/StartRunning.java

@@ -1,7 +1,7 @@
 package com.qmth.teachcloud.report.start;
 package com.qmth.teachcloud.report.start;
 
 
-import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.service.AuthInfoService;
 import com.qmth.teachcloud.common.service.AuthInfoService;
+import com.qmth.teachcloud.common.service.SysUserService;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.CommandLineRunner;
@@ -22,11 +22,14 @@ public class StartRunning implements CommandLineRunner {
 
 
     @Resource
     @Resource
     AuthInfoService authInfoService;
     AuthInfoService authInfoService;
+    @Resource
+    SysUserService sysUserService;
 
 
     @Override
     @Override
-    public void run(String... args) throws Exception {
+    public void run(String... args) {
         log.info("服务器启动时执行 start");
         log.info("服务器启动时执行 start");
         authInfoService.appInfoInit();
         authInfoService.appInfoInit();
+        sysUserService.buildAdministratorForSchool();
         log.info("服务器启动时执行 end");
         log.info("服务器启动时执行 end");
     }
     }
 }
 }