liu
2026-10-24 15edc521582e08e0e59ee5da9eaec2f2049bb462
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
package cn.iocoder.yudao.module.mes.service.wm.productissue;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueImportExcelVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueImportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssuePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO;
import jakarta.validation.Valid;
 
import java.util.List;
 
/**
 * MES 领料出库单 Service 接口
 */
public interface MesWmProductIssueService {
 
    /**
     * 创建领料出库单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createProductIssue(@Valid MesWmProductIssueSaveReqVO createReqVO);
 
    /**
     * 根据倒冲消耗记录生成已完成的生产领料单。
     *
     * <p>该方法只生成领料业务凭证,不再创建库存事务;实际扣库由物料消耗单完成。</p>
     *
     * @param feedback 报工记录
     * @param consume 物料消耗记录
     * @return 领料单编号
     */
    Long generateBackflushProductIssue(MesProFeedbackDO feedback, MesWmItemConsumeDO consume);
 
    /**
     * 修改领料出库单
     *
     * @param updateReqVO 修改信息
     */
    void updateProductIssue(@Valid MesWmProductIssueSaveReqVO updateReqVO);
 
    /**
     * 删除领料出库单
     *
     * @param id 编号
     */
    void deleteProductIssue(Long id);
 
    /**
     * 获得领料出库单
     *
     * @param id 编号
     * @return 领料出库单
     */
    MesWmProductIssueDO getProductIssue(Long id);
 
    /**
     * 获得领料出库单分页
     *
     * @param pageReqVO 分页参数
     * @return 领料出库单分页
     */
    PageResult<MesWmProductIssueDO> getProductIssuePage(MesWmProductIssuePageReqVO pageReqVO);
 
    /**
     * 校验领料出库单是否存在
     *
     * @param id 编号
     * @return 领料出库单
     */
    MesWmProductIssueDO validateProductIssueExists(Long id);
 
    /**
     * 校验领料出库单存在且为准备中状态
     *
     * @param id 编号
     * @return 领料出库单
     */
    MesWmProductIssueDO validateProductIssueExistsAndPrepare(Long id);
 
    /**
     * 提交领料出库单(草稿 → 待拣货)
     *
     * @param id 编号
     */
    void submitProductIssue(Long id);
 
    /**
     * 执行拣货(待拣货 → 待执行领出)
     *
     * @param id 编号
     */
    void stockProductIssue(Long id);
 
    /**
     * 执行领出/出库(待执行领出 → 已完成),更新库存台账
     *
     * @param id 编号
     */
    void finishProductIssue(Long id);
 
    /**
     * 取消领料出库单(任意非已完成/已取消状态 → 已取消)
     *
     * @param id 编号
     */
    void cancelProductIssue(Long id);
 
    /**
     * 校验领料出库单的数量:每行明细数量之和是否等于行领料数量
     *
     * @param id 编号
     * @return 是否全部一致
     */
    Boolean checkProductIssueQuantity(Long id);
 
    /**
     * 导入领料出库单
     *
     * @param importList    导入数据
     * @param updateSupport 是否支持更新
     * @return 导入结果
     */
    MesWmProductIssueImportRespVO importProductIssueList(List<MesWmProductIssueImportExcelVO> importList, boolean updateSupport);
 
}