tuqin
5 天以前 67d3ab41f4989faf4db5f7f95f56b8595dd8eb3b
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseOrderService.java
@@ -3,6 +3,8 @@
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.controller.admin.purchase.vo.order.ErpPurchaseOrderImportExcelVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderImportRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO;
import jakarta.validation.Valid;
@@ -15,7 +17,7 @@
/**
 * ERP 采购订单 Service 接口
 *
 * @author 芋道源码
 * @author 超级管理员
 */
public interface ErpPurchaseOrderService {
@@ -26,6 +28,15 @@
     * @return 编号
     */
    Long createPurchaseOrder(@Valid ErpPurchaseOrderSaveReqVO createReqVO);
    /**
     * 导入采购订单
     *
     * @param importList    导入数据(每一行 = 一条明细,相同采购单编号合并为一张订单)
     * @param directApprove 是否将导入的订单直接置为“已审核”:true=已审核(20),false=未审核(10)
     * @return 导入结果
     */
    ErpPurchaseOrderImportRespVO importPurchaseOrderList(List<ErpPurchaseOrderImportExcelVO> importList, Boolean directApprove);
    /**
     * 更新采购订单
@@ -41,6 +52,30 @@
     * @param status 状态
     */
    void updatePurchaseOrderStatus(Long id, Integer status);
    /**
     * 提交采购订单审批
     *
     * @param id 编号
     * @param processDefinitionKey 流程定义 Key
     * @param userId 用户编号
     */
    void submitPurchaseOrder(Long id, String processDefinitionKey, Long userId);
    /**
     * 获取采购订单审批流程列表
     *
     * @return 流程定义列表
     */
    List<Map<String, Object>> getPurchaseOrderApproveProcessDefinitionList();
    /**
     * 更新采购订单审批结果(BPM 回调)
     *
     * @param id 编号
     * @param bpmResult BPM 审批结果
     */
    void updatePurchaseOrderAuditStatus(Long id, Integer bpmResult);
    /**
     * 更新采购订单的入库数量
@@ -72,6 +107,14 @@
     * @return 采购订单
     */
    ErpPurchaseOrderDO getPurchaseOrder(Long id);
    /**
     * 根据 BPM 流程实例编号查询采购订单(用于协同办公反审批)
     *
     * @param processInstanceId 流程实例编号
     * @return 采购订单
     */
    ErpPurchaseOrderDO getPurchaseOrderByProcessInstanceId(String processInstanceId);
    /**
     * 校验采购订单,已经审核通过
@@ -107,4 +150,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);
}