package com.bonus.canteen.core.report.statistics.order.summary.mapper;

import com.bonus.canteen.core.auth.po.MgrUserAuthPO;
import com.bonus.canteen.core.report.api.dto.ReportDeviceOrderSumDTO;
import com.bonus.canteen.core.report.api.vo.ReportOrderSumVO;
import com.bonus.canteen.core.report.statistics.order.summary.param.ReportMachineParam;
import com.bonus.canteen.core.report.statistics.order.summary.param.ReportMealtimeTypeCustNumDTO;
import com.bonus.canteen.core.report.statistics.order.summary.vo.ReportSumMachineMealTimeVO;
import com.bonus.canteen.core.report.statistics.order.summary.vo.ReportSumMachineVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ReportSumMachineMapper {
   Long listSummaryMealtime_COUNT(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   Long listSummaryMealtimeByDay_COUNT(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   List<ReportSumMachineMealTimeVO> listSummaryMealtime(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   List<ReportSumMachineMealTimeVO> listSummaryMealtimeByDay(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   ReportSumMachineMealTimeVO getSummaryMealtimeTotal(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   ReportOrderSumVO getReportOrderSumForDevice(@Param("param") ReportDeviceOrderSumDTO param);

   Long listSummary_COUNT(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   Long listSummaryByDay_COUNT(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   List<ReportSumMachineVO> listSummary(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   List<ReportSumMachineVO> listSummaryByDay(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   ReportSumMachineVO getSummaryTotal(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   Integer getDeviceCustNum(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);

   List<ReportMealtimeTypeCustNumDTO> getDeviceMealtimeCustNum(@Param("param") ReportMachineParam param, @Param("authPO") MgrUserAuthPO authPO);
}
