package com.muchinfo.mtp3interface.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.muchinfo.mtp3pojos.entity.ReckonDaydividecountdetail;
import com.muchinfo.mtp3pojos.vo.reportform.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 机构分润日统计明细表 - 按币种汇总
系统分润方式 - 1:固定模式 2:树形模式
1.固定模式 - 交易服务生成
2.树形模式 - 账户服务生成 - 按币种汇总
 Mapper 接口
 * </p>
 *
 * @author XKF
 * @since 2024-08-12
 */
@Mapper
public interface IReckonDaydividecountdetailMapper extends BaseMapper<ReckonDaydividecountdetail> {

    List<ShareAmountQueryResult> queryDayDivide( @Param("vo") ShareAmountQueryParam param);

    List<ShareAmountQueryResult> queryReportDivide( @Param("vo") ShareAmountQueryParam param);

    IPage<TradeQueryResult> queryTrade(IPage<TradeQueryResult> page,@Param("vo")  TradeQueryParam param);

    IPage<OrgReportQueryResult> queryOrgReckonSum(IPage<OrgReportQueryResult> page,@Param("vo")  OrgReportQueryParam param);

    IPage<OrgReportQueryResult> queryOrgReportSum(IPage<OrgReportQueryResult> page,@Param("vo")  OrgReportQueryParam param);

    List<OrgReportQueryResult> queryOrgReckonSum(@Param("vo")  OrgReportQueryParam param);

    List<OrgReportQueryResult> queryOrgReportSum(@Param("vo")  OrgReportQueryParam param);

    IPage<InvestorReportQueryResult> queryReckonDayTa(IPage<InvestorReportQueryResult> page, @Param("vo")InvestorReportQueryParam param);

    IPage<InvestorReportQueryResult> queryReportTa(IPage<InvestorReportQueryResult> page, @Param("vo")InvestorReportQueryParam param);

    List<InvestorReportQueryResult> queryReckonDayTa(@Param("vo")InvestorReportQueryParam param);

    List<InvestorReportQueryResult> queryReportTa(@Param("vo")InvestorReportQueryParam param);

    IPage<WrPositionResult> wrposition(IPage<WrPositionResult> page, @Param("vo") TaAccountReportParam param);

    IPage<HolderTotalResult> tradeposition(IPage<HolderTotalResult> page,@Param("vo")  TaAccountReportParam param);

    IPage<TradeReportQueryResult> tradequery(IPage<TradeReportQueryResult> page, @Param("vo")  TaAccountReportParam param);

    IPage<CusBankReportResult> queryCusBank(IPage<CusBankReportResult> page, @Param("vo") CusBankReportParam param);

    List<CusBankReportResult> queryCusBank( @Param("vo") CusBankReportParam param);

    IPage<ManageDivReportResult> managediv(IPage<ManageDivReportResult> page,@Param("vo") CusBankReportParam param);

    List<ManageDivReportResult> managediv(@Param("vo") CusBankReportParam param);

    void execReportMonthType(@Param("tradedate") Date tradedate);

    List<ShareAmountQueryResult> queryByDate(@Param("vo") ShareAmountQueryParam param);

    List<ShareAmountQueryResult> queryByOther(@Param("vo")  ShareAmountQueryParam param);

    IPage<ReckonDivideOrderDetailResult> queryDODPage(IPage<ReckonDivideOrderDetailResult> page,@Param("vo") ReckonDivideOrderDetailParam param);

    IPage<ReckonDivideOrderDetailResult> queryReckonAGDivideDetail(IPage<ReckonDivideOrderDetailResult> page,@Param("vo")  ReckonDivideOrderDetailParam detail);
}
