package cn.iocoder.yudao.module.mes.service.wm.sorting; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortPendingNoticeRespVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortProductionRequestRespVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortTaskPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortTaskRespVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.sorting.vo.MesWmSortTaskScanReqVO; import java.util.List; /** * MES 分拣任务 Service 接口 * * 需求 5.3:订单分拣 —— 依据清单和货位指引执行分拣,支持扫码校验,完成后触发配送 */ public interface MesWmSortTaskService { /** * 从发货通知单生成分拣任务(按 FIFO 自动分配货位) * * @param noticeId 发货通知单编号 * @return 分拣任务编号 */ Long createSortTaskFromNotice(Long noticeId); /** * 扫码校验分拣明细 */ void scanLine(MesWmSortTaskScanReqVO scanReqVO); /** * 完成分拣(触发配送:生成销售出库单并记录承运信息) * * @param id 分拣任务编号 * @param carrier 承运商 * @param shippingNumber 物流单号 * @param remark 备注 */ void finishSortTask(Long id, String carrier, String shippingNumber, String remark); /** * 取消分拣任务 */ void cancelSortTask(Long id); /** * 删除分拣任务(仅待分拣/已取消可删除) */ void deleteSortTask(Long id); /** * 记录打印次数 */ void updatePrintCount(Long id); /** * 提交生产申请:为分拣任务涉及的销售订单明细补建生产申请(MPS 草稿) * * @param id 分拣任务编号 * @return 提交结果(新建数量、跳过数量、失败明细) */ MesWmSortProductionRequestRespVO submitProductionRequest(Long id); /** * 获得分拣任务 */ MesWmSortTaskRespVO getSortTask(Long id); /** * 获得分拣任务分页 */ PageResult getSortTaskPage(MesWmSortTaskPageReqVO pageReqVO); /** * 获得待分拣的发货通知单列表(已审核、未出库、且无未完成分拣任务) */ List getPendingNoticeList(String noticeCode); }