package com.hzs.report.member.service;

import com.hzs.report.member.vo.*;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 会员信息-奖衔升级记录 服务类
 */
public interface ICuMemberAwardsStatService {

    /**
     * 真实业绩新增奖衔查询
     **/
    List<CuMemberAwardsStatVO> selectCuMemberAwardsList(CuMemberAwardsStatVO cuMemberAwardsStatVO);

    /**
     * 奖衔晋升列表
     **/
    List<AwardPromotionVO> awardPromotionList(AwardPromotionVO awardPromotionVO);

    /**
     * 会员业绩数据查询
     **/
    List<MemberAchieveVO> memberAchieveList(MemberAchieveVO memberAchieveVO);

    /**
     * 个人统计
     **/
    List<PersonStatVO> selectPersonStatList(PersonStatVO personStatVO);

    /**
     * 真实奖衔分析
     **/
    List<CuMemberAwardsAnalysisVO> selectCuMemberAwardsAnalysisList(CuMemberAwardsAnalysisVO cuMemberAwardsAnalysisVO);

    /**
     * 查询会员结算等级升级记录
     **/
    List<CuMemberGradeRecordVO> queryMemberGradeRecordList(CuMemberGradeRecordVO cuMemberGradeRecordVO);

    /**
     * 查询全部伞下血缘业绩
     **/
    List<BloodRemoveSameVO> bloodRemoveSameAllList(BloodRemoveSameVO bloodList,
                                                   String startDate, String endDate,
                                                   List<Integer> orderTypeList,
                                                   List<Integer> pkAwardsList);

    /**
     * 查询会员推荐伞下业绩(历史)
     **/
    List<BloodRemoveSameVO> bloodSameAllListHistory(List<BloodRemoveSameVO> bloodList,
                                                    Integer periodEnd,
                                                    Integer periodSta,
                                                    String achieveTableNameEnd,
                                                    String achieveTableNameSta,
                                                    String settleTableNameSta,
                                                    String settleTableNameEnd,
                                                    Integer orderType

    );

    List<BloodRemoveSameVO> bloodRemoveSameMemberAchieveNew(List<BloodRemoveSameVO> bloodList,
                                                            Integer periodEnd,
                                                            Integer periodSta,
                                                            String achieveTableNameEnd,
                                                            String achieveTableNameSta,
                                                            String settleTableNameSta,
                                                            String settleTableNameEnd,
                                                            Integer orderType,
                                                            Integer pkCountry, List<Integer> pkAwardsList

    );

    /**
     * 查询奖衔业绩
     **/
    List<BloodRemoveSameVO> queryAwardAchieList(BloodRemoveSameVO bloodRemoveSameVO);

    /**
     * 根据奖衔查询会员（历史）
     **/
    List<BloodRemoveSameVO> queryAwardAchieListHistory(BloodRemoveSameVO bloodRemoveSameVO);


    /**
     * 真实奖衔分析详情（穿透页面接口）
     **/
    List<CuMemberAwardsAnalysisVO> selectCuMemberAwardsAnalysisDetailsList(CuMemberAwardsAnalysisVO cuMemberAwardsAnalysisVO);

    /**
     * 收入明细
     **/
    List<RevenueDetailsVO> selectRevenueDetailsList(RevenueDetailsVO revenueDetailsVO);

    /**
     * 复购bv统计
     **/
    List<RepurchasePVStatVO> selectRepurchasePVStatList(RepurchasePVStatVO repurchasePVStatVO);

    /**
     * 商城BV统计
     **/
    List<MallPVStatVO> selectMallPVStatList(MallPVStatVO mallPVStatVO);

    /**
     * 个人统计业绩查询
     **/
    List<PersonStatVO> selectPersonPvList(List<PersonStatVO> perList);

    /**
     * 直推统计
     **/
    List<DirectPushVO> selectDirectPushStatList(DirectPushVO directPushVO);

    /**
     * 直推数据列表
     **/
    List<DirectPushDataVO> selectDirectPushDataList(DirectPushDataVO dpdVO);

    /**
     * 直推数据列表详情
     **/
    List<DirectPushDataVO> selectDirectPushDataDetails(DirectPushDataVO dpdVO);

    /**
     * 会员订单分布统计
     **/
    List<OrderScatterVO> memberOrderScatter(OrderScatterVO orderScatterVO);

    /**
     * 根据奖衔级别查询奖衔
     **/
    List<Integer> awardsLevelList(List<Integer> pkAwardsList, Integer pkCountry);

    /**
     * 处理伞下去重查询方法
     **/
    List<BloodRemoveSameVO> bloodRemoveSameList(BloodRemoveSameVO bloodRemoveSameVO);

    /**
     * 伞下去重业绩查询（新）
     **/
    List<BloodRemoveSameVO> bloodRemoveSameListHistoryNew(BloodRemoveSameVO bloodRemoveSameVO);

    /**
     * 安置血缘查询
     **/
    List<ResettleBloodVO> resettleBloodList(ResettleBloodVO resettleBloodVO);

    /**
     * 安置血缘查询-左右区人数详情列表
     **/
    List<ResettleBloodVO> lrMemberDetailsList(ResettleBloodVO resettleBloodVO);

    /**
     * 安置血缘查询-左右区血缘人数详情列表
     **/
    List<ResettleBloodVO> lrbMemberDetailsList(ResettleBloodVO resettleBloodVO);

    /**
     * 个人复购统计
     **/
    List<PersonRepurchaseVO> personRepurchaseList(PersonRepurchaseVO prVO);

    /**
     * 安置业绩统计-查询会员
     **/
    List<PositStatVO> positStatList(PositStatVO psVO);

    /**
     * 安置业绩统计 查询左右区业绩
     **/
    List<PositStatVO> positStatAchieve(PositStatVO psVO);

    /**
     * 查询伞下直推产品列表
     **/
    List<UmbrellaBelowProductVO> umbrellaBelowProductList(UmbrellaBelowProductVO ubpVO);

    /**
     * 伞下直推产品去重
     **/
    List<UmbrellaBelowRepeatVO> umbrellaBelowRepeatList(UmbrellaBelowRepeatVO ubrVO);

    /**
     * 伞下直推产品统计
     **/
    List<StatProductVO> statProductList(StatProductVO sptVO);

    /**
     * 会员户籍数据查询
     **/
    List<DomicileDataVO> domicileDataList(DomicileDataVO ddVO);

    /**
     * 地区业绩统计
     **/
    List<AreaAchieveStatVO> areaAchieveStat(AreaAchieveStatVO areaAchieveStatVO);

    /**
     * 系统业绩统计
     **/
    List<VertexAchieveStatVO> vertexAchieveStat(VertexAchieveStatVO vertexAchieveStatVO);

    /**
     * 导出地区业绩
     **/
    void exportExcelWithMergedCells(HttpServletResponse response, String fileName,
                                    List<AreaAchieveStatVO> dataList) throws IOException;

    /**
     * 导出系统业绩统计
     **/
    void exportExcelVertexWithMergedCells(HttpServletResponse response, String fileName,
                                          List<VertexAchieveStatVO> dataList) throws IOException;

    /**
     * 月度职级名单查询
     **/
    List<MonthlyJobLevelVo> monthlyJobLevelList(MonthlyJobLevelVo mjlvo);

    /**
     * 查询收益区域数据
     **/
    List<RevenueAreaVO> revenueAreaList(RevenueAreaVO revenueAreaVO);

}
