|
@@ -1,9 +1,11 @@
|
|
package com.qmth.teachcloud.common.service.impl;
|
|
package com.qmth.teachcloud.common.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.google.common.collect.Lists;
|
|
import com.qmth.teachcloud.common.base.BaseEntity;
|
|
import com.qmth.teachcloud.common.base.BaseEntity;
|
|
import com.qmth.teachcloud.common.bean.dto.BasicCourseExportDto;
|
|
import com.qmth.teachcloud.common.bean.dto.BasicCourseExportDto;
|
|
import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
|
|
import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
|
|
@@ -19,13 +21,17 @@ import com.qmth.teachcloud.common.mapper.BasicCourseMapper;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.service.*;
|
|
import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
|
+import com.qmth.teachcloud.common.util.excel.ExcelError;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.util.LinkedMultiValueMap;
|
|
import org.springframework.util.LinkedMultiValueMap;
|
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.io.InputStream;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -211,10 +217,70 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
|
|
return idList.size() > 0 ? this.removeBasicCourseBatch(idList) : true;
|
|
return idList.size() > 0 ? this.removeBasicCourseBatch(idList) : true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void executeImportBasicCourseLogic(MultipartFile file) throws IOException, NoSuchFieldException {
|
|
|
|
+ InputStream inputStream = file.getInputStream();
|
|
|
|
+ List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(inputStream, Lists.newArrayList(BasicCourseImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
|
|
|
|
+ List<ExcelError> excelErrorTemp = new ArrayList<>();
|
|
|
|
+ Map<String, BasicCourseImportDto> courseDtoMap = new HashMap<>();
|
|
|
|
+ for (int i = 0; i < finalExcelList.size(); i++) {
|
|
|
|
+ LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
|
|
|
|
+ List<Object> basicCourseImportDtoList = excelMap.get(i);
|
|
|
|
+ assert basicCourseImportDtoList != null;
|
|
|
|
+ if (basicCourseImportDtoList.get(0) instanceof DescribeImportDto) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ List<BasicCourseImportDto> duplicateData = new ArrayList<>();
|
|
|
|
+ for (int y = 0; y < Objects.requireNonNull(basicCourseImportDtoList).size(); y++) {
|
|
|
|
+ BasicCourseImportDto basicCourseImportDto = (BasicCourseImportDto) basicCourseImportDtoList.get(y);
|
|
|
|
+ String courseName = basicCourseImportDto.getCourseName();
|
|
|
|
+ String courseCode = basicCourseImportDto.getCourseCode();
|
|
|
|
+ String teachingRoomName = basicCourseImportDto.getTeachingRoomName();
|
|
|
|
+ String clazz = basicCourseImportDto.getClazz();
|
|
|
|
+
|
|
|
|
+ if (courseDtoMap.containsKey(courseCode)) {
|
|
|
|
+ BasicCourseImportDto primaryCell = courseDtoMap.get(courseCode);
|
|
|
|
+ String primaryName = primaryCell.getCourseName();
|
|
|
|
+ String primaryTeachingRoomName = primaryCell.getTeachingRoomName();
|
|
|
|
+ if (!Objects.equals(primaryName, courseName)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("【课程编号】 : " + courseCode + ",存在不同的【课程名称】");
|
|
|
|
+ }
|
|
|
|
+ if (!Objects.equals(primaryTeachingRoomName, teachingRoomName)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("【课程编号】 : " + courseCode + ",存在不同的【所属教研室】");
|
|
|
|
+ }
|
|
|
|
+ String primaryClazz = primaryCell.getClazz();
|
|
|
|
+ if (SystemConstant.strNotNull(clazz)) {
|
|
|
|
+ primaryClazz = primaryClazz + SystemConstant.COMMA + clazz;
|
|
|
|
+ primaryCell.setClazz(primaryClazz);
|
|
|
|
+ }
|
|
|
|
+ duplicateData.add(basicCourseImportDto);
|
|
|
|
+ } else {
|
|
|
|
+ courseDtoMap.put(courseCode, basicCourseImportDto);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ excelErrorTemp.addAll(ExcelUtil.checkExcelField(basicCourseImportDto, y, i));
|
|
|
|
+ if (Objects.isNull(courseCode) || courseCode.length() > 30 || !courseCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE)) {
|
|
|
|
+ excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程编号]不符合输入规范"));
|
|
|
|
+ }
|
|
|
|
+ if (Objects.isNull(courseName) || courseName.length() > 30) {
|
|
|
|
+ excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]不符合输入规范"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 删除重复的(需要累加的)excel数据
|
|
|
|
+ basicCourseImportDtoList.removeAll(duplicateData);
|
|
|
|
+ }
|
|
|
|
+ if (excelErrorTemp.size() > 0) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(excelErrorTemp));
|
|
|
|
+ }
|
|
|
|
+ return finalExcelList;
|
|
|
|
+ });
|
|
|
|
+ this.executeBasicCourseImportLogic(finalList);
|
|
|
|
+ }
|
|
|
|
+
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Override
|
|
@Override
|
|
- public Map<String, Object> executeBasicCourseImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) {
|
|
|
|
- SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
|
|
|
|
|
|
+ public void executeBasicCourseImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList) {
|
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
Long schoolId = sysUser.getSchoolId();
|
|
Long schoolId = sysUser.getSchoolId();
|
|
List<BasicCourseParams> addBasicCourseParamsList = new ArrayList<>();
|
|
List<BasicCourseParams> addBasicCourseParamsList = new ArrayList<>();
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
for (int i = 0; i < finalList.size(); i++) {
|
|
@@ -271,7 +337,6 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
|
|
List<BasicCourse> editBasicCourse = this.editEntityHelp(addBasicCourseParamsList, sysUser);
|
|
List<BasicCourse> editBasicCourse = this.editEntityHelp(addBasicCourseParamsList, sysUser);
|
|
this.saveOrUpdateBatch(editBasicCourse);
|
|
this.saveOrUpdateBatch(editBasicCourse);
|
|
}
|
|
}
|
|
- return map;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|