|
@@ -168,6 +168,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
private MusicGroupPaymentCalenderService musicGroupPaymentCalenderService;
|
|
|
@Autowired
|
|
|
private MusicGroupStudentClassAdjustDao musicGroupStudentClassAdjustDao;
|
|
|
+ @Autowired
|
|
|
+ private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Integer, ClassGroup> getDAO() {
|
|
@@ -2292,6 +2294,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
throw new BizException("班级不存在");
|
|
|
}
|
|
|
|
|
|
+ Boolean confirmGenerate = false;
|
|
|
+ if(Objects.nonNull(classGroup4MixDtos.get(0).getConfirmGenerate())){
|
|
|
+ confirmGenerate = classGroup4MixDtos.get(0).getConfirmGenerate();
|
|
|
+ }
|
|
|
+
|
|
|
TeachModeEnum teachMode = TeachModeEnum.OFFLINE;
|
|
|
if (classGroup.getType().equals(HIGH_ONLINE) || classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
|
|
|
teachMode = TeachModeEnum.ONLINE;
|
|
@@ -2409,6 +2416,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
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<>();
|
|
|
if (classGroup4MixDto.getHoliday()) {
|
|
|
SysConfig holidaySetting = sysConfigService.findByParamName(SysConfigService.HOLIDAY_SETTING);
|
|
@@ -2419,17 +2432,36 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
WhileNode:
|
|
|
while (true) {
|
|
|
- if (classGroup4MixDto.getHoliday() && holidayDays.contains(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
|
|
|
- now = now.plusDays(1);
|
|
|
- continue;
|
|
|
- }
|
|
|
int dayOfWeek = now.getDayOfWeek().getValue();
|
|
|
for (CourseTimeDto courseTimeDto : classGroup4MixDto.getCourseTimeDtoList()) {
|
|
|
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.getDayOfWeek().equals(dayOfWeek)) continue;
|
|
|
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
//课时长度
|
|
|
long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00", formatter),
|
|
|
LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00", formatter))
|
|
@@ -2437,11 +2469,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
totalCourseDuration += classCourseDuration;
|
|
|
|
|
|
- if (totalCourseDuration > totalMinutes) {
|
|
|
+// if (totalCourseDuration > totalMinutes) {
|
|
|
+// break WhileNode;
|
|
|
+// }
|
|
|
+
|
|
|
+ courseTimeDto.setCourseNum(courseTimeDto.getCourseNum()+1);
|
|
|
+ generateCourseTimes+=1;
|
|
|
+
|
|
|
+ if(totalCourseTimes<generateCourseTimes){
|
|
|
break WhileNode;
|
|
|
}
|
|
|
|
|
|
- Date classDate = DateConvertor.toDate(now);
|
|
|
String startClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getStartClassTime() + ":00";
|
|
|
String endClassTime = DateUtil.getDate(classDate) + " " + courseTimeDto.getEndClassTime() + ":00";
|
|
|
|
|
@@ -2451,6 +2489,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
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);
|
|
@@ -2495,6 +2536,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, false);
|
|
|
|
|
|
+ if(!confirmGenerate){
|
|
|
+ return BaseController.failed(HttpStatus.PARTIAL_CONTENT, courseScheduleList, "");
|
|
|
+ }
|
|
|
+
|
|
|
//老师结算表
|
|
|
if (courseScheduleTeacherSalaryList.size() > 0) {
|
|
|
courseScheduleTeacherSalaryService.batchInsert(courseScheduleTeacherSalaryList);
|
|
@@ -3483,9 +3528,24 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
if (CollectionUtils.isEmpty(studentIds)) {
|
|
|
throw new BizException("学员列表不可为空");
|
|
|
}
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
|
|
|
MusicGroup musicGroup = musicGroupDao.findByClassGroupId(classGroupIds.get(0));
|
|
|
+ //获取欠费学员列表
|
|
|
+ List<Integer> noPaymentUserIds = musicGroupPaymentCalenderDetailDao.queryNoPaymentUserIds(musicGroup.getId(), new ArrayList<>(studentIds));
|
|
|
+ if(noPaymentUserIds.size() > 0){
|
|
|
+ throw new BizException("操作失败:有欠费的学员不允许创建缴费");
|
|
|
+ }
|
|
|
+ //获取缴费状态在审核中或者已拒绝的缴费项目的学员
|
|
|
+ String studentId = musicGroupPaymentCalenderDao.queryCalenderStudentIds(musicGroup.getId(),null);
|
|
|
+ if(StringUtils.isNotEmpty(studentId)){
|
|
|
+ for (Integer integer : studentIds) {
|
|
|
+ if(studentId.contains(integer.toString())){
|
|
|
+ throw new BizException("操作失败:所选学员有待审核或已拒绝的缴费项目");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
+
|
|
|
//生成缴费记录,同一个批次
|
|
|
MusicGroupPaymentCalender.PaymentCalenderStatusEnum status = null;
|
|
|
List<MusicGroupPaymentCalenderDto> paymentCalenderDtos = mergeClassSplitClassAffirmDto.getMusicGroupPaymentCalenderDtos();
|
|
@@ -3870,6 +3930,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
studentIds);
|
|
|
//创建缴费项目
|
|
|
MusicGroup musicGroup = musicGroupDao.findByClassGroupId(masterClassGroupId);
|
|
|
+ //获取缴费状态在审核中或者已拒绝的缴费项目的学员
|
|
|
+ String studentId = musicGroupPaymentCalenderDao.queryCalenderStudentIds(musicGroup.getId(),null);
|
|
|
+ if(StringUtils.isNotEmpty(studentId)){
|
|
|
+ for (Integer integer : studentIds) {
|
|
|
+ if(studentId.contains(integer.toString())){
|
|
|
+ throw new BizException("操作失败:所选学员有待审核或已拒绝的缴费项目");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
BigDecimal masterTotalPrice = getMasterTotalPrice(masterClassGroupId);
|
|
|
//是否有需要审核的缴费项目
|
|
|
List<MusicGroupPaymentCalenderStudentDetail> calenderStudentDetails = paymentCalenderDto.getMusicGroupPaymentCalenderStudentDetails();
|