|
@@ -1985,7 +1985,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public List<CourseSchedule> getCourseSchedules(ClassGroup4MixDto classGroup4MixDto,List<CourseSchedule> courseScheduleList){
|
|
|
+ public List<CourseSchedule> getCourseSchedules(ClassGroup4MixDto classGroup4MixDto,List<CourseSchedule> courseScheduleList,MusicGroupStudentClassAdjust classAdjust){
|
|
|
Date date = new Date();
|
|
|
String musicGroupId = classGroup4MixDto.getMusicGroupId();
|
|
|
MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
|
|
@@ -2014,8 +2014,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
String classCourseMinute = classGroup4MixDto.getClassCourseMinute();
|
|
|
LocalDateTime now = LocalDate.parse(classGroup4MixDto.getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay();
|
|
|
//获取默认的排课时长
|
|
|
- String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
- JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
|
|
|
+ JSONObject jsonObject = JSON.parseObject(classAdjust.getDefaultCourseTypeMinute());
|
|
|
+
|
|
|
+// String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
+// JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
|
|
|
long classCourseDuration = Integer.parseInt(jsonObject.get(classGroup4MixDto.getCourseType().getCode()).toString());
|
|
|
//
|
|
|
Map<String, Integer> classCourseMinuteMap = JSON.parseObject(classCourseMinute, Map.class);
|
|
@@ -2125,15 +2127,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public List<CourseSchedule> autoAdjust(ClassGroup4MixDto classGroup4MixDto,List<CourseSchedule> courseScheduleList){
|
|
|
+ public List<CourseSchedule> autoAdjust(ClassGroup4MixDto classGroup4MixDto,List<CourseSchedule> courseScheduleList,MusicGroupStudentClassAdjust classAdjust){
|
|
|
Boolean checkFlag = courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, true);
|
|
|
if(!checkFlag){
|
|
|
//排课开始时间加一周
|
|
|
Date stringToDate = DateUtil.stringToDate(classGroup4MixDto.getStartDate(), DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
classGroup4MixDto.setStartDate(DateUtil.format(DateUtil.addDays(stringToDate, 7),DateUtil.ISO_EXPANDED_DATE_FORMAT));
|
|
|
//再次尝试排课
|
|
|
- courseScheduleList = getCourseSchedules(classGroup4MixDto,courseScheduleList);
|
|
|
- autoAdjust(classGroup4MixDto,courseScheduleList);
|
|
|
+ courseScheduleList = getCourseSchedules(classGroup4MixDto,courseScheduleList,classAdjust);
|
|
|
+ autoAdjust(classGroup4MixDto,courseScheduleList,classAdjust);
|
|
|
}
|
|
|
return courseScheduleList;
|
|
|
}
|
|
@@ -2160,9 +2162,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
List<ClassGroupTeacherMapper> classGroupTeacherMapperList = classGroup4MixDto.getClassGroupTeacherMapperList();
|
|
|
|
|
|
+ MusicGroupStudentClassAdjust classAdjust = musicGroupStudentClassAdjustDao.get(classGroup4MixDto.getMusicGroupStudentClassAdjustId());
|
|
|
//获取默认的排课时长
|
|
|
- String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
- JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
|
|
|
+// String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
+ JSONObject jsonObject = JSON.parseObject(classAdjust.getDefaultCourseTypeMinute());
|
|
|
long classCourseDuration = Integer.parseInt(jsonObject.get(classGroup4MixDto.getCourseType().getCode()).toString());
|
|
|
ClassGroup classGroup = classGroup4MixDto.getClassGroup();
|
|
|
if(classGroup == null){
|
|
@@ -2204,12 +2207,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
//排课
|
|
|
List<CourseSchedule> courseScheduleList = new ArrayList<>();
|
|
|
- getCourseSchedules(classGroup4MixDto,courseScheduleList);
|
|
|
+ getCourseSchedules(classGroup4MixDto,courseScheduleList,classAdjust);
|
|
|
|
|
|
//自动排课,校验冲突
|
|
|
if(courseScheduleList.size() > 0){
|
|
|
//冲突校验
|
|
|
- courseScheduleList = autoAdjust(classGroup4MixDto,courseScheduleList);
|
|
|
+ courseScheduleList = autoAdjust(classGroup4MixDto,courseScheduleList,classAdjust);
|
|
|
|
|
|
List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
|
|
|
.map(ClassGroupTeacherMapper::getUserId)
|
|
@@ -3585,20 +3588,23 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<Integer,Map<String,MusicGroupOrganizationCourseSettingsDetail>> getDefaultPaymentCalender(List<Integer> classGroupIds) {
|
|
|
+ public Map<String,Object> getDefaultPaymentCalender(List<Integer> classGroupIds) {
|
|
|
if(classGroupIds == null || classGroupIds.size() == 0){
|
|
|
throw new BizException("参数校验失败");
|
|
|
}
|
|
|
+ Map<String,Object> result = new HashMap<>();
|
|
|
Map<Integer,Map<String,MusicGroupOrganizationCourseSettingsDetail>> resultMap = new HashMap<>();
|
|
|
//获取默认的排课时长
|
|
|
- String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
- JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
|
|
|
+// JSONObject jsonObject = JSON.parseObject(classAdjust.getDefaultCourseTypeMinute());
|
|
|
+// String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
+// JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
|
|
|
//获取所选班级最大剩余课时
|
|
|
Map<String,Long> map = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(classGroupIds));
|
|
|
//获取分布默认的课程类型单价
|
|
|
MusicGroup musicGroup = musicGroupDao.findByClassGroupId(classGroupIds.get(0));
|
|
|
Map<String,BigDecimal> unitPriceMap = MapUtil.convertIntegerMap(organizationCourseUnitPriceSettingsDao.queryMapByOrganIdAndChargeTypeId(musicGroup.getChargeTypeId(),musicGroup.getOrganId()));
|
|
|
Set<String> courseTypes = map.keySet();
|
|
|
+ Set<String> groupType = new HashSet<>();
|
|
|
for (Integer classGroupId : classGroupIds) {
|
|
|
Map<String,MusicGroupOrganizationCourseSettingsDetail> courseMap = new HashMap<>();
|
|
|
//获取当前班级剩余课次
|
|
@@ -3613,6 +3619,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
if(currentNum >= maxNum){
|
|
|
continue;
|
|
|
}
|
|
|
+ groupType.add(courseType);
|
|
|
Long subNum = maxNum - currentNum;
|
|
|
//生成缴费项目
|
|
|
MusicGroupOrganizationCourseSettingsDetail settingsDetail = new MusicGroupOrganizationCourseSettingsDetail();
|
|
@@ -3622,14 +3629,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
settingsDetail.setCourseTotalNum(subNum.intValue());
|
|
|
settingsDetail.setCourseType(CourseScheduleType.valueOf(courseType));
|
|
|
- settingsDetail.setCourseTotalMinuties(Integer.parseInt(jsonObject.get(courseType).toString()) * subNum.intValue());
|
|
|
- settingsDetail.setCourseCurrentPrice(unitPrice.multiply(new BigDecimal(settingsDetail.getCourseTotalMinuties())));
|
|
|
- settingsDetail.setCourseOriginalPrice(settingsDetail.getCourseCurrentPrice());
|
|
|
+ settingsDetail.setUnitPrice(unitPrice);
|
|
|
+// settingsDetail.setCourseTotalMinuties(Integer.parseInt(jsonObject.get(courseType).toString()) * subNum.intValue());
|
|
|
+// settingsDetail.setCourseCurrentPrice(unitPrice.multiply(new BigDecimal(settingsDetail.getCourseTotalMinuties())));
|
|
|
+// settingsDetail.setCourseOriginalPrice(settingsDetail.getCourseCurrentPrice());
|
|
|
courseMap.put(courseType,settingsDetail);
|
|
|
}
|
|
|
resultMap.put(classGroupId,courseMap);
|
|
|
}
|
|
|
- return resultMap;
|
|
|
+ result.put("defaultPaymentCalender",resultMap);
|
|
|
+ result.put("groupTypeSet",groupType);
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -3708,8 +3718,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
List<Long> studentPaymentIds = courseScheduleStudentPaymentDao.queryStudentNotStartByClassIdsAndStudentIds(classGroupIds,studentIds);
|
|
|
|
|
|
musicGroupStudentClassAdjust.setStudentPaymentIds(JSON.toJSONString(studentPaymentIds));
|
|
|
+ //保存老师选择的课程时长
|
|
|
+ musicGroupStudentClassAdjust.setDefaultCourseTypeMinute(JSON.toJSONString(mergeClassSplitClassAffirmDto.getClassCourseMinuteMap()));
|
|
|
//计算新增班级的可排课时长,总课次*默认时长 (用学员剩余的课程时长加上购买的时长,可能导致同一班级学员时长不一致)
|
|
|
- musicGroupStudentClassAdjust.setClassCourseMinute(JSON.toJSONString(findClassCourseMinuteMap(classGroupIds)));
|
|
|
+ musicGroupStudentClassAdjust.setClassCourseMinute(JSON.toJSONString(findClassCourseMinuteMap(classGroupIds,mergeClassSplitClassAffirmDto.getClassCourseMinuteMap())));
|
|
|
musicGroupStudentClassAdjustDao.insert(musicGroupStudentClassAdjust);
|
|
|
//如果需要审核,校验参数配置
|
|
|
checkMergeClassSplitClassAffirmParam(mergeClassSplitClassAffirmDto);
|
|
@@ -3812,17 +3824,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String,Long> findClassCourseMinuteMap(List<Integer> classGroupIds){
|
|
|
+ public Map<String,Long> findClassCourseMinuteMap(List<Integer> classGroupIds,Map<String,Long> classCourseMinuteMap){
|
|
|
Map<String,Long> resultMap = new HashMap<>();
|
|
|
//获取默认的排课时长
|
|
|
- String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
- JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
|
|
|
+// String courseDefaultMinutes = sysConfigDao.findConfigValue("music_course_default_minutes");
|
|
|
+// JSONObject jsonObject = JSON.parseObject(courseDefaultMinutes);
|
|
|
//获取所选班级最大剩余课时
|
|
|
Map<String,Long> map = MapUtil.convertIntegerMap(courseScheduleDao.findClassMaxCourseNumMap(classGroupIds));
|
|
|
- Set<String> courseTypes = map.keySet();
|
|
|
+ Set<String> courseTypes = classCourseMinuteMap.keySet();
|
|
|
for (String courseType : courseTypes) {
|
|
|
- //剩余时长*默认排课时长
|
|
|
- resultMap.put(courseType,Integer.parseInt(jsonObject.get(courseType).toString()) * map.get(courseType));
|
|
|
+// 剩余时长*默认排课时长
|
|
|
+ resultMap.put(courseType,classCourseMinuteMap.get(courseType) * map.get(courseType));
|
|
|
}
|
|
|
return resultMap;
|
|
|
}
|