9 天以前 2e84a447af471fe5ada907c28849838a6bc3a340
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
package cn.iocoder.yudao.module.mes.service.wm.salesnotice;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.MesWmSalesNoticePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.MesWmSalesNoticeSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO;
import jakarta.validation.Valid;
 
import java.util.Collection;
import java.util.List;
import java.util.Map;
 
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
 
/**
 * MES 发货通知单 Service 接口
 */
public interface MesWmSalesNoticeService {
 
    /**
     * 创建发货通知单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createSalesNotice(@Valid MesWmSalesNoticeSaveReqVO createReqVO);
 
    /**
     * 修改发货通知单
     *
     * @param updateReqVO 修改信息
     */
    void updateSalesNotice(@Valid MesWmSalesNoticeSaveReqVO updateReqVO);
 
    /**
     * 删除发货通知单
     *
     * @param id 编号
     */
    void deleteSalesNotice(Long id);
 
    /**
     * 校验发货通知单存在
     *
     * @param id 编号
     * @return 发货通知单
     */
    MesWmSalesNoticeDO validateSalesNoticeExists(Long id);
 
    /**
     * 获得发货通知单
     *
     * @param id 编号
     * @return 发货通知单
     */
    MesWmSalesNoticeDO getSalesNotice(Long id);
 
    /**
     * 获得发货通知单分页
     *
     * @param pageReqVO 分页参数
     * @return 发货通知单分页
     */
    PageResult<MesWmSalesNoticeDO> getSalesNoticePage(MesWmSalesNoticePageReqVO pageReqVO);
 
    /**
     * 提交发货通知单
     *
     * @param id 编号
     */
    void submitSalesNotice(Long id);
 
    /**
     * 获得发货通知单列表
     *
     * @param ids 编号列表
     * @return 发货通知单列表
     */
    List<MesWmSalesNoticeDO> getSalesNoticeList(Collection<Long> ids);
 
    /**
     * 获得发货通知单 Map
     *
     * @param ids 编号列表
     * @return 发货通知单 Map
     */
    default Map<Long, MesWmSalesNoticeDO> getSalesNoticeMap(Collection<Long> ids) {
        return convertMap(getSalesNoticeList(ids), MesWmSalesNoticeDO::getId);
    }
 
    /**
     * 从销售订单生成发货通知单
     *
     * @param saleOrderId 销售订单ID
     * @return 发货通知单ID
     */
    Long generateSalesNoticeFromSaleOrder(Long saleOrderId);
 
    /**
     * 完成发货通知单(出库完成后调用)
     * 累加出库数量并计算出库状态
     *
     * @param id 编号
     * @deprecated 请使用 {@link #updateSalesNoticeOutCount(Long, java.math.BigDecimal)}
     */
    @Deprecated
    void finishSalesNotice(Long id);
 
    /**
     * 更新发货通知单行的出库数量
     *
     * @param noticeLineId 发货通知单行ID
     * @param outCount     出库数量
     */
    void updateSalesNoticeLineOutCount(Long noticeLineId, java.math.BigDecimal outCount);
 
    /**
     * 更新发货通知单的出库状态
     *
     * @param noticeId 发货通知单ID
     */
    void updateSalesNoticeOutStatus(Long noticeId);
 
    /**
     * 从发货通知单生成销售出库单
     *
     * @param noticeId 发货通知单ID
     * @return 销售出库单ID
     */
    Long generateProductSalesFromNotice(Long noticeId);
 
}