|
@@ -1,9 +1,12 @@
|
|
|
package com.qmth.distributed.print.business.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import com.qmth.distributed.print.business.bean.dto.excel.TeachStudentImportDto;
|
|
|
import com.qmth.distributed.print.business.bean.result.TeachStudentResult;
|
|
|
import com.qmth.distributed.print.business.entity.TeachClazz;
|
|
|
import com.qmth.distributed.print.business.entity.TeachStudent;
|
|
@@ -15,14 +18,17 @@ import com.qmth.teachcloud.common.entity.BasicStudent;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.teachcloud.common.service.BasicStudentService;
|
|
|
+import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.LinkedMultiValueMap;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @Description: 教学学生服务实现类
|
|
@@ -66,6 +72,45 @@ public class TeachStudentServiceImpl extends ServiceImpl<TeachStudentMapper, Tea
|
|
|
return this.createTeachStudentBatch(basicStudentList, teachClazzId, schoolId, requestUser);
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public void importTeachStudent(MultipartFile file, Long teachClazzId, Long schoolId, SysUser requestUser) throws IOException, NoSuchFieldException {
|
|
|
+ if (SystemConstant.isOneNull(file,teachClazzId,schoolId)){
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("参数缺失");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(TeachStudentImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
|
|
|
+ if (finalExcelErrorList.size() > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(finalExcelErrorList));
|
|
|
+ }
|
|
|
+ return finalExcelList;
|
|
|
+ });
|
|
|
+
|
|
|
+ List<BasicStudent> basicStudentDatasource = basicStudentService.list(new QueryWrapper<BasicStudent>().lambda().eq(BasicStudent::getSchoolId,schoolId));
|
|
|
+ Set<String> studentCodeSet = new HashSet<>();
|
|
|
+
|
|
|
+ if (Objects.nonNull(finalList) && finalList.size() > 0) {
|
|
|
+ for (int i = 0; i < finalList.size(); i++) {
|
|
|
+ LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
|
|
|
+ List<Object> teachStudentImportDtoList = map.get(i);
|
|
|
+ for (int y = 0; y < Objects.requireNonNull(teachStudentImportDtoList).size(); y++) {
|
|
|
+ if (teachStudentImportDtoList.get(y) instanceof TeachStudentImportDto) {
|
|
|
+ TeachStudentImportDto teachStudentImportDto = (TeachStudentImportDto) teachStudentImportDtoList.get(y);
|
|
|
+ String studentCode = teachStudentImportDto.getStudentCode();
|
|
|
+ studentCodeSet.add(studentCode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 要导入操作的基础学生数据集合
|
|
|
+ List<BasicStudent> basicStudentList = basicStudentDatasource.stream()
|
|
|
+ .filter(e -> studentCodeSet.contains(e.getStudentCode()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ this.createTeachStudentBatch(basicStudentList,teachClazzId,schoolId,requestUser);
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public Boolean deleteTeachStudentBatch(List<Long> idList) {
|