|  | @@ -190,6 +190,8 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      private StudentTeacherMapperDao studentTeacherMapperDao;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private TeacherCloudCourseReportService teacherCloudCourseReportService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private CloudTeacherOrderDao cloudTeacherOrderDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private static final ExecutorService exportExecutorService = Executors.newFixedThreadPool(10);
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
	
		
			
				|  | @@ -383,6 +385,43 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          exportManageFuncMap.put(ExportEnum.EXPORT_CLOUD_TEACHER_SUM_DETAIL, (info) -> exportCloudTeacherSumDetail(info));
 | 
	
		
			
				|  |  |          exportManageFuncMap.put(ExportEnum.CLASS_GROUP, info -> exportClassGroup(info));
 | 
	
		
			
				|  |  |          exportManageFuncMap.put(ExportEnum.EXPORT_TEACHER_CLOUD_COURSE_REPORT, info -> exportTeacherCloudCourseReport(info));
 | 
	
		
			
				|  |  | +        exportManageFuncMap.put(ExportEnum.EXPORT_OA_SUMMARY_EXPENSES, info -> exportOaSummaryExpenses(info));
 | 
	
		
			
				|  |  | +        exportManageFuncMap.put(ExportEnum.EXPORT_OA_SUMMARY_EXPENSES_DETAIL, info -> exportOaSummaryExpensesDetail(info));
 | 
	
		
			
				|  |  | +        exportManageFuncMap.put(ExportEnum.EXPORT_OPERATING_SUMMARY_INCOME, info -> exportOperatingSummaryIncome(info));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private HttpResponseResult exportOaSummaryExpenses(Map<String, Object> info) {
 | 
	
		
			
				|  |  | +        String month = getParam(info, "month", String.class);
 | 
	
		
			
				|  |  | +        SysUser user = sysUserService.getUser();
 | 
	
		
			
				|  |  | +        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_OA_SUMMARY_EXPENSES,user.getId());
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.initExportInfo(operatingReportNewService.queryOASummaryExpenses(month),
 | 
	
		
			
				|  |  | +                        managerDownload,ExportEnum.EXPORT_OA_SUMMARY_EXPENSES),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private HttpResponseResult exportOaSummaryExpensesDetail(Map<String, Object> info) {
 | 
	
		
			
				|  |  | +        String month = getParam(info, "month", String.class);
 | 
	
		
			
				|  |  | +        SysUser user = sysUserService.getUser();
 | 
	
		
			
				|  |  | +        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_OA_SUMMARY_EXPENSES_DETAIL,user.getId());
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.initExportInfo(operatingReportNewService.queryOASummaryExpensesDetail(month),
 | 
	
		
			
				|  |  | +                        managerDownload,ExportEnum.EXPORT_OA_SUMMARY_EXPENSES_DETAIL),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private HttpResponseResult exportOperatingSummaryIncome(Map<String, Object> info) {
 | 
	
		
			
				|  |  | +        String month = getParam(info, "month", String.class);
 | 
	
		
			
				|  |  | +        Map<String, Object> params = new HashMap<>(1);
 | 
	
		
			
				|  |  | +        params.put("month",month);
 | 
	
		
			
				|  |  | +        int count = studentPaymentOrderDao.queryCount1(params);
 | 
	
		
			
				|  |  | +        if (count <= 0) {
 | 
	
		
			
				|  |  | +            return BaseController.failed("没有可导出的数据");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (count > 50000) {
 | 
	
		
			
				|  |  | +            return BaseController.failed("数据集太大,不能导出.最大数据集不能超过50000");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_OPERATING_SUMMARY_INCOME, sysUserService.getUserId());
 | 
	
		
			
				|  |  | +        return this.asyncExport(() -> this.operatingSummaryIncome(params, managerDownload),
 | 
	
		
			
				|  |  | +                managerDownload.getName());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private List<StudentServeExportDto> exportStudentServeInfo(Map<String, Object> info) {
 | 
	
	
		
			
				|  | @@ -1329,7 +1368,9 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              for (MusicGroupBuildLog groupAuditSuccess : musicGroupAuditSuccess) {
 | 
	
		
			
				|  |  | -                if (!groupAuditSuccess.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) continue;
 | 
	
		
			
				|  |  | +                if (!groupAuditSuccess.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  musicGroupRegisterMap.put("auditSuccessTime", groupAuditSuccess.getCreateTime());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              musicGroupRegisterMap.put("groupBuyMusicalNum", musicGroupRegister.getGroupBuyMusicalNum());
 | 
	
	
		
			
				|  | @@ -2094,7 +2135,9 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  if (row.getChargeType() != null) {
 | 
	
		
			
				|  |  |                      for (SporadicChargeTypeEnum chargeType : SporadicChargeTypeEnum.values()) {
 | 
	
		
			
				|  |  | -                        if (!chargeType.getCode().equals(row.getChargeType())) continue;
 | 
	
		
			
				|  |  | +                        if (!chargeType.getCode().equals(row.getChargeType())) {
 | 
	
		
			
				|  |  | +                            continue;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |                          row.setSporadicType(chargeType.getMsg());
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -2135,8 +2178,6 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |                  if (!CollectionUtils.isEmpty(exportDtoList)) {
 | 
	
		
			
				|  |  |                      StudentPaymentOrderExportDto feeByType = exportDtoList.get(0);
 | 
	
		
			
				|  |  |                      BigDecimal childRepairFee = childRepairMap.get(row.getId()) == null ? BigDecimal.ZERO : childRepairMap.get(row.getId());
 | 
	
		
			
				|  |  | -//                    StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
 | 
	
		
			
				|  |  | -//                    BigDecimal childRepairFee = sellOrderDao.getChildRepair(row.getId());
 | 
	
		
			
				|  |  |                      row.setMusicalFee(feeByType.getMusicalFee());
 | 
	
		
			
				|  |  |                      row.setTeachingFee(feeByType.getTeachingFee().subtract(childRepairFee));
 | 
	
		
			
				|  |  |                      row.setMaintenanceProductFee(feeByType.getRepairFee().add(childRepairFee));
 | 
	
	
		
			
				|  | @@ -2265,6 +2306,299 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | +    public void operatingSummaryIncome(Map<String, Object> params, ManagerDownload managerDownload) {
 | 
	
		
			
				|  |  | +        List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderDao.ExportQueryPage1(params);
 | 
	
		
			
				|  |  | +        long i = 1;
 | 
	
		
			
				|  |  | +        //获取机构费率
 | 
	
		
			
				|  |  | +        List<Long> otherOrderIds = studentPaymentOrderExportDtos.stream().filter(e -> e.getGroupType() != GroupType.GOODS_SELL
 | 
	
		
			
				|  |  | +                && e.getGroupType() != GroupType.REPLACEMENT
 | 
	
		
			
				|  |  | +                && e.getGroupType() != GroupType.PRACTICE
 | 
	
		
			
				|  |  | +                && e.getGroupType() != GroupType.SPORADIC
 | 
	
		
			
				|  |  | +                && e.getGroupType() != GroupType.MEMBER
 | 
	
		
			
				|  |  | +                && e.getGroupType() != GroupType.ACTIVITY
 | 
	
		
			
				|  |  | +                && e.getGroupType() != GroupType.VIP).map(e -> e.getId()).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        Map<Long, List<StudentPaymentOrderExportDto>> feeByTypeMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        Map<Long, BigDecimal> childRepairMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        if (!CollectionUtils.isEmpty(otherOrderIds)) {
 | 
	
		
			
				|  |  | +            List<StudentPaymentOrderExportDto> feeByType = sellOrderDao.queryFeeByType(otherOrderIds);
 | 
	
		
			
				|  |  | +            feeByTypeMap = feeByType.stream().collect(Collectors.groupingBy(StudentPaymentOrderExportDto::getId));
 | 
	
		
			
				|  |  | +            childRepairMap = MapUtil.convertIntegerMap(sellOrderDao.queryChildRepair(otherOrderIds));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        List<Integer> organIds = studentPaymentOrderExportDtos.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        Map<Integer, String> userOrganNameMap = organizationService.getMap("organization","id_","name_",organIds,managerDownload.getTenantId(),Integer.class,String.class);
 | 
	
		
			
				|  |  | +        //按分部分组
 | 
	
		
			
				|  |  | +        Map<Integer, List<StudentPaymentOrderExportDto>> listMap = studentPaymentOrderExportDtos.stream().collect(Collectors.groupingBy(e -> e.getOrganId()));
 | 
	
		
			
				|  |  | +        List<OperatingTotalIncomeDto> incomeDtos = new ArrayList<>();
 | 
	
		
			
				|  |  | +        //承担课程的云教练收入
 | 
	
		
			
				|  |  | +        String month = params.get("month").toString();
 | 
	
		
			
				|  |  | +        String firstDayOfMonth = DateUtil.dateToString(DateUtil.getFirstDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
 | 
	
		
			
				|  |  | +        String lastDayOfMonth = DateUtil.dateToString(DateUtil.getLastDayOfMonth(DateUtil.stringToDate(month,DateUtil.ISO_YEAR_MONTH_FORMAT)),DateUtil.ISO_EXPANDED_DATE_FORMAT);
 | 
	
		
			
				|  |  | +        Map<Integer, BigDecimal> groupCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumGroupCloudAmount(month,firstDayOfMonth,lastDayOfMonth));
 | 
	
		
			
				|  |  | +        //不承担课程的云教练收入
 | 
	
		
			
				|  |  | +        Map<Integer, BigDecimal> personalCloudAmount = MapUtil.convertIntegerMap(cloudTeacherOrderDao.sumPersonalCloudAmount(month,firstDayOfMonth,lastDayOfMonth));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//        List<Map<Integer, BigDecimal>> personIncomeMapList = cloudTeacherOrderDao.sumPersonIncome(params.get("month").toString());
 | 
	
		
			
				|  |  | +//        Map<Integer, BigDecimal> personIncomeMap = new HashMap<>();
 | 
	
		
			
				|  |  | +//        if(!CollectionUtils.isEmpty(personIncomeMapList)){
 | 
	
		
			
				|  |  | +//            personIncomeMap = MapUtil.convertIntegerMap(personIncomeMapList);
 | 
	
		
			
				|  |  | +//        }
 | 
	
		
			
				|  |  | +        for (Integer organId : listMap.keySet()) {
 | 
	
		
			
				|  |  | +            OperatingTotalIncomeDto incomeDto = new OperatingTotalIncomeDto();
 | 
	
		
			
				|  |  | +            incomeDto.setOrganName(userOrganNameMap.get(organId));
 | 
	
		
			
				|  |  | +            for (StudentPaymentOrderExportDto row : listMap.get(organId)) {
 | 
	
		
			
				|  |  | +                if (row.getActualAmount() == null) {
 | 
	
		
			
				|  |  | +                    row.setActualAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (row.getBalancePaymentAmount() == null) {
 | 
	
		
			
				|  |  | +                    row.setBalancePaymentAmount(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (row.getOrderDetailList() != null) {
 | 
	
		
			
				|  |  | +                    for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) {
 | 
	
		
			
				|  |  | +                        switch (orderDetail.getType()) {
 | 
	
		
			
				|  |  | +                            case COURSE:
 | 
	
		
			
				|  |  | +                            case CLASSROOM:
 | 
	
		
			
				|  |  | +                            case SINGLE:
 | 
	
		
			
				|  |  | +                            case MIX:
 | 
	
		
			
				|  |  | +                            case COMPREHENSIVE:
 | 
	
		
			
				|  |  | +                            case ENLIGHTENMENT:
 | 
	
		
			
				|  |  | +                            case TRAINING_SINGLE:
 | 
	
		
			
				|  |  | +                            case TRAINING_MIX:
 | 
	
		
			
				|  |  | +                            case MUSIC_NETWORK:
 | 
	
		
			
				|  |  | +                            case HIGH:
 | 
	
		
			
				|  |  | +                            case HIGH_ONLINE:
 | 
	
		
			
				|  |  | +                            case HIGH_ONLINE_COURSE:
 | 
	
		
			
				|  |  | +                                row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case MUSICAL:
 | 
	
		
			
				|  |  | +                                if (row.getGroupType() != GroupType.GOODS_SELL) {
 | 
	
		
			
				|  |  | +                                    if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
 | 
	
		
			
				|  |  | +                                        row.setLeaseFee(getActualAmount(orderDetail.getPrice(), row));
 | 
	
		
			
				|  |  | +                                    } else {
 | 
	
		
			
				|  |  | +                                        row.setMusicalFee(orderDetail.getPrice());
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case ACCESSORIES:
 | 
	
		
			
				|  |  | +                            case TEACHING:
 | 
	
		
			
				|  |  | +                                row.setTeachingFee(row.getTeachingFee().add(orderDetail.getPrice()));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case OTHER:
 | 
	
		
			
				|  |  | +                                row.setOtherFee(row.getOtherFee().add(orderDetail.getPrice()));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case MAINTENANCE:
 | 
	
		
			
				|  |  | +                                row.setMaintenanceFee(getActualAmount(orderDetail.getPrice(), row));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case CLOUD_TEACHER:
 | 
	
		
			
				|  |  | +                            case CLOUD_TEACHER_PLUS:
 | 
	
		
			
				|  |  | +                                row.setCloudTeacherFee(getActualAmount(orderDetail.getPrice(), row));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case DEGREE_REGISTRATION:
 | 
	
		
			
				|  |  | +                                row.setDegreeFee(getActualAmount(orderDetail.getPrice(), row));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case PRACTICE:
 | 
	
		
			
				|  |  | +                                row.setPracticeCourseFee(getActualAmount(orderDetail.getPrice(), row));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case VIP:
 | 
	
		
			
				|  |  | +                                row.setVipCourseFee(getActualAmount(orderDetail.getPrice(), row));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case THEORY_COURSE:
 | 
	
		
			
				|  |  | +                                row.setTheoryCourseFee(getActualAmount(orderDetail.getPrice(), row));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            case REPAIR:
 | 
	
		
			
				|  |  | +                                row.setRepairFee(getActualAmount(orderDetail.getPrice(), row));
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            default:
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                //专业
 | 
	
		
			
				|  |  | +                if (row.getGroupType().equals(GroupType.VIP)) {
 | 
	
		
			
				|  |  | +                    row.setVipCourseFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                } else if (row.getGroupType() == GroupType.ACTIVITY) {
 | 
	
		
			
				|  |  | +                    row.setVipCourseFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                } else if (row.getGroupType() == GroupType.MEMBER) {
 | 
	
		
			
				|  |  | +                    row.setCloudTeacherFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                } else if (row.getGroupType().equals(GroupType.SPORADIC)) {
 | 
	
		
			
				|  |  | +                    //考级报名
 | 
	
		
			
				|  |  | +                    if (row.getType().equals(OrderTypeEnum.DEGREE_REGISTRATION)) {
 | 
	
		
			
				|  |  | +                        if(StringUtils.isEmpty(row.getMemo())){
 | 
	
		
			
				|  |  | +                            row.setDegreeFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                        }else {
 | 
	
		
			
				|  |  | +                            String[] feeTypes = row.getMemo().split(";");
 | 
	
		
			
				|  |  | +                            List<String> feeTypeList = Arrays.asList(feeTypes);
 | 
	
		
			
				|  |  | +                            for (String feeTypeStr : feeTypeList) {
 | 
	
		
			
				|  |  | +                                int index = feeTypeStr.lastIndexOf(":");
 | 
	
		
			
				|  |  | +                                if (index < 0) {
 | 
	
		
			
				|  |  | +                                    continue;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                BigDecimal typeFee = new BigDecimal(feeTypeStr.substring(index + 1));
 | 
	
		
			
				|  |  | +                                if (row.getExpectAmount().compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  | +                                    typeFee = typeFee.multiply(row.getActualAmount()).divide(row.getExpectAmount(), 2, BigDecimal.ROUND_DOWN);
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                if (feeTypeStr.contains("VIP")) {
 | 
	
		
			
				|  |  | +                                    row.setVipCourseFee(typeFee);
 | 
	
		
			
				|  |  | +                                } else if (feeTypeStr.contains("网管课")) {
 | 
	
		
			
				|  |  | +                                    row.setPracticeCourseFee(typeFee);
 | 
	
		
			
				|  |  | +                                } else if (feeTypeStr.contains("乐理课")) {
 | 
	
		
			
				|  |  | +                                    row.setTheoryCourseFee(typeFee);
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                            row.setDegreeFee(row.getActualAmount().subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()).subtract(row.getTheoryCourseFee()));
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        if (row.getChargeType() != null && SporadicChargeTypeEnum.LEVEL.getCode().equals(row.getChargeType())) {
 | 
	
		
			
				|  |  | +                            row.setDegreeFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                        } else if (row.getChargeType() != null && SporadicChargeTypeEnum.PRACTICE_GROUP_BUY.getCode().equals(row.getChargeType())) {
 | 
	
		
			
				|  |  | +                            row.setPracticeCourseFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                        } else if (row.getChargeType() != null && SporadicChargeTypeEnum.MUSIC_UPKEEP.getCode().equals(row.getChargeType())) {
 | 
	
		
			
				|  |  | +                            row.setMaintenanceFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                        } else if (row.getChargeType() != null && SporadicChargeTypeEnum.VISITING_FEE.getCode().equals(row.getChargeType())) {
 | 
	
		
			
				|  |  | +                            row.setVisitFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                        } else if (row.getChargeType() != null && (SporadicChargeTypeEnum.RECHARGE.getCode().equals(row.getChargeType()) ||
 | 
	
		
			
				|  |  | +                                SporadicChargeTypeEnum.HIGH_ONLINE_ACTIVITY.getCode().equals(row.getChargeType()))) {
 | 
	
		
			
				|  |  | +                            row.setRechargeFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                        } else if (row.getChargeType() != null && SporadicChargeTypeEnum.CLOUD_TEACHER_BUY.getCode().equals(row.getChargeType())) {
 | 
	
		
			
				|  |  | +                            row.setCloudTeacherFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            row.setOtherFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                } else if (row.getGroupType().equals(GroupType.PRACTICE)) {
 | 
	
		
			
				|  |  | +                    row.setPracticeCourseFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                } else if (row.getGroupType().equals(GroupType.REPLACEMENT)) {
 | 
	
		
			
				|  |  | +                    row.setMusicalFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                } else if (row.getGroupType().equals(GroupType.GOODS_SELL)) {
 | 
	
		
			
				|  |  | +                    row.setRetailGoodsFee(row.getActualAmount());
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    List<StudentPaymentOrderExportDto> exportDtoList = feeByTypeMap.get(row.getId());
 | 
	
		
			
				|  |  | +                    if (!CollectionUtils.isEmpty(exportDtoList)) {
 | 
	
		
			
				|  |  | +                        StudentPaymentOrderExportDto feeByType = exportDtoList.get(0);
 | 
	
		
			
				|  |  | +                        BigDecimal childRepairFee = childRepairMap.get(row.getId()) == null ? BigDecimal.ZERO : childRepairMap.get(row.getId());
 | 
	
		
			
				|  |  | +                        row.setMusicalFee(feeByType.getMusicalFee());
 | 
	
		
			
				|  |  | +                        row.setTeachingFee(feeByType.getTeachingFee().subtract(childRepairFee));
 | 
	
		
			
				|  |  | +                        row.setMaintenanceProductFee(feeByType.getRepairFee().add(childRepairFee));
 | 
	
		
			
				|  |  | +                        row.setOtherFee(feeByType.getOtherFee());
 | 
	
		
			
				|  |  | +                        if (row.getGroupType().equals(GroupType.MUSIC)) {
 | 
	
		
			
				|  |  | +                            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()).
 | 
	
		
			
				|  |  | +                                    subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()));
 | 
	
		
			
				|  |  | +                        } else if (row.getGroupType().equals(OrderTypeEnum.REPAIR)) {
 | 
	
		
			
				|  |  | +                            row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
 | 
	
		
			
				|  |  | +                        } else if (row.getGroupType() == GroupType.OUTORDER) {
 | 
	
		
			
				|  |  | +                            //销售收入
 | 
	
		
			
				|  |  | +                            BigDecimal add = feeByType.getMusicalFee().add(row.getTeachingFee()).add(row.getMaintenanceProductFee()).add(feeByType.getOtherFee());
 | 
	
		
			
				|  |  | +                            //服务收入
 | 
	
		
			
				|  |  | +                            BigDecimal subtract = feeByType.getActualAmount().subtract(add);
 | 
	
		
			
				|  |  | +                            //如果是淘器微信那么就是零售
 | 
	
		
			
				|  |  | +                            if (Objects.equals("淘器微信", row.getMerNos()) && add.compareTo(BigDecimal.ZERO) > 0) {
 | 
	
		
			
				|  |  | +                                //如果有服务收入那么是课程学校采买
 | 
	
		
			
				|  |  | +                                row.setMusicalFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                row.setTeachingFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                row.setMaintenanceProductFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                row.setOtherFee(subtract);
 | 
	
		
			
				|  |  | +                                row.setRetailGoodsFee(add);
 | 
	
		
			
				|  |  | +                            } else {
 | 
	
		
			
				|  |  | +                                //拆分导入订单
 | 
	
		
			
				|  |  | +                                if (row.getType() == OrderTypeEnum.OUTORDER || row.getType() == OrderTypeEnum.SCHOOL) {
 | 
	
		
			
				|  |  | +                                    if (row.getType() == OrderTypeEnum.SCHOOL) {
 | 
	
		
			
				|  |  | +                                        row.setMusicalFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                        row.setTeachingFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                        row.setMaintenanceProductFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                        row.setOtherFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                        row.setLargeMusicalFee(add);
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                    row.setCourseSchoolBuyAmount(subtract);
 | 
	
		
			
				|  |  | +                                } else if (row.getType() == OrderTypeEnum.OTHER) {
 | 
	
		
			
				|  |  | +                                    row.setOtherFee(row.getOtherFee().add(subtract));
 | 
	
		
			
				|  |  | +                                } else {
 | 
	
		
			
				|  |  | +                                    row.setMusicalFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                    row.setTeachingFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                    row.setMaintenanceProductFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                    row.setOtherFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                                    row.setRetailGoodsFee(add);
 | 
	
		
			
				|  |  | +                                    row.setMusicGroupCourseFee(subtract);
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                            row.setTransferFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                            row.setPlatformFee(BigDecimal.ZERO);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                row.setId(i);
 | 
	
		
			
				|  |  | +                row.setRepairFee(row.getRepairFee().add(row.getMaintenanceProductFee()));
 | 
	
		
			
				|  |  | +                row.setOrderAmount(row.getExpectAmount().add(row.getCouponRemitFee()));
 | 
	
		
			
				|  |  | +                i++;
 | 
	
		
			
				|  |  | +                //学员指导课费
 | 
	
		
			
				|  |  | +                incomeDto.setStudentGuidanceIncome(incomeDto.getStudentGuidanceIncome()
 | 
	
		
			
				|  |  | +                        .add(row.getMusicGroupCourseFee())
 | 
	
		
			
				|  |  | +                        .add(row.getVipCourseFee())
 | 
	
		
			
				|  |  | +                        .add(row.getPracticeCourseFee())
 | 
	
		
			
				|  |  | +                        .add(row.getTheoryCourseFee()));
 | 
	
		
			
				|  |  | +                //学校课程采买
 | 
	
		
			
				|  |  | +                incomeDto.setCoursePurchaseIncome(incomeDto.getCoursePurchaseIncome()
 | 
	
		
			
				|  |  | +                        .add(row.getCourseSchoolBuyAmount()));
 | 
	
		
			
				|  |  | +                //考级
 | 
	
		
			
				|  |  | +                incomeDto.setExamIncome(incomeDto.getExamIncome()
 | 
	
		
			
				|  |  | +                        .add(row.getDegreeFee()));
 | 
	
		
			
				|  |  | +                //维修费用
 | 
	
		
			
				|  |  | +                incomeDto.setMaintenanceCost(incomeDto.getMaintenanceCost()
 | 
	
		
			
				|  |  | +                        .add(row.getRepairFee()));
 | 
	
		
			
				|  |  | +                //月保费用
 | 
	
		
			
				|  |  | +                incomeDto.setInstrumentInsuranceCost(incomeDto.getInstrumentInsuranceCost()
 | 
	
		
			
				|  |  | +                        .add(row.getMaintenanceFee()));
 | 
	
		
			
				|  |  | +                //其他服务收入
 | 
	
		
			
				|  |  | +                incomeDto.setOtherServiceIncome(incomeDto.getOtherServiceIncome()
 | 
	
		
			
				|  |  | +                        .add(row.getLeaseFee())
 | 
	
		
			
				|  |  | +                        .add(row.getVisitFee())
 | 
	
		
			
				|  |  | +                        .add(row.getRechargeFee())
 | 
	
		
			
				|  |  | +                        .add(row.getOtherFee())
 | 
	
		
			
				|  |  | +                );
 | 
	
		
			
				|  |  | +                //团购乐器
 | 
	
		
			
				|  |  | +                incomeDto.setGroupPurchaseInstruments(incomeDto.getGroupPurchaseInstruments()
 | 
	
		
			
				|  |  | +                        .add(row.getMusicalFee()));
 | 
	
		
			
				|  |  | +                //零售乐器,计入其他
 | 
	
		
			
				|  |  | +                incomeDto.setOtherIncome(incomeDto.getOtherIncome()
 | 
	
		
			
				|  |  | +                        .add(row.getRetailGoodsFee()));
 | 
	
		
			
				|  |  | +                if(row.getGroupType() == GroupType.GOODS_SELL){
 | 
	
		
			
				|  |  | +                    //零售教辅,计入其他
 | 
	
		
			
				|  |  | +                    incomeDto.setOtherIncome(incomeDto.getOtherIncome()
 | 
	
		
			
				|  |  | +                            .add(row.getTeachingFee()));
 | 
	
		
			
				|  |  | +                }else {
 | 
	
		
			
				|  |  | +                    //团购教辅
 | 
	
		
			
				|  |  | +                    incomeDto.setGroupPurchaseTeachingAids(incomeDto.getGroupPurchaseTeachingAids()
 | 
	
		
			
				|  |  | +                            .add(row.getTeachingFee()));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                //大件乐器
 | 
	
		
			
				|  |  | +                incomeDto.setLargeInstruments(incomeDto.getLargeInstruments()
 | 
	
		
			
				|  |  | +                        .add(row.getLargeMusicalFee()));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            incomeDto.setCloudCoachIncome(incomeDto.getCloudCoachIncome().add(groupCloudAmount.getOrDefault(organId,BigDecimal.ZERO)));
 | 
	
		
			
				|  |  | +            incomeDto.setSaleCloudCoachIncome(incomeDto.getSaleCloudCoachIncome().add(personalCloudAmount.getOrDefault(organId,BigDecimal.ZERO)));
 | 
	
		
			
				|  |  | +            //服务收入
 | 
	
		
			
				|  |  | +            incomeDto.setServiceIncome(incomeDto.getLargeInstruments()
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getStudentGuidanceIncome())
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getCoursePurchaseIncome())
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getExamIncome())
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getMaintenanceCost())
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getInstrumentInsuranceCost())
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getOtherServiceIncome())
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +            incomeDto.setSalesIncome(incomeDto.getSalesIncome()
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getCloudCoachIncome())
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getGroupPurchaseInstruments())
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getGroupPurchaseTeachingAids())
 | 
	
		
			
				|  |  | +                    .add(incomeDto.getLargeInstruments())
 | 
	
		
			
				|  |  | +            );
 | 
	
		
			
				|  |  | +            incomeDtos.add(incomeDto);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        HSSFWorkbook workbook = getHSSFWorkbook(incomeDtos, ExportEnum.EXPORT_OPERATING_SUMMARY_INCOME);
 | 
	
		
			
				|  |  | +        exportManagerDownload(workbook, managerDownload);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  |      public void orderListSum(Map<String, Object> params, ManagerDownload managerDownload) {
 | 
	
		
			
				|  |  |          List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderService.ExportQueryPage(params);
 | 
	
		
			
				|  |  |          //获取机构费率
 | 
	
	
		
			
				|  | @@ -2538,6 +2872,7 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          return subtract;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  |      public void mallRouteOrderList(Map<String, Object> params, ManagerDownload managerDownload) {
 | 
	
		
			
				|  |  |          //获取分润订单(不包含订单详情)(纯余额支付不处理)
 | 
	
		
			
				|  |  |          List<StudentPaymentOrderMallExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.exportMallQueryPage(params);
 | 
	
	
		
			
				|  | @@ -2607,6 +2942,7 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          exportManagerDownload(workbook, managerDownload);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  |      public void routeOrderList(Map<String, Object> params, ManagerDownload managerDownload) {
 | 
	
		
			
				|  |  |          //获取分润订单(不包含订单详情)(纯余额支付不处理)
 | 
	
		
			
				|  |  |          List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.ExportQueryPage1(params);
 | 
	
	
		
			
				|  | @@ -3059,7 +3395,9 @@ public class ExportServiceImpl implements ExportService {
 | 
	
		
			
				|  |  |          groupTypeConsumerMap1.put(GroupType.SPORADIC, (basicOrder) -> {
 | 
	
		
			
				|  |  |              if (basicOrder.getType() != OrderTypeEnum.DEGREE_REGISTRATION && basicOrder.getChargeType() != null) {
 | 
	
		
			
				|  |  |                  for (SporadicChargeTypeEnum chargeType : SporadicChargeTypeEnum.values()) {
 | 
	
		
			
				|  |  | -                    if (!chargeType.getCode().equals(basicOrder.getChargeType())) continue;
 | 
	
		
			
				|  |  | +                    if (!chargeType.getCode().equals(basicOrder.getChargeType())) {
 | 
	
		
			
				|  |  | +                        continue;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                      basicOrder.setSporadicType(chargeType.getMsg());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 |