package com.zsElectric.boot.charging.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zsElectric.boot.charging.entity.ThirdPartyPolicyInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 第三方价格策略明细Mapper接口
 *
 * @author system
 * @since 2025-12-12
 */
@Mapper
public interface ThirdPartyPolicyInfoMapper extends BaseMapper<ThirdPartyPolicyInfo> {
    
    /**
     * 根据stationInfoId和startTime查询电价和服务费
     *
     * @param stationInfoId 站点信息ID
     * @param startTime     时段开始时间
     * @return 价格策略明细(包含elec_price和service_price)
     */
    ThirdPartyPolicyInfo selectElecAndServicePriceByStation(@Param("stationInfoId") Long stationInfoId,
                                                             @Param("startTime") String startTime);
    
    /**
     * 根据stationInfoId和periodFlag查询电价和服务费（取该时段标志的第一条记录）
     *
     * @param stationInfoId 站点信息ID
     * @param periodFlag    时段标志(1-尖,2-峰,3-平,4-谷)
     * @return 价格策略明细(包含elec_price和service_price)
     */
    ThirdPartyPolicyInfo selectElecAndServicePriceByStationAndPeriodFlag(@Param("stationInfoId") Long stationInfoId,
                                                                          @Param("periodFlag") Integer periodFlag);
    
    /**
     * 根据stationInfoId和当前时间查询当前时段的价格策略
     * 按 start_time <= currentTime 排序取最新的（即当前时段）
     *
     * @param stationInfoId 站点信息ID
     * @param currentTime   当前时间（HHmm或HHmmss格式）
     * @return 当前时段的价格策略明细(包含period_flag, elec_price, service_price)
     */
    ThirdPartyPolicyInfo selectCurrentPeriodPolicyByStation(@Param("stationInfoId") Long stationInfoId,
                                                             @Param("currentTime") String currentTime);
}
