|
@@ -1,11 +1,17 @@
|
|
|
package com.qmth.paper.library.business.templete.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.qmth.paper.library.business.bean.dto.excel.PaperScanTaskImportDto;
|
|
|
+import com.qmth.paper.library.business.entity.PaperArchives;
|
|
|
+import com.qmth.paper.library.business.entity.PaperScanTask;
|
|
|
+import com.qmth.paper.library.business.service.PaperArchivesService;
|
|
|
import com.qmth.paper.library.business.templete.service.TaskLogicService;
|
|
|
import com.qmth.paper.library.common.bean.dto.excel.DescribeImportDto;
|
|
|
import com.qmth.paper.library.common.bean.dto.excel.SysOrgImportDto;
|
|
|
import com.qmth.paper.library.common.contant.SystemConstant;
|
|
|
import com.qmth.paper.library.common.entity.SysUser;
|
|
|
+import com.qmth.paper.library.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.paper.library.common.service.SysOrgService;
|
|
|
import com.qmth.paper.library.common.util.ExcelUtil;
|
|
|
import org.slf4j.Logger;
|
|
@@ -19,10 +25,9 @@ import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.security.NoSuchAlgorithmException;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* @Description: 任务处理逻辑impl
|
|
@@ -37,6 +42,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
|
|
|
|
|
|
@Resource
|
|
|
private SysOrgService sysOrgService;
|
|
|
+ @Resource
|
|
|
+ private PaperArchivesService paperArchivesService;
|
|
|
|
|
|
|
|
|
@Transactional
|
|
@@ -71,4 +78,104 @@ public class TaskLogicServiceImpl implements TaskLogicService {
|
|
|
}
|
|
|
return map;
|
|
|
}
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> executeImportPaperScanTaskDetailLogic(Map<String, Object> map) throws Exception {
|
|
|
+ InputStream inputStream = (InputStream) map.get("inputStream");
|
|
|
+ List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(PaperScanTaskImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> finalExcelList);
|
|
|
+ List<PaperScanTaskImportDto> datasource = new ArrayList<>();
|
|
|
+ for (int i = 0; i < finalList.size(); i++) {
|
|
|
+ LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
|
|
|
+ List<Object> paperScanTaskImportDtoList = excelMap.get(i);
|
|
|
+ assert paperScanTaskImportDtoList != null;
|
|
|
+ if (paperScanTaskImportDtoList.get(0) instanceof DescribeImportDto) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ map.put("dataCount", paperScanTaskImportDtoList.size());
|
|
|
+ // 处理机构
|
|
|
+ if (paperScanTaskImportDtoList.get(0) instanceof PaperScanTaskImportDto) {
|
|
|
+ datasource = paperScanTaskImportDtoList.stream().map(e -> {
|
|
|
+ PaperScanTaskImportDto paperScanTaskImportDto = new PaperScanTaskImportDto();
|
|
|
+ BeanUtils.copyProperties(e, paperScanTaskImportDto);
|
|
|
+ return paperScanTaskImportDto;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (datasource.size() > 0) {
|
|
|
+ // 选择的扫描档案id
|
|
|
+ Long paperArchivesId = SystemConstant.convertIdToLong(String.valueOf(map.get("paperArchivesId")));
|
|
|
+ List<Map<String, String>> archivesCheckMapList = datasource.stream().flatMap(e -> {
|
|
|
+ Map<String, String> checkMap = new HashMap<>();
|
|
|
+ checkMap.put("archivesName", e.getArchivesName());
|
|
|
+ checkMap.put("archivesCode", e.getArchivesCode());
|
|
|
+ return Stream.of(checkMap);
|
|
|
+ }).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+ if (archivesCheckMapList.size() != 1) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel中的档案信息异常(导入扫描任务数据必须是一个档案下的)");
|
|
|
+ }
|
|
|
+ Map<String, String> archivesCheckMap = archivesCheckMapList.get(0);
|
|
|
+ String archivesName = archivesCheckMap.get("archivesName");
|
|
|
+ String archivesCode = archivesCheckMap.get("archivesCode");
|
|
|
+
|
|
|
+ // 判断选择的档案和导入的是同一个
|
|
|
+ PaperArchives paperArchives = paperArchivesService.getOne(new QueryWrapper<PaperArchives>()
|
|
|
+ .lambda()
|
|
|
+ .eq(PaperArchives::getId, paperArchivesId)
|
|
|
+ .eq(PaperArchives::getArchivesCode, archivesCode)
|
|
|
+ .eq(PaperArchives::getArchivesName, archivesName));
|
|
|
+ if (Objects.nonNull(paperArchives)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel中的档案信息和选择的档案不符");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 归纳 - 扫描任务集合
|
|
|
+ // 扫描任务唯一信息
|
|
|
+ Map<String, PaperScanTask> paperScanTaskMap = new HashMap<>();
|
|
|
+ for (PaperScanTaskImportDto paperScanTaskImportDto : datasource) {
|
|
|
+ String scanTaskName = paperScanTaskImportDto.getScanTaskName();
|
|
|
+ String courseName = paperScanTaskImportDto.getCourseName();
|
|
|
+ String teacherName = paperScanTaskImportDto.getTeacherName();
|
|
|
+ String teachClazzName = paperScanTaskImportDto.getTeachClazzName();
|
|
|
+
|
|
|
+ if (paperScanTaskMap.containsKey(scanTaskName)) {
|
|
|
+ // 如果试卷任务map中包含该任务名称 - 检验其他信息是否一致(课程,任课教师,教学班 为空的不检验)
|
|
|
+ PaperScanTask v = paperScanTaskMap.get(scanTaskName);
|
|
|
+ String vCourseName = v.getCourseName();
|
|
|
+ String vTeacherName = v.getTeacherName();
|
|
|
+ String vTeachClazzName = v.getTeachClazzName();
|
|
|
+
|
|
|
+ // 同一任务课程名称检验
|
|
|
+ if (!SystemConstant.strNotNull(vCourseName)) {
|
|
|
+ v.setCourseName(courseName);
|
|
|
+ } else if (SystemConstant.strNotNull(courseName) && !vCourseName.equals(courseName)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel数据异常:导入的任务【" + scanTaskName + "】存在不同的课程名称【" + vCourseName + "," + courseName + "】");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 同一任务任课教师检验
|
|
|
+ if (!SystemConstant.strNotNull(vTeacherName)) {
|
|
|
+ v.setTeacherName(teacherName);
|
|
|
+ } else if (SystemConstant.strNotNull(teacherName) && !vTeacherName.equals(teacherName)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel数据异常:导入的任务【" + scanTaskName + "】存在不同的任课教师【" + vTeacherName + "," + teacherName + "】");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 同一任务教学班检验
|
|
|
+ if (!SystemConstant.strNotNull(vTeachClazzName)) {
|
|
|
+ v.setTeachClazzName(teachClazzName);
|
|
|
+ } else if (SystemConstant.strNotNull(teachClazzName) && !vTeachClazzName.equals(teachClazzName)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel数据异常:导入的任务【" + scanTaskName + "】存在不同的教学班【" + vTeachClazzName + "," + teachClazzName + "】");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 没包含直接put
|
|
|
+ PaperScanTask v = new PaperScanTask();
|
|
|
+ v.setScanTaskName(scanTaskName);
|
|
|
+ v.setCourseName(courseName);
|
|
|
+ v.setTeacherName(teacherName);
|
|
|
+ v.setTeachClazzName(teachClazzName);
|
|
|
+ paperScanTaskMap.put(scanTaskName, v);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
}
|