Kaynağa Gözat

任务批量导入

caozixuan 2 yıl önce
ebeveyn
işleme
454eb73ead

+ 82 - 2
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -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;
     }