|
@@ -2630,7 +2630,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public HttpResponseResult confirmPreCourseSchedule(Integer musicGroupSchoolTermCourseDetailId) {
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void confirmPreCourseSchedule(Integer musicGroupSchoolTermCourseDetailId) {
|
|
|
MusicGroupSchoolTermCourseDetail termCourseDetail = musicGroupSchoolTermCourseDetailDao.get(musicGroupSchoolTermCourseDetailId);
|
|
|
//校验所有学员的课时都有消耗
|
|
|
if(musicGroupSchoolTermStudentCourseDetailDao.checkNoCourse(musicGroupSchoolTermCourseDetailId)){
|
|
@@ -2658,14 +2659,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
|
|
|
//初始化老师考勤表
|
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaries = courseScheduleTeacherSalaryDao.findByCourseSchedules(courseScheduleIds);
|
|
|
- List<ClassGroup> byCourseSchedules = classGroupDao.findByCourseSchedules(courseScheduleIds);
|
|
|
+// List<ClassGroup> byCourseSchedules = classGroupDao.findByCourseSchedules(courseScheduleIds);
|
|
|
|
|
|
- Map<Integer, ClassGroup> classGroupMap = new HashMap<Integer, ClassGroup>();
|
|
|
- for (ClassGroup classGroup : byCourseSchedules) {
|
|
|
- if (!classGroupMap.containsKey(classGroup.getId())) {
|
|
|
- classGroupMap.put(classGroup.getId(), classGroup);
|
|
|
- }
|
|
|
- }
|
|
|
+// Map<Integer, ClassGroup> classGroupMap = new HashMap<Integer, ClassGroup>();
|
|
|
+// for (ClassGroup classGroup : byCourseSchedules) {
|
|
|
+// if (!classGroupMap.containsKey(classGroup.getId())) {
|
|
|
+// classGroupMap.put(classGroup.getId(), classGroup);
|
|
|
+// }
|
|
|
+// }
|
|
|
List<TeacherAttendance> teacherIdByCourseSchedule = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
|
|
|
Map<Long, List<TeacherAttendance>> courseScheduleTeacherAttendanceMap = teacherIdByCourseSchedule.stream()
|
|
|
.collect(Collectors.groupingBy(TeacherAttendance::getCourseScheduleId));
|
|
@@ -2690,7 +2691,62 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
teacherAttendanceDao.batchInsert(teacherAttendances);
|
|
|
}
|
|
|
imUserFriendService.refreshGroupImUserFriend(termCourseDetail.getMusicGroupId(),MUSIC);
|
|
|
- return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void cancelPreCourseSchedule(Integer musicGroupSchoolTermCourseDetailId, Integer classGroupId) {
|
|
|
+ MusicGroupSchoolTermCourseDetail termCourseDetail = musicGroupSchoolTermCourseDetailDao.get(musicGroupSchoolTermCourseDetailId);
|
|
|
+ if(classGroupId == null){
|
|
|
+ List<CourseSchedule> courseSchedules = courseScheduleDao.queryPreCourseListByMusicGroupId(termCourseDetail.getMusicGroupId());
|
|
|
+ if(courseSchedules.size() == 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Long> courseScheduleIds = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toList());
|
|
|
+ //取消所有预排课
|
|
|
+ musicGroupSchoolTermStudentCourseDetailDao.cleanMinutes(musicGroupSchoolTermCourseDetailId);
|
|
|
+ //删除课程以及关联的学员老师
|
|
|
+ courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
|
|
|
+ courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
|
|
|
+ courseScheduleDao.deleteCourseSchedulesByClassGroupIds(courseScheduleIds);
|
|
|
+ }else {
|
|
|
+ List<CourseSchedule> courseSchedules = courseScheduleDao.queryPreCourseListByClassGroupId(classGroupId);
|
|
|
+ if(courseSchedules.size() == 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Long> courseScheduleIds = courseSchedules.stream().map(c -> c.getId()).collect(Collectors.toList());
|
|
|
+ List<CourseScheduleStudentPayment> courseScheduleStudentPayments = courseScheduleStudentPaymentDao.findByCourseScheduleIds(courseScheduleIds);
|
|
|
+ Map<Integer, List<CourseScheduleStudentPayment>> studentCourseMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getUserId));
|
|
|
+
|
|
|
+ for (Integer studentId : studentCourseMap.keySet()) {
|
|
|
+ int preMemberCourseMinutes = 0;
|
|
|
+ int mixCourseMinutes = 0;
|
|
|
+ int singleCourseMinutes = 0;
|
|
|
+
|
|
|
+ List<CourseScheduleStudentPayment> courseScheduleStudentPaymentList = studentCourseMap.get(studentId);
|
|
|
+ List<Long> courseIds = courseScheduleStudentPaymentList.stream().map(c -> c.getId()).collect(Collectors.toList());
|
|
|
+ List<CourseSchedule> schedules = courseScheduleDao.findByCourseScheduleIds(courseIds);
|
|
|
+ Map<CourseScheduleType, List<CourseSchedule>> courseTypeMap = schedules.stream().collect(Collectors.groupingBy(CourseSchedule::getType));
|
|
|
+ for (CourseScheduleType scheduleType : courseTypeMap.keySet()) {
|
|
|
+ List<CourseSchedule> courseScheduleList = courseTypeMap.get(scheduleType);
|
|
|
+ List<Long> courseScheduleIdList = courseScheduleList.stream().map(c -> c.getId()).collect(Collectors.toList());
|
|
|
+ //根据课程编号获取总时长
|
|
|
+ int courseMinutes = courseScheduleDao.sumCourseMinutes(courseScheduleIdList);
|
|
|
+ preMemberCourseMinutes += courseMinutes;
|
|
|
+ if(scheduleType == SINGLE || scheduleType == TRAINING_SINGLE){
|
|
|
+ singleCourseMinutes += courseMinutes;
|
|
|
+ }
|
|
|
+ if(scheduleType == MIX || scheduleType == TRAINING_MIX){
|
|
|
+ mixCourseMinutes += courseMinutes;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ musicGroupSchoolTermStudentCourseDetailDao.cutMinutes(musicGroupSchoolTermCourseDetailId,preMemberCourseMinutes,mixCourseMinutes,singleCourseMinutes,studentId);
|
|
|
+ }
|
|
|
+ //删除课程以及关联的学员老师
|
|
|
+ courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
|
|
|
+ courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
|
|
|
+ courseScheduleDao.deleteCourseSchedulesByClassGroupIds(courseScheduleIds);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -2742,11 +2798,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
List<CourseSchedule> courseScheduleList = new ArrayList<>();
|
|
|
MusicGroupSchoolTermCourseDetail schoolTermCourseDetail = musicGroupSchoolTermCourseDetailDao.get(musicGroupSchoolTermCourseDetailId);
|
|
|
for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
|
|
|
- //更新学员的排课时长
|
|
|
//3、插入班级排课信息
|
|
|
LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
|
|
|
|
int totalCourseMinutes = classGroup4MixDto.getExpectStudentNum() * classGroup4MixDto.getCourseMinutes();
|
|
|
+ Integer totalMixCourseMinutes = 0;
|
|
|
+ Integer singleCourseMinutes = 0;
|
|
|
if(classGroup4MixDto.getCourseType() == SINGLE || classGroup4MixDto.getCourseType() == MIX ||
|
|
|
classGroup4MixDto.getCourseType() == TRAINING_SINGLE || classGroup4MixDto.getCourseType() == TRAINING_MIX){
|
|
|
//单技课和合奏课最大的排课时长不能超过44 * 45 分钟
|
|
@@ -2754,12 +2811,14 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
throw new BizException("操作失败:单技课和合奏课最大的排课时长不能超过{}分钟",44*45);
|
|
|
}
|
|
|
if(classGroup4MixDto.getCourseType() == SINGLE || classGroup4MixDto.getCourseType() == TRAINING_SINGLE){
|
|
|
+ singleCourseMinutes = totalCourseMinutes;
|
|
|
//获取所选学员最大的已消耗的单技课时长
|
|
|
int maxSingleCourseMinutes = musicGroupSchoolTermStudentCourseDetailDao.getMaxSingleCourseMinutes(musicGroupSchoolTermCourseDetailId,studentIds);
|
|
|
if(44 * 45 - maxSingleCourseMinutes > totalCourseMinutes){
|
|
|
throw new BizException("操作失败:所选学员可排单技课时长已不足{}分钟",totalCourseMinutes);
|
|
|
}
|
|
|
} else {
|
|
|
+ totalMixCourseMinutes = totalCourseMinutes;
|
|
|
int maxMixCourseMinutes = musicGroupSchoolTermStudentCourseDetailDao.getMaxMixCourseMinutes(musicGroupSchoolTermCourseDetailId,studentIds);
|
|
|
if(44 * 45 - maxMixCourseMinutes > totalCourseMinutes){
|
|
|
throw new BizException("操作失败:所选学员可排合奏课时长已不足{}分钟",totalCourseMinutes);
|
|
@@ -2935,10 +2994,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
now = now.plusDays(1);
|
|
|
}
|
|
|
-
|
|
|
-// if (totalCourseDuration > totalMinutes) {
|
|
|
-// throw new BizException("课程时长不足");
|
|
|
-// }
|
|
|
+ //更新学员的排课时长
|
|
|
+ musicGroupSchoolTermStudentCourseDetailDao.updateMinutes(musicGroupSchoolTermCourseDetailId,
|
|
|
+ totalCourseMinutes,
|
|
|
+ totalMixCourseMinutes,
|
|
|
+ singleCourseMinutes,
|
|
|
+ studentIds);
|
|
|
}
|
|
|
|
|
|
courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, false);
|
|
@@ -2957,7 +3018,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(studentList)) {
|
|
|
// studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
|
|
|
-
|
|
|
//学生结算表
|
|
|
courseScheduleStudentPaymentService.createForMemberMusicGroup(musicGroupId, courseScheduleList, studentIds);
|
|
|
}
|