|
@@ -270,6 +270,7 @@ public class ExportServiceImpl implements ExportService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Async
|
|
|
public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload) throws Exception {
|
|
|
List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage(params);
|
|
|
long i = 1;
|
|
@@ -334,11 +335,11 @@ public class ExportServiceImpl implements ExportService {
|
|
|
case OTHER:
|
|
|
row.setOtherFee(row.getOtherFee().add(orderDetail.getPrice()));
|
|
|
case MAINTENANCE:
|
|
|
- BigDecimal repairFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal maintenanceFee = BigDecimal.ZERO;
|
|
|
if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- repairFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ maintenanceFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
}
|
|
|
- row.setRepairFee(repairFee);
|
|
|
+ row.setMaintenanceFee(maintenanceFee);
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -406,7 +407,7 @@ public class ExportServiceImpl implements ExportService {
|
|
|
StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
|
|
|
row.setMusicalFee(feeByType.getMusicalFee());
|
|
|
row.setTeachingFee(feeByType.getTeachingFee());
|
|
|
- row.setRepairFee(row.getRepairFee().add(feeByType.getRepairFee()));
|
|
|
+ row.setMaintenanceProductFee(feeByType.getRepairFee());
|
|
|
row.setOtherFee(feeByType.getOtherFee());
|
|
|
if (row.getGroupType().equals(GroupType.MUSIC)) {
|
|
|
StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
|
|
@@ -415,7 +416,7 @@ public class ExportServiceImpl implements ExportService {
|
|
|
row.setSchoolName(studentRegistration.getSchoolName());
|
|
|
row.setCooperationOrganName(studentRegistration.getRemark());
|
|
|
}
|
|
|
- row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(row.getRepairFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
|
|
|
+ row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(row.getMaintenanceFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()));
|
|
|
} else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
|
|
|
row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
|
|
|
} else if (row.getType().equals(OrderTypeEnum.OUTORDER)) {
|
|
@@ -445,12 +446,144 @@ public class ExportServiceImpl implements ExportService {
|
|
|
row.setPaymentChannel(paymentChannel);
|
|
|
row.setId(i);
|
|
|
i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Long, List<StudentPaymentOrderExportDto>> orderMap = studentPaymentOrderExportDtos.stream().collect(Collectors.groupingBy(StudentPaymentOrder::getId));
|
|
|
+ orderMap.forEach((orderId, orders) -> {
|
|
|
+ int j = 1;
|
|
|
+ BigDecimal routeMusicGroupCourseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeVipCourseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routePracticeCourseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeTheoryCourseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeDegreeFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeRepairFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeMaintenanceFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeMaintenanceProductFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeLeaseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeMusicalFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeTeachingFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal routeOtherFee = BigDecimal.ZERO;
|
|
|
+ for (StudentPaymentOrderExportDto order : orders) {
|
|
|
+ Date endDate = DateUtil.stringToDate("2021-03-01", "yyyy-MM-dd");
|
|
|
+ if (order.getPayTime() == null || order.getPayTime().compareTo(endDate) < 0) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (order.getSaleAmount().compareTo(BigDecimal.ZERO) > 0 && order.getServiceAmount().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ order.setMusicGroupCourseFee(BigDecimal.ZERO);
|
|
|
+ order.setVipCourseFee(BigDecimal.ZERO);
|
|
|
+ order.setPracticeCourseFee(BigDecimal.ZERO);
|
|
|
+ order.setTheoryCourseFee(BigDecimal.ZERO);
|
|
|
+ order.setDegreeFee(BigDecimal.ZERO);
|
|
|
+ order.setRepairFee(order.getMaintenanceProductFee());
|
|
|
+ order.setLeaseFee(BigDecimal.ZERO);
|
|
|
+ continue;
|
|
|
+ } else if (order.getSaleAmount().compareTo(BigDecimal.ZERO) == 0 && order.getServiceAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ order.setRepairFee(order.getRepairFee().add(order.getMaintenanceFee()));
|
|
|
+ order.setMusicalFee(BigDecimal.ZERO);
|
|
|
+ order.setTeachingFee(BigDecimal.ZERO);
|
|
|
+ order.setOtherFee(BigDecimal.ZERO);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ BigDecimal musicGroupCourseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal vipCourseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal practiceCourseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal theoryCourseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal degreeFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal repairFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal maintenanceFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal maintenanceProductFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal leaseFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal musicalFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal teachingFee = BigDecimal.ZERO;
|
|
|
+ BigDecimal otherFee = BigDecimal.ZERO;
|
|
|
+
|
|
|
+ if (order.getActualAmount() != null && order.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ musicGroupCourseFee = order.getMusicGroupCourseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ vipCourseFee = order.getVipCourseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ practiceCourseFee = order.getPracticeCourseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ theoryCourseFee = order.getTheoryCourseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ degreeFee = order.getDegreeFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ repairFee = order.getRepairFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ maintenanceFee = order.getMaintenanceFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ maintenanceProductFee = order.getMaintenanceProductFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ leaseFee = order.getLeaseFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ musicalFee = order.getMusicalFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ teachingFee = order.getTeachingFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ otherFee = order.getOtherFee().multiply(order.getRouteAmount()).divide(order.getActualAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ }
|
|
|
|
|
|
- //比例分配
|
|
|
- if (row.getSaleAmount().compareTo(BigDecimal.ZERO) > 0 || row.getServiceAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ if (order.getGroupType().equals(GroupType.VIP)) {
|
|
|
+ vipCourseFee = order.getRouteAmount();
|
|
|
+ } else if (order.getGroupType().equals(GroupType.SPORADIC)) {
|
|
|
+ //考级报名
|
|
|
+ if (order.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) {
|
|
|
+ degreeFee = order.getRouteAmount().subtract(vipCourseFee).subtract(practiceCourseFee).subtract(theoryCourseFee);
|
|
|
+ } else {
|
|
|
+ if (order.getChargeType() != null && SporadicChargeTypeEnum.LEVEL.getCode().equals(order.getChargeType())) {
|
|
|
+ degreeFee = order.getRouteAmount();
|
|
|
+ } else if (order.getChargeType() != null && SporadicChargeTypeEnum.PRACTICE_GROUP_BUY.getCode().equals(order.getChargeType())) {
|
|
|
+ practiceCourseFee = order.getRouteAmount();
|
|
|
+ } else {
|
|
|
+ otherFee = order.getRouteAmount();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (order.getGroupType().equals(GroupType.PRACTICE)) {
|
|
|
+ practiceCourseFee = order.getRouteAmount();
|
|
|
+ } else {
|
|
|
+ if (order.getGroupType().equals(GroupType.MUSIC)) {
|
|
|
+ musicGroupCourseFee = order.getRouteAmount().subtract(musicalFee).subtract(teachingFee).subtract(maintenanceFee).subtract(maintenanceProductFee).subtract(otherFee).subtract(leaseFee);
|
|
|
+ } else if (order.getType().equals(OrderTypeEnum.REPAIR)) {
|
|
|
+ repairFee = order.getRouteAmount().subtract(musicalFee).subtract(teachingFee).subtract(otherFee);
|
|
|
+ } else if (order.getType().equals(OrderTypeEnum.OUTORDER)) {
|
|
|
+ musicGroupCourseFee = order.getRouteAmount().subtract(musicalFee).subtract(teachingFee).subtract(maintenanceProductFee).subtract(otherFee);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (j == orders.size()) {
|
|
|
+ musicGroupCourseFee = order.getMusicGroupCourseFee().subtract(routeMusicGroupCourseFee);
|
|
|
+ vipCourseFee = order.getVipCourseFee().subtract(routeVipCourseFee);
|
|
|
+ practiceCourseFee = order.getPracticeCourseFee().subtract(routePracticeCourseFee);
|
|
|
+ theoryCourseFee = order.getTheoryCourseFee().subtract(routeTheoryCourseFee);
|
|
|
+ degreeFee = order.getDegreeFee().subtract(routeDegreeFee);
|
|
|
+ repairFee = order.getRepairFee().subtract(routeRepairFee);
|
|
|
+ maintenanceFee = order.getMaintenanceFee().subtract(routeMaintenanceFee);
|
|
|
+ maintenanceProductFee = order.getMaintenanceProductFee().subtract(routeMaintenanceProductFee);
|
|
|
+ leaseFee = order.getLeaseFee().subtract(routeLeaseFee);
|
|
|
+ musicalFee = order.getMusicalFee().subtract(routeMusicalFee);
|
|
|
+ teachingFee = order.getTeachingFee().subtract(routeTeachingFee);
|
|
|
+ otherFee = order.getOtherFee().subtract(routeOtherFee);
|
|
|
+ }
|
|
|
|
|
|
+ routeMusicGroupCourseFee = routeMusicGroupCourseFee.add(musicGroupCourseFee);
|
|
|
+ routeVipCourseFee = routeVipCourseFee.add(vipCourseFee);
|
|
|
+ routePracticeCourseFee = routePracticeCourseFee.add(practiceCourseFee);
|
|
|
+ routeTheoryCourseFee = routeTheoryCourseFee.add(theoryCourseFee);
|
|
|
+ routeDegreeFee = routeDegreeFee.add(degreeFee);
|
|
|
+ routeRepairFee = routeRepairFee.add(repairFee);
|
|
|
+ routeMaintenanceFee = routeMaintenanceFee.add(maintenanceFee);
|
|
|
+ routeMaintenanceProductFee = routeMaintenanceProductFee.add(maintenanceProductFee);
|
|
|
+ routeLeaseFee = routeLeaseFee.add(leaseFee);
|
|
|
+ routeMusicalFee = routeMusicalFee.add(musicalFee);
|
|
|
+ routeTeachingFee = routeTeachingFee.add(teachingFee);
|
|
|
+ routeOtherFee = routeOtherFee.add(otherFee);
|
|
|
+
|
|
|
+ order.setMusicGroupCourseFee(musicGroupCourseFee);
|
|
|
+ order.setVipCourseFee(vipCourseFee);
|
|
|
+ order.setPracticeCourseFee(practiceCourseFee);
|
|
|
+ order.setTheoryCourseFee(theoryCourseFee);
|
|
|
+ order.setDegreeFee(degreeFee);
|
|
|
+ order.setRepairFee(repairFee.add(maintenanceFee).add(maintenanceProductFee).add(repairFee));
|
|
|
+ order.setMaintenanceFee(maintenanceFee);
|
|
|
+ order.setMaintenanceProductFee(maintenanceProductFee);
|
|
|
+ order.setLeaseFee(leaseFee);
|
|
|
+ order.setMusicalFee(musicalFee);
|
|
|
+ order.setTeachingFee(teachingFee);
|
|
|
+ order.setOtherFee(otherFee);
|
|
|
}
|
|
|
- }
|
|
|
+ });
|
|
|
+ String[] organIdArr = params.get("oldOrganId").toString().split(",");
|
|
|
+ List<String> organIds = Arrays.asList(organIdArr);
|
|
|
+ studentPaymentOrderExportDtos.removeIf(order -> !organIds.contains(order.getOrganId().toString()));
|
|
|
|
|
|
String basePath = new ApplicationHome(this.getClass()).getSource().getParentFile().getPath();
|
|
|
File file = new File(basePath + "/" + managerDownload.getName());
|