package com.jsowell.pile.mapper;

import com.jsowell.pile.domain.PileBasicInfo;
import com.jsowell.pile.dto.IndexQueryDTO;
import com.jsowell.pile.vo.uniapp.PersonalPileInfoVO;
import com.jsowell.pile.vo.web.IndexGeneralSituationVO;
import com.jsowell.pile.dto.QueryPileDTO;
import com.jsowell.pile.dto.ReplaceMerchantStationDTO;
import com.jsowell.pile.vo.web.PileDetailVO;
import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 设备管理Mapper接口
 *
 * @author jsowell
 * @date 2022-08-26
 */
@Repository
public interface PileBasicInfoMapper {
	/**
	 * 查询设备管理
	 *
	 * @param id 设备管理主键
	 * @return 设备管理
	 */
	PileBasicInfo selectPileBasicInfoById(Long id);

	PileBasicInfo selectPileBasicInfoBySn(String pileSn);

	/**
	 * 查询设备管理列表
	 *
	 * @param pileBasicInfo 设备管理
	 * @return 设备管理集合
	 */
	List<PileBasicInfo> selectPileBasicInfoList(PileBasicInfo pileBasicInfo);

	/**
	 * 新增设备管理
	 *
	 * @param pileBasicInfo 设备管理
	 * @return 结果
	 */
	int insertPileBasicInfo(PileBasicInfo pileBasicInfo);

	/**
	 * 批量保存
	 *
	 * @param pileBasicInfoList
	 * @return
	 */
	int batchInsertPileBasicInfo(@Param("infoList") List<PileBasicInfo> pileBasicInfoList);

	/**
	 * 修改设备管理
	 *
	 * @param pileBasicInfo 设备管理
	 * @return 结果
	 */
	int updatePileBasicInfo(PileBasicInfo pileBasicInfo);

	/**
	 * 删除设备管理
	 *
	 * @param id 设备管理主键
	 * @return 结果
	 */
	int deletePileBasicInfoById(Long id);

	/**
	 * 批量删除设备管理
	 *
	 * @param ids 需要删除的数据主键集合
	 * @return 结果
	 */
	int deletePileBasicInfoByIds(Long[] ids);

	/**
	 * 查询设备信息
	 *
	 * @param dto 查询条件实体类
	 * @return 设备信息对象集合
	 */
	List<PileDetailVO> queryPileInfos(@Param("dto") QueryPileDTO dto);

	/**
	 * 通过站点ids查询桩信息
	 *
	 * @param stationIds 站点id
	 * @return 桩对象集合
	 */
	List<PileDetailVO> selectPileListByStationIds(@Param("stationIds") List<Long> stationIds);

	/**
	 * 通过pileId更换站点、运营商信息
	 *
	 * @param dto
	 * @return
	 */
	int replaceMerchantStationByPileIds(ReplaceMerchantStationDTO dto);

	/**
	 * 通过桩id查询basic信息
	 *
	 * @param id 桩id
	 * @return PileBasic对象集合
	 */
	PileDetailVO selectBasicInfoById(Long id);

	/**
	 * 通过idList批量查询
	 *
	 * @param pileIdList
	 * @return
	 */
	List<PileBasicInfo> selectByIdList(@Param("pileIdList") List<Long> pileIdList);

	/**
	 * 查询充电桩信息
	 *
	 * @param pileConnectorCode 充电枪编号
	 * @return
	 */
	PileConnectorDetailVO queryPileConnectorDetail(@Param("pileConnectorCode") String pileConnectorCode);


	/**
	 * 后管首页基本信息查询
	 *
	 * @param dto 站点Id
	 * @return 首页基本信息
	 */
	public IndexGeneralSituationVO getGeneralSituation(@Param("IndexQueryDTO")IndexQueryDTO dto);


	/**
	 * 通过会员id查询个人桩列表
	 * @param memberId
	 * @return
	 */
	public List<PersonalPileInfoVO> getPileInfoByMemberId(String memberId);

	/**
	 * 联联平台用，通过站点id查询桩列表信息
	 * @param stationId
	 * @return
	 */
	List<PileBasicInfo> getPileListByStationId(@Param("stationId") String stationId);
}
