package com.xhpc.order.mapper;

import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.order.domain.XhpcStatisticsStation;
import com.xhpc.order.domain.XhpcStatisticsTimeInterval;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author yuyang
 * @date 2021/9/1 10:00
 * @Version 1.0
 */
@Mapper
public interface XhpcStatisticsServiceMapper {

    /**
     * 小时统计
     * @param chargingStationIds         电站id集合
     * @param internetUserId      流量方id
     * @param operatorId          运营商id
     * @param startTime           订单开始时间
     * @param endTime             订单结束时间
     * @param type             1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getTimeIntervalPage(@Param("chargingStationIds") List<String> chargingStationIds,@Param("internetUserId") Long internetUserId,@Param("operatorId") Long operatorId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("type") Integer type,@Param("userId") Long userId,@Param("tenantId")String tenantId);


    /**
     * 日期统计
     * @param chargingStationIds     电站id集合
     * @param internetUserId      流量方id
     * @param operatorId          运营商id
     * @param startTime           订单开始时间
     * @param endTime             订单结束时间
     * @param type             1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getDateIntervalPage(@Param("chargingStationIds") List<String> chargingStationIds,@Param("internetUserId") Long internetUserId,@Param("operatorId") Long operatorId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("type") Integer type,@Param("userId")Long userId,@Param("tenantId")String tenantId);

    /**
     * 电站统计
     * @param chargingStationIds         电站集合
     * @param operatorUserId        运营商集合
     * @param internetUserId      流量方id
     * @param operatorId          运营商id
     * @param startTime           订单开始时间
     * @param endTime             订单结束时间
     * @param type                1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getStationIntervalPage(@Param("chargingStationIds") List<String> chargingStationIds,@Param("operatorUserId") List<String> operatorUserId,@Param("internetUserId") Long internetUserId,@Param("operatorId") Long operatorId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("type") Integer type,@Param("userId") Long userId,@Param("tenantId")String tenantId);

    /**
     * 运营商统计
     * @param operatorUserId      运营商集合
     * @param operatorId          运营商id
     * @param startTime           订单开始时间
     * @param endTime             订单结束时间
     * @param type                1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getOperatorIntervalPage(@Param("operatorUserId") List<String> operatorUserId,@Param("operatorId") Long operatorId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("type") Integer type,@Param("userId") Long userId,@Param("tenantId")String tenantId);

    /**
     * 流量方统计
     * @param internetIds    流量方名称
     * @param internetUserId      流量方id
     * @param startTime           订单开始时间
     * @param endTime             订单结束时间
     * @param type                1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getInternetUserIntervalPage(@Param("internetIds") List<String> internetIds,@Param("internetUserId") Long internetUserId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("type") Integer type,@Param("userId") Long userId,@Param("tenantId")String tenantId);


    /**
     * 终端统计
     * @param chargingStationId    电站id
     * @param terminalId          终端id
     * @param operatorId          运营商id
     * @param startTime           订单开始时间
     * @param endTime             订单结束时间
     * @param type             1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getTerminalIntervalPage(@Param("chargingStationId") String chargingStationId,@Param("terminalId") String terminalId,@Param("operatorId") Long operatorId,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("type") Integer type,@Param("userId") Long userId,@Param("tenantId")String tenantId);


    /**
     * 电站列表
     * @param operatorId      运营商id
     * @param userId          用户id
     * @param type            1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getChargingStationList(@Param("operatorId")Long operatorId,@Param("userId")Long userId,@Param("type")Integer type,@Param("tenantId")String tenantId);

    /**
     * 运营商列表
     * @param operatorId      运营商id
     * @param userId          用户id
     * @param type            1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getOperatorList(@Param("operatorId")Long operatorId,@Param("userId")Long userId,@Param("type")Integer type,@Param("tenantId")String tenantId);


    /**
     * 流量方列表
     * @param internetUserId  流量方id
     * @param userId          用户id
     * @param type            1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getInternetUserIList(@Param("internetUserId")Long internetUserId,@Param("userId")Long userId,@Param("type")Integer type,@Param("tenantId")String tenantId);

    /**
     * 终端列表
     * @param chargingStationId  流量方id
     * @param userId          用户id
     * @param type            1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String, Object>> getTerminalList(@Param("chargingStationId")Long chargingStationId,@Param("userId")Long userId,@Param("type")Integer type,@Param("tenantId")String tenantId);

    /**
     * 添加时段订单统计
     * @param xhpcStatisticsTimeInterval
     */
    void addStatisticsTime(XhpcStatisticsTimeInterval xhpcStatisticsTimeInterval);

    /**
     * 添加订单统计
     * @param xhpcStatisticsStation
     */
    void addStatisticsStation(XhpcStatisticsStation xhpcStatisticsStation);

    /**
     * 获取流量方列表
     * @return
     */
    List<Map<String,String>> getInternetList(@Param("userId")Long userId,@Param("tenantId")String tenantId);


    /**
     * 订单来源列表
     * @param userId          用户id
     * @param type            1 平台 2 运营商 3流量方
     * @return
     */
    List<Map<String,Object>> getSumSourceList(@Param("startTime")String startTime, @Param("endTime")String endTime,@Param("sourceIds")List<String> sourceIds, @Param("userId")Long userId, @Param("type")Integer type,@Param("chargingStationIdList")List<String> chargingStationIdList,@Param("tenantId")String tenantId);

    /**
     * 获取登陆用户信息
     */
    Map<String, Object> getLandUser(@Param("userId")Long userId);
}
