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.request.ErpPurchaseRequestPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request.ErpPurchaseRequestSaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseRequestDO; import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseRequestItemDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; /** * ERP 采购申请 Service 接口 * * @author 芋道源码 */ public interface ErpPurchaseRequestService { /** * 创建采购申请 * * @param createReqVO 创建信息 * @param userId 用户编号(申请人) * @param deptId 部门编号(申请部门) * @return 编号 */ Long createPurchaseRequest(@Valid ErpPurchaseRequestSaveReqVO createReqVO, Long userId, Long deptId); /** * 更新采购申请 * * @param updateReqVO 更新信息 */ void updatePurchaseRequest(@Valid ErpPurchaseRequestSaveReqVO updateReqVO); /** * 删除采购申请 * * @param ids 编号数组 */ void deletePurchaseRequest(List ids); /** * 获得采购申请 * * @param id 编号 * @return 采购申请 */ ErpPurchaseRequestDO getPurchaseRequest(Long id); /** * 获得采购申请分页 * * @param pageReqVO 分页查询 * @return 采购申请分页 */ PageResult getPurchaseRequestPage(ErpPurchaseRequestPageReqVO pageReqVO); /** * 获得采购申请明细列表 * * @param requestId 采购申请编号 * @return 采购申请明细列表 */ List getPurchaseRequestItemListByRequestId(Long requestId); /** * 获得采购申请明细列表 * * @param requestIds 采购申请编号数组 * @return 采购申请明细列表 */ List getPurchaseRequestItemListByRequestIds(Collection requestIds); /** * 提交采购申请审批 * * @param id 编号 * @param processDefinitionKey 流程定义 Key(用户选择) * @param userId 用户编号 */ void submitPurchaseRequest(Long id, String processDefinitionKey, Long userId); /** * 更新采购申请审批状态 * * @param id 编号 * @param bpmResult BPM 审批结果 */ void updatePurchaseRequestAuditStatus(Long id, Integer bpmResult); /** * 根据采购申请生成采购订单 * * @param id 采购申请编号 * @param supplierId 供应商编号 * @param userId 用户编号 * @return 采购订单编号 */ Long generatePurchaseOrder(Long id, Long supplierId, Long userId); /** * 获取采购申请审批流程列表 * * @return 流程定义列表 */ List> getPurchaseRequestApproveProcessDefinitionList(); }