yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/api/purchase/ErpPurchaseOrderApi.java
@@ -1,14 +1,19 @@
package cn.iocoder.yudao.module.erp.api.purchase;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderCreateReqDTO;
import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO;
import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderRespDTO;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * ERP 采购订单 API 接口
 *
 * @author 芋道源码
 * @author 超级管理员
 */
public interface ErpPurchaseOrderApi {
@@ -38,4 +43,66 @@
     */
    CommonResult<List<ErpPurchaseOrderRespDTO>> getPurchaseOrderList(List<Long> ids);
    /**
     * 获取采购订单明细列表
     *
     * @param orderId 订单编号
     * @return 明细列表
     */
    CommonResult<List<ErpPurchaseOrderItemRespDTO>> getPurchaseOrderItemList(Long orderId);
    /**
     * 获取采购订单明细
     *
     * @param id 明细编号
     * @return 明细
     */
    CommonResult<ErpPurchaseOrderItemRespDTO> getPurchaseOrderItem(Long id);
    /**
     * 更新采购订单明细的入库数量
     *
     * @param orderItemId 明细编号
     * @param inCount     入库数量增量
     */
    CommonResult<Boolean> updateOrderItemInCount(Long orderItemId, BigDecimal inCount);
    /**
     * 更新采购订单的入库状态
     *
     * 根据明细入库数量自动计算订单状态:
     * - 所有明细都完成入库 → 完成状态
     * - 部分明细完成入库 → 部分入库状态
     *
     * @param orderId 订单编号
     */
    CommonResult<Boolean> updateOrderInStatus(Long orderId);
    /**
     * 创建采购订单(RPC 调用)
     *
     * @param createReqDTO 创建信息
     * @return 订单编号
     */
    CommonResult<Long> createPurchaseOrder(ErpPurchaseOrderCreateReqDTO createReqDTO);
    /**
     * 按来源查询采购订单明细列表(用于追溯来源工单的采购情况)
     *
     * @param sourceType 来源类型
     * @param sourceId   来源单据编号
     * @return 采购订单明细列表
     */
    CommonResult<List<ErpPurchaseOrderItemRespDTO>> getPurchaseOrderItemListBySource(Integer sourceType, Long sourceId);
    /**
     * 批量获取物料的采购加权平均单价(仅统计已审核采购订单)
     *
     * 计算方式:SUM(明细总价) / SUM(明细数量);无有效采购记录时返回空 Map
     *
     * @param productIds 物料编号集合(mdm_item.id)
     * @return 物料编号 → 加权平均单价
     */
    CommonResult<Map<Long, BigDecimal>> getItemAveragePurchasePriceMap(Collection<Long> productIds);
}