gaoluyang
2026-10-30 cbadfd8e691ab335965202a984db16e55ac8e42c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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<MesWmSortTaskRespVO> getSortTaskPage(MesWmSortTaskPageReqVO pageReqVO);
 
    /**
     * 获得待分拣的发货通知单列表(已审核、未出库、且无未完成分拣任务)
     */
    List<MesWmSortPendingNoticeRespVO> getPendingNoticeList(String noticeCode);
 
}