package com.weather.modules.weather.dailydata.dao;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.weather.common.dao.BaseDao;
import com.weather.modules.weather.dailydata.entity.WeatherDailyDataEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 每日气象监测数据表
 *
 * @author 2333 123
 * @since 1.0.0 2026-03-05
 */
@Mapper
public interface WeatherDailyDataDao extends BaseDao<WeatherDailyDataEntity> {

    List<WeatherDailyDataEntity> selectSummarizeList(@Param(Constants.WRAPPER) LambdaQueryWrapper<WeatherDailyDataEntity> wrapper);

    /**
     * 按站点 + 精确日期列表查询汇总数据（缓存未命中降级路径）
     * 使用等值 IN 查询命中 uk_station_date 唯一索引，避免 MONTH/DAY/YEAR 函数导致全表扫描
     * @param stationIds 站点 ID 列表
     * @param dates      精确日期列表，格式 yyyy-MM-dd，如 ["2020-07-01","2021-07-01"]
     */
    List<WeatherDailyDataEntity> selectSummarizeByMonthDay(@Param("stationIds") List<Long> stationIds,
                                                           @Param("dates") List<String> dates);

    int insertBatchMultiRow(@Param("list") List<WeatherDailyDataEntity> list);
}