|
@@ -391,6 +391,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
cssp.setOriginalPrice(courseOriginalPrice);
|
|
|
cssp.setExpectPrice(courseCurrentPrice);
|
|
|
cssp.setActualPrice(BigDecimal.ZERO);
|
|
|
+ cssp.setBeMerged(false);
|
|
|
newCourseScheduleStudentPayments.add(cssp);
|
|
|
if(courseSchedules.size() - 1 == i){
|
|
|
CourseScheduleStudentPayment scheduleStudentPayment = newCourseScheduleStudentPayments.get(0);
|
|
@@ -419,16 +420,27 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
|
|
|
public void createForMusicGroup(String musicGroupId, List<CourseSchedule> courseSchedules, List<Integer> studentIds) {
|
|
|
- Map<CourseSchedule.CourseScheduleType, Integer> courseTypeCourseDurationMap = new HashMap<>();
|
|
|
+ Map<CourseSchedule.CourseScheduleType, Map<Integer, Integer>> courseTypeCourseDurationMap = new HashMap<>();
|
|
|
Map<CourseSchedule.CourseScheduleType, List<CourseSchedule>> typeCourseMap = courseSchedules.stream().collect(Collectors.groupingBy(CourseSchedule::getType));
|
|
|
+
|
|
|
+ List<CourseScheduleStudentPayment> css = courseScheduleStudentPaymentDao.getWithGroup(musicGroupId, GroupType.MUSIC, studentIds);
|
|
|
+ Map<Integer, Set<Long>> studentCourseIdsMap = new HashMap<>();
|
|
|
+ if(!CollectionUtils.isEmpty(css)){
|
|
|
+ studentCourseIdsMap = css.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getUserId, Collectors.mapping(CourseScheduleStudentPayment::getCourseScheduleId, Collectors.toSet())));
|
|
|
+ }
|
|
|
+
|
|
|
for (Map.Entry<CourseSchedule.CourseScheduleType, List<CourseSchedule>> typeCoursesEntry : typeCourseMap.entrySet()) {
|
|
|
- int totalCourseDuration = 0;
|
|
|
- for (CourseSchedule courseSchedule : typeCoursesEntry.getValue()) {
|
|
|
- //课程时长
|
|
|
- int courseDuration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
|
|
|
- totalCourseDuration += courseDuration;
|
|
|
+ Map<Integer, Integer> sdMap = new HashMap<>();
|
|
|
+ for (Integer studentId : studentIds) {
|
|
|
+ int totalCourseDuration = 0;
|
|
|
+ for (CourseSchedule courseSchedule : typeCoursesEntry.getValue()) {
|
|
|
+ //课程时长
|
|
|
+ int courseDuration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
|
|
|
+ totalCourseDuration += courseDuration;
|
|
|
+ }
|
|
|
+ sdMap.put(studentId, totalCourseDuration);
|
|
|
}
|
|
|
- courseTypeCourseDurationMap.put(typeCoursesEntry.getKey(), totalCourseDuration);
|
|
|
+ courseTypeCourseDurationMap.put(typeCoursesEntry.getKey(), sdMap);
|
|
|
}
|
|
|
|
|
|
List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
|
|
@@ -436,9 +448,13 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
List<String> allBatchNos = new ArrayList<>();
|
|
|
|
|
|
for (Integer studentId : studentIds) {
|
|
|
+ Set<Long> existCourseIds = new HashSet<>();
|
|
|
+ if(studentCourseIdsMap.containsKey(studentId)){
|
|
|
+ existCourseIds = studentCourseIdsMap.get(studentId);
|
|
|
+ }
|
|
|
for (Map.Entry<CourseSchedule.CourseScheduleType, List<CourseSchedule>> courseScheduleTypeListEntry : typeCourseMap.entrySet()) {
|
|
|
//当前课程类型总课程时长
|
|
|
- Integer typeCourseDuration = courseTypeCourseDurationMap.get(courseScheduleTypeListEntry.getKey());
|
|
|
+ Integer typeCourseDuration = courseTypeCourseDurationMap.get(courseScheduleTypeListEntry.getKey()).get(studentId);
|
|
|
|
|
|
String batchNo = musicGroupPaymentStudentCourseDetailDao.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(musicGroupId, studentId, courseScheduleTypeListEntry.getKey(),null);
|
|
|
|
|
@@ -480,6 +496,9 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
courseScheduleTypeListEntry.getValue().sort(Comparator.comparing(CourseSchedule::getStartClassTime));
|
|
|
BigDecimal typeCourseTotalOriginalPrice = new BigDecimal("0"), typeCourseTotalCurrentPrice = new BigDecimal("0");
|
|
|
for (CourseSchedule courseSchedule : courseScheduleTypeListEntry.getValue()) {
|
|
|
+ if(existCourseIds.contains(courseSchedule.getId())){
|
|
|
+ throw new BizException("该学员已在此班级{}课程中", courseSchedule.getId());
|
|
|
+ }
|
|
|
//课程时长
|
|
|
int courseDuration = DateUtil.minutesBetween(courseSchedule.getStartClassTime(), courseSchedule.getEndClassTime());
|
|
|
|
|
@@ -501,6 +520,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
cssp.setOriginalPrice(courseOriginalPrice);
|
|
|
cssp.setExpectPrice(courseCurrentPrice);
|
|
|
cssp.setActualPrice(BigDecimal.ZERO);
|
|
|
+ cssp.setBeMerged(false);
|
|
|
typeCourseStudentPayments.add(cssp);
|
|
|
}
|
|
|
|