yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java
@@ -11,11 +11,12 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * ERP 采购订单 Service 接口
 *
 * @author 芋道源码
 * @author 超级管理员
 */
public interface ErpPurchaseOrderService {
@@ -45,13 +46,32 @@
    /**
     * 提交采购订单审批
     *
     * 仅【未提交】或【审核不通过】状态可提交;提交后进入【审批中】,并清空上一轮审核信息。
     *
     * @param id 编号
     * @param userId 用户编号
     */
    void submitPurchaseOrder(Long id, Long userId);
    void submitPurchaseOrder(Long id);
    /**
     * 更新采购订单的审批状态
     * 获取采购订单的审批人编号集合(或签:任一人审核即可)
     *
     * @return 审批人用户编号
     */
    Set<Long> getPurchaseOrderApproverUserIds();
    /**
     * 审核采购订单(通过 / 不通过)
     *
     * 仅配置内的审批人可执行;审核不通过时必须填写驳回原因,单据退回后可重新修改并提交。
     *
     * @param id 编号
     * @param pass 是否审核通过
     * @param reviewRemark 审核意见
     */
    void auditPurchaseOrder(Long id, Boolean pass, String reviewRemark);
    /**
     * 更新采购订单审批结果(BPM 回调)
     *
     * @param id 编号
     * @param bpmResult BPM 审批结果
@@ -123,4 +143,52 @@
     */
    List<ErpPurchaseOrderItemDO> getPurchaseOrderItemListByOrderIds(Collection<Long> orderIds);
    /**
     * 根据供应商编号和状态获取采购订单列表
     *
     * @param supplierId 供应商编号
     * @param status     状态
     * @return 采购订单列表
     */
    List<ErpPurchaseOrderDO> getPurchaseOrderListBySupplierIdAndStatus(Long supplierId, Integer status);
    /**
     * 根据编号列表获取采购订单列表
     *
     * @param ids 编号列表
     * @return 采购订单列表
     */
    List<ErpPurchaseOrderDO> getPurchaseOrderList(List<Long> ids);
    /**
     * 按来源查询采购订单列表
     *
     * @param sourceType 来源类型
     * @param sourceId   来源单据编号
     * @return 采购订单列表
     */
    List<ErpPurchaseOrderDO> getPurchaseOrderListBySource(Integer sourceType, Long sourceId);
    /**
     * 更新采购订单的入库状态
     *
     * 根据明细入库数量自动计算订单状态:
     * - 所有明细都完成入库 → 全部入库状态
     * - 部分明细完成入库 → 部分入库状态
     * - 无明细入库 → 未入库状态
     *
     * @param orderId 订单编号
     */
    void updatePurchaseOrderInStatus(Long orderId);
    /**
     * 确认收货
     *
     * 生成到货通知单,状态为待入库
     *
     * @param id 采购订单编号
     * @return 到货通知单编号
     */
    Long confirmReceipt(Long id);
}