|
@@ -1194,30 +1194,29 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
Date date = new Date();
|
|
|
List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
|
|
|
+ List<CourseScheduleStudentPayment> totalCourseScheduleStudentPayments = new ArrayList<CourseScheduleStudentPayment>();
|
|
|
|
|
|
- //如果是会员收费的乐团,那么课程价值都是0
|
|
|
- if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
|
|
|
-
|
|
|
- }
|
|
|
// 计算单价
|
|
|
- /*Map<CourseScheduleType, BigDecimal> unitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
+ Map<CourseScheduleType, BigDecimal> unitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
Map<CourseScheduleType, BigDecimal> originUnitPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
Map<CourseScheduleType, BigDecimal> totalCurrentPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
Map<CourseScheduleType, BigDecimal> totalOriginPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
- for (MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings : musicGroupPaymentCalenderCourseSettingsList) {
|
|
|
- unitPriceMap.put(
|
|
|
- musicGroupPaymentCalenderCourseSettings.getCourseType(),
|
|
|
- musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice().divide(
|
|
|
- new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
|
|
|
-
|
|
|
- originUnitPriceMap.put(
|
|
|
- musicGroupPaymentCalenderCourseSettings.getCourseType(),
|
|
|
- musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice().divide(
|
|
|
- new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
|
|
|
-
|
|
|
- totalCurrentPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice());
|
|
|
- totalOriginPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice());
|
|
|
- }*/
|
|
|
+ if(musicGroupPaymentCalenderCourseSettingsList != null){
|
|
|
+ for (MusicGroupPaymentCalenderCourseSettings musicGroupPaymentCalenderCourseSettings : musicGroupPaymentCalenderCourseSettingsList) {
|
|
|
+ unitPriceMap.put(
|
|
|
+ musicGroupPaymentCalenderCourseSettings.getCourseType(),
|
|
|
+ musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice().divide(
|
|
|
+ new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
|
|
|
+
|
|
|
+ originUnitPriceMap.put(
|
|
|
+ musicGroupPaymentCalenderCourseSettings.getCourseType(),
|
|
|
+ musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice().divide(
|
|
|
+ new BigDecimal(musicGroupPaymentCalenderCourseSettings.getCourseTotalMinuties()), CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN));
|
|
|
+
|
|
|
+ totalCurrentPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseCurrentPrice());
|
|
|
+ totalOriginPriceMap.put(musicGroupPaymentCalenderCourseSettings.getCourseType(), musicGroupPaymentCalenderCourseSettings.getCourseOriginalPrice());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
List<Integer> classGroupIds = classGroupList.stream().map(ClassGroup::getId).collect(Collectors.toList());
|
|
|
List<CourseScheduleStudentPayment> ccs = courseScheduleStudentPaymentDao.getWithClassGroupIds(classGroupIds, studentId);
|
|
@@ -1227,15 +1226,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
;
|
|
|
}
|
|
|
|
|
|
-// Map<CourseScheduleType, BigDecimal> totalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
-// Map<CourseScheduleType, BigDecimal> totalOrignPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
+ Map<CourseScheduleType, BigDecimal> totalPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
+ Map<CourseScheduleType, BigDecimal> totalOrignPriceMap = new HashMap<CourseSchedule.CourseScheduleType, BigDecimal>();
|
|
|
|
|
|
List<CourseSchedule> allNotStartCourses = new ArrayList<>();
|
|
|
Map<Integer, List<ClassGroupTeacherMapper>> ctm = new HashMap<>();
|
|
|
|
|
|
-// BigDecimal unitPrice = new BigDecimal(0);
|
|
|
-// BigDecimal originUnitPrice = new BigDecimal(0);
|
|
|
-// CourseScheduleType courseType = null;
|
|
|
+ BigDecimal unitPrice = new BigDecimal(0);
|
|
|
+ BigDecimal originUnitPrice = new BigDecimal(0);
|
|
|
+ CourseScheduleType courseType = null;
|
|
|
for (ClassGroup classGroup : classGroupList) {
|
|
|
if(HIGH_ONLINE.equals(classGroup.getType())){
|
|
|
Integer studentNum = classGroupStudentMapperDao.countClassGroupStudentNum(classGroup.getId());
|
|
@@ -1264,53 +1263,103 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
classGroupStudentMapperDao.insert(classGroupStudentMapper);
|
|
|
}
|
|
|
|
|
|
- // 3、学生加入级未开始课程
|
|
|
+ // 3、学生加入班级未开始课程
|
|
|
List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroup.getId());
|
|
|
- for (CourseSchedule courseSchedule : courseScheduleList) {
|
|
|
- if (existCourseIds.contains(courseSchedule.getId())) {
|
|
|
- throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
|
|
|
- }
|
|
|
-
|
|
|
- CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
- courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
|
|
|
- courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
|
|
|
- courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
- courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
- courseScheduleStudentPayment.setUserId(studentId);
|
|
|
- courseScheduleStudentPayment.setBatchNo(batchNo);
|
|
|
- courseScheduleStudentPayment.setBeMerged(false);
|
|
|
- courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
|
|
|
- courseScheduleStudentPayment.setOriginalPrice(BigDecimal.ZERO);
|
|
|
-
|
|
|
- /*unitPrice = unitPriceMap.get(courseSchedule.getType());
|
|
|
- if (unitPrice != null) {
|
|
|
- courseType = courseSchedule.getType();
|
|
|
- BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
|
|
|
- courseScheduleStudentPayment.setExpectPrice(unitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
-
|
|
|
- if (totalPriceMap.containsKey(courseType)) {
|
|
|
- totalPriceMap.put(courseType, totalPriceMap.get(courseType).add(courseScheduleStudentPayment.getExpectPrice()));
|
|
|
- } else {
|
|
|
- totalPriceMap.put(courseType, courseScheduleStudentPayment.getExpectPrice());
|
|
|
- }
|
|
|
- }
|
|
|
+ Map<Integer, List<CourseSchedule>> memberCourseSchedule = courseScheduleList.stream().collect(Collectors.groupingBy(CourseSchedule::getMemberFlag));
|
|
|
+ for (Integer integer : memberCourseSchedule.keySet()) {
|
|
|
+ List<CourseSchedule> courseSchedules = memberCourseSchedule.get(integer);
|
|
|
+ if(courseSchedules != null && courseSchedules.size() > 0){
|
|
|
+ if(integer == 0){
|
|
|
+ for (CourseSchedule courseSchedule : courseSchedules) {
|
|
|
+ if (existCourseIds.contains(courseSchedule.getId())) {
|
|
|
+ throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
|
|
|
+ }
|
|
|
+ CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
+ courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
|
|
|
+ courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
|
|
|
+ courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleStudentPayment.setUserId(studentId);
|
|
|
+ courseScheduleStudentPayment.setBatchNo(batchNo);
|
|
|
+ courseScheduleStudentPayment.setBeMerged(false);
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
|
|
|
+ courseScheduleStudentPayment.setOriginalPrice(BigDecimal.ZERO);
|
|
|
+ //如果当前课程不是会员收费排课,那么计算课程价值
|
|
|
+ unitPrice = unitPriceMap.get(courseSchedule.getType());
|
|
|
+ if (unitPrice != null) {
|
|
|
+ courseType = courseSchedule.getType();
|
|
|
+ BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(unitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
+
|
|
|
+ if (totalPriceMap.containsKey(courseType)) {
|
|
|
+ totalPriceMap.put(courseType, totalPriceMap.get(courseType).add(courseScheduleStudentPayment.getExpectPrice()));
|
|
|
+ } else {
|
|
|
+ totalPriceMap.put(courseType, courseScheduleStudentPayment.getExpectPrice());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- originUnitPrice = originUnitPriceMap.get(courseSchedule.getType());
|
|
|
- if (originUnitPrice != null) {
|
|
|
- courseType = courseSchedule.getType();
|
|
|
- BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
|
|
|
- courseScheduleStudentPayment.setOriginalPrice(originUnitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
+ originUnitPrice = originUnitPriceMap.get(courseSchedule.getType());
|
|
|
+ if (originUnitPrice != null) {
|
|
|
+ courseType = courseSchedule.getType();
|
|
|
+ BigDecimal duration = new BigDecimal(DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime()));
|
|
|
+ courseScheduleStudentPayment.setOriginalPrice(originUnitPrice.multiply(duration).setScale(2, BigDecimal.ROUND_DOWN));
|
|
|
|
|
|
- if (totalOrignPriceMap.containsKey(courseType)) {
|
|
|
- totalOrignPriceMap.put(courseType, totalOrignPriceMap.get(courseType).add(courseScheduleStudentPayment.getOriginalPrice()));
|
|
|
- } else {
|
|
|
- totalOrignPriceMap.put(courseType, courseScheduleStudentPayment.getOriginalPrice());
|
|
|
+ if (totalOrignPriceMap.containsKey(courseType)) {
|
|
|
+ totalOrignPriceMap.put(courseType, totalOrignPriceMap.get(courseType).add(courseScheduleStudentPayment.getOriginalPrice()));
|
|
|
+ } else {
|
|
|
+ totalOrignPriceMap.put(courseType, courseScheduleStudentPayment.getOriginalPrice());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleStudentPayment.setCreateTime(date);
|
|
|
+ courseScheduleStudentPayment.setUpdateTime(date);
|
|
|
+ courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
+ }
|
|
|
+ if (courseScheduleStudentPayments.size() > 0) {
|
|
|
+ // 排序
|
|
|
+ Collections.sort(courseScheduleStudentPayments);
|
|
|
+ List<CourseScheduleType> list = new ArrayList<CourseSchedule.CourseScheduleType>();
|
|
|
+ for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
|
|
|
+ courseType = courseScheduleStudentPayment.getCourseSchedule().getType();
|
|
|
+ if (!list.contains(courseType)) {
|
|
|
+ list.add(courseType);
|
|
|
+
|
|
|
+ // 修改第一节课的金额
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(courseScheduleStudentPayment.getExpectPrice().add(
|
|
|
+ totalCurrentPriceMap.get(courseType).subtract(totalPriceMap.get(courseType))));
|
|
|
+
|
|
|
+ courseScheduleStudentPayment.setOriginalPrice(courseScheduleStudentPayment.getOriginalPrice().add(
|
|
|
+ totalOriginPriceMap.get(courseType).subtract(totalOrignPriceMap.get(courseType))));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ totalCourseScheduleStudentPayments.addAll(courseScheduleStudentPayments);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ for (CourseSchedule courseSchedule : courseSchedules) {
|
|
|
+ if (existCourseIds.contains(courseSchedule.getId())) {
|
|
|
+ throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
|
|
|
+ }
|
|
|
+ CourseScheduleStudentPayment courseScheduleStudentPayment = new CourseScheduleStudentPayment();
|
|
|
+ courseScheduleStudentPayment.setCourseSchedule(courseSchedule);
|
|
|
+ courseScheduleStudentPayment.setGroupType(classGroup.getGroupType());
|
|
|
+ courseScheduleStudentPayment.setMusicGroupId(classGroup.getMusicGroupId());
|
|
|
+ courseScheduleStudentPayment.setCourseScheduleId(courseSchedule.getId());
|
|
|
+ courseScheduleStudentPayment.setUserId(studentId);
|
|
|
+ courseScheduleStudentPayment.setBatchNo(batchNo);
|
|
|
+ courseScheduleStudentPayment.setBeMerged(false);
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(BigDecimal.ZERO);
|
|
|
+ courseScheduleStudentPayment.setOriginalPrice(BigDecimal.ZERO);
|
|
|
+ courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
|
|
|
+ courseScheduleStudentPayment.setCreateTime(date);
|
|
|
+ courseScheduleStudentPayment.setUpdateTime(date);
|
|
|
+ totalCourseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
+ }
|
|
|
}
|
|
|
- }*/
|
|
|
- courseScheduleStudentPayment.setClassGroupId(classGroup.getId());
|
|
|
- courseScheduleStudentPayment.setCreateTime(date);
|
|
|
- courseScheduleStudentPayment.setUpdateTime(date);
|
|
|
- courseScheduleStudentPayments.add(courseScheduleStudentPayment);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(totalCourseScheduleStudentPayments.size() > 0){
|
|
|
+ courseScheduleStudentPaymentService.batchInsert(totalCourseScheduleStudentPayments);
|
|
|
+ studentDao.updateStudentServiceTag(studentId, null, YesOrNoEnum.YES.getCode());
|
|
|
}
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(courseScheduleList)){
|
|
@@ -1327,27 +1376,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
|
|
|
}
|
|
|
|
|
|
- if (courseScheduleStudentPayments.size() > 0) {
|
|
|
- // 排序
|
|
|
- Collections.sort(courseScheduleStudentPayments);
|
|
|
- /*List<CourseScheduleType> list = new ArrayList<CourseSchedule.CourseScheduleType>();
|
|
|
- for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
|
|
|
- courseType = courseScheduleStudentPayment.getCourseSchedule().getType();
|
|
|
- if (!list.contains(courseType)) {
|
|
|
- list.add(courseType);
|
|
|
-
|
|
|
- // 修改第一节课的金额
|
|
|
- courseScheduleStudentPayment.setExpectPrice(courseScheduleStudentPayment.getExpectPrice().add(
|
|
|
- totalCurrentPriceMap.get(courseType).subtract(totalPriceMap.get(courseType))));
|
|
|
-
|
|
|
- courseScheduleStudentPayment.setOriginalPrice(courseScheduleStudentPayment.getOriginalPrice().add(
|
|
|
- totalOriginPriceMap.get(courseType).subtract(totalOrignPriceMap.get(courseType))));
|
|
|
- }
|
|
|
- }*/
|
|
|
- courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
|
|
|
- studentDao.updateStudentServiceTag(studentId, null, YesOrNoEnum.YES.getCode());
|
|
|
- }
|
|
|
-
|
|
|
//4、调整未上课课酬
|
|
|
if (allNotStartCourses.size() > 0) {
|
|
|
List<Long> courseScheduleIds = allNotStartCourses.stream().map(CourseSchedule::getId).collect(Collectors.toList());
|
|
@@ -3508,8 +3536,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList) {
|
|
|
- return courseScheduleDao.queryRemainCourseTypeDuration(classGroupIdList);
|
|
|
+ public List<RemainCourseTypeDurationDto> queryRemainCourseTypeDuration(String classGroupIdList,Integer memberFlag) {
|
|
|
+ return courseScheduleDao.queryRemainCourseTypeDuration(classGroupIdList,memberFlag);
|
|
|
}
|
|
|
|
|
|
@Override
|