|
@@ -1,17 +1,25 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
-import com.ym.mec.biz.dal.dao.CoursesGroupDao;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.ym.mec.biz.dal.dao.*;
|
|
|
import com.ym.mec.biz.dal.dto.CourseGroupCreateDto;
|
|
|
-import com.ym.mec.biz.dal.entity.CourseSchedule;
|
|
|
-import com.ym.mec.biz.dal.entity.CoursesGroup;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseTimeDto;
|
|
|
+import com.ym.mec.biz.dal.entity.*;
|
|
|
+import com.ym.mec.biz.dal.enums.*;
|
|
|
import com.ym.mec.biz.service.CourseScheduleService;
|
|
|
import com.ym.mec.biz.service.CoursesGroupService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
+import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Isolation;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.List;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup> implements CoursesGroupService {
|
|
@@ -20,6 +28,22 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
|
|
|
private CoursesGroupDao coursesGroupDao;
|
|
|
@Autowired
|
|
|
private CourseScheduleService courseScheduleService;
|
|
|
+ @Autowired
|
|
|
+ private ClassGroupDao classGroupDao;
|
|
|
+ @Autowired
|
|
|
+ private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
|
|
|
+ @Autowired
|
|
|
+ private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
|
|
|
+ @Autowired
|
|
|
+ private CourseScheduleDao courseScheduleDao;
|
|
|
+ @Autowired
|
|
|
+ private StudentAttendanceDao studentAttendanceDao;
|
|
|
+ @Autowired
|
|
|
+ private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
|
|
|
+ @Autowired
|
|
|
+ private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
|
|
|
+ @Autowired
|
|
|
+ private TeacherAttendanceDao teacherAttendanceDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, CoursesGroup> getDAO() {
|
|
@@ -27,9 +51,124 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
public void createCourseGroup(CourseGroupCreateDto courseGroupCreateInfo) {
|
|
|
+ CoursesGroup courseGroup = courseGroupCreateInfo.getCoursesGroup();
|
|
|
+ CourseGenerateDto courseCycleInfo = courseGroupCreateInfo.getCourseCycleInfo();
|
|
|
+ if(Objects.isNull(courseGroup.getName())|| StringUtils.isBlank(courseGroup.getName())){
|
|
|
+ throw new BizException("请填写课程班名称");
|
|
|
+ }
|
|
|
+ if(Objects.isNull(courseGroup.getSubjectId())){
|
|
|
+ throw new BizException("请选择科目");
|
|
|
+ }
|
|
|
+ if(Objects.isNull(courseGroup.getMaxStudentNum())){
|
|
|
+ throw new BizException("请填写班级人数");
|
|
|
+ }
|
|
|
+ if(Objects.isNull(courseCycleInfo.getSingleClassMinutes())){
|
|
|
+ throw new BizException("请填写课程时长");
|
|
|
+ }
|
|
|
+ if(Objects.isNull(courseCycleInfo.getCourseCreateStartTime())){
|
|
|
+ throw new BizException("请填写课程开始时间");
|
|
|
+ }
|
|
|
+ if(Objects.isNull(courseCycleInfo.getCourseTimes())){
|
|
|
+ throw new BizException("请填写课程数量");
|
|
|
+ }
|
|
|
|
|
|
+ //总课程时长
|
|
|
+ Integer totalCourseTime=courseCycleInfo.getCourseCount()*courseCycleInfo.getSingleClassMinutes();
|
|
|
+
|
|
|
+ Date now=new Date();
|
|
|
+ courseGroup.setSingleClassMinutes(courseCycleInfo.getSingleClassMinutes());
|
|
|
+ courseGroup.setStatus(GroupStatusEnum.APPLYING);
|
|
|
List<CourseSchedule> newCourses = courseScheduleService.createCourses(courseGroupCreateInfo.getCourseCycleInfo());
|
|
|
+ for (CourseSchedule newCourse : newCourses) {
|
|
|
+ newCourse.setTeachMode(TeachModeEnum.ONLINE);
|
|
|
+ newCourse.setGroupType(GroupType.COMM);
|
|
|
+ newCourse.setType(CourseSchedule.CourseScheduleType.COMM);
|
|
|
+ newCourse.setTeacherId(courseGroup.getTeacherId());
|
|
|
+ newCourse.setActualTeacherId(courseGroup.getTeacherId());
|
|
|
+ newCourse.setIsLock(1);
|
|
|
+ newCourse.setStatus(CourseStatusEnum.NOT_START);
|
|
|
+ newCourse.setName(courseGroup.getName());
|
|
|
+ }
|
|
|
+ courseScheduleService.checkNewCourseSchedules(newCourses,false);
|
|
|
+
|
|
|
+ CourseSchedule firstCourseSchedule = newCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get();
|
|
|
+ CourseSchedule latestCourseSchedule = newCourses.stream().max(Comparator.comparing(CourseSchedule::getEndClassTime)).get();
|
|
|
+ courseGroup.setCoursesStartDate(firstCourseSchedule.getStartClassTime());
|
|
|
+ courseGroup.setCoursesEndDate(latestCourseSchedule.getEndClassTime());
|
|
|
+
|
|
|
+ JSONArray courseTimesArray=new JSONArray();
|
|
|
+ for (CourseTimeDto courseTime : courseCycleInfo.getCourseTimes()) {
|
|
|
+ JSONObject courseTimeObject=new JSONObject();
|
|
|
+ courseTimeObject.put(String.valueOf(courseTime.getDayOfWeek()),courseTime.getStartClassTime());
|
|
|
+ courseTimesArray.add(courseTimeObject);
|
|
|
+ }
|
|
|
+
|
|
|
+ coursesGroupDao.insert(courseGroup);
|
|
|
+ //创建班级信息
|
|
|
+ ClassGroup classGroup = new ClassGroup();
|
|
|
+ classGroup.setSubjectIdList(courseGroup.getSubjectId().toString());
|
|
|
+ classGroup.setExpectStudentNum(1);
|
|
|
+ classGroup.setStudentNum(1);
|
|
|
+ classGroup.setName(courseGroup.getName());
|
|
|
+ classGroup.setTotalClassTimes(courseCycleInfo.getCourseCount());
|
|
|
+ classGroup.setType(ClassGroupTypeEnum.COMM);
|
|
|
+ classGroup.setDelFlag(0);
|
|
|
+ classGroup.setGroupType(GroupType.COMM);
|
|
|
+ classGroup.setMusicGroupId(courseGroup.getId().toString());
|
|
|
+ classGroup.setCreateTime(now);
|
|
|
+ classGroup.setUpdateTime(now);
|
|
|
+ classGroupDao.insert(classGroup);
|
|
|
+
|
|
|
+ //创建班级老师关联记录
|
|
|
+ ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
|
|
|
+ classGroupTeacherMapper.setMusicGroupId(courseGroup.getId().toString());
|
|
|
+ classGroupTeacherMapper.setClassGroupId(classGroup.getId());
|
|
|
+ classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
|
|
|
+ classGroupTeacherMapper.setUserId(courseGroup.getTeacherId());
|
|
|
+ classGroupTeacherMapper.setGroupType(GroupType.COMM);
|
|
|
+ classGroupTeacherMapper.setCreateTime(now);
|
|
|
+ classGroupTeacherMapper.setUpdateTime(now);
|
|
|
+ classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
|
|
|
+
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<>();
|
|
|
+ List<TeacherAttendance> teacherAttendances = new ArrayList<>();
|
|
|
+
|
|
|
+ for (CourseSchedule courseSchedule : newCourses) {
|
|
|
+ //课表
|
|
|
+ courseSchedule.setMusicGroupId(courseGroup.getId().toString());
|
|
|
+ courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
+ courseSchedule.setCreateTime(now);
|
|
|
+ courseSchedule.setUpdateTime(now);
|
|
|
+ }
|
|
|
+ courseScheduleDao.batchAddCourseSchedules(newCourses);
|
|
|
+
|
|
|
+ for (CourseSchedule courseSchedule : newCourses) {
|
|
|
+ //课程与老师薪水表
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
+ courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleTeacherSalary.setGroupType(GroupType.COMM);
|
|
|
+ courseScheduleTeacherSalary.setMusicGroupId(courseGroup.getId().toString());
|
|
|
+ courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
+ courseScheduleTeacherSalary.setUserId(courseGroup.getTeacherId());
|
|
|
+ courseScheduleTeacherSalary.setExpectSalary(BigDecimal.ZERO);
|
|
|
+ courseScheduleTeacherSalary.setCreateTime(now);
|
|
|
+ courseScheduleTeacherSalary.setUpdateTime(now);
|
|
|
+ courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
|
|
|
|
|
|
+ //教师签到记录
|
|
|
+ TeacherAttendance teacherAttendance = new TeacherAttendance();
|
|
|
+ teacherAttendance.setMusicGroupId(courseGroup.getId().toString());
|
|
|
+ teacherAttendance.setTeacherId(courseGroup.getTeacherId());
|
|
|
+ teacherAttendance.setClassGroupId(classGroup.getId());
|
|
|
+ teacherAttendance.setGroupType(GroupType.COMM);
|
|
|
+ teacherAttendance.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ teacherAttendance.setCreateTime(now);
|
|
|
+ teacherAttendances.add(teacherAttendance);
|
|
|
+ }
|
|
|
+ courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
|
|
|
+ teacherAttendanceDao.batchInsert(teacherAttendances);
|
|
|
}
|
|
|
}
|