|
@@ -4,6 +4,10 @@ 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.qmth.boot.api.exception.ApiException;
|
|
|
+import com.qmth.boot.tools.excel.ExcelReader;
|
|
|
+import com.qmth.boot.tools.excel.enums.ExcelType;
|
|
|
+import com.qmth.distributed.print.business.bean.dto.excel.TeacherImportDto;
|
|
|
import com.qmth.distributed.print.business.bean.params.TeachCourseSelectParam;
|
|
|
import com.qmth.distributed.print.business.bean.result.CourseResult;
|
|
|
import com.qmth.distributed.print.business.bean.result.TeachCourseResult;
|
|
@@ -19,15 +23,20 @@ import com.qmth.teachcloud.common.bean.result.DictionaryResult;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.BasicCourse;
|
|
|
import com.qmth.teachcloud.common.entity.BasicExamStudent;
|
|
|
+import com.qmth.teachcloud.common.entity.SysOrg;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
|
|
|
import com.qmth.teachcloud.common.service.*;
|
|
|
+import com.qmth.teachcloud.common.util.ResultUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.*;
|
|
@@ -211,4 +220,81 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
|
|
|
selectCreate(teachCourseSelectParam);
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 课程任课老师导入
|
|
|
+ *
|
|
|
+ * @param file
|
|
|
+ * @param examId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public Map<String, String> teachCourseImport(MultipartFile file, Long examId) {
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
+ Map<String, String> messageMap = new LinkedHashMap<>();
|
|
|
+ try {
|
|
|
+ StringJoiner errorData = new StringJoiner("");
|
|
|
+ StringJoiner successData = new StringJoiner("");
|
|
|
+
|
|
|
+ ExcelReader excelReader = ExcelReader.create(ExcelType.XLSX, file.getInputStream(), 1);
|
|
|
+ List<TeacherImportDto> teacherImportDtoList = excelReader.getObjectList(TeacherImportDto.class);
|
|
|
+ if (CollectionUtils.isNotEmpty(teacherImportDtoList)) {
|
|
|
+ String[] columnNames = excelReader.getColumnNames();
|
|
|
+ for (int i = 0; i < columnNames.length; i++) {
|
|
|
+ if (i == 0 && Objects.nonNull(columnNames[i]) && !columnNames[i].trim().contains("课程代码")) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel表头第一行为课程代码");
|
|
|
+ } else if (i == 1 && Objects.nonNull(columnNames[i]) && !columnNames[i].trim().contains("课程名称")) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel表头第二行为课程名称");
|
|
|
+ } else if (i == 2 && Objects.nonNull(columnNames[i]) && !columnNames[i].trim().contains("开课学院")) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel表头第三行为开课学院");
|
|
|
+ } else if (i == 3 && Objects.nonNull(columnNames[i]) && !columnNames[i].trim().contains("任课老师工号")) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("excel表头第四行为任课老师工号");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<TeachCourse> teachCourseList = new ArrayList<>(teacherImportDtoList.size());
|
|
|
+ Set<TeacherImportDto> teacherImportDtoSet = new HashSet<>();
|
|
|
+ for (int i = 0; i < teacherImportDtoList.size(); i++) {
|
|
|
+ TeacherImportDto teacherImportDto = teacherImportDtoList.get(i);
|
|
|
+ if (!teacherImportDtoSet.add(teacherImportDto)) {
|
|
|
+ errorData.add("excel第").add((i + 1) + "").add("行数据重复").add("\r\n");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(teacherImportDto.getCourseCode()) || Objects.equals(teacherImportDto.getCourseCode().trim(), "")) {
|
|
|
+ errorData.add("excel第").add((i + 1) + "").add("行[").add(columnNames[0] + "]为空;").add("\r\n");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(teacherImportDto.getCourseName()) || Objects.equals(teacherImportDto.getCourseName().trim(), "")) {
|
|
|
+ errorData.add("excel第").add((i + 1) + "").add("行[").add(columnNames[1] + "]为空;").add("\r\n");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(teacherImportDto.getTeachingRoomName()) || Objects.equals(teacherImportDto.getTeachingRoomName().trim(), "")) {
|
|
|
+ errorData.add("excel第").add((i + 1) + "").add("行[").add(columnNames[2] + "]为空;").add("\r\n");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(teacherImportDto.getTeacherCode()) || Objects.equals(teacherImportDto.getTeacherCode().trim(), "")) {
|
|
|
+ errorData.add("excel第").add((i + 1) + "").add("行[").add(columnNames[3] + "]为空;").add("\r\n");
|
|
|
+ }
|
|
|
+ basicCourseService.findByCourseCode(teacherImportDto.getCourseCode(), sysUser.getSchoolId());
|
|
|
+ SysOrg sysOrg = sysOrgService.findOrg(sysUser.getSchoolId(), teacherImportDto.getTeachingRoomName());
|
|
|
+ SysUser teacherUser = sysUserService.findByCode(sysUser.getSchoolId(), teacherImportDto.getTeacherCode());
|
|
|
+ BasicCourse basicCourse = basicCourseService.getByTeachRoomIdAndCode(sysOrg.getId(), teacherImportDto.getCourseCode());
|
|
|
+ Objects.requireNonNull(basicCourse, "课程代码[" + teacherImportDto.getCourseCode() + "]的开课学院[" + teacherImportDto.getTeachingRoomName() + "]不匹配");
|
|
|
+ teachCourseList.add(new TeachCourse(sysUser.getSchoolId(), examId, basicCourse.getId(), teacherUser.getId(), sysUser.getId()));
|
|
|
+ }
|
|
|
+ successData.add("共导入").add(teachCourseList.size() + "").add("条数据");
|
|
|
+ this.saveOrUpdateBatch(teachCourseList);
|
|
|
+ }
|
|
|
+ messageMap.put(SystemConstant.SUCCESS, successData.length() > 0 ? successData.toString() : "无");
|
|
|
+ messageMap.put(SystemConstant.EXCEL_ERROR, errorData.length() > 0 ? errorData.toString() : "无");
|
|
|
+ } catch (Exception e) {
|
|
|
+ if (e instanceof DuplicateKeyException) {
|
|
|
+ String errorColumn = e.getCause().toString();
|
|
|
+ String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
|
|
|
+ throw ExceptionResultEnum.SQL_ERROR.exception("[" + FieldUniqueEnum.convertToTitle(columnStr) + "]数据不允许重复插入");
|
|
|
+ } else if (e instanceof ApiException) {
|
|
|
+ ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
|
|
|
+ } else {
|
|
|
+ ResultUtil.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return messageMap;
|
|
|
+ }
|
|
|
+}
|