|
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
|
package com.huaheng.api.erp.service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import com.alibaba.fastjson.JSONObject;
import com.huaheng.api.erp.domainBack.*;
import com.huaheng.api.erp.domainBack.finishedR.ParameterFinished;
import com.huaheng.api.erp.domainBack.inventoryScrapC.ParameterInventoryScrap;
import com.huaheng.api.erp.domainBack.issuanceC.ParameterIssuance;
import com.huaheng.api.erp.domainBack.miscellaneousR.ParameterMiscellaneous;
import com.huaheng.api.erp.domainBack.noticeWmsC.ParameterNotice;
import com.huaheng.api.erp.domainBack.purchaseWmsR.ParameterPurchase;
import com.huaheng.api.erp.domainBack.saleR.Parameter;
import com.huaheng.api.erp.domainBack.scrapC.ParameterScrap;
import com.huaheng.api.erp.domainBack.shipmentWmsC.ParameterShipmentWms;
import com.huaheng.api.erp.domainBack.transferD.ParameterTransfer;
import com.huaheng.api.erp.domainBack.warehouseC.ParameterWarehouse;
import com.huaheng.common.utils.DateUtils;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.Wrappers;
import com.huaheng.framework.web.domain.ResultErpBack;
|
|
26
|
import com.huaheng.pc.config.address.domain.Address;
|
|
27
28
|
import com.huaheng.pc.srm.domain.SrmDetail;
import com.huaheng.pc.srm.domain.SrmHeader;
|
|
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
|
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.CallBack;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.huaheng.api.erp.domain.*;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.http.OkHttpUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.domain.ResultErp;
import com.huaheng.pc.config.address.service.AddressService;
import com.huaheng.pc.config.company.domain.Company;
import com.huaheng.pc.config.company.service.CompanyService;
import com.huaheng.pc.config.customer.domain.Customer;
import com.huaheng.pc.config.customer.service.CustomerServiceImpl;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.supplier.domain.Supplier;
import com.huaheng.pc.config.supplier.service.SupplierService;
import com.huaheng.pc.config.warehouse.service.WarehouseService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.receipt.receiptHeaderHistory.service.ReceiptHeaderHistoryService;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
import com.huaheng.pc.system.user.service.IUserService;
/**
* @author 游杰
*/
@Service
public class ErpBackServiceImpl implements IErpBackService {
@Resource
private IErpBackTypeService erpBackTypeService;
@Resource
private ReceiptHeaderService receiptHeaderService;
@Resource
private ShipmentHeaderService shipmentHeaderService;
@Resource
private ShipmentDetailService shipmentDetailService;
|
|
84
85
|
@Resource
private ReceiptDetailService receiptDetailService;
|
|
86
87
88
89
90
91
92
93
94
|
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private TaskDetailService taskDetailService;
@Resource
private AddressService addressService;
@Resource
private ErpBackUpdateStatusServiceImpl erpBackUpdateStatusService;
|
|
95
96
|
@Resource
private CompanyService companyService;
|
|
97
98
|
|
|
99
100
101
102
103
104
105
106
|
/**
* 任务回传:
* 单据回传:
* 销退单(入)、超领单(出)、退料单(入)、完工入库单(入)、杂收单(入)、
* 下阶料报废(出)、调拨单(出入)、杂发单(出)、库存报废(出)、仓退单(出)、成套发料(出)、
* @param taskHeader
* @return
*/
|
|
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
|
public AjaxResult setErpBackData(TaskHeader taskHeader){
TaskHeader task = taskHeaderService.getById(taskHeader.getId());
if(task==null){
// throw new ServiceException("任务信息为空");
return AjaxResult.error("任务信息为空");
}
switch (task.getTaskType()){
case QuantityConstant.TASK_TYPE_WHOLERECEIPT:
case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT:
break;
case QuantityConstant.TASK_TYPE_WHOLESHIPMENT:
case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT:
break;
default:
TaskHeader taskHeader1=new TaskHeader();
taskHeader1.setId(task.getId());
taskHeader1.setBackInfo("无需回传");
taskHeader1.setIsReturn(2);
taskHeaderService.updateById(taskHeader1);
return AjaxResult.success("无需回传");
}
List<TaskDetail> taskDetails = taskDetailService.findByTaskId(task.getId());
if(taskDetails==null || taskDetails.size()==0){
throw new ServiceException("找不到任务id为:"+task.getId()+"的任务,没有任务明细");
}
|
|
133
|
|
|
134
|
Address address=addressService.selectAddressByParam("ERP",task.getWarehouseCode());
|
|
135
136
137
138
139
|
List<String> billCodes = taskDetails.stream().map(TaskDetail::getBillCode).collect(Collectors.toList());
List<BackTaskStatus> backTaskStatusList=null;
switch(task.getInternalTaskType()){
case 100:
|
|
140
|
backTaskStatusList=createReceiptBack(task,billCodes,address.getUrl(),address.getUserDef2());
|
|
141
142
|
break;
case 200:
|
|
143
|
backTaskStatusList=createShipmentBack(task,billCodes,address.getUrl(),address.getUserDef2());
|
|
144
145
146
147
148
149
150
151
|
break;
default:
break;
}
//修改入库单、出库单状态,任务头状态
AjaxResult ajaxResult=erpBackUpdateStatusService.backTaskUpdateStatus(task,backTaskStatusList);
return ajaxResult;
|
|
152
|
// return AjaxResult.success("回传成功");
|
|
153
154
|
}
|
|
155
156
|
/**
* 整单回传
|
|
157
|
* 销退单(入)、调拨单(出入)、退料单(入)、完工入库单(入)、杂收单(入)、多角采购(入)
|
|
158
159
160
161
162
163
|
* 整单回传的单据:查询该入库单详情是否都已完成,都完成则回传,否则不回传
* @param task
* @param billCodes
* @param url
* @return
*/
|
|
164
165
|
//根据任务详情的入库单号,查找单据类型,回传到erp
@Transactional(rollbackFor = Exception.class)
|
|
166
|
public List<BackTaskStatus> createReceiptBack( TaskHeader task,List<String> billCodes,String url,String datakeyEntId){
|
|
167
168
169
170
171
172
173
174
|
LambdaQueryWrapper<ReceiptHeader> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.in(ReceiptHeader::getCode,billCodes)
.eq(ReceiptHeader::getWarehouseCode,task.getWarehouseCode());
//获取任务中的入库单
List<ReceiptHeader> list = receiptHeaderService.list(queryWrapper);
//Integer 3无需回传,2回传成功,1回传失败
List<BackTaskStatus> backTaskStatusList=new ArrayList<>();
for (ReceiptHeader receiptHeader : list) {
|
|
175
|
Company company=companyService.getCompanyByCode(receiptHeader.getCompanyCode(),receiptHeader.getWarehouseCode());
|
|
176
177
|
//获取未回传任务集
List<TaskDetail> unBackTask = getUnBackTask(receiptHeader.getCode(),receiptHeader.getWarehouseCode(),task.getId());
|
|
178
|
List<TaskDetail> unBackTaskReturn =unBackTask;
|
|
179
|
if(unBackTask.size()==0){
|
|
180
181
182
183
184
185
186
|
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(receiptHeader.getCode());
backTaskStatus.setBillId(receiptHeader.getId());
backTaskStatus.setStatus(QuantityConstant.ISRETURN_SUCC);
backTaskStatus.setMsg("过账成功");
backTaskStatus.setIsSuccess(true);
backTaskStatusList.add(backTaskStatus);
|
|
187
188
189
190
191
|
if(StringUtils.isNotEmpty(receiptHeader.getBackMsg())){
receiptHeader.setBackMsg(receiptHeader.getBackMsg());
}else{
receiptHeader.setBackMsg("过账成功");
}
|
|
192
|
receiptHeaderService.updateById(receiptHeader);
|
|
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
continue;
}
if(StringUtils.isEmpty(receiptHeader.getReferCode())){
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(receiptHeader.getCode());
backTaskStatus.setBillId(receiptHeader.getId());
backTaskStatus.setStatus(QuantityConstant.NOT_RETURN);
backTaskStatus.setMsg("无需回传");
backTaskStatus.setIsSuccess(true);
backTaskStatusList.add(backTaskStatus);
receiptHeader.setBackMsg("无需回传");
receiptHeaderService.updateById(receiptHeader);
continue;
}
if(taskAllComplete(receiptHeader.getCode(),receiptHeader.getWarehouseCode(),task.getId())){
//同一个单据该任务还有未完成的
continue;
}
|
|
211
212
213
214
215
216
217
218
|
Set<Integer> uniqueTaskIds =new LinkedHashSet<>();
switch (receiptHeader.getReceiptType()){
case QuantityConstant.SALES_R:
case QuantityConstant.TRANSFER_R:
case QuantityConstant.RETURN_R:
case QuantityConstant.FINISHED_R:
case QuantityConstant.MISCELLANEOUS_R:
case QuantityConstant.WAREHOUSE_R:
|
|
219
|
case QuantityConstant.PUR_R:
|
|
220
221
222
223
|
if(receiptAllComplete(receiptHeader.getId(),receiptHeader.getWarehouseCode())){
//同一个单据该任务还有未完成的
continue;
}
|
|
224
225
226
227
228
|
//先查taskdetail表还有该单据未完成任务的,再查下该单据完成任务没回传的
List<TaskDetail> unCompaleteTask1 = getUnBackTaskBill(receiptHeader.getCode(),receiptHeader.getWarehouseCode());
if(unCompaleteTask1.size()>0){
continue;
}
|
|
229
230
231
232
233
|
//获取未回传任务集
unBackTask = getUnBackTask(receiptHeader.getCode(),receiptHeader.getWarehouseCode(),null);
if(unBackTask.size()==0){
continue;
}
|
|
234
235
|
//将t100相同序号的汇总,整单回传的写到整单里面
unBackTaskReturn=erpBackTypeService.allReceiptTask(receiptHeader,unBackTask);
|
|
236
237
238
239
240
241
242
243
|
uniqueTaskIds = unBackTask.stream()
.map(TaskDetail::getTaskId)
.collect(Collectors.toSet());
break;
default:
break;
}
|
|
244
245
|
// AjaxResult ajaxResult=getBackDataReceipt(receiptHeader,unBackTask,datakeyEntId);
AjaxResult ajaxResult=getBackDataReceipt(receiptHeader,unBackTaskReturn,datakeyEntId);
|
|
246
|
if(ajaxResult.hasErr()){
|
|
247
248
249
250
251
252
253
|
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(receiptHeader.getCode());
backTaskStatus.setBillId(receiptHeader.getId());
backTaskStatus.setStatus(QuantityConstant.NOT_RETURN);
backTaskStatus.setMsg("无需回传");
backTaskStatus.setIsSuccess(true);
backTaskStatusList.add(backTaskStatus);
|
|
254
255
256
|
continue;
}
//给erp回传数据
|
|
257
|
AjaxResult ajaxResult1=sendDataToERP(ajaxResult,url,task.getWarehouseCode(),datakeyEntId,company.getErpCompany());
|
|
258
|
// AjaxResult ajaxResult1=AjaxResult.success("过账成功");
|
|
259
|
if(!ajaxResult1.hasErr()){
|
|
260
|
List<TaskDetail> unBackTaskUpdate=new ArrayList<>();
|
|
261
|
for (TaskDetail taskDetail : unBackTask) {
|
|
262
263
264
265
|
TaskDetail taskDetail1=new TaskDetail();
taskDetail1.setId(taskDetail.getId());
taskDetail1.setBack(1);
unBackTaskUpdate.add(taskDetail1);
|
|
266
|
}
|
|
267
|
taskDetailService.updateBatchById(unBackTaskUpdate);
|
|
268
269
270
271
272
|
//更改入库单明细表回传数
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(receiptHeader.getCode());
backTaskStatus.setBillId(receiptHeader.getId());
backTaskStatus.setStatus(QuantityConstant.ISRETURN_SUCC);
|
|
273
|
backTaskStatus.setTaskIds(uniqueTaskIds);
|
|
274
275
276
277
278
|
backTaskStatus.setMsg(ajaxResult1.getMsg());
backTaskStatus.setIsSuccess(true);
backTaskStatusList.add(backTaskStatus);
}
if(ajaxResult1.hasErr()){
|
|
279
280
|
// receiptHeader.setBackMsg(receiptHeader.getBackMsg()+",失败");
// receiptHeaderService.updateById(receiptHeader);
|
|
281
282
283
284
285
286
287
288
289
290
291
|
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(receiptHeader.getCode());
backTaskStatus.setBillId(receiptHeader.getId());
backTaskStatus.setStatus(QuantityConstant.ISRETURN_FAIL);
backTaskStatus.setIsSuccess(false);
backTaskStatus.setMsg(ajaxResult1.getMsg());
backTaskStatusList.add(backTaskStatus);
}
}
return backTaskStatusList;
}
|
|
292
293
294
295
296
297
298
299
300
301
|
/**
* 整单回传:
* 下阶料报废(出)、杂发单(出)、库存报废(出)、仓退单(出)、成套发料(出)、超领单(出)、
* * 整单回传的单据:查询该出库单详情是否都已完成,都完成则回传,否则不回传
* @param task
* @param billCodes
* @param url
* @return
*/
|
|
302
303
|
//根据任务详情的出库单号,查找单据类型,回传到erp
@Transactional(rollbackFor = Exception.class)
|
|
304
|
public List<BackTaskStatus> createShipmentBack( TaskHeader task,List<String> billCodes,String url,String datakeyEntId){
|
|
305
306
307
308
309
310
311
312
|
LambdaQueryWrapper<ShipmentHeader> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.in(ShipmentHeader::getCode,billCodes)
.eq(ShipmentHeader::getWarehouseCode,task.getWarehouseCode());
//获取任务中的出库单
List<ShipmentHeader> list = shipmentHeaderService.list(queryWrapper);
//Integer 3无需回传,2回传成功,1回传失败
List<BackTaskStatus> backTaskStatusList=new ArrayList<>();
for (ShipmentHeader shipmentHeader : list) {
|
|
313
|
Company company=companyService.getCompanyByCode(shipmentHeader.getCompanyCode(),shipmentHeader.getWarehouseCode());
|
|
314
|
if(StringUtils.isEmpty(shipmentHeader.getReferCode())||shipmentHeader.getShipmentType().equals(QuantityConstant.TRANSFER_C)){
|
|
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
|
shipmentHeader.setBackMsg("无需回传");
shipmentHeaderService.updateById(shipmentHeader);
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(shipmentHeader.getCode());
backTaskStatus.setBillId(shipmentHeader.getId());
backTaskStatus.setStatus(QuantityConstant.NOT_RETURN);
backTaskStatus.setMsg("无需回传");
backTaskStatus.setIsSuccess(true);
backTaskStatusList.add(backTaskStatus);
continue;
}
if(taskAllComplete(shipmentHeader.getCode(),shipmentHeader.getWarehouseCode(),task.getId())){
//同一个单据该任务还有未完成的
continue;
}
//获取未回传任务集
List<TaskDetail> unBackTask = getUnBackTask(shipmentHeader.getCode(),shipmentHeader.getWarehouseCode(),task.getId());
|
|
332
|
List<TaskDetail> unBackTaskReturn=unBackTask;
|
|
333
|
if(unBackTask.size()==0){
|
|
334
335
336
337
338
339
340
|
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(shipmentHeader.getCode());
backTaskStatus.setBillId(shipmentHeader.getId());
backTaskStatus.setStatus(QuantityConstant.ISRETURN_SUCC);
backTaskStatus.setMsg("过账成功");
backTaskStatus.setIsSuccess(true);
backTaskStatusList.add(backTaskStatus);
|
|
341
342
343
344
345
346
|
if(StringUtils.isNotEmpty(shipmentHeader.getBackMsg())){
shipmentHeader.setBackMsg(shipmentHeader.getBackMsg());
}else{
shipmentHeader.setBackMsg("过账成功");
}
// shipmentHeader.setBackMsg(shipmentHeader.getBackMsg()+",过账成功");
|
|
347
|
shipmentHeaderService.updateById(shipmentHeader);
|
|
348
349
|
continue;
}
|
|
350
351
352
353
354
355
356
357
358
359
360
361
|
Set<Integer> uniqueTaskIds =new LinkedHashSet<>();
switch (shipmentHeader.getShipmentType()){
case QuantityConstant.SCRAP_C:
case QuantityConstant.MISCELLANEOUS_C:
case QuantityConstant.INVENTORYSCRAP_C:
case QuantityConstant.ISSUANCE_C:
case QuantityConstant.OVER_C:
if(shipmentAllComplete(shipmentHeader.getId(),shipmentHeader.getWarehouseCode())){
//同一个单据该任务还有未完成的
continue;
}
|
|
362
363
364
365
366
|
//先查taskdetail表还有该单据未完成任务的,再查下该单据完成任务没回传的
List<TaskDetail> unCompaleteTask = getUnBackTaskBill(shipmentHeader.getCode(),shipmentHeader.getWarehouseCode());
if(unCompaleteTask.size()>0){
continue;
}
|
|
367
368
369
370
371
|
//获取未回传任务集
unBackTask = getUnBackTask(shipmentHeader.getCode(),shipmentHeader.getWarehouseCode(),null);
if(unBackTask.size()==0){
continue;
}
|
|
372
|
unBackTaskReturn=erpBackTypeService.allShipmentTask(shipmentHeader,unBackTask);
|
|
373
374
375
376
|
uniqueTaskIds = unBackTask.stream()
.map(TaskDetail::getTaskId)
.collect(Collectors.toSet());
break;
|
|
377
378
379
380
381
|
case QuantityConstant.NOTICE_C:
List<TaskDetail> taskDetails=getUnCompaleteTask(shipmentHeader.getCode(),shipmentHeader.getWarehouseCode(),null);
if(taskDetails.size()>0){
continue;
}
|
|
382
383
384
385
386
|
//先查taskdetail表还有该单据未完成任务的,再查下该单据完成任务没回传的
List<TaskDetail> unCompaleteTask1 = getUnBackTaskBill(shipmentHeader.getCode(),shipmentHeader.getWarehouseCode());
if(unCompaleteTask1.size()>0){
continue;
}
|
|
387
388
389
390
391
|
//获取未回传任务集
unBackTask = getUnBackTask(shipmentHeader.getCode(),shipmentHeader.getWarehouseCode(),null);
if(unBackTask.size()==0){
continue;
}
|
|
392
|
unBackTaskReturn=unBackTask;
|
|
393
394
395
396
|
uniqueTaskIds = unBackTask.stream()
.map(TaskDetail::getTaskId)
.collect(Collectors.toSet());
break;
|
|
397
398
399
|
default:
break;
}
|
|
400
401
|
// AjaxResult ajaxResult=getBackDataShipment(shipmentHeader,unBackTask,datakeyEntId);
AjaxResult ajaxResult=getBackDataShipment(shipmentHeader,unBackTaskReturn,datakeyEntId);
|
|
402
|
if(ajaxResult.hasErr()){
|
|
403
404
405
406
407
408
409
|
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(shipmentHeader.getCode());
backTaskStatus.setBillId(shipmentHeader.getId());
backTaskStatus.setStatus(QuantityConstant.NOT_RETURN);
backTaskStatus.setMsg("无需回传");
backTaskStatus.setIsSuccess(true);
backTaskStatusList.add(backTaskStatus);
|
|
410
411
|
continue;
}
|
|
412
|
AjaxResult ajaxResult1=sendDataToERP(ajaxResult,url,task.getWarehouseCode(),datakeyEntId,company.getErpCompany());
|
|
413
|
// AjaxResult ajaxResult1=AjaxResult.success("过账成功");
|
|
414
|
if(!ajaxResult1.hasErr()){
|
|
415
|
List<TaskDetail> unBackTaskUpdate=new ArrayList<>();
|
|
416
|
for (TaskDetail taskDetail : unBackTask) {
|
|
417
418
419
420
|
TaskDetail taskDetail1=new TaskDetail();
taskDetail1.setId(taskDetail.getId());
taskDetail1.setBack(1);
unBackTaskUpdate.add(taskDetail1);
|
|
421
|
}
|
|
422
|
taskDetailService.updateBatchById(unBackTaskUpdate);
|
|
423
424
425
426
427
|
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(shipmentHeader.getCode());
backTaskStatus.setBillId(shipmentHeader.getId());
backTaskStatus.setStatus(QuantityConstant.ISRETURN_SUCC);
backTaskStatus.setMsg(ajaxResult1.getMsg());
|
|
428
|
backTaskStatus.setTaskIds(uniqueTaskIds);
|
|
429
430
431
432
|
backTaskStatus.setIsSuccess(true);
backTaskStatusList.add(backTaskStatus);
}
if(ajaxResult1.hasErr()){
|
|
433
434
|
// shipmentHeader.setBackMsg(shipmentHeader.getBackMsg()+",失败");
// shipmentHeaderService.updateById(shipmentHeader);
|
|
435
436
437
438
439
440
441
442
443
444
445
|
BackTaskStatus backTaskStatus=new BackTaskStatus();
backTaskStatus.setBillCode(shipmentHeader.getCode());
backTaskStatus.setBillId(shipmentHeader.getId());
backTaskStatus.setStatus(QuantityConstant.ISRETURN_FAIL);
backTaskStatus.setMsg(ajaxResult1.getMsg());
backTaskStatus.setIsSuccess(false);
backTaskStatusList.add(backTaskStatus);
}
}
return backTaskStatusList;
}
|
|
446
447
448
449
450
451
452
453
|
/**
* 返回true则是还有未完成的,false则是空的
* @param billCode
* @param warehouseCode
* @param taskid
* @return
*/
|
|
454
455
456
457
458
459
460
461
462
|
public boolean taskAllComplete(String billCode,String warehouseCode,Integer taskid){
LambdaQueryWrapper<TaskDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(TaskDetail::getBillCode,billCode)
.eq(TaskDetail::getWarehouseCode,warehouseCode)
.eq(TaskDetail::getTaskId,taskid)
.lt(TaskDetail::getStatus,QuantityConstant.TASK_STATUS_COMPLETED);
List<TaskDetail> taskDetails = taskDetailService.list(queryWrapper);
return !taskDetails.isEmpty();
}
|
|
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
|
/**
* 检查该入库单是否有未完成的任务
* @param receiptId
* @param warehouseCode
* @return
*/
public boolean receiptAllComplete(Integer receiptId,String warehouseCode){
LambdaQueryWrapper<ReceiptDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(ReceiptDetail::getReceiptId,receiptId)
.eq(ReceiptDetail::getWarehouseCode,warehouseCode)
.lt(ReceiptDetail::getProcessStamp,QuantityConstant.RECEIPT_HEADER_POSTING);
List<ReceiptDetail> receiptDetailList = receiptDetailService.list(queryWrapper);
return !receiptDetailList.isEmpty();
}
/**
* 检查该出库单是否有未完成的任务
* @param shipmentId
* @param warehouseCode
* @return
*/
public boolean shipmentAllComplete(Integer shipmentId,String warehouseCode){
LambdaQueryWrapper<ShipmentDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(ShipmentDetail::getShipmentId,shipmentId)
.eq(ShipmentDetail::getWarehouseCode,warehouseCode)
.lt(ShipmentDetail::getStatus,QuantityConstant.SHIPMENT_HEADER_COMPLETED);
List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(queryWrapper);
return !shipmentDetailList.isEmpty();
}
|
|
491
492
493
494
|
public List<TaskDetail> getUnBackTask(String billCode,String warehouseCode,Integer taskid){
LambdaQueryWrapper<TaskDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(TaskDetail::getBillCode,billCode)
.eq(TaskDetail::getWarehouseCode,warehouseCode)
|
|
495
|
.eq(StringUtils.isNotNull(taskid),TaskDetail::getTaskId,taskid)
|
|
496
497
498
499
500
501
|
.eq(TaskDetail::getStatus,QuantityConstant.TASK_STATUS_COMPLETED)
.eq(TaskDetail::getBack,0);
List<TaskDetail> taskDetails = taskDetailService.list(queryWrapper);
return taskDetails;
}
|
|
502
503
504
505
506
507
508
509
510
|
public List<TaskDetail> getUnBackTaskBill(String billCode,String warehouseCode){
LambdaQueryWrapper<TaskDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(TaskDetail::getBillCode,billCode)
.eq(TaskDetail::getWarehouseCode,warehouseCode)
.lt(TaskDetail::getStatus,QuantityConstant.TASK_STATUS_COMPLETED);
List<TaskDetail> taskDetails = taskDetailService.list(queryWrapper);
return taskDetails;
}
|
|
511
512
513
514
515
516
517
518
519
520
|
public List<TaskDetail> getUnCompaleteTask(String billCode,String warehouseCode,Integer taskid){
LambdaQueryWrapper<TaskDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(TaskDetail::getBillCode,billCode)
.eq(TaskDetail::getWarehouseCode,warehouseCode)
.eq(StringUtils.isNotNull(taskid),TaskDetail::getTaskId,taskid)
.lt(TaskDetail::getStatus,QuantityConstant.TASK_STATUS_COMPLETED);
List<TaskDetail> taskDetails = taskDetailService.list(queryWrapper);
return taskDetails;
}
|
|
521
|
|
|
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
|
public Map<Integer, TaskDetail> combineTaskDetailByBill(List<TaskDetail> unBackTask){
Map<Integer, TaskDetail> detailsQtyMap =new HashMap<>();
for (TaskDetail taskDetail : unBackTask) {
TaskDetail taskDetail1=detailsQtyMap.get(taskDetail.getBillDetailId());
if(taskDetail1!=null){
BigDecimal bigDecimal =taskDetail1.getQty().add(taskDetail.getQty());
taskDetail1.setQty(bigDecimal);
detailsQtyMap.put(taskDetail.getBillDetailId(),taskDetail1);
}else{
detailsQtyMap.put(taskDetail.getBillDetailId(),taskDetail1);
}
}
return detailsQtyMap;
}
@Transactional(rollbackFor = Exception.class)
|
|
538
|
public AjaxResult getBackDataReceipt(ReceiptHeader receiptHeader,List<TaskDetail> unBackTask,String datakeyEntId){
|
|
539
540
541
542
543
544
545
546
547
548
549
|
//将相同入库详情id,BillDetailId的任务详情整合到一起;
// Map<Integer, TaskDetail> detailMap=combineTaskDetailByBill(unBackTask);
String receipttype=receiptHeader.getReceiptType();
ParameterApi parameterApi=new ParameterApi();
switch (receipttype){
case QuantityConstant.SALES_R:
Parameter parameter=erpBackTypeService.backSalesR(receiptHeader,unBackTask);
parameterApi.setApiName("ERP销退入库单回传");
parameterApi.setParameter(parameter);
parameterApi.setApiNameEn("SalesPost");
return AjaxResult.success().setData(parameterApi);
|
|
550
|
case QuantityConstant.MES_RECEIPT_TYPE_SI:
|
|
551
|
ParameterFinished parameterFinishedSI=erpBackTypeService.backFinishedR(receiptHeader,unBackTask,receipttype,datakeyEntId);
|
|
552
|
parameterApi.setApiName("ERP产成品入库单回传");
|
|
553
554
|
parameterApi.setParameter(parameterFinishedSI);
parameterApi.setApiNameEn("WorkOrderFinishCreate");
|
|
555
|
return AjaxResult.success().setData(parameterApi);
|
|
556
|
case QuantityConstant.PURCHASER_R:
|
|
557
|
ParameterPurchase parameterPurchaser=erpBackTypeService.backPurchaseR(receiptHeader,null,unBackTask,receipttype,datakeyEntId);
|
|
558
559
560
561
|
parameterApi.setApiName("ERP采购收货入库单回传");
parameterApi.setParameter(parameterPurchaser);
parameterApi.setApiNameEn("PurchaseDeliveryCreate");
return AjaxResult.success().setData(parameterApi);
|
|
562
|
case QuantityConstant.PURCHASE_R:
|
|
563
|
ParameterPurchase parameterPurchase=erpBackTypeService.backPurchaseR(receiptHeader,null,unBackTask,receipttype,datakeyEntId);
|
|
564
|
parameterApi.setApiName("ERP采购收货单入库单回传");
|
|
565
566
567
|
parameterApi.setParameter(parameterPurchase);
parameterApi.setApiNameEn("PurchaseDeliveryCreate");
return AjaxResult.success().setData(parameterApi);
|
|
568
|
case QuantityConstant.OUTSOURCED_R:
|
|
569
|
ParameterPurchase parameterPurchased=erpBackTypeService.backPurchaseR(receiptHeader,null,unBackTask,receipttype,datakeyEntId);
|
|
570
571
572
573
|
parameterApi.setApiName("ERP委外收货单入库单回传");
parameterApi.setParameter(parameterPurchased);
parameterApi.setApiNameEn("PurchaseDeliveryCreate");
return AjaxResult.success().setData(parameterApi);
|
|
574
|
case QuantityConstant.FINISHED_R:
|
|
575
|
ParameterFinished parameterFinished=erpBackTypeService.backFinishedR(receiptHeader,unBackTask,receipttype,datakeyEntId);
|
|
576
577
578
579
580
581
582
583
|
parameterApi.setApiName("ERP完工入库单回传");
parameterApi.setParameter(parameterFinished);
parameterApi.setApiNameEn("WorkOrderFinishPost");
return AjaxResult.success().setData(parameterApi);
case QuantityConstant.MISCELLANEOUS_R:
ParameterMiscellaneous parameterMiscellaneous=erpBackTypeService.backMisceLLaneousC(receiptHeader,null,unBackTask);
parameterApi.setApiName("ERP杂收入库单回传");
parameterApi.setParameter(parameterMiscellaneous);
|
|
584
|
parameterApi.setApiNameEn("ReceiveDispatchPostS");
|
|
585
586
587
588
589
|
return AjaxResult.success().setData(parameterApi);
case QuantityConstant.RETURN_R:
ParameterIssuance parameterIssuance=erpBackTypeService.backIssuanceC(receiptHeader,null,unBackTask);
parameterApi.setApiName("ERP退料入库单回传");
parameterApi.setParameter(parameterIssuance);
|
|
590
591
|
parameterApi.setApiNameEn("WorkOrderIssuePost");
return AjaxResult.success().setData(parameterApi);
|
|
592
593
594
595
596
597
|
case QuantityConstant.OVER_R:
ParameterIssuance parameterIssuance1=erpBackTypeService.backIssuanceC(receiptHeader,null,unBackTask);
parameterApi.setApiName("ERP超领退料单回传");
parameterApi.setParameter(parameterIssuance1);
parameterApi.setApiNameEn("WorkOrderIssuePost");
return AjaxResult.success().setData(parameterApi);
|
|
598
|
case QuantityConstant.WAREHOUSE_R:
|
|
599
|
ParameterPurchase parameterPurchase1=erpBackTypeService.backPurchaseR(receiptHeader,null,unBackTask,receipttype,datakeyEntId);
|
|
600
|
parameterApi.setApiName("ERP仓退入库回传");
|
|
601
602
|
parameterApi.setParameter(parameterPurchase1);
parameterApi.setApiNameEn("PurchaseDeliveryPost");
|
|
603
604
605
606
607
|
return AjaxResult.success().setData(parameterApi);
case QuantityConstant.TRANSFER_R:
ParameterTransfer parameterTransfer=erpBackTypeService.backTransferC(receiptHeader,unBackTask);
parameterApi.setApiName("ERP调拨单回传");
parameterApi.setParameter(parameterTransfer);
|
|
608
|
parameterApi.setApiNameEn("RequisitionNotePost");
|
|
609
|
return AjaxResult.success().setData(parameterApi);
|
|
610
611
612
613
614
615
|
case QuantityConstant.PUR_R:
ParameterPurchase parameterPurchase2=erpBackTypeService.backPurR(receiptHeader,unBackTask);
parameterApi.setApiName("ERP多角采购回传");
parameterApi.setParameter(parameterPurchase2);
parameterApi.setApiNameEn("PurchaseReceiptPost");
return AjaxResult.success().setData(parameterApi);
|
|
616
|
default:
|
|
617
|
return AjaxResult.error("单据类型不用回传");
|
|
618
619
620
621
622
|
}
}
@Transactional(rollbackFor = Exception.class)
|
|
623
|
public AjaxResult getBackDataShipment(ShipmentHeader shipmentHeader,List<TaskDetail> unBackTask,String datakeyEntId){
|
|
624
625
626
627
|
String shipmenttype=shipmentHeader.getShipmentType();
ParameterApi parameterApi=new ParameterApi();
switch (shipmenttype){
case QuantityConstant.NOTICE_C:
|
|
628
|
ParameterShipmentWms parameter=erpBackTypeService.backShipmentWmsC(null,shipmentHeader,unBackTask,datakeyEntId);
|
|
629
630
631
|
parameterApi.setApiName("ERP出货通知单回传");
parameterApi.setParameter(parameter);
parameterApi.setApiNameEn("DeliveryOrderCreate");
|
|
632
|
parameterApi.setAcct(parameter.getMaster().get(0).getXmdkcnfid());
|
|
633
634
635
636
637
|
return AjaxResult.success().setData(parameterApi);
case QuantityConstant.MISCELLANEOUS_C:
ParameterMiscellaneous parameterMiscellaneous=erpBackTypeService.backMisceLLaneousC(null,shipmentHeader,unBackTask);
parameterApi.setApiName("ERP杂发出库回传");
parameterApi.setParameter(parameterMiscellaneous);
|
|
638
|
parameterApi.setApiNameEn("ReceiveDispatchPostF");
|
|
639
|
return AjaxResult.success().setData(parameterApi);
|
|
640
641
642
643
644
645
|
case QuantityConstant.ISSUANCE_C:
ParameterIssuance parameterIssuance=erpBackTypeService.backIssuanceC(null,shipmentHeader,unBackTask);
parameterApi.setApiName("ERP成套发料出库回传");
parameterApi.setParameter(parameterIssuance);
parameterApi.setApiNameEn("WorkOrderIssuePost");
return AjaxResult.success().setData(parameterApi);
|
|
646
647
648
649
|
case QuantityConstant.OVER_C:
ParameterIssuance parameterIssuance1=erpBackTypeService.backIssuanceC(null,shipmentHeader,unBackTask);
parameterApi.setApiName("ERP超领出库回传");
parameterApi.setParameter(parameterIssuance1);
|
|
650
|
parameterApi.setApiNameEn("WorkOrderOverPost");
|
|
651
652
653
654
655
|
return AjaxResult.success().setData(parameterApi);
case QuantityConstant.SCRAP_C:
ParameterScrap parameterScrap=erpBackTypeService.backScrapC(shipmentHeader,unBackTask);
parameterApi.setApiName("ERP下阶料报废出库回传");
parameterApi.setParameter(parameterScrap);
|
|
656
|
parameterApi.setApiNameEn("NextLevelMaterialPost");
|
|
657
658
659
660
661
|
return AjaxResult.success().setData(parameterApi);
case QuantityConstant.INVENTORYSCRAP_C:
ParameterInventoryScrap parameterInventoryScrap=erpBackTypeService.backInventoryScrapC(shipmentHeader,unBackTask);
parameterApi.setApiName("ERP库存报废出库回传");
parameterApi.setParameter(parameterInventoryScrap);
|
|
662
|
parameterApi.setApiNameEn("InventoryScrapFormPost");
|
|
663
|
return AjaxResult.success().setData(parameterApi);
|
|
664
665
|
case QuantityConstant.TRANSFER_C:
return AjaxResult.error("单据类型不用回传");
|
|
666
|
default:
|
|
667
|
return AjaxResult.error("单据类型不用回传");
|
|
668
669
|
}
}
|
|
670
|
public SendOut createSendOut( Payload payload,String api,String datakeyEntId,String datakeyCompanyId){
|
|
671
672
673
674
675
|
SendOut sendOut=new SendOut();
Host host=new Host();
ErpService service=new ErpService();
service.setName(api);
Datakey datakey=new Datakey();
|
|
676
677
|
datakey.setEntId(datakeyEntId);
datakey.setCompanyId(datakeyCompanyId);
|
|
678
679
680
681
682
683
684
685
686
687
|
host.setTimestamp(DateUtils.getNowTime());
sendOut.setHost(host);
sendOut.setService(service);
sendOut.setDatakey(datakey);
sendOut.setPayload(payload);
return sendOut;
}
|
|
688
|
public AjaxResult sendDataToERP(AjaxResult ajaxResult,String url,String warehouseCode,String datakeyEntId,String datakeyCompanyId){
|
|
689
690
691
692
693
694
|
Payload payload=new Payload();
StdData stdData=new StdData();
ParameterApi parameterApi=(ParameterApi)ajaxResult.getData();
stdData.setParameter(parameterApi.getParameter());
payload.setStd_data(stdData);
//构建回传体
|
|
695
|
SendOut sendOut=createSendOut(payload,parameterApi.getApiNameEn(),datakeyEntId,datakeyCompanyId);
|
|
696
|
|
|
697
698
|
if(StringUtils.isNotEmpty(parameterApi.getApiNameEn())&&
parameterApi.getApiNameEn().equals("DeliveryOrderCreate")){
|
|
699
|
if(StringUtils.isNotEmpty(parameterApi.getAcct())){
|
|
700
|
sendOut.getHost().setAcct(parameterApi.getAcct().toLowerCase());
|
|
701
702
|
}
}
|
|
703
|
|
|
704
|
String jsonString = JSONObject.toJSONString(sendOut);
|
|
705
|
String result=OkHttpUtils.bodypost(url,jsonString,warehouseCode,parameterApi.getApiName());
|
|
706
|
if (StringUtils.isEmpty(result)) {
|
|
707
|
return AjaxResult.error("ERP接口地址错误或服务器连接不到或返回为空");
|
|
708
709
710
711
712
713
714
715
716
|
}
ResultErpBack ajaxResult1 = JSON.parseObject(result, ResultErpBack.class);
return ajaxResult1.responseAnalyz();
// if(ajaxResult1.responseAnalyz().hasErr()){
// return AjaxResult.error(ajaxResult1.responseAnalyz().getMsg());
// }
// return AjaxResult.success(ajaxResult1.responseAnalyz().getMsg());
}
|
|
717
718
|
public AjaxResult createErpYanTui(List<SrmDetail> details, SrmHeader srmHeader){
|
|
719
720
|
Address address=addressService.selectAddressByParam("ERP",srmHeader.getWarehouseCode());
ParameterPurchase parameterPurchase=erpBackTypeService.backYanTuiR(srmHeader,details,address.getUserDef2());
|
|
721
722
723
724
725
726
|
ParameterApi parameterApi=new ParameterApi();
parameterApi.setApiName("ERP销退入库单回传");
parameterApi.setParameter(parameterPurchase);
parameterApi.setApiNameEn("PurchaseDeliveryCreate");
AjaxResult ajaxResult=AjaxResult.success().setData(parameterApi);
|
|
727
|
|
|
728
|
String companyCode=details.get(0).getCompanyCode();
|
|
729
|
Company company=companyService.getCompanyByU8Code(companyCode);
|
|
730
|
AjaxResult ajaxResult1=sendDataToERP(ajaxResult,address.getUrl(),srmHeader.getWarehouseCode(),address.getUserDef2(),company.getErpCompany());
|
|
731
732
733
734
|
return ajaxResult1;
}
|
|
735
|
}
|