package cn.iocoder.yudao.module.mes.service.pro.route; import cn.iocoder.yudao.module.mes.controller.admin.pro.route.vo.process.MesProRouteProcessSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.route.MesProRouteProcessDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; /** * MES 工艺路线工序 Service 接口 * * @author 超级管理员 */ public interface MesProRouteProcessService { /** * 创建工艺路线工序 */ Long createRouteProcess(@Valid MesProRouteProcessSaveReqVO createReqVO); /** * 更新工艺路线工序 */ void updateRouteProcess(@Valid MesProRouteProcessSaveReqVO updateReqVO); /** * 删除工艺路线工序 */ void deleteRouteProcess(Long id); /** * 获得工艺路线工序 */ MesProRouteProcessDO getRouteProcess(Long id); /** * 按工艺路线获得工序列表 */ List getRouteProcessListByRouteId(Long routeId); /** * 按多个工艺路线获得工序列表 * * @param routeIds 工艺路线编号数组 * @return 工序列表 */ List getRouteProcessListByRouteIds(Collection routeIds); /** * 按工艺路线和工序获得工艺路线工序 * * @param routeId 工艺路线编号 * @param processId 工序编号 * @return 工艺路线工序 */ MesProRouteProcessDO getRouteProcessByRouteIdAndProcessId(Long routeId, Long processId); /** * 按产品获得工序列表 * * 根据产品查找关联的工艺路线,返回该路线的工序列表 * * @param productId 产品编号 * @return 工序列表 */ List getRouteProcessListByProductId(Long productId); /** * 获得工序在指定产品下的产出物料编号 * * 按产出归属过滤:归属为空(多产品通用)或归属等于指定产品的产出。 * 无归属数据时返回 {@code null},调用方需自行回退;有归属数据但该产品无产出时返回空列表。 * * @param routeProcessId 工艺路线工序编号 * @param productId 产品编号 * @return 产出物料编号列表(按排序),无归属数据时为 null */ List getOutputItemIdsByRouteProcessId(Long routeProcessId, Long productId); /** * 按工艺路线工序编号批量获得产出归属配置 * * @param routeProcessIds 工艺路线工序编号数组 * @return 产出归属列表 */ List getRouteProcessOutputListByRouteProcessIds(Collection routeProcessIds); /** * 按产品获得工序投料BOM Map * * key = 工序ID,value = 该工序下的投料BOM明细列表 * * @param productId 产品编号 * @return 工序 -> 投料BOM 映射,产品无工艺路线时返回空Map */ java.util.Map> getRouteProcessBomMapByProductId(Long productId); /** * 按工序获得工艺路线工序列表 * * @param processId 工序编号 * @return 工艺路线工序列表 */ List getRouteProcessListByProcessId(Long processId); /** * 按工艺路线删除工序(级联删除使用) * * @param routeId 工艺路线编号 */ void deleteRouteProcessByRouteId(Long routeId); }