|
@@ -1,6 +1,9 @@
|
|
package com.xjrsoft.module.courseTable.service.impl;
|
|
package com.xjrsoft.module.courseTable.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
+import cn.hutool.core.date.DateField;
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -10,14 +13,19 @@ import com.xjrsoft.common.enums.TimeNumberEnum;
|
|
import com.xjrsoft.common.enums.TimePeriodEnum;
|
|
import com.xjrsoft.common.enums.TimePeriodEnum;
|
|
import com.xjrsoft.common.exception.MyException;
|
|
import com.xjrsoft.common.exception.MyException;
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
|
+import com.xjrsoft.config.TimetableConfig;
|
|
import com.xjrsoft.module.base.entity.BaseClass;
|
|
import com.xjrsoft.module.base.entity.BaseClass;
|
|
import com.xjrsoft.module.base.entity.BaseSemester;
|
|
import com.xjrsoft.module.base.entity.BaseSemester;
|
|
import com.xjrsoft.module.base.service.IBaseClassService;
|
|
import com.xjrsoft.module.base.service.IBaseClassService;
|
|
import com.xjrsoft.module.base.service.IBaseSemesterService;
|
|
import com.xjrsoft.module.base.service.IBaseSemesterService;
|
|
|
|
+import com.xjrsoft.module.courseTable.dto.ClassListDto;
|
|
import com.xjrsoft.module.courseTable.dto.CourseTableParse;
|
|
import com.xjrsoft.module.courseTable.dto.CourseTableParse;
|
|
|
|
+import com.xjrsoft.module.courseTable.entity.ClassTime;
|
|
import com.xjrsoft.module.courseTable.entity.CourseTable;
|
|
import com.xjrsoft.module.courseTable.entity.CourseTable;
|
|
|
|
+import com.xjrsoft.module.courseTable.mapper.ClassTimeMapper;
|
|
import com.xjrsoft.module.courseTable.mapper.CourseTableMapper;
|
|
import com.xjrsoft.module.courseTable.mapper.CourseTableMapper;
|
|
import com.xjrsoft.module.courseTable.service.ICourseTableService;
|
|
import com.xjrsoft.module.courseTable.service.ICourseTableService;
|
|
|
|
+import com.xjrsoft.module.courseTable.vo.ClassListVo;
|
|
import com.xjrsoft.module.personnel.entity.CarManagement;
|
|
import com.xjrsoft.module.personnel.entity.CarManagement;
|
|
import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
@@ -33,9 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.InputStream;
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
+import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -58,6 +64,10 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
|
|
|
|
|
|
private final IBaseSemesterService baseSemesterService;
|
|
private final IBaseSemesterService baseSemesterService;
|
|
|
|
|
|
|
|
+ private final TimetableConfig timetableConfig;
|
|
|
|
+
|
|
|
|
+ private final ClassTimeMapper classTimeMapper;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public Boolean wordImport(InputStream inputStream) throws IOException {
|
|
public Boolean wordImport(InputStream inputStream) throws IOException {
|
|
@@ -88,7 +98,7 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
|
|
Map<String, XjrUser> xjrUsersMap = xjrUserList.stream().collect(Collectors.toMap(XjrUser::getName, a -> a, (k1, k2) -> k1));
|
|
Map<String, XjrUser> xjrUsersMap = xjrUserList.stream().collect(Collectors.toMap(XjrUser::getName, a -> a, (k1, k2) -> k1));
|
|
|
|
|
|
// 清空所有数据
|
|
// 清空所有数据
|
|
- courseTableMapper.delete(Wrappers.<CourseTable>query().lambda().eq(CourseTable::getBaseSemesterId,baseSemester.getId()));
|
|
|
|
|
|
+ courseTableMapper.delete(Wrappers.<CourseTable>query().lambda().eq(CourseTable::getBaseSemesterId, baseSemester.getId()));
|
|
|
|
|
|
List<CourseTable> params = new ArrayList<>();
|
|
List<CourseTable> params = new ArrayList<>();
|
|
for (CourseTableParse item : parses) {
|
|
for (CourseTableParse item : parses) {
|
|
@@ -107,6 +117,77 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
|
|
return this.saveBatch(params);
|
|
return this.saveBatch(params);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<ClassListVo> classList(ClassListDto dto) {
|
|
|
|
+ List<CourseTable> courseTables = courseTableMapper.selectList(Wrappers.<CourseTable>query().lambda().eq(CourseTable::getClassId, dto.getClassId()));
|
|
|
|
+
|
|
|
|
+ List<ClassListVo> classListVos = BeanUtil.copyToList(courseTables, ClassListVo.class);
|
|
|
|
+ Boolean isCurrentSummer = isCurrentSummer();
|
|
|
|
+
|
|
|
|
+ Map<String, ClassTime> classTimeMap = getClassTimeMap();
|
|
|
|
+
|
|
|
|
+ // 获取节次时间
|
|
|
|
+ for (int i = 0; i < classListVos.size(); i++) {
|
|
|
|
+ ClassListVo c = classListVos.get(i);
|
|
|
|
+ String key = String.format("%d_%d", c.getTimePeriod(), c.getTimeNumber());
|
|
|
|
+ ClassTime ct = classTimeMap.get(key);
|
|
|
|
+ if (ct != null) {
|
|
|
|
+ if (isCurrentSummer) {
|
|
|
|
+ c.setStartTime(ct.getSummerStartTime());
|
|
|
|
+ c.setEndTime(ct.getSummerEndTime());
|
|
|
|
+ } else {
|
|
|
|
+ c.setStartTime(ct.getWinterStartTime());
|
|
|
|
+ c.setEndTime(ct.getWinterEndTime());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return classListVos;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取节次
|
|
|
|
+ *
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private Map<String, ClassTime> getClassTimeMap() {
|
|
|
|
+ List<ClassTime> classTimes = classTimeMapper.selectList(null);
|
|
|
|
+
|
|
|
|
+ Map<String, ClassTime> result = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ for (ClassTime item : classTimes) {
|
|
|
|
+ String key = String.format("%d_%d", item.getTimePeriod(), item.getNumber());
|
|
|
|
+ result.put(key, item);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 当前时间是否在夏季
|
|
|
|
+ *
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ private Boolean isCurrentSummer() {
|
|
|
|
+ DateTime now = DateUtil.date();
|
|
|
|
+ DateTime summerStart = DateUtil.parse(String.format("%d-%s", now.year(), timetableConfig.getSummerStart()));
|
|
|
|
+ DateTime summerEnd = DateUtil.parse(String.format("%d-%s", now.year(), timetableConfig.getSummerEnd()));
|
|
|
|
+ DateTime winterStart = DateUtil.parse(String.format("%d-%s", now.year(), timetableConfig.getWinterStart()));
|
|
|
|
+ DateTime winterEnd = DateUtil.parse(String.format("%d-%s", now.year(), timetableConfig.getWinterEnd()));
|
|
|
|
+
|
|
|
|
+ // 如果开始时间大于结束时间,开始时间增加1年
|
|
|
|
+ if (DateUtil.compare(summerStart, summerEnd) > 0) {
|
|
|
|
+ summerEnd = DateUtil.offset(summerEnd, DateField.DAY_OF_YEAR, 1);
|
|
|
|
+ }
|
|
|
|
+ if (DateUtil.compare(winterStart, winterEnd) > 0) {
|
|
|
|
+ winterEnd = DateUtil.offset(winterEnd, DateField.DAY_OF_YEAR, 1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (DateUtil.compare(summerStart, now) > 0 && DateUtil.compare(summerEnd, now) < 0) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 解析word课表
|
|
* 解析word课表
|
|
*
|
|
*
|