package com.jsowell.pile.mapper;

import com.jsowell.pile.domain.PileConnectorInfo;
import com.jsowell.pile.dto.QueryConnectorDTO;
import com.jsowell.pile.vo.base.ConnectorInfoVO;
import com.jsowell.pile.vo.web.PileConnectorInfoVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 充电桩枪口信息Mapper接口
 *
 * @author jsowell
 * @date 2022-08-31
 */
@Repository
public interface PileConnectorInfoMapper {
    /**
     * 查询充电桩枪口信息
     *
     * @param id 充电桩枪口信息主键
     * @return 充电桩枪口信息
     */
    public PileConnectorInfo selectPileConnectorInfoById(Integer id);

    /**
     * 查询充电桩枪口信息列表
     *
     * @param pileConnectorInfo 充电桩枪口信息
     * @return 充电桩枪口信息集合
     */
    public List<PileConnectorInfo> selectPileConnectorInfoList(PileConnectorInfo pileConnectorInfo);

    /**
     * 新增充电桩枪口信息
     *
     * @param pileConnectorInfo 充电桩枪口信息
     * @return 结果
     */
    // public int insertPileConnectorInfo(PileConnectorInfo pileConnectorInfo);

    /**
     * 批量新增充电桩枪口信息
     *
     * @param pileConnectorInfoList 充电桩枪口集合
     * @return 结果
     */
    public int batchInsertConnectorInfo(@Param("connectorList") List<PileConnectorInfo> pileConnectorInfoList);

    /**
     * 修改充电桩枪口信息
     *
     * @param pileConnectorInfo 充电桩枪口信息
     * @return 结果
     */
    public int updatePileConnectorInfo(PileConnectorInfo pileConnectorInfo);

    /**
     * 删除充电桩枪口信息
     *
     * @param id 充电桩枪口信息主键
     * @return 结果
     */
    // public int deletePileConnectorInfoById(Integer id);

    /**
     * 批量删除充电桩枪口信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    // public int deletePileConnectorInfoByIds(Integer[] ids);

    /**
     * 根据充电桩编号删除充电桩枪口信息
     * @param pileSnList
     * @return
     */
    int deletePileConnectorInfoByPileSnList(List<String> pileSnList);

    /**
     * 获取充电接口信息列表
     *
     * @param dto 前台参数
     * @return 充电接口对象集合
     */
    List<PileConnectorInfoVO> getConnectorInfoList(@Param("connectorDTO") QueryConnectorDTO dto);

    /**
     * 通过站点id查询充电枪信息
     *
     * @param stationId 站点id
     * @return 充电枪设备集合
     */
    List<PileConnectorInfoVO> selectConnectorListByStationId(@Param("stationId") Long stationId);

    /**
     * 通过充电桩sn或connectorId 查询充电桩接口列表
     *
     * @param pileSns      桩编号列表
     * @param connectorIds 枪口号列表
     * @return 充电桩接口列表
     */
    List<PileConnectorInfoVO> getPileConnectorInfoList(@Param("pileSns") List<String> pileSns, @Param("connectorIds") List<Long> connectorIds, @Param("connectorCodes") List<String> connectorCodeList);

    /**
     * 根据枪口号 修改枪口状态
     *
     * @param pileConnectorCode   枪口号
     * @param connectorStatus 状态
     */
    int updateConnectorStatus(@Param("pileConnectorCode") String pileConnectorCode, @Param("connectorStatus") String connectorStatus);

    /**
     * 根据桩编号修改枪口状态
     *
     * @param pileSn          桩编号
     * @param connectorStatus 状态
     * @return 修改数量
     */
    int updateConnectorStatusByPileSn(@Param("pileSn") String pileSn, @Param("connectorStatus") String connectorStatus);

    /**
     * 查询枪口信息
     * @param pileConnectorCode 枪口号
     * @return 枪口信息
     */
    PileConnectorInfoVO getPileConnectorInfoByConnectorCode(@Param("pileConnectorCode") String pileConnectorCode);


    /**
     * uniApp通过站点id查询枪口列表信息
     *
     * @param stationId 站点id
     * @return
     */
    List<ConnectorInfoVO> getUniAppConnectorList(@Param("stationId") Long stationId);

}
