wangxinhui
2025-05-26 ef3870bb8d578457b310e58518ca814f3d4f932c
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.MaterielEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
using WIDESEA_DTO.Basic;
using WIDESEA_DTO.ERP;
using WIDESEA_External.ERPService;
using WIDESEA_External.Model;
using WIDESEA_IBasicRepository;
using WIDESEA_IBasicService;
using WIDESEA_IInboundRepository;
using WIDESEA_IInboundService;
using WIDESEA_InboundService;
using WIDESEA_IOutboundService;
using WIDESEA_Model.Models;
using static WIDESEA_DTO.ErpResponseContent;
 
namespace WIDESEA_WMSServer.Controllers.ERP
{
    /// <summary>
    /// ERP接口
    /// </summary>
    [Route("api/Erp")]
    [ApiController]
    public class ErpController : ControllerBase
    {
        private readonly IBasicService _basicService;
        private readonly IOutboundService _outboundService;
        private readonly IInboundService _inboundService;
        private readonly IInvokeERPService _invokeERPService;
        private readonly IReturnOrderService _returnOrderService;
 
        public ErpController(IBasicService basicService, IOutboundService outboundService, IInboundService inboundService,
            IInvokeERPService invokeERPService, IReturnOrderService returnOrderService)
        {
            _basicService = basicService;
            _outboundService = outboundService;
            _inboundService = inboundService;
            _invokeERPService = invokeERPService;
            _returnOrderService = returnOrderService;
        }
 
        /// <summary>
        /// 接收ERP采购单信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost, Route("ReceivePurchaseOrder"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ReceivePurchaseOrder([FromBody] Root<PurchaseOrderModel> model)
        {
            WebResponseContent content = _inboundService.PurchaseOrderService.ReceivePurchaseOrder(model.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
 
        /// <summary>
        /// 接收ERP仓库员工和质检员工数据
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost, Route("ReceiveUser"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ReceiveUser([FromBody] Root<UserInfoDTO> model)
        {
            WebResponseContent content = _basicService.UserInfoService.ReceiveUser(model.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
 
        /// <summary>
        /// 接收ERP供应商信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost, Route("ReceiveSupplier"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ReceiveSupplier([FromBody] Root<SupplierDTO> model)
        {
            WebResponseContent content = _basicService.SupplierInfoService.ReceiveSupplier(model.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
 
        /// <summary>
        /// 接收ERP物料信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost, Route("ReceiveMaterial"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ReceiveMaterial([FromBody] Root<MaterielInfoDTO> model)
        {
            WebResponseContent content = _basicService.MaterielInfoService.ReceiveMaterial(model.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
 
        /// <summary>
        /// 接收ERP客户信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost, Route("ReceiveCustomer"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ReceiveCustomer([FromBody] Root<CustomerInfoDTO> model)
        {
            WebResponseContent content = _basicService.CustomerInfoService.ReceiveCustomer(model.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
 
        /// <summary>
        /// 接收ERP出库单信息
        /// </summary>
        /// <param name="erpOutOrder"></param>
        /// <returns></returns>
        [HttpPost, Route("ReceiveOutOrder"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ReceiveOutOrder([FromBody] Root<ErpOutOrderDTO> erpOutOrder)
        {
            WebResponseContent content = _outboundService.OutboundOrderService.ReceiveOutOrder(erpOutOrder.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
        /// <summary>
        /// 接收ERP成品出库单信息(订单出库/寄售出库)
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("ProductDeliveryOrder"), AllowAnonymous, MethodParamsValidate]
        public async Task<ErpResponseContent> ProductDeliveryOrder([FromBody] Root<ErpProOutOrderDTO> erpProOutOrder)
        {
            var content = await _outboundService.ProOutOrderService.ProductDeliveryOrder(erpProOutOrder.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
        /// <summary>
        /// 成品寄售转入/调拨入库
        /// </summary>
        /// <param name="root"></param>
        /// <returns></returns>
        [HttpPost, Route("ProductWarehousingOrder"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ProductWarehousingOrder([FromBody] Root<ErpProductWarehousingOrderDTO> root)
        {
            WebResponseContent content = _inboundService.ErpProInOrderService.ProductWarehousingOrder(root.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
        /// <summary>
        /// 成品调拨出(研发)
        /// </summary>
        /// <param name="root"></param>
        /// <returns></returns>
        [HttpPost, Route("ProductTransferOrder"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ProductTransferOrder([FromBody] Root<ErpProductTransferOrderDTO> root)
        {
            WebResponseContent content = _outboundService.ErpProTransferOrderService.ProductTransferOrder(root.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
        /// <summary>
        /// 成品报废出库单接收
        /// </summary>
        /// <param name="root"></param>
        /// <returns></returns>
        [HttpPost, Route("ProductScrappedOrder"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ProductScrappedOrder([FromBody] Root<ErpProductScrappedOrderDTO> root)
        {
            return Instance.OK();
        }
        /// <summary>
        /// 成品领料出库单接收
        /// </summary>
        /// <param name="root"></param>
        /// <returns></returns>
        [HttpPost, Route("ProductOutOrder"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ProductOutOrder([FromBody] Root<ErpProOutLingOrder> root)
        {
            return Instance.OK();
        }
        /// <summary>
        /// 销售指派单接收
        /// </summary>
        [HttpPost, Route("ProductSpecifyVer"), AllowAnonymous, MethodParamsValidate]
        public async Task<ErpResponseContent> ProductSpecifyVerAsync([FromBody] Root<ErpProductSpecifyVerDTO> root)
        {
            var content = await _outboundService.ProOutOrderService.ProductSpecifyVer(root.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
        /// <summary>
        /// 接收ERP退料单信息
        /// </summary>
        [HttpPost, Route("ReturnOrder"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ReturnOrder([FromBody] Root<ErpReturnOrderDTO> model)
        {
            WebResponseContent content = _returnOrderService.ReturnOrder(model.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
        /// <summary>
        /// 其他入库单接收(调拔入仓,客供回收,物料销售退货)
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("ReceiveWarehousingOrder"), AllowAnonymous, MethodParamsValidate]
        public ErpResponseContent ReceiveWarehousingOrder([FromBody] Root<ErpInOrderDTO> model)
        {
            WebResponseContent content = _inboundService.InbounOrderService.ReceiveWarehousingOrder(model.Content);
            if (content.Status) return Instance.OK();
            else return Instance.Error(content.Message);
        }
        /// <summary>
        /// 推送ERP出库
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("InvokeOutStandardsApi"), AllowAnonymous]
        public string InvokeOutStandardsApi([FromBody] ERPIssueModel issueModel)
        {
            return _invokeERPService.InvokeOutStandardsApi(issueModel);
        }
        /// <summary>
        /// 推送ERP收货
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("InvokeMatReceiveApi"), AllowAnonymous]
        public string InvokeMatReceiveApi([FromBody]ERPReceiveModel receiveModel)
        {
            return _invokeERPService.InvokeMatReceiveApi(receiveModel);
        }
        /// <summary>
        /// 推送ERP来料IQC质检
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("InvokeCheckOrderApi"), AllowAnonymous]
        public string InvokeCheckOrderApi(ERPCheckModel checkModel)
        {
            return _invokeERPService.InvokeCheckOrderApi(checkModel);
        }
        /// <summary>
        /// 推送ERP入库
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("InvokeInboundOrderApi"), AllowAnonymous]
        public string InvokeInboundOrderApi([FromBody]ERPInboundModel inboundModel)
        {
            return _invokeERPService.InvokeInboundOrderApi(inboundModel);
        }
        /// <summary>
        /// 推送ERP退料上报
        /// </summary>
        [HttpPost, Route("InvokeReturnApi"), AllowAnonymous]
        public string InvokeReturnApi([FromBody] ERPReturnModel returnModel)
        {
            return _invokeERPService.InvokeReturnApi(returnModel);
        }
        /// <summary>
        /// ERP盘赢/亏上报接口调用
        /// </summary>
        [HttpPost, Route("InvokeTakeStockApi"), AllowAnonymous]
        public string InvokeTakeStockApi([FromBody] ERPTakeStockModel takeModel)
        {
            return _invokeERPService.InvokeTakeStockApi(takeModel);
        }
        /// <summary>
        /// ERP成品入库上报接口调用
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("InvokeProInApi"), AllowAnonymous]
        public string InvokeProInApi([FromBody] ERPProInboundModel inboundModel)
        {
            return _invokeERPService.InvokeProInApi(inboundModel);
        }
        /// <summary>
        /// ERP成品出库上报接口调用
        /// </summary>
        [HttpPost, Route("InvokeProOutApi"), AllowAnonymous]
        public string InvokeProOutApi([FromBody] ERPProOutOrderModel outOrderModel)
        {
            return _invokeERPService.InvokeProOutApi(outOrderModel);
        }
        /// <summary>
        /// 成品仓检报废出库推送ERP
        /// </summary>
        /// <param name="checkModel"></param>
        /// <returns></returns>
        [HttpPost, Route("InvokeProCheckApi"), AllowAnonymous]
        public string InvokeProCheckApi([FromBody] ERPProductCheckModel checkModel)
        {
            return _invokeERPService.InvokeProCheckApi(checkModel);
        }
        /// <summary>
        /// 成品超周期报废推送ERp
        /// </summary>
        /// <param name="sheetModel"></param>
        /// <returns></returns>
        [HttpPost, Route("InvokeProScrapSheetApi"), AllowAnonymous]
        public string InvokeProScrapSheetApi([FromBody] ERPScrapSheetModel sheetModel)
        {
            return _invokeERPService.InvokeProScrapSheetApi(sheetModel);
        }
        /// <summary>
        /// 成品盘点盘赢/盘亏
        /// </summary>
        /// <param name="stockCheckModel"></param>
        /// <returns></returns>
        [HttpPost, Route("InvokeProStockCheckApi"), AllowAnonymous]
        public string InvokeProStockCheckApi([FromBody] ERPProStockCheckModel stockCheckModel)
        {
            return _invokeERPService.InvokeProStockCheckApi(stockCheckModel);
        }
        /// <summary>
        /// 查询销售ERP客户
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("InvokeProSaleCustomer"), AllowAnonymous]
        public string InvokeProSaleCustomer(string saleOrder)
        {
            return _invokeERPService.InvokeProSaleCustomer(saleOrder);
        }
        /// <summary>
        /// 查询销售ERP客户
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("InvokeOutProErpSync"), AllowAnonymous]
        public string InvokeOutProErpSync(string outProOrderNo)
        {
            return _invokeERPService.InvokeOutProErpSync(outProOrderNo);
        }
        /// <summary>
        /// ERP成品入库产品型号面积查询
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("InvokeProInErpStatic"), AllowAnonymous]
        public string InvokeProInErpStatic(string partNum, string partNumWithRev)
        {
            return _invokeERPService.InvokeProInErpStatic(partNum, partNumWithRev);
        }
    }
}