package com.xhpc.charging.station.mapper;

import com.xhpc.common.domain.XhpcTerminal;
import org.apache.ibatis.annotations.Param;

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

/**
 * 终端Mapper接口
 *
 * @author yuyang
 * @date 2021-07-19
 */
public interface XhpcTerminalMapper {


    /**
     * PC端页面统计
     *
     * @param chargingStationId 电站id
     * @return
     */
    Map<String, Object> countXhpcTerminalWorkStatus(Long chargingStationId);

    /**
     * 终端列表
     *
     * @param serialNumber      终端编号
     * @param type              桩类型
     * @param status            0启用 1停用
     * @param workStatus        0离线 1故障 2空闲 3充电
     * @param chargingStationId
     * @return
     */
    List<Map<String, Object>> getXhpcTerminalList(@Param("serialNumber") String serialNumber, @Param("type") Integer type, @Param("status") Integer status, @Param("workStatus") String workStatus, @Param("chargingStationId") Long chargingStationId, @Param("tenantId") String tenantId);


    /**
     * 查询电站
     *
     * @param terminalId 终端id
     * @return 电站
     */
    XhpcTerminal selectXhpcTerminalById(Long terminalId);


    /**
     * 修改终端
     *
     * @return 结果
     */
    int updateXhpcTerminal(@Param("name") String name,@Param("serialNumber") String serialNumber,@Param("connectorType") Integer connectorType,@Param("status") Integer status,@Param("terminalId") Long terminalId,@Param("prompt")String prompt);

    int updateXhpcTerminalAll(@Param("name") String name,@Param("serialNumber") String serialNumber,@Param("connectorType") Integer connectorType,@Param("status") Integer status,@Param("chargingStationId") Long chargingStationId,@Param("prompt")String prompt);

    /**
     * 添加终端
     *
     * @param xhpcTerminal 终端
     * @return 结果
     */
    int insertXhpcTerminal(XhpcTerminal xhpcTerminal);

    /**
     * 终端详情
     */
    Map<String, Object> selectXhpcTerminalPileMessage(Long terminalId);

    /**
     * 返回费率时段（设置时段）
     */
    List<Map<String, Object>> getXhpcRateTimeTypeList(@Param("chargingStationId") Long chargingStationId, @Param("type") Integer type);

    /**
     * 今日充电量、今日充电用户、今日充电次数
     */
    Map<String, Object> getXhpcRateTimeOrderStatistics(@Param("chargingStationId") Long chargingStationId, @Param("terminalId")Long terminalId);

    /**
     * 通过终端编号进入小程序开始充电页面
     *
     * @param pNum 终端编号
     * @return
     */
    Map<String, Object> getWXpNumMessage(@Param("pNum") String pNum);


    /**
     * 获取图片信息
     *
     * @param imgIds
     * @return
     */
    List<Map<String, Object>> getImageList(@Param("imgIds") List<String> imgIds);

    /**
     * 查询所有桩名称、场站名称、终端编号
     * @return
     */
    List<Map<String, Object>> selectPileNameAndStationNameAndTerminalNum();

    /**
     * 查询桩名称、场站名称、终端编号
     * @param terminalSerialNumber    搜索参数：终端名称
     * @param pileName                  搜索参数：桩名
     * @param stationName               搜索参数：站名
     * @return list
     */
    List<Map<String, Object>> getXhpcPileNameAndStationNameAndTerminalNumList(@Param("terminalSerialNumber") String terminalSerialNumber, @Param("pileName") String pileName, @Param("stationName") String stationName);


    /**
     * 根据电站获取终端的编号
     *
     * @param chargingStationId
     * @return
     */
    List<String> getTerminal(@Param("chargingStationId") Long chargingStationId, @Param("status") Integer status);

    /**
     * according pileIds query xhpcTerminalList
     *
     * @author WH
     * @date 2022/2/17 11:13
     * @since version-1.0
     */
    List<XhpcTerminal> selectXhpcTerminalIdByPileIds(ArrayList<Long> pileIds);


    Map<String, Object> getPlaceholderTime(@Param("date") String date, @Param("datchargingStationId") Long datchargingStationId);
}
