|  | @@ -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);
 |