| 
					
				 | 
			
			
				@@ -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(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |