云
2026-10-25 d54fbc9d4f8981fa0f7f613b33a28a8cd4f764ea
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java
@@ -1,6 +1,9 @@
package cn.iocoder.yudao.module.erp.service.purchase;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderImportExcelVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderImportReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderImportRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
@@ -11,6 +14,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * ERP 采购订单 Service 接口
@@ -45,18 +49,29 @@
    /**
     * 提交采购订单审批
     *
     * 仅【未提交】或【审核不通过】状态可提交;提交后进入【审批中】,并清空上一轮审核信息。
     *
     * @param id 编号
     * @param processDefinitionKey 流程定义 Key
     * @param userId 用户编号
     */
    void submitPurchaseOrder(Long id, String processDefinitionKey, Long userId);
    void submitPurchaseOrder(Long id);
    /**
     * 获取采购订单审批流程列表
     * 获取采购订单的审批人编号集合(或签:任一人审核即可)
     *
     * @return 流程定义列表
     * @return 审批人用户编号
     */
    List<Map<String, Object>> getPurchaseOrderApproveProcessDefinitionList();
    Set<Long> getPurchaseOrderApproverUserIds();
    /**
     * 审核采购订单(通过 / 不通过)
     *
     * 仅配置内的审批人可执行;审核不通过时必须填写驳回原因,单据退回后可重新修改并提交。
     *
     * @param id 编号
     * @param pass 是否审核通过
     * @param reviewRemark 审核意见
     */
    void auditPurchaseOrder(Long id, Boolean pass, String reviewRemark);
    /**
     * 更新采购订单审批结果(BPM 回调)
@@ -65,6 +80,18 @@
     * @param bpmResult BPM 审批结果
     */
    void updatePurchaseOrderAuditStatus(Long id, Integer bpmResult);
    /**
     * BPM 审批结果回调更新采购订单状态
     *
     * 由 BPM 流程实例结束事件触发,将审批结果回写为业务状态:
     * 审批通过 → 审核通过;审批不通过 → 审核不通过;流程取消 → 已取消。
     *
     * @param id        采购订单编号
     * @param bpmStatus BPM 审批结果状态
     * @param reason    审核意见(BPM 审批意见)
     */
    void updatePurchaseOrderAuditStatus(Long id, Integer bpmStatus, String reason);
    /**
     * 更新采购订单的入库数量
@@ -179,4 +206,14 @@
     */
    Long confirmReceipt(Long id);
    /**
     * 导入采购订单
     *
     * @param importOrders 导入的采购订单列表(一行一条明细)
     * @param importReqVO  导入参数
     * @return 导入结果
     */
    ErpPurchaseOrderImportRespVO importPurchaseOrderList(List<ErpPurchaseOrderImportExcelVO> importOrders,
                                                        ErpPurchaseOrderImportReqVO importReqVO);
}