|
|
@@ -2,9 +2,11 @@ package com.xjrsoft.module.classtime.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.google.gson.Gson;
|
|
|
import com.google.gson.JsonArray;
|
|
|
import com.google.gson.JsonElement;
|
|
|
@@ -16,6 +18,7 @@ import com.xjrsoft.common.enums.DeleteMark;
|
|
|
import com.xjrsoft.common.enums.EnabledMark;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
|
|
|
+import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.classtime.dto.AddClassTimeStatisticsDto;
|
|
|
import com.xjrsoft.module.classtime.entity.ClassTimeDelete;
|
|
|
import com.xjrsoft.module.classtime.entity.ClassTimeStatistics;
|
|
|
@@ -34,8 +37,12 @@ import com.xjrsoft.module.classtime.vo.CourseListVo;
|
|
|
import com.xjrsoft.module.classtime.vo.TeacherListVo;
|
|
|
import com.xjrsoft.module.classtime.vo.WeekTimeRangeVo;
|
|
|
import com.xjrsoft.module.oa.entity.WfTeacherCourseTime;
|
|
|
+import com.xjrsoft.module.organization.entity.User;
|
|
|
+import com.xjrsoft.module.organization.service.IUserService;
|
|
|
import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
import com.xjrsoft.module.system.service.IDictionarydetailService;
|
|
|
+import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
|
+import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import me.zhyd.oauth.log.Log;
|
|
|
import org.apache.poi.ss.usermodel.Cell;
|
|
|
@@ -50,8 +57,10 @@ import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.time.DayOfWeek;
|
|
|
@@ -88,6 +97,8 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
|
|
|
private final ClassTimeStatisticsAdministrationMapper administrationMapper;
|
|
|
|
|
|
+ private final IUserService userService;
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(ClassTimeStatistics classTimeStatistics) {
|
|
|
@@ -891,6 +902,46 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Boolean importAdministration(Long classTimeStatisticsId, MultipartFile file) throws IOException {
|
|
|
+ try {
|
|
|
+ List<Map<Integer, Object>> excelDataList = EasyExcel.read(file.getInputStream()).sheet().headRowNumber(2).doReadSync();
|
|
|
+ List<User> teacherList = userService.list(
|
|
|
+ new MPJLambdaWrapper<User>()
|
|
|
+ .select(User::getId)
|
|
|
+ .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(XjrUser.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
|
|
|
+ );
|
|
|
+ List<ClassTimeStatisticsAdministration> insertList = new ArrayList<>();
|
|
|
+ Map<String, Long> userMap = teacherList.stream().collect(Collectors.toMap(User::getUserName, User::getId));
|
|
|
+ for (Map<Integer, Object> rowData : excelDataList) {
|
|
|
+ String userName = rowData.get(1).toString();
|
|
|
+ ClassTimeStatisticsAdministration data = new ClassTimeStatisticsAdministration(){{
|
|
|
+ setClassTimeStatisticsId(classTimeStatisticsId);
|
|
|
+ setUserId(userMap.get(userName));
|
|
|
+ setWorkload(Double.parseDouble(rowData.get(3).toString()));
|
|
|
+ }};
|
|
|
+ insertList.add(data);
|
|
|
+ }
|
|
|
+ if(!insertList.isEmpty()){
|
|
|
+ String sql = "delete from class_time_statistics_administration where class_time_statistics_id = " + classTimeStatisticsId;
|
|
|
+ SqlRunnerAdapter.db().delete(sql);
|
|
|
+ for (ClassTimeStatisticsAdministration administration : insertList) {
|
|
|
+ administrationMapper.insert(administration);
|
|
|
+ }
|
|
|
+
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
+ ClassTimeStatistics statistics = this.getById(classTimeStatisticsId);
|
|
|
+ refreshCourseRecord(statistics);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }catch (Exception e){
|
|
|
+ Log.error(e.getMessage(), e);
|
|
|
+ throw new MyException("导入行政工作量报错,请联系管理员");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 生成第二行表头
|
|
|
* 前端固定表头:序号、工号、姓名、教研会、督导听课、临近三年退休政策、出题、阅卷、周末培优、早自习、正课(含调顶课时)、晚辅(含调顶课时)、顶课、调课
|