package cn.iocoder.yudao.module.mes.service.wm.productreceipt; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDO; import jakarta.validation.Valid; /** * MES 产品收货单 Service 接口 */ public interface MesWmProductReceiptService { /** * 创建产品收货单 * * @param createReqVO 创建信息 * @return 编号 */ Long createProductReceipt(@Valid MesWmProductReceiptSaveReqVO createReqVO); /** * 修改产品收货单 * * @param updateReqVO 修改信息 */ void updateProductReceipt(@Valid MesWmProductReceiptSaveReqVO updateReqVO); /** * 删除产品收货单(级联删除行+明细) * * @param id 编号 */ void deleteProductReceipt(Long id); /** * 获得产品收货单 * * @param id 编号 * @return 产品收货单 */ MesWmProductReceiptDO getProductReceipt(Long id); /** * 获得产品收货单分页 * * @param pageReqVO 分页参数 * @return 产品收货单分页 */ PageResult getProductReceiptPage(MesWmProductReceiptPageReqVO pageReqVO); /** * 提交产品收货单(草稿 → 待上架) * * @param id 编号 */ void submitProductReceipt(Long id); /** * 执行上架(待上架 → 待入库) * * @param id 编号 */ void stockProductReceipt(Long id); /** * 执行入库(待入库 → 已完成),更新库存台账 * * @param id 编号 */ void finishProductReceipt(Long id); /** * 取消产品收货单(任意非已完成/已取消状态 → 已取消) * * @param id 编号 */ void cancelProductReceipt(Long id); /** * 校验产品收货单存在且处于可编辑状态(草稿或待上架) * * @param id 编号 * @return 产品收货单 */ MesWmProductReceiptDO validateProductReceiptEditable(Long id); /** * 校验产品收货单明细数量(每行明细数量之和是否等于行收货数量) * * @param id 编号 * @return 是否匹配 */ Boolean checkProductReceiptQuantity(Long id); }