|
@@ -44,6 +44,7 @@ import java.util.*;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.Executors;
|
|
|
+import java.util.function.BiConsumer;
|
|
|
import java.util.function.BiFunction;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -1533,6 +1534,13 @@ public class ExportServiceImpl implements ExportService {
|
|
|
return managerDownload;
|
|
|
}
|
|
|
|
|
|
+ public BigDecimal getActualAmount(BigDecimal price,StudentPaymentOrderExportDto row){
|
|
|
+ if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ return price.multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
+ }
|
|
|
+ return BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public void orderList(Map<String, Object> params, ManagerDownload managerDownload,List<String> headColumns){
|
|
@@ -1660,11 +1668,7 @@ public class ExportServiceImpl implements ExportService {
|
|
|
break;
|
|
|
case MUSICAL:
|
|
|
if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
|
|
|
- BigDecimal leaseFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- leaseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setLeaseFee(leaseFee);
|
|
|
+ row.setLeaseFee(getActualAmount(orderDetail.getPrice(), row));
|
|
|
} else {
|
|
|
row.setMusicalFee(orderDetail.getPrice());
|
|
|
}
|
|
@@ -1677,40 +1681,20 @@ public class ExportServiceImpl implements ExportService {
|
|
|
row.setOtherFee(row.getOtherFee().add(orderDetail.getPrice()));
|
|
|
break;
|
|
|
case MAINTENANCE:
|
|
|
- BigDecimal repairFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- repairFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setMaintenanceFee(repairFee);
|
|
|
+ row.setMaintenanceFee(getActualAmount(orderDetail.getPrice(), row));
|
|
|
break;
|
|
|
case CLOUD_TEACHER:
|
|
|
case CLOUD_TEACHER_PLUS:
|
|
|
- BigDecimal cloudTeacherFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- cloudTeacherFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setCloudTeacherFee(cloudTeacherFee);
|
|
|
+ row.setCloudTeacherFee(getActualAmount(orderDetail.getPrice(), row));
|
|
|
break;
|
|
|
case DEGREE_REGISTRATION:
|
|
|
- BigDecimal degreeFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- degreeFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setDegreeFee(degreeFee);
|
|
|
+ row.setDegreeFee(getActualAmount(orderDetail.getPrice(), row));
|
|
|
break;
|
|
|
case PRACTICE:
|
|
|
- BigDecimal practiceCourseFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- practiceCourseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setPracticeCourseFee(practiceCourseFee);
|
|
|
+ row.setPracticeCourseFee(getActualAmount(orderDetail.getPrice(), row));
|
|
|
break;
|
|
|
case VIP:
|
|
|
- BigDecimal vipCourseFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- vipCourseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setVipCourseFee(vipCourseFee);
|
|
|
+ row.setVipCourseFee(getActualAmount(orderDetail.getPrice(), row));
|
|
|
if(row.getTypeDesc() == null){
|
|
|
//学员没有历史VIP课程则导出为【VIP课新增】
|
|
|
//学员有历史VIP课程到导出为【VIP课续费]
|
|
@@ -1722,11 +1706,10 @@ public class ExportServiceImpl implements ExportService {
|
|
|
}
|
|
|
break;
|
|
|
case THEORY_COURSE:
|
|
|
- BigDecimal theoryCourseFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- theoryCourseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setTheoryCourseFee(theoryCourseFee);
|
|
|
+ row.setTheoryCourseFee(getActualAmount(orderDetail.getPrice(), row));
|
|
|
+ break;
|
|
|
+ case REPAIR:
|
|
|
+ row.setRepairFee(getActualAmount(orderDetail.getPrice(), row));
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -2380,17 +2363,12 @@ public class ExportServiceImpl implements ExportService {
|
|
|
row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
|
|
|
break;
|
|
|
case MUSICAL:
|
|
|
- BigDecimal income = orderDetail.getIncome();
|
|
|
//扣除内部库存的商品销售收入统计在云教练中
|
|
|
if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){
|
|
|
- row.setTranslatedIncome(row.getTranslatedIncome().add(income.multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN)));
|
|
|
+ row.setTranslatedIncome(row.getTranslatedIncome().add(orderDetail.getIncome()));
|
|
|
}
|
|
|
if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
|
|
|
- BigDecimal leaseFee = orderDetail.getPrice().subtract(income);
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- leaseFee = orderDetail.getPrice().subtract(income).multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setLeaseFee(leaseFee);
|
|
|
+ row.setLeaseFee(getActualAmount(orderDetail.getPrice(),row));
|
|
|
} else {
|
|
|
row.setMusicalFee(orderDetail.getPrice().subtract(orderDetail.getIncome()));
|
|
|
}
|
|
@@ -2398,44 +2376,28 @@ public class ExportServiceImpl implements ExportService {
|
|
|
case ACCESSORIES:
|
|
|
case TEACHING:
|
|
|
if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){
|
|
|
- row.setTranslatedIncome(row.getTranslatedIncome().add(orderDetail.getIncome().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN)));
|
|
|
+ row.setTranslatedIncome(row.getTranslatedIncome().add(orderDetail.getIncome()));
|
|
|
}
|
|
|
- row.setTeachingFee(row.getTeachingFee().add(orderDetail.getPrice().subtract(orderDetail.getIncome())));
|
|
|
+ row.setTeachingFee(row.getTeachingFee().add(getActualAmount(orderDetail.getPrice(),row).subtract(orderDetail.getIncome())));
|
|
|
break;
|
|
|
case OTHER:
|
|
|
if(StringUtils.equals(orderDetail.getIncomeItem(), OrderDetailTypeEnum.CLOUD_TEACHER.name())){
|
|
|
- row.setTranslatedIncome(row.getTranslatedIncome().add(orderDetail.getIncome().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN)));
|
|
|
+ row.setTranslatedIncome(row.getTranslatedIncome().add(orderDetail.getIncome()));
|
|
|
}
|
|
|
row.setOtherFee(row.getOtherFee().add(orderDetail.getPrice().subtract(orderDetail.getIncome())));
|
|
|
break;
|
|
|
case MAINTENANCE:
|
|
|
- BigDecimal maintenanceFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- maintenanceFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setMaintenanceFee(maintenanceFee);
|
|
|
+ row.setMaintenanceFee(getActualAmount(orderDetail.getPrice(),row));
|
|
|
break;
|
|
|
case CLOUD_TEACHER:
|
|
|
case CLOUD_TEACHER_PLUS:
|
|
|
- BigDecimal cloudTeacherFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- cloudTeacherFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setCloudTeacherFee(row.getCloudTeacherFee().add(cloudTeacherFee));
|
|
|
+ row.setCloudTeacherFee(row.getCloudTeacherFee().add(getActualAmount(orderDetail.getPrice(),row)));
|
|
|
break;
|
|
|
case DEGREE_REGISTRATION:
|
|
|
- BigDecimal degreeFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- degreeFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setDegreeFee(degreeFee);
|
|
|
+ row.setDegreeFee(getActualAmount(orderDetail.getPrice(),row));
|
|
|
break;
|
|
|
case VIP:
|
|
|
- BigDecimal vipCourseFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- vipCourseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setVipCourseFee(vipCourseFee);
|
|
|
+ row.setVipCourseFee(getActualAmount(orderDetail.getPrice(),row));
|
|
|
if(row.getTypeDesc() == null){
|
|
|
//学员没有历史VIP课程则导出为【VIP课新增】
|
|
|
//学员有历史VIP课程到导出为【VIP课续费]
|
|
@@ -2447,11 +2409,10 @@ public class ExportServiceImpl implements ExportService {
|
|
|
}
|
|
|
break;
|
|
|
case THEORY_COURSE:
|
|
|
- BigDecimal theoryCourseFee = BigDecimal.ZERO;
|
|
|
- if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- theoryCourseFee = orderDetail.getPrice().multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
|
|
|
- }
|
|
|
- row.setTheoryCourseFee(theoryCourseFee);
|
|
|
+ row.setTheoryCourseFee(getActualAmount(orderDetail.getPrice(),row));
|
|
|
+ break;
|
|
|
+ case REPAIR:
|
|
|
+ row.setRepairFee(getActualAmount(orderDetail.getPrice(),row));
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -2580,7 +2541,11 @@ public class ExportServiceImpl implements ExportService {
|
|
|
}
|
|
|
//row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(row.getTeachingFee()).subtract(row.getMaintenanceFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()).subtract(row.getLeaseFee()).subtract(row.getCloudTeacherFee()));
|
|
|
} else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
|
|
|
- row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
|
|
|
+ if(row.getRepairFee().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
|
|
|
+ }else {
|
|
|
+ row.setRepairFee(row.getActualAmount().subtract(row.getTeachingFee()).subtract(row.getTranslatedIncome()));
|
|
|
+ }
|
|
|
} else if (row.getType().equals(OUTORDER)) {
|
|
|
row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getRepairFee()).subtract(feeByType.getOtherFee()));
|
|
|
row.setTransferFee(BigDecimal.ZERO);
|
|
@@ -2676,12 +2641,14 @@ public class ExportServiceImpl implements ExportService {
|
|
|
order.setDegreeFee(BigDecimal.ZERO);
|
|
|
order.setMaintenanceFee(BigDecimal.ZERO);
|
|
|
order.setCloudTeacherFee(BigDecimal.ZERO);
|
|
|
- order.setRepairFee(order.getMaintenanceProductFee());
|
|
|
+// order.setRepairFee(order.getRepairFee());
|
|
|
+// order.setMaintenanceProductFee(order.getMaintenanceProductFee());
|
|
|
continue;
|
|
|
} else if (order.getSaleAmount().compareTo(BigDecimal.ZERO) == 0 && order.getServiceAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- order.setRepairFee(order.getRepairFee());
|
|
|
- order.setCloudTeacherFee(order.getCloudTeacherFee());
|
|
|
- order.setMaintenanceFee(order.getMaintenanceFee());
|
|
|
+// order.setRepairFee(order.getRepairFee());
|
|
|
+// order.setMaintenanceProductFee(order.getMaintenanceProductFee());
|
|
|
+// order.setCloudTeacherFee(order.getCloudTeacherFee());
|
|
|
+// order.setMaintenanceFee(order.getMaintenanceFee());
|
|
|
order.setMusicalFee(BigDecimal.ZERO);
|
|
|
order.setTeachingFee(BigDecimal.ZERO);
|
|
|
// order.setOtherFee(BigDecimal.ZERO);
|