|
@@ -246,6 +246,155 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
+ public boolean batchAddCourseSchedule(Integer classGroupId, int coursesTimes, Date startDate, String teachingArrangement, TeachModeEnum teachMode,
|
|
|
+ CourseScheduleType type, Integer schoolId) {
|
|
|
+ ClassGroup classGroup = classGroupService.get(classGroupId);
|
|
|
+ if(classGroup == null){
|
|
|
+ throw new BizException("排课失败,班级信息不存在");
|
|
|
+ }
|
|
|
+ List<CourseTimeDto> teachingArrangementList = JsonUtil.parseArray(teachingArrangement, CourseTimeDto.class);
|
|
|
+ if(teachingArrangementList == null || teachingArrangementList.size() == 0){
|
|
|
+ throw new BizException("请设置课时安排");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(teachMode == TeachModeEnum.OFFLINE && schoolId == null){
|
|
|
+ throw new BizException("线下课请指定教学点");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type == null){
|
|
|
+ throw new BizException("请指定课程类型");
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询班级学生信息
|
|
|
+ List<ClassGroupStudentMapper> classGroupStudentMapperList = classGroupStudentMapperDao.findByClassGroup(classGroupId);
|
|
|
+
|
|
|
+ //查询班级老师信息
|
|
|
+ List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroupTeacherMapperService.getClassGroupTeachers(classGroupId);
|
|
|
+
|
|
|
+ //查询老师默认课酬
|
|
|
+ if (type == CourseScheduleType.PRACTICE) {
|
|
|
+
|
|
|
+ } else if (type == CourseScheduleType.VIP) {
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Integer,CourseTimeDto> dayOfWeekMap = teachingArrangementList.stream().collect(Collectors.toMap(CourseTimeDto :: getDayOfWeek, ct -> ct));
|
|
|
+
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ Date date = null;
|
|
|
+ Date now = new Date();
|
|
|
+ CourseTimeDto courseTimeDto = null;
|
|
|
+ List<CourseSchedule> courseScheduleList = new ArrayList<CourseSchedule>();
|
|
|
+ List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = new ArrayList<CourseScheduleTeacherSalary>();
|
|
|
+ List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
|
|
|
+ List<TeacherAttendance> teacherAttendances = new ArrayList<TeacherAttendance>();
|
|
|
+ for (int i = 0; i < coursesTimes; i++) {
|
|
|
+ while (true) {
|
|
|
+ startDate = DateUtil.addDays1(startDate, 1);
|
|
|
+ calendar.setTime(startDate);
|
|
|
+ // 查询当前日期是周几
|
|
|
+ int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
|
|
|
+ if (dayOfWeek == 1) {
|
|
|
+ dayOfWeek = 7;
|
|
|
+ } else {
|
|
|
+ dayOfWeek = dayOfWeek - 1;
|
|
|
+ }
|
|
|
+ courseTimeDto = dayOfWeekMap.get(dayOfWeek);
|
|
|
+ if (courseTimeDto != null) {
|
|
|
+ // 课表
|
|
|
+ CourseSchedule courseSchedule = new CourseSchedule();
|
|
|
+ courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
+ courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
+ courseSchedule.setClassDate(startDate);
|
|
|
+
|
|
|
+ String dateYmdStr = DateUtil.dateToString(calendar.getTime(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
+
|
|
|
+ dateYmdStr = dateYmdStr + " " + courseTimeDto.getStartClassTime();
|
|
|
+ Date courseStartTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
|
|
|
+ courseSchedule.setStartClassTime(courseStartTime);
|
|
|
+
|
|
|
+ dateYmdStr = dateYmdStr + " " + courseTimeDto.getEndClassTime();
|
|
|
+ Date courseEndTime = DateUtil.stringToDate(dateYmdStr, "yyyy-MM-dd HH:mm");
|
|
|
+ courseSchedule.setEndClassTime(courseEndTime);
|
|
|
+
|
|
|
+ courseSchedule.setTeacherId(-1);
|
|
|
+ courseSchedule.setActualTeacherId(-1);
|
|
|
+ courseSchedule.setCreateTime(now);
|
|
|
+ courseSchedule.setUpdateTime(now);
|
|
|
+ courseSchedule.setTeachMode(teachMode);
|
|
|
+ courseSchedule.setType(type);
|
|
|
+ courseSchedule.setGroupType(classGroup.getGroupType());
|
|
|
+ courseSchedule.setName(classGroup.getName());
|
|
|
+ courseSchedule.setSchoolId(schoolId);
|
|
|
+ courseScheduleList.add(courseSchedule);
|
|
|
+
|
|
|
+ // 课程与老师薪水表
|
|
|
+ CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
+ courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleTeacherSalary.setGroupType(classGroup.getGroupType());
|
|
|
+ courseScheduleTeacherSalary.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ //courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
+ //courseScheduleTeacherSalary.setUserId(practiceGroup.getUserId());
|
|
|
+ //courseScheduleTeacherSalary.setExpectSalary(new BigDecimal(practiceCourseSalaryConfig.getParanValue()));
|
|
|
+ courseScheduleTeacherSalary.setCreateTime(now);
|
|
|
+ courseScheduleTeacherSalary.setUpdateTime(now);
|
|
|
+ courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleTeacherSalaries.add(courseScheduleTeacherSalary);
|
|
|
+
|
|
|
+ // 学生缴费记录
|
|
|
+ CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
+ courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
|
|
|
+ courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ //courseScheduleStudentPayment.setUserId(practiceGroup.getStudentId());
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
|
|
|
+ courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleStudentPayment.setCreateTime(now);
|
|
|
+ courseScheduleStudentPayment.setUpdateTime(now);
|
|
|
+ courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
+
|
|
|
+ // 教师签到记录
|
|
|
+ TeacherAttendance teacherAttendance = new TeacherAttendance();
|
|
|
+ teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ //teacherAttendance.setTeacherId(practiceGroup.getUserId());
|
|
|
+ teacherAttendance.setClassGroupId(classGroup.getId());
|
|
|
+ teacherAttendance.setGroupType(classGroup.getGroupType());
|
|
|
+ teacherAttendance.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ teacherAttendance.setCreateTime(now);
|
|
|
+ teacherAttendances.add(teacherAttendance);
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(courseScheduleList.size() > 0){
|
|
|
+ courseScheduleDao.batchAddCourseSchedules(courseScheduleList);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(courseScheduleTeacherSalaries.size() > 0){
|
|
|
+ courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaries);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(courseScheduleStudentPayments.size() > 0){
|
|
|
+ courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(teacherAttendances.size() > 0){
|
|
|
+ teacherAttendanceDao.batchInsert(teacherAttendances);
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新班级信息
|
|
|
+ classGroupService.updateClassGroupInfo(classGroupId);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void createCourseSchedules(CreateCourseScheduleDto createCourseScheduleDto) {
|
|
|
List<CourseSchedule> courseSchedules = createCourseScheduleDto.getCourseSchedules();
|
|
|
|