云
4 天以前 5d818f39c862884b7087488d588fef5b7ce47386
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.returnsales;
 
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.returnsales.vo.MesWmReturnableProductSalesLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.MesWmReturnSalesPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.MesWmReturnSalesSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDO;
import jakarta.validation.Valid;
 
import java.util.List;
 
/**
 * MES 销售退货单 Service 接口
 *
 * @author 超级管理员
 */
public interface MesWmReturnSalesService {
 
    /**
     * 创建销售退货单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createReturnSales(@Valid MesWmReturnSalesSaveReqVO createReqVO);
 
    /**
     * 修改销售退货单
     *
     * @param updateReqVO 修改信息
     */
    void updateReturnSales(@Valid MesWmReturnSalesSaveReqVO updateReqVO);
 
    /**
     * 删除销售退货单
     *
     * @param id 编号
     */
    void deleteReturnSales(Long id);
 
    /**
     * 获得销售退货单
     *
     * @param id 编号
     * @return 销售退货单
     */
    MesWmReturnSalesDO getReturnSales(Long id);
 
    /**
     * 获得销售退货单分页
     *
     * @param pageReqVO 分页参数
     * @return 销售退货单分页
     */
    PageResult<MesWmReturnSalesDO> getReturnSalesPage(MesWmReturnSalesPageReqVO pageReqVO);
 
    /**
     * 获得可退销售出库单分页:仅已完成状态,且存在可退数量大于 0 的行
     *
     * @param pageReqVO 分页参数
     * @return 销售出库单分页
     */
    PageResult<MesWmProductSalesDO> getReturnableProductSalesPage(MesWmProductSalesPageReqVO pageReqVO);
 
    /**
     * 获得销售出库单中仍可退货的行列表
     *
     * @param productSalesId 销售出库单 ID
     * @return 可退行列表
     */
    List<MesWmReturnableProductSalesLineRespVO> getReturnableProductSalesLineList(Long productSalesId);
 
    /**
     * 校验销售退货单是否存在
     *
     * @param id 编号
     * @return 销售退货单
     */
    MesWmReturnSalesDO validateReturnSalesExists(Long id);
 
    /**
     * 校验销售退货单存在且为草稿状态
     *
     * @param id 编号
     * @return 销售退货单
     */
    MesWmReturnSalesDO validateReturnSalesExistsAndPrepare(Long id);
 
    /**
     * 提交销售退货单(草稿 -> 待执行)
     *
     * @param id 编号
     */
    void submitReturnSales(Long id);
 
    /**
     * 执行退货(待执行 -> 待上架)
     *
     * @param id 编号
     */
    void finishReturnSales(Long id);
 
    /**
     * 执行上架(待上架 -> 已完成),更新库存台账
     *
     * @param id 编号
     */
    void stockReturnSales(Long id);
 
    /**
     * 取消销售退货单(任意非已完成/已取消状态 -> 已取消)
     *
     * @param id 编号
     */
    void cancelReturnSales(Long id);
 
    /**
     * 更新销售退货单状态(供外部模块联动调用,如 RQC 检验完成后)
     *
     * @param id 编号
     * @param status 目标状态
     */
    void updateReturnSalesStatus(Long id, Integer status);
 
    /**
     * 校验销售退货单的数量:每行明细数量之和是否等于行退货数量
     *
     * @param id 编号
     * @return 是否全部一致
     */
    Boolean checkReturnSalesQuantity(Long id);
 
}