package com.ruoyi.info.collection.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.info.collection.domain.CcdiPurchaseTransaction;
import com.ruoyi.info.collection.domain.dto.CcdiPurchaseTransactionQueryDTO;
import com.ruoyi.info.collection.domain.vo.CcdiPurchaseTransactionVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 采购交易信息 数据层
 *
 * @author ruoyi
 * @date 2026-02-06
 */
public interface CcdiPurchaseTransactionMapper extends BaseMapper<CcdiPurchaseTransaction> {

    /**
     * 分页查询采购交易列表
     *
     * @param page     分页对象
     * @param queryDTO 查询条件
     * @return 采购交易VO分页结果
     */
    Page<CcdiPurchaseTransactionVO> selectTransactionPage(@Param("page") Page<CcdiPurchaseTransactionVO> page,
                                                          @Param("query") CcdiPurchaseTransactionQueryDTO queryDTO);

    /**
     * 查询采购交易详情
     *
     * @param purchaseId 采购事项ID
     * @return 采购交易VO
     */
    CcdiPurchaseTransactionVO selectTransactionById(@Param("purchaseId") String purchaseId);

    /**
     * 删除指定采购事项ID对应的供应商明细
     *
     * @param purchaseIds 采购事项ID列表
     * @return 删除行数
     */
    int deleteSuppliersByPurchaseIds(@Param("purchaseIds") List<String> purchaseIds);

    /**
     * 批量插入采购交易数据
     *
     * @param list 采购交易列表
     * @return 插入行数
     */
    int insertBatch(@Param("list") List<CcdiPurchaseTransaction> list);

    /**
     * 批量更新采购交易数据（先删除再插入）
     *
     * @param list 采购交易列表
     * @return 更新行数
     */
    int insertOrUpdateBatch(@Param("list") List<CcdiPurchaseTransaction> list);
}
