package com.ruoyi.tjfx.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.tjfx.entity.AnalysisData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * 分析数据Mapper接口
 */
@Mapper
public interface AnalysisDataMapper extends BaseMapper<AnalysisData> {

    /**
     * 分页查询分析数据
     */
    IPage<AnalysisData> selectPageWithConditions(Page<AnalysisData> page,
                                                @Param("productCode") String productCode,
                                                @Param("productName") String productName,
                                                @Param("customerName") String customerName,
                                                @Param("shopName") String shopName,
                                                @Param("status") Integer status,
                                                @Param("startDate") LocalDate startDate,
                                                @Param("endDate") LocalDate endDate);

    /**
     * 根据条件查询所有数据（用于导出）
     */
    List<AnalysisData> selectAllWithConditions(@Param("productCode") String productCode,
                                              @Param("productName") String productName,
                                              @Param("customerName") String customerName,
                                              @Param("shopName") String shopName,
                                              @Param("status") Integer status,
                                              @Param("startDate") LocalDate startDate,
                                              @Param("endDate") LocalDate endDate);

    /**
     * 批量插入数据
     */
    int batchInsert(@Param("list") List<AnalysisData> list);

    /**
     * 根据唯一条件查询记录
     */
    AnalysisData selectByUniqueCondition(@Param("date") LocalDate date,
                                        @Param("shopName") String shopName,
                                        @Param("productCode") String productCode,
                                        @Param("deliveryType") String deliveryType,
                                        @Param("orderNumber") String orderNumber,
                                        @Param("rowNumber") Integer rowNumber);
}
