package cn.iocoder.yudao.module.mes.service.wm.batch; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; import java.util.List; /** * 批次管理 Service 接口 * * @author 芋道源码 */ public interface MesWmBatchService { /** * 获得批次分页 * * @param pageReqVO 分页查询 * @return 批次分页 */ PageResult getBatchPage(MesWmBatchPageReqVO pageReqVO); /** * 获得批次 * * @param id 批次编号 * @return 批次记录 */ MesWmBatchDO getBatch(Long id); /** * 根据批次号获得批次 * * @param code 批次号 * @return 批次记录 */ MesWmBatchDO getBatchByCode(String code); /** * 获取或生成批次编码 *

* 根据物料批次配置,查询或生成批次记录 * * @param reqVO 批次参数(包含 itemId 及其他可选属性) * @return 批次记录(如果物料未启用批次管理则返回 null) */ MesWmBatchDO getOrGenerateBatchCode(MesWmBatchGenerateReqVO reqVO); /** * 批次向前追溯(递归查询) *

* 查询当前批次被哪些工单的哪些批次产品消耗 * * @param code 批次编码 * @return 批次列表 */ List getForwardBatchList(String code); /** * 批次向后追溯(递归查询) *

* 查询当前批次的产品使用了哪些批次的物资 * * @param code 批次编码 * @return 批次列表 */ List getBackwardBatchList(String code); /** * 校验批次存在,并校验批次与物料的归属关系 * * @param batchId 批次ID * @param itemId 物料ID * @return 批次记录 */ MesWmBatchDO validateBatchExists(Long batchId, Long itemId); /** * 校验批次存在,并校验批次与物料、客户/供应商的归属关系 * * @param batchId 批次ID * @param itemId 物料ID * @param clientId 客户ID(可选,不为空时校验) * @param vendorId 供应商ID(可选,不为空时校验) * @return 批次记录 */ MesWmBatchDO validateBatchExists(Long batchId, Long itemId, Long clientId, Long vendorId); /** * 获取指定工具的批次数量 * * @param toolId 工具编号 * @return 批次数量 */ Long getBatchCountByToolId(Long toolId); }