package cn.iocoder.yudao.module.mes.api.mps; import cn.iocoder.yudao.module.mes.api.mps.dto.MesProMpsCreateReqDTO; import cn.iocoder.yudao.module.mes.api.mps.dto.MesProMpsRespDTO; import java.util.List; /** * MES 生产主计划(MPS)API 接口 * * 供 ERP 模块调用,在销售订单审核通过时创建 MPS * * @author 芋道源码 */ public interface MesProMpsApi { /** * 创建 MPS * * @param createReqDTO 创建信息 * @return MPS 编号 */ Long createMps(MesProMpsCreateReqDTO createReqDTO); /** * 根据 ID 获取 MPS * * @param id MPS 编号 * @return MPS 信息 */ MesProMpsRespDTO getMps(Long id); /** * 根据销售订单明细ID获取 MPS * * @param saleOrderItemId 销售订单明细ID * @return MPS 信息 */ MesProMpsRespDTO getMpsBySaleOrderItemId(Long saleOrderItemId); /** * 批量获取 MPS * * @param saleOrderItemIds 销售订单明细ID列表 * @return MPS 列表 */ List getMpsListBySaleOrderItemIds(List saleOrderItemIds); /** * 检查销售订单是否可以生成发货通知单 * * 规则:如果有需要生产的明细,对应的 MPS 必须已完成(status=2)或已取消(status=3) * * @param saleOrderItemIds 销售订单明细ID列表 * @return true=可以生成发货通知单,false=不可以 */ Boolean checkCanCreateSalesNotice(List saleOrderItemIds); /** * 检查销售订单的所有 MPS 是否已完成生产 * * 完成条件: * 1. 已生产数量 >= 计划数量 * 2. 所有报工单状态为 FINISHED(确保质检完成) * * @param saleOrderId 销售订单ID * @return true=全部完成,false=未全部完成 */ Boolean checkSaleOrderProductionFinished(Long saleOrderId); /** * 根据工单ID获取 MPS * * @param workOrderId 工单ID * @return MPS 信息 */ MesProMpsRespDTO getMpsByWorkOrderId(Long workOrderId); }