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; import java.util.Set; /** * ERP 采购申请 Service 接口 */ public interface ErpPurchaseRequestService { /** * 创建采购申请 * * @param createReqVO 创建信息 * @return 编号 */ Long createPurchaseRequest(@Valid ErpPurchaseRequestSaveReqVO createReqVO); /** * 更新采购申请 * * @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); /** * 获得采购申请项 List * * @param requestIds 采购申请编号数组 * @return 采购申请项 List */ List getPurchaseRequestItemListByRequestIds(Collection requestIds); /** * 提交采购申请审批 * * 仅【未提交】或【审核不通过】状态可提交;审批人由「系统管理 - 审批配置」统一指定, * 提交后进入【审批中】,并清空上一轮审核结果。 * * @param id 编号 */ void submitPurchaseRequest(Long id); /** * 获取采购申请的审批人编号集合(或签:任一人审核即可) * * @return 审批人用户编号 */ Set getPurchaseRequestApproverUserIds(); /** * 审核采购申请(通过 / 不通过) * * 仅配置内的审批人可执行;审核不通过时必须填写原因,退回后可修改并重新提交。 * * @param id 编号 * @param pass 是否审核通过 * @param reviewRemark 审核意见 */ void auditPurchaseRequest(Long id, Boolean pass, String reviewRemark); /** * 生成采购订单 * * @param id 采购申请编号 * @param supplierId 供应商编号 * @return 采购订单编号 */ Long generatePurchaseOrder(Long id, Long supplierId); /** * 根据编号列表获取采购申请列表 * * @param ids 编号列表 * @return 采购申请列表 */ List getPurchaseRequestList(List ids); }