|
@@ -392,18 +392,30 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
|
|
|
}
|
|
|
List<Long> calenderIds = musicGroupPaymentCalenders.stream().map(MusicGroupPaymentCalender::getId).collect(Collectors.toList());
|
|
|
List<MusicGroupPaymentCalenderDetail> calenderDetails = musicGroupPaymentCalenderDetailDao.getWithCalenderIds(calenderIds);
|
|
|
- //学员总缴费金额
|
|
|
- BigDecimal totalActualAmount = calenderDetails.stream().map(MusicGroupPaymentCalenderDetail::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
-
|
|
|
- for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
|
|
|
- if(totalActualAmount.compareTo(courseScheduleStudentPayment.getExpectPrice())>=0){
|
|
|
- courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
|
|
|
- totalActualAmount=totalActualAmount.subtract(courseScheduleStudentPayment.getExpectPrice());
|
|
|
- }else{
|
|
|
- courseScheduleStudentPayment.setActualPrice(totalActualAmount);
|
|
|
- totalActualAmount=BigDecimal.ZERO;
|
|
|
+
|
|
|
+ Map<Integer, List<CourseScheduleStudentPayment>> studentStudentPaymentMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getUserId));
|
|
|
+ Map<Integer, List<MusicGroupPaymentCalenderDetail>> studentCalenderDetailMap = calenderDetails.stream().collect(Collectors.groupingBy(MusicGroupPaymentCalenderDetail::getUserId));
|
|
|
+
|
|
|
+ List<CourseScheduleStudentPayment> updateStudentPayments = new ArrayList<>();
|
|
|
+
|
|
|
+ for (Map.Entry<Integer, List<CourseScheduleStudentPayment>> studentStudentPaymentMapEntry : studentStudentPaymentMap.entrySet()) {
|
|
|
+ List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetails = studentCalenderDetailMap.get(studentStudentPaymentMapEntry.getKey());
|
|
|
+
|
|
|
+ //学员总缴费金额
|
|
|
+ BigDecimal totalActualAmount = musicGroupPaymentCalenderDetails.stream().map(MusicGroupPaymentCalenderDetail::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+
|
|
|
+ for (CourseScheduleStudentPayment courseScheduleStudentPayment : studentStudentPaymentMapEntry.getValue()) {
|
|
|
+ if(totalActualAmount.compareTo(courseScheduleStudentPayment.getExpectPrice())>=0){
|
|
|
+ courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
|
|
|
+ totalActualAmount=totalActualAmount.subtract(courseScheduleStudentPayment.getExpectPrice());
|
|
|
+ }else{
|
|
|
+ courseScheduleStudentPayment.setActualPrice(totalActualAmount);
|
|
|
+ totalActualAmount=BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ updateStudentPayments.add(courseScheduleStudentPayment);
|
|
|
}
|
|
|
}
|
|
|
- courseScheduleStudentPaymentDao.batchUpdate(courseScheduleStudentPayments);
|
|
|
+
|
|
|
+ courseScheduleStudentPaymentDao.batchUpdate(updateStudentPayments);
|
|
|
}
|
|
|
}
|