2026-06-29 940c8481d2fdcf51341db4ccd6fd6fcc2d43debb
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
153
154
155
156
package cn.iocoder.yudao.module.mes.service.pro.workorder;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO;
import jakarta.validation.Valid;
 
import java.math.BigDecimal;
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 接口
 *
 * @author 芋道源码
 */
public interface MesProWorkOrderService {
 
    /**
     * 创建生产工单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWorkOrder(@Valid MesProWorkOrderSaveReqVO createReqVO);
 
    /**
     * 更新生产工单
     *
     * @param updateReqVO 更新信息
     */
    void updateWorkOrder(@Valid MesProWorkOrderSaveReqVO updateReqVO);
 
    /**
     * 删除生产工单
     *
     * @param id 编号
     */
    void deleteWorkOrder(Long id);
 
    /**
     * 校验生产工单存在
     *
     * @param id 编号
     * @return 生产工单
     */
    MesProWorkOrderDO validateWorkOrderExists(Long id);
 
    /**
     * 获得生产工单
     *
     * @param id 编号
     * @return 生产工单
     */
    MesProWorkOrderDO getWorkOrder(Long id);
 
    /**
     * 根据编码获得生产工单
     *
     * @param code 编码
     * @return 生产工单
     */
    MesProWorkOrderDO getWorkOrder(String code);
 
    /**
     * 获得生产工单分页
     *
     * @param pageReqVO 分页查询
     * @return 生产工单分页
     */
    PageResult<MesProWorkOrderDO> getWorkOrderPage(MesProWorkOrderPageReqVO pageReqVO);
 
    /**
     * 获得工单列表
     *
     * @param ids 编号数组
     * @return 工单列表
     */
    List<MesProWorkOrderDO> getWorkOrderList(Collection<Long> ids);
 
    /**
     * 获得工单 Map
     *
     * @param ids 编号数组
     * @return 工单 Map
     */
    default Map<Long, MesProWorkOrderDO> getWorkOrderMap(Collection<Long> ids) {
        return convertMap(getWorkOrderList(ids), MesProWorkOrderDO::getId);
    }
 
    /**
     * 校验工单已确认
     *
     * @param id 编号
     * @return 工单
     */
    MesProWorkOrderDO validateWorkOrderConfirmed(Long id);
 
    /**
     * 确认工单(草稿 → 已确认)
     *
     * @param id 编号
     */
    void confirmWorkOrder(Long id);
 
    /**
     * 完成工单
     *
     * @param id 编号
     */
    void finishWorkOrder(Long id);
 
    /**
     * 取消工单
     *
     * @param id 编号
     */
    void cancelWorkOrder(Long id);
 
    /**
     * 提交工单审批
     *
     * @param id 编号
     * @param userId 用户编号
     */
    void submitWorkOrder(Long id, Long userId);
 
    /**
     * 更新工单的审批状态
     *
     * @param id 编号
     * @param bpmResult BPM 审批结果
     */
    void updateWorkOrderAuditStatus(Long id, Integer bpmResult);
 
    /**
     * 累加工单的已生产数量
     *
     * @param id                   工单编号
     * @param incrQuantityProduced 本次已生产数量增量
     */
    void updateProducedQuantity(Long id, BigDecimal incrQuantityProduced);
 
    /**
     * 根据供应商 ID 统计工单数量
     *
     * @param vendorId 供应商 ID
     * @return 数量
     */
    Long getWorkOrderCountByVendorId(Long vendorId);
 
}