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.invoice.ErpPurchaseInvoicePageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoiceSaveReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInvoiceDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; import java.util.Map; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; /** * ERP 采购来票 Service 接口 * * @author 超级管理员 */ public interface ErpPurchaseInvoiceService { /** * 创建来票 * * @param createReqVO 创建信息 * @return 编号 */ Long createPurchaseInvoice(@Valid ErpPurchaseInvoiceSaveReqVO createReqVO); /** * 更新来票 * * @param updateReqVO 更新信息 */ void updatePurchaseInvoice(@Valid ErpPurchaseInvoiceSaveReqVO updateReqVO); /** * 删除来票 * * @param id 编号 */ void deletePurchaseInvoice(Long id); /** * 提交来票审批 * * @param id 编号 * @param userId 用户编号 */ void submitPurchaseInvoice(Long id, Long userId); /** * 更新来票审批结果(BPM 回调) * * @param id 编号 * @param bpmResult BPM 审批结果 */ void updatePurchaseInvoiceAuditStatus(Long id, Integer bpmResult); /** * 获得来票 * * @param id 编号 * @return 来票 */ ErpPurchaseInvoiceDO getPurchaseInvoice(Long id); /** * 获得来票列表 * * @param ids 编号列表 * @return 来票列表 */ List getPurchaseInvoiceList(Collection ids); /** * 获得来票 Map * * @param ids 编号列表 * @return 来票 Map */ default Map getPurchaseInvoiceMap(Collection ids) { return convertMap(getPurchaseInvoiceList(ids), ErpPurchaseInvoiceDO::getId); } /** * 获得来票分页 * * @param pageReqVO 分页查询 * @return 来票分页 */ PageResult getPurchaseInvoicePage(ErpPurchaseInvoicePageReqVO pageReqVO); /** * 根据采购订单编号和审批状态获得来票列表 * * @param orderId 采购订单编号 * @param auditStatuses 审批状态集合 * @return 来票列表 */ List getPurchaseInvoiceListByOrderIdAndStatus(Long orderId, Collection auditStatuses); /** * 根据供应商编号和审批状态获得来票列表 * * @param supplierId 供应商编号 * @param auditStatuses 审批状态集合 * @return 来票列表 */ List getPurchaseInvoiceListBySupplierIdAndStatus(Long supplierId, Collection auditStatuses); /** * 获得待审核来票数量 * * @return 数量 */ Long getAuditInvoiceCount(); }