|
@@ -170,7 +170,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
@Autowired
|
|
|
private VipGroupCategoryDao vipGroupCategoryDao;
|
|
|
@Autowired
|
|
|
- private MusicGroupPaymentCalenderCourseSettingsService musicGroupPaymentCalenderCourseSettingsService;
|
|
|
+ private StudentService studentService;
|
|
|
+ @Autowired
|
|
|
+ private CourseScheduleConvertDao courseScheduleConvertDao;
|
|
|
|
|
|
private final Logger LOGGER = LoggerFactory
|
|
|
.getLogger(this.getClass());
|
|
@@ -5827,7 +5829,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void createCourse(ClassGroupDto groupDto) {
|
|
|
+ public HttpResponseResult<List<Long>> createCourse(ClassGroupDto groupDto) {
|
|
|
Date date = new Date();
|
|
|
Integer classGroupId = groupDto.getClassGroupId();
|
|
|
String musicGroupId = groupDto.getMusicGroupId();
|
|
@@ -5854,215 +5856,140 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
|
|
|
//2、获取班级学生
|
|
|
List<Integer> studentIds = Arrays.stream(groupDto.getUserIds().split(",")).map(id -> Integer.valueOf(id)).distinct().collect(Collectors.toList());
|
|
|
|
|
|
- //获取可转换的课程时长
|
|
|
- Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIds);
|
|
|
+ //获取可转换课程时长,学员数量,课程数量
|
|
|
+ CourseConvertSumDto courseConvertSumDto = courseScheduleConvertDao.sumCourseConvert(groupDto.getCourseIds());
|
|
|
|
|
|
//计算每节课的课酬
|
|
|
List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
|
|
|
List<CourseSchedule> courseScheduleList = new ArrayList<>();
|
|
|
+ //校验老师是否冲突
|
|
|
+ courseTimeDtoList.stream().forEach(e->classGroupTeacherMapperService.checkTeachingBishop(e.getClassGroupTeacherMapperList()));
|
|
|
+ LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
|
+ //获取排课总时长
|
|
|
+ int totalCourseTimes = 0;
|
|
|
+ long totalCourseDuration = 0;
|
|
|
for (CourseTimeDto courseTimeDto : courseTimeDtoList) {
|
|
|
- //校验老师是否冲突
|
|
|
- classGroupTeacherMapperService.checkTeachingBishop(courseTimeDto.getClassGroupTeacherMapperList());
|
|
|
-
|
|
|
+ //获取排课总次数
|
|
|
+ totalCourseTimes += courseTimeDto.getExpectCourseNum();
|
|
|
+ //获取排课总时长
|
|
|
+ totalCourseDuration += Duration.between(LocalDateTime.parse(DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy-MM-dd") + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
|
|
|
+ LocalDateTime.parse(DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy-MM-dd") + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
|
|
|
+ .toMinutes();
|
|
|
}
|
|
|
-
|
|
|
- for (ClassGroup4MixDto classGroup4MixDto : classGroup4MixDtos) {
|
|
|
- //3、插入班级排课信息
|
|
|
- LocalDateTime now = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
|
-
|
|
|
- if (!courseTypeMinutesMap.containsKey(classGroup4MixDto.getCourseType().getCode())) {
|
|
|
- throw new BizException("{}课程类型暂无剩余课程时长", classGroup4MixDto.getCourseType().getMsg());
|
|
|
- }
|
|
|
- Integer totalMinutes = courseTypeMinutesMap.get(classGroup4MixDto.getCourseType().getCode());
|
|
|
- long totalCourseDuration = 0;
|
|
|
-
|
|
|
- if (classGroup4MixDto.getCourseTimes() <= 0) {
|
|
|
- throw new BizException("{}课程类型剩余课程时长不足", classGroup4MixDto.getCourseType().getMsg());
|
|
|
- }
|
|
|
-
|
|
|
- int totalCourseTimes = 0;
|
|
|
- int generateCourseTimes = 0;
|
|
|
- if (!CollectionUtils.isEmpty(classGroup4MixDto.getCourseTimeDtoList())) {
|
|
|
- totalCourseTimes = classGroup4MixDto.getCourseTimeDtoList().stream().mapToInt(CourseTimeDto::getExpectCourseNum).reduce(0, Integer::sum);
|
|
|
- }
|
|
|
-
|
|
|
- Set<String> holidayDays = new HashSet<>();
|
|
|
- Integer tenantId = TenantContextHolder.getTenantId();
|
|
|
- String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING, tenantId);
|
|
|
- if (StringUtils.isNotBlank(holidaySetting)) {
|
|
|
- holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
|
|
|
+ //校验排课时长
|
|
|
+ if(groupDto.getCheckType() == 0 && totalCourseDuration > courseConvertSumDto.getCourseMinute()){
|
|
|
+ throw new BizException("操作失败:课排课时长不允许超过{}分钟",courseConvertSumDto.getCourseMinute());
|
|
|
+ }
|
|
|
+ //检验排课次数
|
|
|
+ if(groupDto.getCheckType() == 1){
|
|
|
+ int length = groupDto.getCourseIds().split(",").length;
|
|
|
+ if(totalCourseTimes > length){
|
|
|
+ throw new BizException("操作失败:排课次数不允许超过{}次",length);
|
|
|
}
|
|
|
-
|
|
|
- Set<Integer> allTeacherIds = new HashSet<>();
|
|
|
- List<SimpleUserDto> allTeacherInfo = new ArrayList<>();
|
|
|
- if (!confirmGenerate) {
|
|
|
- for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
|
|
|
- List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = courseTimeDto.getClassGroupTeacherMapperList();
|
|
|
- Set<Integer> teacherIds = newClassGroupTeacherMapperList.stream().map(t -> t.getUserId()).collect(Collectors.toSet());
|
|
|
- if (!CollectionUtils.isEmpty(teacherIds)) {
|
|
|
- allTeacherIds.addAll(teacherIds);
|
|
|
- }
|
|
|
+ }
|
|
|
+ //获取节假日
|
|
|
+ Set<String> holidayDays = new HashSet<>();
|
|
|
+ Integer tenantId = TenantContextHolder.getTenantId();
|
|
|
+ String holidaySetting = sysTenantConfigService.getTenantConfigValue(SysConfigService.HOLIDAY_SETTING, tenantId);
|
|
|
+ if (StringUtils.isNotBlank(holidaySetting)) {
|
|
|
+ holidayDays = new HashSet<>(JSON.parseArray(holidaySetting, String.class));
|
|
|
+ }
|
|
|
+ int generateCourseTimes = 0;
|
|
|
+ WhileNode:
|
|
|
+ while (true) {
|
|
|
+ int dayOfWeek = now.getDayOfWeek().getValue();
|
|
|
+ for (CourseTimeDto courseTimeDto : courseTimeDtoList) {
|
|
|
+ List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = courseTimeDto.getClassGroupTeacherMapperList();
|
|
|
+ Integer teacherId = newClassGroupTeacherMapperList.stream().filter(ct -> TeachTypeEnum.BISHOP.equals(ct.getTeacherRole())).findAny().get().getUserId();
|
|
|
+ if (Objects.isNull(teacherId)) {
|
|
|
+ throw new BizException("请设置主教");
|
|
|
}
|
|
|
- if (!CollectionUtils.isEmpty(allTeacherIds)) {
|
|
|
- allTeacherInfo = teacherDao.getUsersSimpleInfo(new ArrayList<>(allTeacherIds));
|
|
|
+ if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
|
|
|
+ throw new BizException("排课循环周期错误,请核查");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(courseTimeDto.getStartDate()) || Objects.isNull(courseTimeDto.getEndDate())) {
|
|
|
+ throw new BizException("排课循环周期错误,请核查");
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- WhileNode:
|
|
|
- while (true) {
|
|
|
- int dayOfWeek = now.getDayOfWeek().getValue();
|
|
|
- for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
|
|
|
- List<ClassGroupTeacherMapper> newClassGroupTeacherMapperList = courseTimeDto.getClassGroupTeacherMapperList();
|
|
|
-
|
|
|
- Set<Integer> noRepeatTeacherIds = newClassGroupTeacherMapperList.stream().map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
|
|
|
- if (noRepeatTeacherIds.size() != newClassGroupTeacherMapperList.size()) {
|
|
|
- throw new BizException("主教与助教存在冲突");
|
|
|
- }
|
|
|
-
|
|
|
- Integer teacherId = newClassGroupTeacherMapperList.stream().filter(ct -> TeachTypeEnum.BISHOP.equals(ct.getTeacherRole())).findAny().get().getUserId();
|
|
|
- if (Objects.isNull(teacherId)) {
|
|
|
- throw new BizException("请设置主教");
|
|
|
- }
|
|
|
-
|
|
|
- if (courseTimeDto.getDayOfWeek() < 1 || courseTimeDto.getDayOfWeek() > 7) {
|
|
|
- throw new BizException("排课循环周期错误,请核查");
|
|
|
- }
|
|
|
- if (Objects.isNull(courseTimeDto.getStartDate()) || Objects.isNull(courseTimeDto.getEndDate())) {
|
|
|
- throw new BizException("排课循环周期错误,请核查");
|
|
|
- }
|
|
|
|
|
|
- //跳过节假日
|
|
|
- if (courseTimeDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+ //跳过节假日
|
|
|
+ if (courseTimeDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
|
|
|
+ if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
|
|
|
|
|
|
- Date classDate = DateConvertor.toDate(now);
|
|
|
+ Date classDate = DateConvertor.toDate(now);
|
|
|
|
|
|
- if (courseTimeDto.getStartDate().compareTo(classDate) > 0
|
|
|
- || courseTimeDto.getEndDate().compareTo(classDate) < 0
|
|
|
- || courseTimeDto.getExpectCourseNum() <= courseTimeDto.getCourseNum()) {
|
|
|
- if (courseTimeDto.getEndDate().compareTo(classDate) < 0 && courseTimeDto.getExpectCourseNum() > courseTimeDto.getCourseNum()) {
|
|
|
- throw new BizException("在指定的排课时间段内({}-{})无法完成预计课时数的排课", DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy.MM.dd"), DateUtil.dateToString(courseTimeDto.getEndDate(), "yyyy.MM.dd"));
|
|
|
- }
|
|
|
- if (totalCourseTimes <= generateCourseTimes) {
|
|
|
- break WhileNode;
|
|
|
- }
|
|
|
- continue;
|
|
|
+ if (courseTimeDto.getStartDate().compareTo(classDate) > 0
|
|
|
+ || courseTimeDto.getEndDate().compareTo(classDate) < 0
|
|
|
+ || courseTimeDto.getExpectCourseNum() <= courseTimeDto.getCourseNum()) {
|
|
|
+ if (courseTimeDto.getEndDate().compareTo(classDate) < 0 && courseTimeDto.getExpectCourseNum() > courseTimeDto.getCourseNum()) {
|
|
|
+ throw new BizException("在指定的排课时间段内({}-{})无法完成预计课时数的排课", DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy.MM.dd"), DateUtil.dateToString(courseTimeDto.getEndDate(), "yyyy.MM.dd"));
|
|
|
}
|
|
|
-
|
|
|
- //课时长度
|
|
|
- long classCourseDuration = Duration.between(LocalDateTime.parse(DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy-MM-dd") + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
|
|
|
- LocalDateTime.parse(DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy-MM-dd") + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
|
|
|
- .toMinutes();
|
|
|
-
|
|
|
- totalCourseDuration += classCourseDuration;
|
|
|
-
|
|
|
- courseTimeDto.setCourseNum(courseTimeDto.getCourseNum() + 1);
|
|
|
- generateCourseTimes += 1;
|
|
|
-
|
|
|
- if (totalCourseTimes < generateCourseTimes) {
|
|
|
+ if (totalCourseTimes <= generateCourseTimes) {
|
|
|
break WhileNode;
|
|
|
}
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00";
|
|
|
- String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00";
|
|
|
-
|
|
|
- CourseSchedule courseSchedule = new CourseSchedule();
|
|
|
- courseSchedule.setSchoolId(schoolId);
|
|
|
- courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
- courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
- courseSchedule.setClassDate(classDate);
|
|
|
- courseSchedule.setStartClassTime(DateUtil.stringToDate(startClassTime));
|
|
|
- if (date.compareTo(courseSchedule.getStartClassTime()) > 0) {
|
|
|
- throw new BizException("课程开始时间不得早于当前时间");
|
|
|
- }
|
|
|
- courseSchedule.setEndClassTime(DateUtil.stringToDate(endClassTime));
|
|
|
- courseSchedule.setCreateTime(date);
|
|
|
- courseSchedule.setUpdateTime(date);
|
|
|
- courseSchedule.setTeachMode(teachMode);
|
|
|
- courseSchedule.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
- courseSchedule.setType(classGroup4MixDto.getCourseType());
|
|
|
-
|
|
|
- if (classGroup4MixDto.getCourseType().equals(MIX)) {
|
|
|
- courseSchedule.setName(classGroup4MixDto.getCourseType().getMsg());
|
|
|
- } else if (classGroup4MixDto.getCourseType().equals(CourseScheduleType.MUSIC_NETWORK)) {
|
|
|
- courseSchedule.setName(classGroup.getName());
|
|
|
- } else {
|
|
|
- courseSchedule.setName(subjectNames + "-" + classGroup4MixDto.getCourseType().getMsg());
|
|
|
- }
|
|
|
+ //课时长度
|
|
|
+ long classCourseDuration = Duration.between(LocalDateTime.parse(DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy-MM-dd") + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
|
|
|
+ LocalDateTime.parse(DateUtil.dateToString(courseTimeDto.getStartDate(), "yyyy-MM-dd") + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
|
|
|
+ .toMinutes();
|
|
|
|
|
|
- courseSchedule.setGroupType(MUSIC);
|
|
|
- courseSchedule.setTeacherId(teacherId);
|
|
|
- courseSchedule.setActualTeacherId(teacherId);
|
|
|
- courseSchedule.setOrganId(musicGroup.getOrganId());
|
|
|
- courseSchedule.setClassGroupType(classGroup.getType().getCode());
|
|
|
- courseScheduleDao.insert(courseSchedule);
|
|
|
- courseScheduleList.add(courseSchedule);
|
|
|
+ totalCourseDuration += classCourseDuration;
|
|
|
|
|
|
- if (!confirmGenerate) {
|
|
|
- Set<Integer> teacherIds = newClassGroupTeacherMapperList.stream().filter(ct -> TeachTypeEnum.TEACHING.equals(ct.getTeacherRole())).map(ClassGroupTeacherMapper::getUserId).collect(Collectors.toSet());
|
|
|
- SimpleUserDto mainTeacher = allTeacherInfo.stream().filter(t -> teacherId.equals(t.getUserId())).findAny().get();
|
|
|
- if (Objects.nonNull(mainTeacher)) {
|
|
|
- courseSchedule.setActualTeacherName(mainTeacher.getUserName());
|
|
|
- }
|
|
|
- List<SimpleUserDto> teachingTeachers = allTeacherInfo.stream().filter(t -> teacherIds.contains(t.getUserId())).collect(Collectors.toList());
|
|
|
- if (!CollectionUtils.isEmpty(teachingTeachers)) {
|
|
|
- courseSchedule.setTeachingTeacherNames(StringUtils.join(teachingTeachers.stream().map(SimpleUserDto::getUserName).collect(Collectors.toList()), ","));
|
|
|
- }
|
|
|
- }
|
|
|
+ courseTimeDto.setCourseNum(courseTimeDto.getCourseNum() + 1);
|
|
|
+ generateCourseTimes += 1;
|
|
|
|
|
|
- for (ClassGroupTeacherMapper classGroupTeacherMapper : newClassGroupTeacherMapperList) {
|
|
|
- CourseScheduleTeacherSalary courseScheduleTeacherSalary = new CourseScheduleTeacherSalary();
|
|
|
- courseScheduleTeacherSalary.setCourseScheduleId(courseSchedule.getId());
|
|
|
- courseScheduleTeacherSalary.setGroupType(courseSchedule.getGroupType());
|
|
|
- courseScheduleTeacherSalary.setMusicGroupId(courseSchedule.getMusicGroupId());
|
|
|
- courseScheduleTeacherSalary.setTeacherRole(classGroupTeacherMapper.getTeacherRole());
|
|
|
- courseScheduleTeacherSalary.setUserId(classGroupTeacherMapper.getUserId());
|
|
|
- courseScheduleTeacherSalary.setClassGroupId(classGroup.getId());
|
|
|
- courseScheduleTeacherSalary.setCreateTime(date);
|
|
|
- courseScheduleTeacherSalary.setUpdateTime(date);
|
|
|
- courseScheduleTeacherSalaryService.createMusicGroupCourseTeacherSalary(musicGroup, courseSchedule, courseScheduleTeacherSalary);
|
|
|
- courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
|
|
|
- if (confirmGenerate && !classGroup4MixDto.getAllowZeroSalary() && BigDecimal.ZERO.compareTo(courseScheduleTeacherSalary.getExpectSalary()) == 0) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return BaseController.failed(HttpStatus.MULTI_STATUS, "当前课程课酬预计为0,是否继续");
|
|
|
- }
|
|
|
- }
|
|
|
+ if (totalCourseTimes < generateCourseTimes) {
|
|
|
+ break WhileNode;
|
|
|
}
|
|
|
|
|
|
- now = now.plusDays(1);
|
|
|
- }
|
|
|
-
|
|
|
- if (totalCourseDuration > totalMinutes) {
|
|
|
- throw new BizException("课程时长不足");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, false);
|
|
|
-
|
|
|
- if (!confirmGenerate) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- courseScheduleList.sort(Comparator.comparing(CourseSchedule::getStartClassTime));
|
|
|
- return BaseController.failed(HttpStatus.PARTIAL_CONTENT, courseScheduleList, "");
|
|
|
- }
|
|
|
- classGroupService.updateTotalClassTimes(classGroup.getId(), courseScheduleList.size());
|
|
|
+ String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00";
|
|
|
+ String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00";
|
|
|
+
|
|
|
+ CourseSchedule courseSchedule = new CourseSchedule();
|
|
|
+ courseSchedule.setSchoolId(schoolId);
|
|
|
+ courseSchedule.setClassGroupId(classGroupId);
|
|
|
+ courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
+ courseSchedule.setClassDate(classDate);
|
|
|
+ courseSchedule.setStartClassTime(DateUtil.stringToDate(startClassTime));
|
|
|
+ if (date.compareTo(courseSchedule.getStartClassTime()) > 0) {
|
|
|
+ throw new BizException("课程开始时间不得早于当前时间");
|
|
|
+ }
|
|
|
+ courseSchedule.setEndClassTime(DateUtil.stringToDate(endClassTime));
|
|
|
+ courseSchedule.setCreateTime(date);
|
|
|
+ courseSchedule.setUpdateTime(date);
|
|
|
+ courseSchedule.setTeachMode(teachMode);
|
|
|
+ courseSchedule.setMusicGroupId(musicGroupId);
|
|
|
+ courseSchedule.setType(courseConvertSumDto.getCourseType());
|
|
|
+ courseSchedule.setName(subjectNames + "-" + courseConvertSumDto.getCourseType().getMsg());
|
|
|
+ courseSchedule.setGroupType(MUSIC);
|
|
|
+ courseSchedule.setTeacherId(teacherId);
|
|
|
+ courseSchedule.setActualTeacherId(teacherId);
|
|
|
+ courseSchedule.setOrganId(musicGroup.getOrganId());
|
|
|
+ courseSchedule.setClassGroupType(groupDto.getType().getCode());
|
|
|
+ courseSchedule.setConvertFlag(groupDto.getConvertFlag());
|
|
|
+ courseScheduleDao.insert(courseSchedule);
|
|
|
+ courseScheduleList.add(courseSchedule);
|
|
|
+ courseScheduleTeacherSalaryService.initMusicGroupCourseTeacherSalary(newClassGroupTeacherMapperList,courseSchedule,
|
|
|
+ musicGroup,courseScheduleTeacherSalaryList);
|
|
|
+ }
|
|
|
+ now = now.plusDays(1);
|
|
|
+ }
|
|
|
+ this.checkNewCourseSchedules(courseScheduleList, false, false);
|
|
|
+
|
|
|
+ classGroupService.updateTotalClassTimes(classGroupId, courseScheduleList.size());
|
|
|
|
|
|
//老师结算表
|
|
|
- if (courseScheduleTeacherSalaryList.size() > 0) {
|
|
|
- courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
|
|
|
- }
|
|
|
-
|
|
|
- if (!CollectionUtils.isEmpty(studentList)) {
|
|
|
- studentService.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
|
|
|
-
|
|
|
- //学生结算表
|
|
|
- courseScheduleStudentPaymentService.createForMusicGroup(musicGroupId, courseScheduleList, studentIds);
|
|
|
- }
|
|
|
- if (musicGroup.getStatus() == PROGRESS) {
|
|
|
- imUserFriendService.refreshClassImUserFriend(classGroupId);
|
|
|
+ if (!groupDto.getAllowZeroSalary() && courseScheduleTeacherSalaryList.stream().anyMatch(e->e.getExpectSalary().compareTo(BigDecimal.ZERO) == 0)) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return BaseController.failed(HttpStatus.MULTI_STATUS, "当前课程课酬预计为0,是否继续");
|
|
|
}
|
|
|
- return BaseController.succeed(classGroup);
|
|
|
+ groupDto.getCourseScheduleTeacherSalaryList().addAll(courseScheduleTeacherSalaryList);
|
|
|
+ //生成学生结算表
|
|
|
+ groupDto.getCourseScheduleStudentPayments().addAll(courseScheduleStudentPaymentService.init(courseScheduleList,studentIds));
|
|
|
+ return BaseController.succeed(courseScheduleList.stream().map(e->e.getId()).collect(Collectors.toList()));
|
|
|
}
|
|
|
}
|