package com.ym.mec.biz.dal.dao;

import com.ym.mec.biz.dal.entity.OperatingReportNew;
import com.ym.mec.common.dal.BaseDAO;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface OperatingReportNewDao extends BaseDAO<Integer, OperatingReportNew> {

    List<OperatingReportNew> initOperatingReport(String month);

    //获取销售收入和销售成本(销售成本扣除已退)
    List<OperatingReportNew> sumSellAmount(String month);

    //云教练赠送课程服务收入
    List<Map<Integer,BigDecimal>> sumCloudCourseAmount(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay);

    //付费课程收入
    List<Map<Integer,BigDecimal>> sumCourseAmount(@Param("firstDay") String firstDay, @Param("lastDay") String lastDay);

    //个人云教练服务收入
    List<Map<Integer,BigDecimal>> sumPersonalCloudAmount(@Param("month") String month, @Param("firstDay") String firstDay, @Param("lastDay") String lastDay);

    //团体云教练服务收入
    List<Map<Integer,BigDecimal>> sumGroupCloudAmount(@Param("month") String month, @Param("firstDay") String firstDay, @Param("lastDay") String lastDay);

    //业务退费
    List<Map<Integer,BigDecimal>> sumRefundAmount(@Param("month") String month);

    //变动费用
    List<Map<Integer,BigDecimal>> sumVariableCosts(@Param("month") String month);

    //固定费用
    List<Map<Integer,BigDecimal>> sumFixedCosts(@Param("month") String month);

    //个人云教练预收款
    List<Map<Integer,BigDecimal>> sumCloudPreAmount(@Param("month") String month, @Param("lastDay") String lastDay);

    //团体云教练分月结转
    List<Map<Integer,BigDecimal>> sumGroupCloudPreAmount(@Param("month") String month, @Param("lastDay") String lastDay);

    //团体云教练当月一次性结转
    List<Map<Integer,BigDecimal>> sumGroupAmount(@Param("month") String month);

    //云教练赠课预收
    List<Map<Integer,BigDecimal>> sumCloudCoursePreAmount(@Param("lastDay") String lastDay);

    //付费课程预收
    List<Map<Integer,BigDecimal>> sumCoursePreAmount(@Param("lastDay") String lastDay);

    //其他预收
    List<Map<Integer,BigDecimal>> sumOtherPreAmount();

    //销售预收
    List<Map<Integer,BigDecimal>> sumSalePreAmount();

    //欠费总金额
    List<Map<Integer,BigDecimal>> sumArrearsAmount();

    //待缴费学校金额
    List<Map<Integer,BigDecimal>> sumSchoolAmount();

    //更新云教练计费时间
    void initCloudStartTime(@Param("lastDay") String lastDay);

    //汇总乐器押金
    List<Map<Integer,BigDecimal>> sumMusicMargin();

    void batchInsert(@Param("operatingList") List<OperatingReportNew> operatingList);

    void deleteByMonth(String month);

    List<Map<Integer,BigDecimal>> sumInternalSettlement(@Param("month") String month);

    List<Map<Integer,BigDecimal>> sumPrepayments(@Param("month") String month);

    //云教练赠送排课资格预收
    List<Map<Integer,BigDecimal>> sumActivityUserMapperAmount(@Param("categoryId") Integer categoryId);

    //付费乐团课学员缴费预收
    List<Map<Integer,BigDecimal>> sumMusicCourseAmount();

    //获取排课资格预收
    List<Map<Integer,BigDecimal>> sumSubActivityUserMapperAmount();

    //导入的服务收入
    List<Map<Integer,BigDecimal>> sumImportServerOrderAmount(@Param("month") String month);

    //获取待生效云教练预收
    List<Map<Integer,BigDecimal>> sumWaitCloudPreAmount();

    //乐保实收入
    List<Map<Integer,BigDecimal>> sumMaintenanceAmount(@Param("month") String month);

    //统计当月亏损的云教练金额
    List<Map<Integer,BigDecimal>> sumLossCloudAmount(@Param("month") String month);

    //课程未开始团体云教练预收
    List<Map<Integer,BigDecimal>> sumNotStartCloudPreAmount();
}