gaoluyang
5 天以前 70ea74cfb981f812bfa4e3ef91843c5ad93f7b27
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package cn.iocoder.yudao.module.mes.service.wm.returnvendor;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.MesWmReturnVendorPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.MesWmReturnVendorSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDO;
import jakarta.validation.Valid;
 
/**
 * MES 供应商退货单 Service 接口
 */
public interface MesWmReturnVendorService {
 
    /**
     * 创建供应商退货单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createReturnVendor(@Valid MesWmReturnVendorSaveReqVO createReqVO);
 
    /**
     * 修改供应商退货单
     *
     * @param updateReqVO 修改信息
     */
    void updateReturnVendor(@Valid MesWmReturnVendorSaveReqVO updateReqVO);
 
    /**
     * 删除供应商退货单
     *
     * @param id 编号
     */
    void deleteReturnVendor(Long id);
 
    /**
     * 获得供应商退货单
     *
     * @param id 编号
     * @return 供应商退货单
     */
    MesWmReturnVendorDO getReturnVendor(Long id);
 
    /**
     * 获得供应商退货单分页
     *
     * @param pageReqVO 分页参数
     * @return 供应商退货单分页
     */
    PageResult<MesWmReturnVendorDO> getReturnVendorPage(MesWmReturnVendorPageReqVO pageReqVO);
 
    /**
     * 校验供应商退货单是否存在
     *
     * @param id 编号
     * @return 供应商退货单
     */
    MesWmReturnVendorDO validateReturnVendorExists(Long id);
 
    /**
     * 提交供应商退货单(草稿 -> 待拣货)
     *
     * @param id 编号
     */
    void submitReturnVendor(Long id);
 
    /**
     * 提交供应商退货单审批(草稿 -> 审批中),走 BPM 流程:采购 -> 质量 -> 仓库
     *
     * @param id 编号
     * @param processDefinitionKey 流程定义的 Key
     */
    void submitReturnVendorApproval(Long id, String processDefinitionKey);
 
    /**
     * 更新供应商退货单的审批状态(由 BPM 流程实例的回调触发)
     *
     * @param id 编号
     * @param bpmResult BPM 审批结果
     */
    void updateReturnVendorAuditStatus(Long id, Integer bpmResult);
 
    /**
     * 执行拣货(待拣货 -> 待执行退货)
     *
     * @param id 编号
     */
    void stockReturnVendor(Long id);
 
    /**
     * 执行退货/出库(待执行退货 -> 已完成),更新库存台账
     *
     * @param id 编号
     */
    void finishReturnVendor(Long id);
 
    /**
     * 生成采购退货负数冲红付款单(幂等,已生成则直接返回)
     *
     * @param id 退货单编号
     * @return 付款单编号
     */
    Long createRedFlushPayment(Long id);
 
    /**
     * 生成换货到货通知单(幂等,已生成则直接返回),走 到货通知 -> IQC -> 采购入库 链路
     *
     * @param id 退货单编号
     * @return 到货通知单编号
     */
    Long createReplacementNotice(Long id);
 
    /**
     * 取消供应商退货单(任意非已完成/已取消状态 -> 已取消)
     *
     * @param id 编号
     */
    void cancelReturnVendor(Long id);
 
    /**
     * 校验供应商退货单的数量:每行明细数量之和是否等于行退货数量
     *
     * @param id 编号
     * @return 是否全部一致
     */
    Boolean checkReturnVendorQuantity(Long id);
 
    /**
     * 查询指定供应商的退货单数量
     *
     * @param vendorId 供应商编号
     * @return 数量
     */
    Long getReturnVendorCountByVendorId(Long vendorId);
 
    /**
     * 根据关联的采购订单,带入物料明细到退货单行
     *
     * @param id 退货单编号
     * @return 带入的物料行数
     */
    int importPurchaseOrderItems(Long id);
 
    /**
     * 校验供应商退货单存在且为草稿状态
     *
     * @param id 编号
     * @return 供应商退货单
     */
    MesWmReturnVendorDO validateReturnVendorExistsAndPrepare(Long id);
 
}