6 天以前 85156554438bb13930c89072ee0b7fa93192a7fe
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
package cn.iocoder.yudao.module.erp.service.purchase;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO;
import jakarta.validation.Valid;
 
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;
 
/**
 * ERP 采购订单 Service 接口
 *
 * @author 芋道源码
 */
public interface ErpPurchaseOrderService {
 
    /**
     * 创建采购订单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPurchaseOrder(@Valid ErpPurchaseOrderSaveReqVO createReqVO);
 
    /**
     * 更新采购订单
     *
     * @param updateReqVO 更新信息
     */
    void updatePurchaseOrder(@Valid ErpPurchaseOrderSaveReqVO updateReqVO);
 
    /**
     * 更新采购订单的状态
     *
     * @param id 编号
     * @param status 状态
     */
    void updatePurchaseOrderStatus(Long id, Integer status);
 
    /**
     * 提交采购订单审批
     *
     * @param id 编号
     * @param processDefinitionKey 流程定义 Key
     * @param userId 用户编号
     */
    void submitPurchaseOrder(Long id, String processDefinitionKey, Long userId);
 
    /**
     * 获取采购订单审批流程列表
     *
     * @return 流程定义列表
     */
    List<Map<String, Object>> getPurchaseOrderApproveProcessDefinitionList();
 
    /**
     * 更新采购订单审批结果(BPM 回调)
     *
     * @param id 编号
     * @param bpmResult BPM 审批结果
     */
    void updatePurchaseOrderAuditStatus(Long id, Integer bpmResult);
 
    /**
     * 更新采购订单的入库数量
     *
     * @param id 编号
     * @param inCountMap 入库数量 Map:key 采购订单项编号;value 入库数量
     */
    void updatePurchaseOrderInCount(Long id, Map<Long, BigDecimal> inCountMap);
 
    /**
     * 更新采购订单的退货数量
     *
     * @param orderId 编号
     * @param returnCountMap 退货数量 Map:key 采购订单项编号;value 退货数量
     */
    void updatePurchaseOrderReturnCount(Long orderId, Map<Long, BigDecimal> returnCountMap);
 
    /**
     * 删除采购订单
     *
     * @param ids 编号数组
     */
    void deletePurchaseOrder(List<Long> ids);
 
    /**
     * 获得采购订单
     *
     * @param id 编号
     * @return 采购订单
     */
    ErpPurchaseOrderDO getPurchaseOrder(Long id);
 
    /**
     * 校验采购订单,已经审核通过
     *
     * @param id 编号
     * @return 采购订单
     */
    ErpPurchaseOrderDO validatePurchaseOrder(Long id);
 
    /**
     * 获得采购订单分页
     *
     * @param pageReqVO 分页查询
     * @return 采购订单分页
     */
    PageResult<ErpPurchaseOrderDO> getPurchaseOrderPage(ErpPurchaseOrderPageReqVO pageReqVO);
 
    // ==================== 采购订单项 ====================
 
    /**
     * 获得采购订单项列表
     *
     * @param orderId 采购订单编号
     * @return 采购订单项列表
     */
    List<ErpPurchaseOrderItemDO> getPurchaseOrderItemListByOrderId(Long orderId);
 
    /**
     * 获得采购订单项 List
     *
     * @param orderIds 采购订单编号数组
     * @return 采购订单项 List
     */
    List<ErpPurchaseOrderItemDO> getPurchaseOrderItemListByOrderIds(Collection<Long> orderIds);
 
    /**
     * 根据供应商编号和状态获取采购订单列表
     *
     * @param supplierId 供应商编号
     * @param status     状态
     * @return 采购订单列表
     */
    List<ErpPurchaseOrderDO> getPurchaseOrderListBySupplierIdAndStatus(Long supplierId, Integer status);
 
    /**
     * 根据编号列表获取采购订单列表
     *
     * @param ids 编号列表
     * @return 采购订单列表
     */
    List<ErpPurchaseOrderDO> getPurchaseOrderList(List<Long> ids);
 
    /**
     * 更新采购订单的入库状态
     *
     * 根据明细入库数量自动计算订单状态:
     * - 所有明细都完成入库 → 全部入库状态
     * - 部分明细完成入库 → 部分入库状态
     * - 无明细入库 → 未入库状态
     *
     * @param orderId 订单编号
     */
    void updatePurchaseOrderInStatus(Long orderId);
 
    /**
     * 确认收货
     *
     * 生成到货通知单,状态为待入库
     *
     * @param id 采购订单编号
     * @return 到货通知单编号
     */
    Long confirmReceipt(Long id);
 
}