package com.xhpc.order.mapper;

import com.xhpc.order.domain.XhpcHistoryOrder;
import com.xhpc.order.dto.XhpcChargeHistoryOrder;
import org.apache.ibatis.annotations.Param;

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

/**
 * 历史订单信息 数据层
 *
 * @author ruoyi
 */
public interface XhpcHistoryOrderMapper {

    /**
     * 新增 历史订单信息
     *
     * @param xhpcHistoryOrder 历史订单信息
     * @return 结果
     */
    public int insert(XhpcHistoryOrder xhpcHistoryOrder);

    /**
     * 更新 历史订单信息
     *
     * @param xhpcHistoryOrder 历史订单信息
     * @return 结果
     */
    public int update(XhpcHistoryOrder xhpcHistoryOrder);

    /**
     * 详情 历史订单信息
     *
     * @param historyOrderId 历史订单id
     * @return 结果
     */
    public XhpcHistoryOrder info(@Param("historyOrderId") Long historyOrderId);

    /**
     * 更新对账状态 历史订单信息
     *
     * @param xhpcHistoryOrderIds 历史订单信息
     * @return 结果
     */
    public int updateReconciliation(@Param("xhpcHistoryOrderIds") String[] xhpcHistoryOrderIds, @Param("status") String status);

    /**
     * 更新清分状态 历史订单信息
     *
     * @param xhpcHistoryOrderIds 历史订单信息
     * @return 结果
     */
    public int updateSorting(@Param("xhpcHistoryOrderIds") String[] xhpcHistoryOrderIds, @Param("status") String status);

    /**
     * 用户历史订单表
     *
     * @param userId
     * @return
     */
    List<Map<String, Object>> list(@Param("userId") Long userId);

    /**
     * 订单详情
     *
     * @param userId
     * @param historyOrderId
     * @return
     */
    Map<String, Object> gethistotyOrderMessage(@Param("userId") Long userId, @Param("historyOrderId") Long historyOrderId, @Param("type") Integer type, @Param("chargingOrderId") Long chargingOrderId);

    /**
     * 历史订单记录（PC）
     * @return
     */
    List<Map<String,Object>> getListPage(@Param("phone")String phone,@Param("transactionNumber")String transactionNumber,@Param("status")Integer status,@Param("chargingStationName")String chargingStationName,@Param("operatorId")Long operatorId,@Param("source")Integer source,@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("userId")Long userId,@Param("type")Integer type,@Param("number")Integer number);

    /**
     * 获取费率时段
     * @param startTime     开始时间
     * @param endTime       结束时间
     * @param rateModelId   计费模型
     * @return
     */
    List<Map<String,Object>> getReatTimeList(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("rateModelId")Long rateModelId);

    /**
     * 历史订单详情（PC）
     * @param historyOrderId 历史订单id
     * @return
     */
    Map<String,Object> getById(@Param("historyOrderId")Long historyOrderId);


    /**
     * 获取为统计的历史订单
     * @param number
     * @return
     */
    List<XhpcChargeHistoryOrder> getStatistisList(@Param("number")int number,@Param("state")int state);


    /**
     * 更新历史订单
     *
     */
    void updateXhpcHistoryOrder(@Param("historyOrderId")Long historyOrderId,@Param("state")Integer state);

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