package com.jwipc.order.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jwipc.order.entity.BasicForcaseQuota;
import com.jwipc.order.model.po.BasicForcaseQuotaPO;
import com.jwipc.order.model.query.BasicForeignQuotaQuery;
import com.jwipc.order.model.query.BasicPlanQuery;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author: swq
 * @Date: 2024/3/14 11:05
 */
public interface BasicForcaseQuotaMapper extends BaseMapper<BasicForcaseQuota> {
    List<BasicForcaseQuotaPO> getDateDataByPlanId(Page<BasicForcaseQuotaPO> pg,
                                                  @Param("q") BasicPlanQuery query,
                                                  @Param("planId") Long planId,
                                                  @Param("page") Integer page,
                                                  @Param("limit") Integer limit);
    /**
     * 根据明细ID和供应商编码获取数据
     *
     * @param detailId     明细ID
     * @param supplierCode 供应商编码
     * @return 数据
     */
    List<BasicForcaseQuotaPO> getDataByDetailAndSupplier(@Param("detailId") Long detailId,@Param("supplierCode") String supplierCode);

    /**
     * 查询供应商回复列表
     *
     * @param toPage 分页参数
     * @param query  查询参数
     * @param id 计划ID
     */
    List<BasicForcaseQuotaPO> selectForPage(
            Page<BasicForcaseQuotaPO> toPage, @Param("q") BasicForeignQuotaQuery query, @Param("id") Long id
    );

    /**
     * 查询供应商回复列表
     *
     * @param query 查询参数
     * @param id 计划ID
     */
    List<BasicForcaseQuotaPO> selectForPage(@Param("q") BasicForeignQuotaQuery query, @Param("id") Long id);

    /**
     * 根据版本 获取回复数据
     *
     * @param version 版本
     * @return 回复数据
     */
    List<BasicForcaseQuotaPO> findReplyListByVersionId(@Param("version") Long version);

    /**
     * 根据供应商编码和计划ID 获取回复数据
     *
     * @param planId       计划ID
     * @param supplierCode 供应商编码
     */
    List<BasicForcaseQuotaPO> bySupplierCodeGetReply(
            @Param("planId") Long planId, @Param("supplierCode") String supplierCode,
            @Param("replyUserId") Long replyUserId, @Param("isRiskMaterial") String isRiskMaterial,@Param("purchaseGroup") String purchaseGroup,
            @Param("detailIdList") List<Long> detailIdList);

    /**
     * 获取时间区间
     *
     * @param planId 计划ID
     * @return 区间
     */
    List<BasicForcaseQuotaPO> findDateInterval(Long planId);


    /**
     * 根据计划获取供应商回复进度
     *
     * @param planId 计划ID
     */
    List<BasicForcaseQuotaPO> getSupplierReply(Long planId);
}
