Jelajahi Sumber

Merge branch 'dev_v2.2.0' into release_v2.2.0
merge

wangliang 3 tahun lalu
induk
melakukan
32f14efac5

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDto.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.business.bean.dto;
 import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
+import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
 import java.util.Objects;
@@ -40,6 +41,16 @@ public class ExamTaskDto {
     private String statusStr;
     private List<BlurryUserDto> users;
     private boolean myself;
+    @ApiModelProperty(value = "审批表展示状态")
+    private Boolean approveFormStatus;
+
+    public Boolean getApproveFormStatus() {
+        return approveFormStatus;
+    }
+
+    public void setApproveFormStatus(Boolean approveFormStatus) {
+        this.approveFormStatus = approveFormStatus;
+    }
 
     public boolean isMyself() {
         return myself;

+ 179 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCStatisticsImportTemp.java

@@ -0,0 +1,179 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 命题导入临时数据表
+ * </p>
+ *
+ * @author wangliang
+ * @since 2021-09-10
+ */
+@ApiModel(value = "TCStatisticsImportTemp对象", description = "命题导入临时数据表")
+public class TCStatisticsImportTemp implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "开课学院id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long collegeId;
+
+    @ApiModelProperty(value = "开课学院名称")
+    private String collegeName;
+
+    @ApiModelProperty(value = "开课部门id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long teachingRoomId;
+
+    @ApiModelProperty(value = "开课部门名称")
+    private String teachingRoomName;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "课程代码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "任课老师名称")
+    private String teacherName;
+
+    @ApiModelProperty(value = "班级id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long clazzId;
+
+    @ApiModelProperty(value = "班级名称")
+    private String clazzName;
+
+    @ApiModelProperty(value = "批次号")
+    private String batchNo;
+
+    public TCStatisticsImportTemp() {
+
+    }
+
+    public TCStatisticsImportTemp(Long collegeId,
+                                  String collegeName,
+                                  Long teachingRoomId,
+                                  String teachingRoomName,
+                                  String courseName,
+                                  String courseCode,
+                                  String teacherName,
+                                  Long clazzId,
+                                  String clazzName,
+                                  String batchNo) {
+        this.id = SystemConstant.getDbUuid();
+        this.collegeId = collegeId;
+        this.collegeName = collegeName;
+        this.teachingRoomId = teachingRoomId;
+        this.teachingRoomName = teachingRoomName;
+        this.courseName = courseName;
+        this.courseCode = courseCode;
+        this.teacherName = teacherName;
+        this.clazzId = clazzId;
+        this.clazzName = clazzName;
+        this.batchNo = batchNo;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCollegeId() {
+        return collegeId;
+    }
+
+    public void setCollegeId(Long collegeId) {
+        this.collegeId = collegeId;
+    }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public Long getTeachingRoomId() {
+        return teachingRoomId;
+    }
+
+    public void setTeachingRoomId(Long teachingRoomId) {
+        this.teachingRoomId = teachingRoomId;
+    }
+
+    public String getTeachingRoomName() {
+        return teachingRoomName;
+    }
+
+    public void setTeachingRoomName(String teachingRoomName) {
+        this.teachingRoomName = teachingRoomName;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public Long getClazzId() {
+        return clazzId;
+    }
+
+    public void setClazzId(Long clazzId) {
+        this.clazzId = clazzId;
+    }
+
+    public String getClazzName() {
+        return clazzName;
+    }
+
+    public void setClazzName(String clazzName) {
+        this.clazzName = clazzName;
+    }
+
+    public String getBatchNo() {
+        return batchNo;
+    }
+
+    public void setBatchNo(String batchNo) {
+        this.batchNo = batchNo;
+    }
+}

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TCStatisticsImportTempMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.distributed.print.business.entity.TCStatisticsImportTemp;
+
+/**
+ * <p>
+ * 命题导入临时数据表 Mapper 接口
+ * </p>
+ *
+ * @author wangliang
+ * @since 2021-09-10
+ */
+public interface TCStatisticsImportTempMapper extends BaseMapper<TCStatisticsImportTemp> {
+
+}

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TCStatisticsImportTempService.java

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.distributed.print.business.entity.TCStatisticsImportTemp;
+
+/**
+ * <p>
+ * 命题导入临时数据表 服务类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2021-09-10
+ */
+public interface TCStatisticsImportTempService extends IService<TCStatisticsImportTemp> {
+
+}

+ 56 - 37
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -175,6 +175,15 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         Page<ExamTaskDto> page = new Page<>(pageNumber, pageSize);
         IPage<ExamTaskDto> examTaskDtoIPage = this.baseMapper.listPage(page, schoolId, enable, status, cardRuleId, courseCode, paperNumber, startTime, endTime, orgIds, userName, createName);
+        for (ExamTaskDto record : examTaskDtoIPage.getRecords()) {
+            // 判断审批表状态
+            String cellPaperNumber = record.getPaperNumber();
+            List<PrintPlanStatusEnum> printPlanStatusEnumList = new ArrayList<>();
+            printPlanStatusEnumList.add(PrintPlanStatusEnum.PRINTING);
+            printPlanStatusEnumList.add(PrintPlanStatusEnum.PRINT_FINISH);
+            List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(cellPaperNumber, printPlanStatusEnumList);
+            record.setApproveFormStatus(examPackageDetailDatasource.size() > 0);
+        }
         return examTaskDtoIPage;
     }
 
@@ -1698,37 +1707,41 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         List<PrintPlanStatusEnum> printPlanStatusEnumList = new ArrayList<>();
         printPlanStatusEnumList.add(PrintPlanStatusEnum.PRINTING);
         printPlanStatusEnumList.add(PrintPlanStatusEnum.PRINT_FINISH);
-        List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber,printPlanStatusEnumList);
+        List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber, printPlanStatusEnumList);
         ExamObjectDto examObjectDto = this.buildExamObjectDtoByPackageDatasource(examPackageDetailDatasource);
 
         // 3.ApprovalInfo部分
+        Boolean review = examTask.getReview();
+        final String remark = "通过";
+        final String link = ",";
         List<ApprovalInfo> approvalInfoList = new ArrayList<>();
-        ApprovalInfo second = examTaskReviewLogService.findOnePassBySetUp(flowId, 2);
-        if (Objects.isNull(second)) {
-            throw ExceptionResultEnum.ERROR.exception("未找到主任级审核记录");
-        }
-        ApprovalInfo third = examTaskReviewLogService.findOnePassBySetUp(flowId, 3);
-        if (Objects.isNull(third)) {
-            throw ExceptionResultEnum.ERROR.exception("未找到院长级审核记录");
-        }
-        String secondRemark = second.getRemark();
-        if (SystemConstant.strNotNull(secondRemark)) {
-            secondRemark = "通过," + secondRemark;
-        } else {
-            secondRemark = "通过";
-        }
-        String thirdRemark = third.getRemark();
-        if (SystemConstant.strNotNull(thirdRemark)) {
-            thirdRemark = "通过," + thirdRemark;
-        } else {
-            thirdRemark = "通过";
-        }
-        second.setRemark(secondRemark);
-        third.setRemark(thirdRemark);
-        approvalInfoList.add(second);
-        approvalInfoList.add(third);
-
+        if (review) {
+            ApprovalInfo second = examTaskReviewLogService.findOnePassBySetUp(flowId, 2);
+            if (Objects.isNull(second)) {
+                throw ExceptionResultEnum.ERROR.exception("未找到主任级审核记录");
+            }
+            ApprovalInfo third = examTaskReviewLogService.findOnePassBySetUp(flowId, 3);
+            if (Objects.isNull(third)) {
+                throw ExceptionResultEnum.ERROR.exception("未找到院长级审核记录");
+            }
+            String secondRemark = second.getRemark();
+            if (SystemConstant.strNotNull(secondRemark)) {
+                secondRemark = remark + link + secondRemark;
+            } else {
+                secondRemark = remark;
+            }
 
+            String thirdRemark = third.getRemark();
+            if (SystemConstant.strNotNull(thirdRemark)) {
+                thirdRemark = remark + link + thirdRemark;
+            } else {
+                thirdRemark = remark;
+            }
+            second.setRemark(secondRemark);
+            third.setRemark(thirdRemark);
+            approvalInfoList.add(second);
+            approvalInfoList.add(third);
+        }
         // ---- 组装Dto
         ExamTaskApprovalFormDto examTaskApprovalFormDto = new ExamTaskApprovalFormDto();
         BasicInfo basicInfo = new BasicInfo();
@@ -1785,11 +1798,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         List<PrintPlanStatusEnum> printPlanStatusEnumList = new ArrayList<>();
         printPlanStatusEnumList.add(PrintPlanStatusEnum.NEW);
         printPlanStatusEnumList.add(PrintPlanStatusEnum.READY);
-        List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber,printPlanStatusEnumList);
+        List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(paperNumber, printPlanStatusEnumList);
         ExamObjectDto examObjectDto = this.buildExamObjectDtoByPackageDatasource(examPackageDetailDatasource);
 
-        ExamTask examTask = examTaskService.getOne(new QueryWrapper<ExamTask>().lambda().eq(ExamTask::getPaperNumber,paperNumber).eq(ExamTask::getSchoolId,schoolId));
-        if (Objects.isNull(examTask)){
+        ExamTask examTask = examTaskService.getOne(new QueryWrapper<ExamTask>().lambda().eq(ExamTask::getPaperNumber, paperNumber).eq(ExamTask::getSchoolId, schoolId));
+        if (Objects.isNull(examTask)) {
             throw ExceptionResultEnum.ERROR.exception("未找到命题任务");
         }
         examObjectDto.setPaperName(examTask.getPaperName());
@@ -1841,12 +1854,18 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
     }
 
-    private ExamObjectDto buildExamObjectDtoByPackageDatasource(List<ExamPackageDetail> examPackageDetailDatasource){
+    /**
+     * 根据试卷袋信息构建考试对象信息
+     *
+     * @param examPackageDetailDatasource 试卷袋数据源
+     * @return 考试对象
+     */
+    private ExamObjectDto buildExamObjectDtoByPackageDatasource(List<ExamPackageDetail> examPackageDetailDatasource) {
         Long examStartTime = null;
         Long examEndTime = null;
         int printTotalCount = 0;
         List<ExamRoomInfo> examRoomInfoList = new ArrayList<>();
-        if (examPackageDetailDatasource.size() > 0){
+        if (examPackageDetailDatasource.size() > 0) {
             Set<Long> examDetailIdSet = examPackageDetailDatasource.stream().map(ExamPackageDetail::getExamDetailId).collect(Collectors.toSet());
             for (Long examDetailId : examDetailIdSet) {
                 // 一个考场下
@@ -1860,11 +1879,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                         .collect(Collectors.toList());
 
                 List<BackupMethodEnum> backupMethodEnums = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupMethod).distinct().collect(Collectors.toList());
-                if (backupMethodEnums.size() != 1 && backupMethodEnums.get(0) != BackupMethodEnum.ROOM){
+                if (backupMethodEnums.size() != 1 && backupMethodEnums.get(0) != BackupMethodEnum.ROOM) {
                     throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份方式必须按考场");
                 }
                 List<Integer> backupCountList = examPackageDetailCell.stream().map(ExamPackageDetail::getBackupCount).distinct().collect(Collectors.toList());
-                if (backupCountList.size() != 1){
+                if (backupCountList.size() != 1) {
                     throw ExceptionResultEnum.ERROR.exception("印刷计划试卷备份数量异常");
                 }
                 // 试卷该考场备份数量
@@ -1876,10 +1895,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     // 处理考试开始结束时间
                     Long cellStartTime = examPackageDetail.getExamStartTime();
                     Long cellEndTime = examPackageDetail.getExamEndTime();
-                    if (examStartTime == null || cellStartTime < examStartTime){
+                    if (examStartTime == null || cellStartTime < examStartTime) {
                         examStartTime = cellStartTime;
                     }
-                    if (examEndTime == null || cellEndTime > examEndTime){
+                    if (examEndTime == null || cellEndTime > examEndTime) {
                         examEndTime = cellEndTime;
                     }
                     // 处理班级和数量
@@ -1888,8 +1907,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     studentCount = studentCount + studentCellCount;
                     clazzIds = clazzIds + clazzIdCell + separator;
                 }
-                clazzIds = clazzIds.substring(0,clazzIds.length() - separator.length());
-                classNames = basicClazzService.findClazzNamesByClazzIds(clazzIds,separator);
+                clazzIds = clazzIds.substring(0, clazzIds.length() - separator.length());
+                classNames = basicClazzService.findClazzNamesByClazzIds(clazzIds, separator);
                 printCount = studentCount + " + " + backupCount;
                 printTotalCount = printTotalCount + studentCount + backupCount;
 

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

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.entity.TCStatisticsImportTemp;
+import com.qmth.distributed.print.business.mapper.TCStatisticsImportTempMapper;
+import com.qmth.distributed.print.business.service.TCStatisticsImportTempService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 命题导入临时数据表 服务实现类
+ * </p>
+ *
+ * @author wangliang
+ * @since 2021-09-10
+ */
+@Service
+public class TCStatisticsImportTempServiceImpl extends ServiceImpl<TCStatisticsImportTempMapper, TCStatisticsImportTemp> implements TCStatisticsImportTempService {
+
+}

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

@@ -25,10 +25,7 @@ import com.qmth.teachcloud.common.bean.dto.excel.*;
 import com.qmth.teachcloud.common.bean.params.ArraysParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.enums.FlowStatusEnum;
-import com.qmth.teachcloud.common.enums.PageSizeEnum;
-import com.qmth.teachcloud.common.enums.UploadFileEnum;
+import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.common.util.excel.ExcelError;
@@ -40,6 +37,7 @@ import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.checkerframework.checker.units.qual.K;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -151,6 +149,14 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Resource
     BasicClazzService basicClazzService;
 
+    @Resource
+    SysOrgService sysOrgService;
+
+    @Resource
+    TCStatisticsImportTempService tcStatisticsImportTempService;
+
+    @Resource
+    TCStatisticsService tcStatisticsService;
 
     /**
      * 创建pdf前置条件
@@ -1312,8 +1318,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
      * @throws Exception
      */
     @Override
+    @Transactional
     public Map<String, Object> executeImportStatisticsLogic(Map<String, Object> map) throws Exception {
         InputStream inputStream = (InputStream) map.get("inputStream");
+        SysUser sysUser = (SysUser) map.get(SystemConstant.USER);
         List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(StatisticsImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
             // 只允许导入一个sheet
             if (finalExcelList.size() > 1) {
@@ -1323,37 +1331,49 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(finalExcelErrorList));
             }
             List<ExcelError> excelErrorTemp = new ArrayList<>();
+            Map<String, SysOrg> collegeOrgMap = new HashMap<>(), teachingRoomMap = new HashMap<>();//学院,部门
+            Map<String, BasicCourse> courseMap = new HashMap<>();//课程
+            Map<String, SysUser> userMap = new HashMap<>();//用户
+            Map<String, BasicClazz> clazzMap = new HashMap<>();//班级
+            String batchNo = SystemConstant.getUuid();
+            List<TCStatisticsImportTemp> tcStatisticsImportTempList = new ArrayList<>();
             for (int i = 0; i < finalExcelList.size(); i++) {
                 LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
                 List<Object> statisticsTempList = excelMap.get(i);
                 for (int y = 0; y < statisticsTempList.size(); y++) {
                     StatisticsImportDto statisticsImportDto = (StatisticsImportDto) statisticsTempList.get(y);
-
-//                    if (StringUtils.isBlank(userImportDto.getTicketNumber())) {
-//                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[准考证号]必填"));
-//                    }
-//                    if (StringUtils.isBlank(userImportDto.getCourseCode())) {
-//                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程代码]必填"));
-//                    }
-//                    if (StringUtils.isBlank(userImportDto.getCourseName())) {
-//                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]必填"));
-//                    }
-//
-//                    // 课程是否存在并且与名称对应
-//                    QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
-//                    queryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId).eq(BasicCourse::getCode, userImportDto.getCourseCode());
-//                    BasicCourse course = basicCourseService.getOne(queryWrapper);
-//                    if (course == null) {
-//                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程代码]在系统中不存在"));
-//                    } else if (!course.getName().equals(userImportDto.getCourseName())) {
-//                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]与系统中不匹配"));
-//                    }
+                    SysOrg collegeOrg = this.validSysOrgExists(collegeOrgMap, statisticsImportDto.getCollegeName(), sysUser.getSchoolId(), OrgTypeEnum.COLLEGE, excelErrorTemp, (y + 1), (i + 1), "开课学院");
+                    SysOrg teachingRoomOrg = this.validSysOrgExists(teachingRoomMap, statisticsImportDto.getTeachingRoomName(), sysUser.getSchoolId(), OrgTypeEnum.TEACHING_ROOM, excelErrorTemp, (y + 1), (i + 1), "开课部门");
+                    BasicCourse basicCourse = this.validBasicCourseExists(courseMap, statisticsImportDto.getCourseName(), sysUser.getSchoolId(), statisticsImportDto.getCourseCode(), excelErrorTemp, (y + 1), (i + 1), "课程代码");
+                    String teacherName = statisticsImportDto.getTeacherName();
+                    if (teacherName.indexOf(",") == -1) {
+                        SysUser dbUser = this.validSysUserExists(userMap, teacherName, sysUser.getSchoolId(), excelErrorTemp, (y + 1), (i + 1), "任课老师");
+                    } else {
+                        String[] teacherNames = teacherName.split(",");
+                        for (int k = 0; k < teacherNames.length; k++) {
+                            SysUser dbUser = this.validSysUserExists(userMap, teacherNames[k], sysUser.getSchoolId(), excelErrorTemp, (y + 1), (i + 1), "任课老师" + teacherNames[k]);
+                        }
+                    }
+                    BasicClazz basicClazz = this.validBasicClazzExists(clazzMap, statisticsImportDto.getClazzName(), sysUser.getSchoolId(), excelErrorTemp, (y + 1), (i + 1), "班级名称");
+
+                    TCStatisticsImportTemp tcStatisticsImportTemp = new TCStatisticsImportTemp(collegeOrg.getId(),
+                            collegeOrg.getName(),
+                            teachingRoomOrg.getId(),
+                            teachingRoomOrg.getName(),
+                            basicCourse.getName(),
+                            basicCourse.getCode(),
+                            teacherName,
+                            basicClazz.getId(),
+                            basicClazz.getClazzName(),
+                            batchNo);
+                    tcStatisticsImportTempList.add(tcStatisticsImportTemp);
                 }
             }
             if (excelErrorTemp.size() > 0) {
                 List<String> errors = excelErrorTemp.stream().map(m -> m.getExcelErrorType()).collect(Collectors.toList());
                 throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(errors));
             }
+            tcStatisticsImportTempService.saveBatch(tcStatisticsImportTempList);
             return finalExcelList;
         });
         return map;
@@ -1363,4 +1383,162 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     public String createTempNumber(SerialNumberParams serialNumberParams) {
         return convertUtil.getIncre(serialNumberParams.getPrefix(), serialNumberParams.getModel(), serialNumberParams.getDigit());
     }
+
+    /**
+     * 验证机构是否存在
+     *
+     * @param orgMap
+     * @param key
+     * @param schoolId
+     * @param orgTypeEnum
+     * @param excelErrorTemp
+     * @param row
+     * @param sheet
+     * @param cloumnName
+     * @return
+     */
+    private SysOrg validSysOrgExists(Map<String, SysOrg> orgMap,
+                                     String key,
+                                     Long schoolId,
+                                     OrgTypeEnum orgTypeEnum,
+                                     List<ExcelError> excelErrorTemp,
+                                     int row,
+                                     int sheet,
+                                     String cloumnName) {
+        SysOrg sysOrg = null;
+        if (!orgMap.containsKey(key)) {//不存在查询
+            QueryWrapper<SysOrg> sysOrgQueryWrapper = new QueryWrapper<>();
+            sysOrgQueryWrapper.lambda().eq(SysOrg::getSchoolId, schoolId)
+                    .eq(SysOrg::getName, key)
+                    .eq(SysOrg::getType, orgTypeEnum)
+                    .eq(SysOrg::getEnable, true);
+            sysOrg = sysOrgService.getOne(sysOrgQueryWrapper);
+        } else {
+            sysOrg = orgMap.get(key);
+        }
+        if (Objects.isNull(sysOrg)) {
+            excelErrorTemp.add(new ExcelError(row, "excel第" + sheet + "个sheet第" + row + "行[" + cloumnName + "]不存在"));
+        } else {
+            SysOrg finalSysOrg = sysOrg;
+            orgMap.computeIfAbsent(key, v -> finalSysOrg);
+        }
+        return sysOrg;
+    }
+
+    /**
+     * 验证课程是否存在
+     *
+     * @param courseMap
+     * @param key
+     * @param schoolId
+     * @param value
+     * @param excelErrorTemp
+     * @param row
+     * @param sheet
+     * @param cloumnName
+     * @return
+     */
+    private BasicCourse validBasicCourseExists(Map<String, BasicCourse> courseMap,
+                                               String key,
+                                               Long schoolId,
+                                               String value,
+                                               List<ExcelError> excelErrorTemp,
+                                               int row,
+                                               int sheet,
+                                               String cloumnName) {
+        BasicCourse basicCourse = null;
+        if (!courseMap.containsKey(key)) {//不存在查询
+            QueryWrapper<BasicCourse> basicCourseQueryWrapper = new QueryWrapper<>();
+            basicCourseQueryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId)
+                    .eq(BasicCourse::getName, key)
+                    .eq(BasicCourse::getCode, value)
+                    .eq(BasicCourse::getEnable, true);
+            basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
+        } else {
+            basicCourse = courseMap.get(key);
+        }
+        if (Objects.isNull(basicCourse)) {
+            excelErrorTemp.add(new ExcelError(row, "excel第" + sheet + "个sheet第" + row + "行[" + cloumnName + "]不存在"));
+        } else {
+            BasicCourse finalBasicCourse = basicCourse;
+            courseMap.computeIfAbsent(key, v -> finalBasicCourse);
+        }
+        return basicCourse;
+    }
+
+    /**
+     * 验证用户是否存在
+     *
+     * @param userMap
+     * @param key
+     * @param schoolId
+     * @param excelErrorTemp
+     * @param row
+     * @param sheet
+     * @param cloumnName
+     * @return
+     */
+    private SysUser validSysUserExists(Map<String, SysUser> userMap,
+                                       String key,
+                                       Long schoolId,
+                                       List<ExcelError> excelErrorTemp,
+                                       int row,
+                                       int sheet,
+                                       String cloumnName) {
+        SysUser sysUser = null;
+        if (!userMap.containsKey(key)) {//不存在查询
+            QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
+            sysUserQueryWrapper.lambda().eq(SysUser::getSchoolId, schoolId)
+                    .eq(SysUser::getRealName, key)
+                    .eq(SysUser::getEnable, true);
+            sysUser = sysUserService.getOne(sysUserQueryWrapper);
+        } else {
+            sysUser = userMap.get(key);
+        }
+        if (Objects.isNull(sysUser)) {
+            excelErrorTemp.add(new ExcelError(row, "excel第" + sheet + "个sheet第" + row + "行[" + cloumnName + "]不存在"));
+        } else {
+            SysUser finalSysUser = sysUser;
+            userMap.computeIfAbsent(key, v -> finalSysUser);
+        }
+        return sysUser;
+    }
+
+    /**
+     * 验证课程是否存在
+     *
+     * @param clazzMap
+     * @param key
+     * @param schoolId
+     * @param excelErrorTemp
+     * @param row
+     * @param sheet
+     * @param cloumnName
+     * @return
+     */
+    private BasicClazz validBasicClazzExists(Map<String, BasicClazz> clazzMap,
+                                             String key,
+                                             Long schoolId,
+                                             List<ExcelError> excelErrorTemp,
+                                             int row,
+                                             int sheet,
+                                             String cloumnName) {
+        BasicClazz basicClazz = null;
+        if (!clazzMap.containsKey(key)) {//不存在查询
+            QueryWrapper<BasicClazz> basicClazzQueryWrapper = new QueryWrapper<>();
+            basicClazzQueryWrapper.lambda().eq(BasicClazz::getSchoolId, schoolId)
+                    .eq(BasicClazz::getClazzName, key)
+                    .eq(BasicClazz::getEnable, true);
+            basicClazz = basicClazzService.getOne(basicClazzQueryWrapper);
+        } else {
+            basicClazz = clazzMap.get(key);
+        }
+        if (Objects.isNull(basicClazz)) {
+            excelErrorTemp.add(new ExcelError(row, "excel第" + sheet + "个sheet第" + row + "行[" + cloumnName + "]不存在"));
+        } else {
+            BasicClazz finalBasicClazz = basicClazz;
+            clazzMap.computeIfAbsent(key, v -> finalBasicClazz);
+        }
+        return basicClazz;
+    }
 }

+ 5 - 0
distributed-print-business/src/main/resources/mapper/TCStatisticsImportTempMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.distributed.print.business.mapper.TCStatisticsImportTempMapper">
+
+</mapper>

+ 1 - 0
distributed-print/src/main/resources/application-release.properties

@@ -107,6 +107,7 @@ prefix.url.data=admin/data
 prefix.url.work=admin/work
 prefix.url.client=admin/client
 prefix.url.flow=admin/flow
+prefix.url.statistics=admin/statistics
 
 #\u65E5\u671F\u683C\u5F0F\u5316
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

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

@@ -146,6 +146,7 @@
             t.id = srp.privilege_id
         </if>
            <where>
+                and su.enable = true
                <if test="orgIds != null and orgIds.size > 0">
                    AND su.org_id IN
                    <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">