|
@@ -3,15 +3,21 @@ 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.bean.params.PaperScanTaskParam;
|
|
|
import com.qmth.paper.library.business.entity.PaperArchives;
|
|
|
import com.qmth.paper.library.business.entity.PaperScanTask;
|
|
|
+import com.qmth.paper.library.business.entity.PaperScanTaskDetail;
|
|
|
import com.qmth.paper.library.business.service.PaperArchivesService;
|
|
|
+import com.qmth.paper.library.business.service.PaperScanTaskDetailService;
|
|
|
+import com.qmth.paper.library.business.service.PaperScanTaskService;
|
|
|
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.BasicStudent;
|
|
|
import com.qmth.paper.library.common.entity.SysUser;
|
|
|
import com.qmth.paper.library.common.enums.ExceptionResultEnum;
|
|
|
+import com.qmth.paper.library.common.service.BasicStudentService;
|
|
|
import com.qmth.paper.library.common.service.SysOrgService;
|
|
|
import com.qmth.paper.library.common.util.ExcelUtil;
|
|
|
import org.slf4j.Logger;
|
|
@@ -24,7 +30,6 @@ import org.springframework.util.LinkedMultiValueMap;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
-import java.security.NoSuchAlgorithmException;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
@@ -44,11 +49,17 @@ public class TaskLogicServiceImpl implements TaskLogicService {
|
|
|
private SysOrgService sysOrgService;
|
|
|
@Resource
|
|
|
private PaperArchivesService paperArchivesService;
|
|
|
+ @Resource
|
|
|
+ private PaperScanTaskService paperScanTaskService;
|
|
|
+ @Resource
|
|
|
+ private PaperScanTaskDetailService paperScanTaskDetailService;
|
|
|
+ @Resource
|
|
|
+ private BasicStudentService basicStudentService;
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
@Override
|
|
|
- public Map<String, Object> executeImportSysOrgLogic(Map<String, Object> map) throws IOException, NoSuchFieldException, NoSuchAlgorithmException {
|
|
|
+ public Map<String, Object> executeImportSysOrgLogic(Map<String, Object> map) throws IOException, NoSuchFieldException {
|
|
|
InputStream inputStream = (InputStream) map.get("inputStream");
|
|
|
List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(SysOrgImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> finalExcelList);
|
|
|
List<String> orgInfoList = new ArrayList<>();
|
|
@@ -82,7 +93,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public Map<String, Object> executeImportPaperScanTaskDetailLogic(Map<String, Object> map) throws Exception {
|
|
|
+ SysUser requestUser = (SysUser) map.get(SystemConstant.SYS_USER);
|
|
|
+ Long schoolId = requestUser.getSchoolId();
|
|
|
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++) {
|
|
@@ -175,6 +189,72 @@ public class TaskLogicServiceImpl implements TaskLogicService {
|
|
|
paperScanTaskMap.put(scanTaskName, v);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 创建扫描任务并把编辑后的任务id放回map中
|
|
|
+ List<Long> paperScanTaskIdList = new ArrayList<>();
|
|
|
+ for (String k : paperScanTaskMap.keySet()) {
|
|
|
+ PaperScanTask v = paperScanTaskMap.get(k);
|
|
|
+ PaperScanTask db = paperScanTaskService.getOne(new QueryWrapper<PaperScanTask>()
|
|
|
+ .lambda()
|
|
|
+ .eq(PaperScanTask::getSchoolId, requestUser.getSchoolId())
|
|
|
+ .eq(PaperScanTask::getScanTaskName, k)
|
|
|
+ .eq(PaperScanTask::getPaperArchivesId, paperArchivesId));
|
|
|
+ PaperScanTaskParam paperScanTaskParam = new PaperScanTaskParam();
|
|
|
+ if (Objects.nonNull(db)) {
|
|
|
+ // 编辑
|
|
|
+ paperScanTaskParam.setPaperScanTaskId(db.getId());
|
|
|
+ paperScanTaskIdList.add(db.getId());
|
|
|
+ }
|
|
|
+ paperScanTaskParam.setPaperArchivesId(paperArchivesId);
|
|
|
+ paperScanTaskParam.setCourseName(v.getCourseName());
|
|
|
+ paperScanTaskParam.setTeacherName(v.getTeacherName());
|
|
|
+ paperScanTaskParam.setTeachClazzName(v.getTeachClazzName());
|
|
|
+ paperScanTaskParam.setScanTaskName(k);
|
|
|
+ Long paperScanTaskId = paperScanTaskService.editPaperScanTask(paperScanTaskParam, requestUser);
|
|
|
+ v.setId(paperScanTaskId);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 归纳 - 扫描任务详情
|
|
|
+ // 上面编辑的任务绑定的扫描详情集合
|
|
|
+ List<PaperScanTaskDetail> paperScanTaskDetailDbList = paperScanTaskDetailService.list(new QueryWrapper<PaperScanTaskDetail>()
|
|
|
+ .lambda()
|
|
|
+ .in(PaperScanTaskDetail::getPaperScanTaskId, paperScanTaskIdList)
|
|
|
+ .eq(PaperScanTaskDetail::getSchoolId, schoolId));
|
|
|
+ // 学生基础数据集合
|
|
|
+ List<BasicStudent> basicStudentDbList = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getSchoolId, schoolId));
|
|
|
+
|
|
|
+ List<PaperScanTaskDetail> paperScanTaskDetailList = datasource.stream().flatMap(e -> {
|
|
|
+
|
|
|
+ String scanTaskName = e.getScanTaskName();
|
|
|
+ PaperScanTask paperScanTask = paperScanTaskMap.get(scanTaskName);
|
|
|
+ if (Objects.isNull(paperScanTask)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("扫描任务数据异常");
|
|
|
+ }
|
|
|
+ Long paperScanTaskId = paperScanTask.getId();
|
|
|
+
|
|
|
+ String studentCode = e.getStudentCode();
|
|
|
+ List<BasicStudent> studentList = basicStudentDbList.stream().filter(s -> s.getStudentCode().equals(studentCode)).collect(Collectors.toList());
|
|
|
+ if (studentList.size() != 1) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("学号为【" + studentCode + "】的学生不存在或异常");
|
|
|
+ }
|
|
|
+ // 目标学生
|
|
|
+ BasicStudent targetStudent = studentList.get(0);
|
|
|
+ Long studentId = targetStudent.getId();
|
|
|
+
|
|
|
+ PaperScanTaskDetail paperScanTaskDetail = new PaperScanTaskDetail();
|
|
|
+ List<PaperScanTaskDetail> paperScanTaskDetailCellList = paperScanTaskDetailDbList.stream()
|
|
|
+ .filter(d -> d.getPaperScanTaskId().equals(paperScanTaskId) && d.getStudentId().equals(studentId) && d.getSchoolId().equals(schoolId))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (paperScanTaskDetailCellList.size() == 1) {
|
|
|
+ paperScanTaskDetail.setId(paperScanTaskDetailCellList.get(0).getId());
|
|
|
+ }
|
|
|
+ paperScanTaskDetail.setPaperScanTaskId(paperScanTaskId);
|
|
|
+ paperScanTaskDetail.setSchoolId(schoolId);
|
|
|
+ paperScanTaskDetail.setStudentId(studentId);
|
|
|
+ return Stream.of(paperScanTaskDetail);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ paperScanTaskDetailService.saveOrUpdateBatch(paperScanTaskDetailList);
|
|
|
}
|
|
|
return map;
|
|
|
}
|