2026-07-09 d41fe2e95f3f64c6e3a7229acd9e74e673513a0a
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package cn.iocoder.yudao.module.mes.service.wm.productsales;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesShippingReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
import jakarta.validation.Valid;
 
import java.util.List;
 
/**
 * MES 销售出库单 Service 接口
 *
 * @author 芋道源码
 */
public interface MesWmProductSalesService {
 
    /**
     * 创建销售出库单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createProductSales(@Valid MesWmProductSalesSaveReqVO createReqVO);
 
    /**
     * 修改销售出库单
     *
     * @param updateReqVO 修改信息
     */
    void updateProductSales(@Valid MesWmProductSalesSaveReqVO updateReqVO);
 
    /**
     * 删除销售出库单(级联删除行+明细)
     *
     * @param id 编号
     */
    void deleteProductSales(Long id);
 
    /**
     * 获得销售出库单
     *
     * @param id 编号
     * @return 销售出库单
     */
    MesWmProductSalesDO getProductSales(Long id);
 
    /**
     * 获得销售出库单分页
     *
     * @param pageReqVO 分页参数
     * @return 销售出库单分页
     */
    PageResult<MesWmProductSalesDO> getProductSalesPage(MesWmProductSalesPageReqVO pageReqVO);
 
    /**
     * 提交销售出库单
     * <ul>
     *     <li>有 OQC 检验行:草稿 → 待检测</li>
     *     <li>无 OQC 检验行:草稿 → 待拣货</li>
     * </ul>
     *
     * @param id 编号
     */
    void submitProductSales(Long id);
 
    /**
     * 校验销售出库单数量是否匹配
     *
     * @param id 编号
     * @return 是否匹配
     */
    boolean checkProductSalesQuantity(Long id);
 
    /**
     * 执行拣货(待拣货 → 待填写运单)
     *
     * @param id 编号
     */
    void stockProductSales(Long id);
 
    /**
     * 填写运单(待填写运单 → 待执行出库)
     *
     * @param reqVO 运单信息
     */
    void shippingProductSales(@Valid MesWmProductSalesShippingReqVO reqVO);
 
    /**
     * 执行出库(待出库 → 已完成),扣减库存
     *
     * @param id 编号
     */
    void finishProductSales(Long id);
 
    /**
     * 取消销售出库单(任意非已完成/已取消状态 → 已取消)
     *
     * @param id 编号
     */
    void cancelProductSales(Long id);
 
    /**
     * OQC 检验完成后,自动流转(待检测 → 待拣货)
     *
     * @param id 编号
     */
    void confirmProductSales(Long id);
 
    /**
     * 按客户编号获得销售出库单列表
     *
     * @param clientId 客户编号
     * @return 出库单列表
     */
    List<MesWmProductSalesDO> getProductSalesListByClientId(Long clientId);
 
    /**
     * 校验销售出库单存在且为草稿状态
     *
     * @param id 编号
     * @return 销售出库单
     */
    MesWmProductSalesDO validateProductSalesExistsAndDraft(Long id);
 
    /**
     * 更新销售出库单状态
     *
     * @param id     编号
     * @param status 状态
     */
    void updateStatus(Long id, Integer status);
 
}