package com.xhpc.order.service;

import com.xhpc.common.core.web.domain.AjaxResult;
import com.xhpc.order.domain.XhpcHistoryOrder;
import com.xhpc.order.dto.XhpcChargeHistoryOrder;

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

/**
 * @author yuyang
 * @date 2021/8/3 21:23
 */
public interface IXhpcHistoryOrderService {


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

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

    /**
     * 用户订单详情
     * @param userId
     * @param historyOrderId
     * @return
     */
    AjaxResult gethistotyOrderMessage(Long userId,Long historyOrderId,Integer type,Long chargingOrderId);

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


    /**
     * 历史订单记录（PC）
     * @return
     */
    List<Map<String,Object>> getListPage(String phone,String transactionNumber,Integer status,String chargingStationName,Long operatorId,Integer source,String beginStartTime,String beginEndTime,Long userId,Integer type,String affiliationOrganization,String evcsOrderNo,String plateNum,Integer internetId,String internetSerialNumber,String terminalName,String vinCode,String overStartTime,String overEndTime);


    /**
     * 历史订单记录导出（PC）
     * @return
     */
    void export(HttpServletResponse response, String phone, String transactionNumber, Integer status, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime, Long userId, Integer type,String affiliationOrganization,String evcsOrderNo,String plateNum,Integer internetId,String internetSerialNumber,String terminalName,String vinCode,String overStartTime,String overEndTime) throws IOException;


    /**
     * 历史订单详情（PC）
     * @param historyOrderId 历史订单id
     * @return
     */
    AjaxResult getById(Long historyOrderId);

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

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


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


    /**
     * 结算订单
     * @param orderNo     订单号
     * @param type        状态     1.异常 2.解决异常订单
     */
    void addXhpcChargeOrder(String orderNo,Integer type);


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