package com.ssm.manage.service;

import com.github.pagehelper.PageInfo;
import com.ssm.manage.entity.SmsException;
import com.ssm.manage.extendEntity.*;
import com.ssm.manage.query.ProjectListsRequest;
import com.ssm.manage.query.StoreDailyRequest;
import com.ssm.manage.response.*;

import java.text.ParseException;
import java.util.Date;
import java.util.List;

public interface SsmStoreStatisticService {
    List<MemberStatistic> selectMemberList(Long storeId, String dateStr) throws ParseException;

    List<ProjectStatistic> selectProjectList(Long storeId, String date, Integer type) throws ParseException;

    List<ProjectStatistic> selectProjectList(Long storeId, String date, Integer type,String endDate) throws ParseException;

    List<StaffStatistic> selectMonthStaffList(Long storeId, Date date) throws ParseException, SmsException;

    List<StaffStatistic> selectDayStaffList(Long storeId, Date date) throws ParseException, SmsException;
    List<StaffStatistic> collectingSource(Long storeId, Date date) throws ParseException, SmsException;

    List<StaffStatistic> achiCommList(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> achiCommListRepay(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> achiCommListss(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> couseListMemberInitStaff(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> achiCommListsss(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<List<AchiCommEntity>> achiCommListupgrade(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> achiCommLists(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> achiCommListsgroup(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> achiCommListsgroupByStoreList(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> memberInitStaff(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> departmentPerformance(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> departmentPerformanceByStoreList(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<StaffStatistic> departmentPerformance2(StaffStatistic staffStatistic) throws ParseException, SmsException;
    List<AchiCommEntity> departmentPerformance3(StaffStatistic staffStatistic) throws ParseException, SmsException;

    List<AchiCommEntity> achiCommDetailList(StaffStatistic staffStatistic) throws ParseException, SmsException;
    //导出专用
    List<AchiCommEntity> achiCommDetailLists(StaffStatistic staffStatistic) throws ParseException, SmsException;
    PaegList selectAbnormalOrder(StaffStatistic staffStatistic) throws ParseException, SmsException;
    PaegList selectAbnormalOrderNew(StaffStatistic staffStatistic) throws ParseException, SmsException;
    //业绩重算
    int ResultsRecalculation(StaffStatistic staffStatistic) throws ParseException, SmsException;


    //查询单品贡献率
    PageInfo<RateContribution> selectRateContribution(RateContribution rateContribution) throws ParseException, SmsException;
    PageInfo<RateContribution> selectRateContributionMx(RateContribution rateContribution) throws ParseException, SmsException;
    PageInfo<RateContribution> selectRateContributionMxs(RateContribution rateContribution) throws ParseException, SmsException;
    PageInfo<RateContributionMx> rateContributionMxOrder(RateContribution rateContribution) throws ParseException, SmsException;

    //查询收银单品贡献率
    PageInfo<RateContribution> selectCashRateContribution(RateContribution rateContribution) throws ParseException, SmsException;
    PageInfo<RateContribution> selectCashRateContributionMx(RateContribution rateContribution) throws ParseException, SmsException;
    PageInfo<RateContribution> selectCashRateContributionMxs(RateContribution rateContribution) throws ParseException, SmsException;
    PageInfo<RateContributionMx> CashrateContributionMxOrder(RateContribution rateContribution) throws ParseException, SmsException;

    //根据月份表或者门店ID统计购买的总次数和金额
    List<ProjectLists> selectProjectLists(ProjectListsRequest projectListsRequest) throws ParseException;
    //按门店统计项目结存金额和次数
    List<ProjectLists> selectProjectLists2(ProjectListsRequest projectListsRequest)throws ParseException;
    //按月份和门店统计项目服务金额和次数
    List<ProjectLists> selectProjectLists3(ProjectListsRequest projectListsRequest)throws ParseException;

    List<StaffStatistic> departmentPerformanceNew(StaffStatistic staffStatistic) throws SmsException, ParseException;

    List<StoreByDayResponse> storeByDayDailys(StoreDailyRequest storeDailyRequest);

}
