|
1
2
3
|
package com.huaheng.pc.u8.service;
|
|
4
5
|
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
|
|
6
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
7
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
8
9
10
11
12
13
14
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.general.domain.ReceiptDomain;
import com.huaheng.api.general.service.ReceiptApiService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.DateUtils;
import com.huaheng.common.utils.StringUtils;
|
|
15
|
import com.huaheng.common.utils.http.HttpUtils;
|
|
16
|
import com.huaheng.framework.web.domain.AjaxResult;
|
|
17
18
|
import com.huaheng.pc.config.address.service.AddressService;
import com.huaheng.pc.config.company.domain.CompanyU8;
|
|
19
|
import com.huaheng.pc.config.company.service.CompanyService;
|
|
20
|
import com.huaheng.pc.config.company.service.CompanyU8Service;
|
|
21
22
23
|
import com.huaheng.pc.config.documentWarning.service.IDocumentWarningService;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
|
|
24
|
import com.huaheng.pc.config.warehouse.domain.Warehouse;
|
|
25
26
27
28
29
30
31
32
33
34
|
import com.huaheng.pc.config.warehouse.domain.WarehouseU8;
import com.huaheng.pc.config.warehouse.service.WarehouseService;
import com.huaheng.pc.config.warehouse.service.WarehouseU8Service;
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
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;
|
|
35
36
|
import com.huaheng.pc.referenceCode.domain.U8Reference;
import com.huaheng.pc.referenceCode.service.U8ReferenceService;
|
|
37
38
39
|
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
|
|
40
41
42
|
import com.huaheng.pc.u8.domain.ICSReceiptDetail;
import com.huaheng.pc.u8.domain.ICSReceiptHeader;
import com.huaheng.pc.u8.domain.ICSReceiptModel;
|
|
43
44
45
46
47
|
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
|
|
48
|
import java.math.BigDecimal;
|
|
49
|
import java.text.ParseException;
|
|
50
|
import java.util.*;
|
|
51
|
import java.util.stream.Collectors;
|
|
52
53
54
55
|
/**
* u8-wms入库下发或回传接口服务层
*
|
|
56
57
|
* @author huaheng
* @date 2019-1-4
|
|
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
|
*/
@Service
public class ICSReceiptAPIService {
@Resource
private WarehouseU8Service warehouseU8Service;
@Resource
private WarehouseService warehouseService;
@Resource
private CompanyService companyService;
@Resource
private IDocumentWarningService documentWarningService;
@Resource
private ICSReceiptHeaderService icsReceiptHeaderService;
@Resource
private ICSReceiptDetailService icsReceiptDetailService;
@Resource
private ReceiptHeaderService receiptHeaderService;
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private ReceiptContainerHeaderService receiptContainerHeaderService;
@Resource
private ReceiptContainerDetailService receiptContainerDetailService;
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private TaskDetailService taskDetailService;
@Resource
private MaterialService materialService;
@Resource
private ReceiptApiService receiptApiService;
|
|
91
92
93
94
|
@Resource
private CompanyU8Service companyU8Service;
@Resource
private AddressService addressService;
|
|
95
96
|
@Resource
private U8ReferenceService u8ReferenceService;
|
|
97
98
99
100
101
102
|
//入库单下发
//采购入库
@Transactional
public AjaxResult procureReceipt(@RequestBody ICSReceiptModel icsReceiptModel) {
|
|
103
|
icsReceiptModel = assign(icsReceiptModel);
|
|
104
105
|
ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
|
|
106
|
|
|
107
|
//是否更新
|
|
108
|
if (StringUtils.isEmpty(icsReceiptHeader.getIsNew())) {
|
|
109
110
|
return AjaxResult.error("isNew为空");
}
|
|
111
112
113
|
boolean isFlag = "0".equals(icsReceiptHeader.getIsNew()) ? true : false;
//仓库编码
String currentWarehouseCode = icsReceiptHeader.getWarehouseCode();
|
|
114
|
if (StringUtils.isEmpty(currentWarehouseCode)) {
|
|
115
116
117
|
return AjaxResult.error("仓库编码warehouseCode:不能为空");
}
//入库类型
|
|
118
|
String type = icsReceiptHeader.getType();
|
|
119
120
|
if (receiptTypeCheck(type)) {
return AjaxResult.error("入库类型不匹配");
|
|
121
|
}
|
|
122
|
String typeName = getReceiptTypeName(type);
|
|
123
|
String stock = icsReceiptHeader.getStock();
|
|
124
125
|
//U8companyCode
String U8CompanyCode = icsReceiptHeader.getCompanyCode();
|
|
126
|
//判断U8货主
|
|
127
|
CompanyU8 companyU8 = companyU8Service.getCompanyByU8CodeWarehouseCode(U8CompanyCode, currentWarehouseCode);
|
|
128
129
|
if (companyU8 == null) {
return AjaxResult.error("系统没有此货主:【" + U8CompanyCode + "】");
|
|
130
|
}
|
|
131
132
|
companyService.checkwarehouseCompany(companyU8.getCompanyCode());
//判断U8仓库
|
|
133
|
if (!StringUtils.isEmpty(stock)) {
|
|
134
|
LambdaQueryWrapper<WarehouseU8> queryWrapper = Wrappers.lambdaQuery();
|
|
135
136
|
queryWrapper.eq(WarehouseU8::getUCompanyCode, icsReceiptHeader.getCompanyCode())
.eq(WarehouseU8::getUWarehouseCode, stock);
|
|
137
|
WarehouseU8 one = warehouseU8Service.getOne(queryWrapper);
|
|
138
139
|
if (one == null) {
return AjaxResult.error("系统没有此仓库:【" + stock + "】");
|
|
140
141
|
}
}
|
|
142
143
144
145
146
147
148
|
//u8关联表 检查上游单号是否重复
U8Reference one = u8ReferenceService.getOne(new LambdaQueryWrapper<U8Reference>()
.eq(U8Reference::getReferCode, icsReceiptHeader.getReferCode())
.eq(U8Reference::getReferType, icsReceiptHeader.getType())
.eq(U8Reference::getWarehouseCode, currentWarehouseCode));
//入库单表 检查上游单号是否重复
ReceiptHeader receiptHeader1 = receiptHeaderService.getOne(new LambdaQueryWrapper<ReceiptHeader>()
|
|
149
150
|
.eq(ReceiptHeader::getReferCode, icsReceiptHeader.getReferCode())
.eq(ReceiptHeader::getWarehouseCode, icsReceiptHeader.getWarehouseCode()));
|
|
151
152
|
if (one != null && !isFlag && receiptHeader1 != null) {
return AjaxResult.error(typeName + ":请不要重复下发 " + icsReceiptHeader.getReferCode());
|
|
153
154
|
}
//判断是否更新
|
|
155
|
checkReceiptBill(isFlag, icsReceiptHeader.getReferCode(), icsReceiptHeader.getType(), currentWarehouseCode);
|
|
156
157
|
boolean save = icsReceiptHeaderService.save(icsReceiptHeader);
|
|
158
|
if (!save) {
|
|
159
160
161
162
163
164
|
throw new ServiceException("下发失败");
}
for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
icsReceiptDetail.setHeaderId(icsReceiptHeader.getRid());
}
save = icsReceiptDetailService.saveBatch(icsReceiptDetails);
|
|
165
|
if (!save) {
|
|
166
167
168
169
|
throw new ServiceException("下发失败");
}
|
|
170
|
//根据icsReceiptHeader生成receiptHeader
|
|
171
|
ReceiptHeader receiptHeader = new ReceiptHeader();
|
|
172
173
|
String maker = icsReceiptHeader.getCMaker();
receiptHeader.setReceiptType(type);
|
|
174
|
receiptHeader.setReferId(icsReceiptHeader.getReferId());
|
|
175
|
receiptHeader.setCreatedBy(maker);
|
|
176
|
receiptHeader.setUWarehouseCode(icsReceiptHeader.getStock());
|
|
177
|
receiptHeader.setCreated(icsReceiptHeader.getCreated());
|
|
178
|
receiptHeader.setTypeName(icsReceiptHeader.getCBusType());
|
|
179
|
receiptHeader.setDeptCode(icsReceiptHeader.getCDepCode());
|
|
180
|
receiptHeader.setCDeptName(icsReceiptHeader.getCDepName());
|
|
181
182
|
receiptHeader.setReceiptNote(icsReceiptHeader.getCMemo());
receiptHeader.setSupplierCode(icsReceiptHeader.getCVenCode());
|
|
183
184
185
|
receiptHeader.setWarehouseCode(currentWarehouseCode);
receiptHeader.setReferCode(icsReceiptHeader.getReferCode());
receiptHeader.setCompanyCode(companyU8.getCompanyCode());
|
|
186
187
188
189
190
|
//根据icsShipmentDetail生成shipmentAetail
List<ReceiptDetail> receiptDetails = new ArrayList<ReceiptDetail>();
for (ICSReceiptDetail item : icsReceiptDetails) {
//查找物料
LambdaQueryWrapper<Material> queryWrapper1 = Wrappers.lambdaQuery();
|
|
191
192
|
queryWrapper1.eq(Material::getCode, item.getCInvCode())
.eq(Material::getWarehouseCode, currentWarehouseCode);
|
|
193
194
|
Material material = materialService.getOne(queryWrapper1);
if (material == null) {
|
|
195
|
// documentWarningService.ErpSendWarning(receiptHeader.getReferCode(), "该物料不存在:" + item.getCInvCode());
|
|
196
197
198
199
|
throw new ServiceException("该物料不存在:" + item.getCInvCode());
}
ReceiptDetail receiptDetail = new ReceiptDetail();
|
|
200
|
receiptDetail.setAutoId(item.getAutoID());
|
|
201
|
receiptDetail.setReferId(item.getReferId());
|
|
202
203
204
205
|
if (icsReceiptHeader.getType().equals("TI")) {
receiptDetail.setAutoId(item.getITrIds());
}
receiptDetail.setReferCode(receiptHeader.getReferCode());
|
|
206
|
receiptDetail.setMoCode(item.getMoCode());
|
|
207
|
if (StringUtils.isNotEmpty(item.getCDefine22())) {
|
|
208
209
210
211
212
213
|
Boolean flag = StringUtils.isChineseChar(item.getCDefine22());
if ((item.getCDefine22().length() == 19 || item.getCDefine22().length() == 22) && flag == false) {
receiptDetail.setMoCode(item.getCDefine22());
} else {
receiptDetail.setBatch(item.getCDefine22());
}
|
|
214
|
}
|
|
215
216
|
// receiptDetail.setLot(item.getCDefine23());
// receiptDetail.setProjectNo(item.getCDefine23());
|
周鸿
authored
|
217
|
receiptDetail.setUWarehouseCode(receiptHeader.getUWarehouseCode());
|
|
218
|
receiptDetail.setWarehouseCode(currentWarehouseCode);
|
|
219
220
|
receiptDetail.setMaterialCode(item.getCInvCode());
receiptDetail.setZoneCode(material.getZoneCode());
|
|
221
|
receiptDetail.setCreated(icsReceiptHeader.getCreated());
|
|
222
223
|
receiptDetail.setMaterialUnit(item.getCComUnitName());
receiptDetail.setCreatedBy(maker);
|
|
224
|
receiptDetail.setCompanyCode(companyU8.getCompanyCode());
|
|
225
226
227
228
229
230
231
232
233
234
235
236
237
238
|
receiptDetail.setProjectNo(item.getCItemName());
receiptDetail.setQty(item.getIQuantity().abs());
receiptDetail.setInventorySts(QuantityConstant.GOOD);
if (item.getIrowno() != null && StringUtils.isNotEmpty(item.getIrowno().toString())) {
receiptDetail.setReferLineNum(item.getIrowno().toString());
}
receiptDetails.add(receiptDetail);
}
//调用公共API
ReceiptDomain receiptDomain = new ReceiptDomain();
receiptDomain.setReceiptHeader(receiptHeader);
receiptDomain.setReceiptDetails(receiptDetails);
AjaxResult ajaxResult = receiptApiService.receipt(receiptDomain);
|
|
239
|
if (!ajaxResult.hasErr() && !isFlag) {
|
|
240
241
242
243
|
U8Reference reference = new U8Reference();
reference.setReferType(icsReceiptHeader.getType());
reference.setReferCode(icsReceiptHeader.getReferCode());
reference.setStock(stock);
|
|
244
|
reference.setCompanyCode(companyU8.getCompanyCode());
|
|
245
246
247
248
249
|
reference.setWarehouseCode(currentWarehouseCode);
reference.setTypeName(typeName);
reference.setCreated(DateUtils.getNowDate());
u8ReferenceService.save(reference);
}
|
|
250
|
if (ajaxResult.getCode() == 200 && !isFlag) {
|
|
251
|
return AjaxResult.success("入库单下发成功");
|
|
252
|
} else if (ajaxResult.getCode() == 200 && isFlag) {
|
|
253
|
return AjaxResult.success("入库单更新成功");
|
|
254
|
} else {
|
|
255
256
257
258
259
260
261
|
return ajaxResult;
}
}
/**
* 采购到货 or 退货入库
* 采购到货单 | 销售退货入库单
|
|
262
|
*
|
|
263
264
265
266
267
|
* @param icsReceiptModel
* @return
* @throws ParseException
*/
@Transactional
|
|
268
|
public AjaxResult procureArrive(ICSReceiptModel icsReceiptModel) {
|
|
269
|
icsReceiptModel = assign(icsReceiptModel);
|
|
270
271
|
ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
|
|
272
|
//是否更新
|
|
273
|
if (StringUtils.isEmpty(icsReceiptHeader.getIsNew())) {
|
|
274
275
|
return AjaxResult.error("isNew为空");
}
|
|
276
|
boolean isUpdate = "0".equals(icsReceiptHeader.getIsNew()) ? true : false;
|
|
277
|
String currentWarehouseCode = icsReceiptHeader.getWarehouseCode();
|
|
278
279
280
|
if (StringUtils.isEmpty(currentWarehouseCode)) {
return AjaxResult.error("仓库编码warehouseCode:不能为空");
}
|
|
281
282
|
Warehouse warehouse = warehouseService.getOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getCode, currentWarehouseCode));
|
|
283
284
|
if (warehouse == null) {
return AjaxResult.error("本系统中没有编号:【" + currentWarehouseCode + "】的仓库。");
|
|
285
|
}
|
|
286
|
//入库类型
|
|
287
288
|
String type = icsReceiptHeader.getType();
if (receiptTypeCheck(type)) {
|
|
289
290
|
return AjaxResult.error("入库类型不匹配");
}
|
|
291
|
String typeName = getReceiptTypeName(type);
|
|
292
293
294
295
296
297
298
|
//u8关联表 检查上游单号是否重复
U8Reference one = u8ReferenceService.getOne(new LambdaQueryWrapper<U8Reference>()
.eq(U8Reference::getReferCode, icsReceiptHeader.getReferCode())
.eq(U8Reference::getReferType, icsReceiptHeader.getType())
.eq(U8Reference::getWarehouseCode, currentWarehouseCode));
//入库单表 检查上游单号是否重复
ReceiptHeader receiptHeader1 = receiptHeaderService.getOne(new LambdaQueryWrapper<ReceiptHeader>()
|
|
299
|
.eq(ReceiptHeader::getReferCode, icsReceiptHeader.getReferCode())
|
|
300
301
|
.eq(ReceiptHeader::getWarehouseCode, icsReceiptHeader.getWarehouseCode())
.last("LIMIT 1"));
|
|
302
303
|
if (one != null && !isUpdate && receiptHeader1 != null) {
return AjaxResult.error(typeName + ":请不要重复下发 " + icsReceiptHeader.getReferCode());
|
|
304
|
}
|
|
305
|
// checkReceiptBill(isUpdate, icsReceiptHeader.getReferCode(),icsReceiptHeader.getType(),currentWarehouseCode);
|
|
306
|
|
|
307
308
309
310
311
312
313
314
315
316
317
|
// boolean save = icsReceiptHeaderService.save(icsReceiptHeader);
// if(!save){
// throw new ServiceException("下发失败");
// }
// for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
// icsReceiptDetail.setHeaderId(icsReceiptHeader.getRid());
// }
// save = icsReceiptDetailService.saveBatch(icsReceiptDetails);
// if(!save){
// throw new ServiceException("下发失败");
// }
|
|
318
319
|
|
|
320
|
String maker = icsReceiptHeader.getCMaker();
|
|
321
|
|
|
322
|
|
|
323
|
CompanyU8 companyU81 = companyU8Service.getCompanyByU8CodeWarehouseCode(icsReceiptHeader.getCompanyCode(), currentWarehouseCode);
|
|
324
|
|
|
325
|
|
|
326
|
Set<String> cwhcodes = icsReceiptDetails.stream().map(ICSReceiptDetail::getCWHCode).collect(Collectors.toSet());
|
|
327
|
|
|
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
|
List<ReceiptDomain> domains = new ArrayList<>();
for (String cwhcode : cwhcodes) {
ReceiptHeader receiptHeader = new ReceiptHeader();
receiptHeader.setReferId(icsReceiptHeader.getReferId());
receiptHeader.setReceiptType(icsReceiptHeader.getType());
receiptHeader.setCreatedBy(maker);
receiptHeader.setUWarehouseCode(cwhcode);
receiptHeader.setCreated(icsReceiptHeader.getCreated());
receiptHeader.setReferCode(icsReceiptHeader.getReferCode());
receiptHeader.setSupplierCode(icsReceiptHeader.getCVenCode());
receiptHeader.setSupplierName(icsReceiptHeader.getCVenName());
receiptHeader.setWarehouseCode(companyU81.getWarehouseCode());
receiptHeader.setCompanyCode(companyU81.getCompanyCode());
receiptHeader.setCustomerCode(icsReceiptHeader.getCCusCode());
receiptHeader.setDeptCode(icsReceiptHeader.getCDepCode());
receiptHeader.setCDeptName(icsReceiptHeader.getCDepName());
receiptHeader.setPersonCode(icsReceiptHeader.getCPersonCode());
List<ReceiptDetail> receiptDetails = new ArrayList<>();
|
|
346
|
|
|
347
|
for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
|
|
348
|
if (!cwhcode.equals(icsReceiptDetail.getCWHCode())) {
|
|
349
350
351
|
continue;
}
ReceiptDetail receiptDetail = new ReceiptDetail();
|
|
352
|
if (!StringUtils.isEmpty(icsReceiptDetail.getCWHCode())) {
|
|
353
354
|
WarehouseU8 warehouseU8 = warehouseU8Service.getOne(new LambdaQueryWrapper<WarehouseU8>()
.eq(WarehouseU8::getWarehouseCode, currentWarehouseCode)
|
|
355
|
.eq(WarehouseU8::getUWarehouseCode, icsReceiptDetail.getCWHCode())
|
|
356
|
.eq(WarehouseU8::getUCompanyCode, icsReceiptDetail.getCompanyCode()));
|
|
357
358
359
|
if (warehouseU8 == null) {
return AjaxResult.error(icsReceiptDetail.getCompanyCode() + "::" + icsReceiptDetail.getCWHCode() + ",找不到对应的u8仓库");
}
|
|
360
361
362
363
364
365
366
367
368
369
370
|
receiptDetail.setUWarehouseCode(warehouseU8.getUWarehouseCode());
}
receiptDetail.setLot(icsReceiptDetail.getCDefine23());
receiptDetail.setReferCode(icsReceiptDetail.getReferCode());
receiptDetail.setSoCode(icsReceiptDetail.getCSOCode());
receiptDetail.setSoId(icsReceiptDetail.getCSOID());
receiptDetail.setSoAutoId(icsReceiptDetail.getCSOAutoID());
receiptDetail.setReferId(icsReceiptDetail.getReferId());
receiptDetail.setAutoId(icsReceiptDetail.getAutoID());
if (icsReceiptDetail.getIrowno() != null && StringUtils.isNotEmpty(icsReceiptDetail.getIrowno().toString())) {
receiptDetail.setReferLineNum(icsReceiptDetail.getIrowno().toString());
|
|
371
372
|
}
|
|
373
|
if (StringUtils.isNotEmpty(icsReceiptDetail.getCDefine22())) {
|
|
374
|
Boolean flag = StringUtils.isChineseChar(icsReceiptDetail.getCDefine22());
|
周鸿
authored
|
375
|
if ((icsReceiptDetail.getCDefine22().length() == 19 || icsReceiptDetail.getCDefine22().length() == 22) && flag == false) {
|
|
376
377
378
|
receiptDetail.setMoCode(icsReceiptDetail.getCDefine22());
} else {
receiptDetail.setBatch(icsReceiptDetail.getCDefine22());
|
|
379
|
}
|
|
380
381
382
383
384
385
|
}
receiptDetail.setWarehouseCode(currentWarehouseCode);
receiptDetail.setMaterialCode(icsReceiptDetail.getCInvCode());
receiptDetail.setCreated(icsReceiptHeader.getCreated());
receiptDetail.setMaterialUnit(icsReceiptDetail.getCComUnitName());
receiptDetail.setCreatedBy(maker);
|
|
386
|
if (icsReceiptHeader.getType().equals("SRI")) {
|
|
387
|
receiptDetail.setCPoCode(icsReceiptDetail.getCSOCode());
|
|
388
|
} else {
|
|
389
390
391
392
393
394
395
|
receiptDetail.setCPoCode(icsReceiptDetail.getPOCode());
}
receiptDetail.setCompanyCode(companyU81.getCompanyCode());
receiptDetail.setProjectNo(icsReceiptDetail.getCItemName());
receiptDetail.setQty(icsReceiptDetail.getIQuantity().abs());
receiptDetail.setInventorySts(QuantityConstant.GOOD);
receiptDetails.add(receiptDetail);
|
|
396
|
|
|
397
398
399
400
401
402
403
|
if (icsReceiptDetail.getMoCode() != null) {
try {
JSONObject json = new JSONObject();
json.put("code", icsReceiptHeader);
json.put("materialCode", icsReceiptDetail.getCInvCode().trim());
json.put("workNo", icsReceiptDetail.getMoCode().trim());
json.put("status", "1");
|
|
404
405
406
|
String JsonParam = JSON.toJSONString(json);
System.out.println(JsonParam);
//调用mms更改采购状态
|
|
407
|
if (currentWarehouseCode.equals("CS0001")) {
|
|
408
409
|
String url = addressService.selectAddress("mms", currentWarehouseCode);
String result2 = HttpUtils.bodypost(url, JsonParam, currentWarehouseCode);
|
|
410
411
|
}
|
|
412
|
} catch (Exception e) {
|
|
413
414
|
e.printStackTrace();
}
|
|
415
|
}
|
|
416
|
}
|
|
417
418
419
420
421
|
//调用公共API
ReceiptDomain receiptModel = new ReceiptDomain();
receiptModel.setReceiptHeader(receiptHeader);
receiptModel.setReceiptDetails(receiptDetails);
domains.add(receiptModel);
|
|
422
|
}
|
|
423
|
AjaxResult ajaxResult = receiptApiService.receipt(domains);
|
|
424
|
if (!ajaxResult.hasErr() && !isUpdate) {
|
|
425
426
427
428
429
|
U8Reference u8Reference = u8ReferenceService.getOne(new LambdaQueryWrapper<U8Reference>()
.eq(U8Reference::getReferType, icsReceiptHeader.getType())
.eq(U8Reference::getReferCode, icsReceiptHeader.getReferCode())
.eq(U8Reference::getWarehouseCode, currentWarehouseCode)
.last(" LIMIT 1"));
|
周鸿
authored
|
430
|
if (u8Reference == null) {
|
|
431
432
433
434
435
436
437
438
439
|
U8Reference reference = new U8Reference();
reference.setReferType(icsReceiptHeader.getType());
reference.setReferCode(icsReceiptHeader.getReferCode());
reference.setCompanyCode(companyU81.getCompanyCode());
reference.setWarehouseCode(currentWarehouseCode);
reference.setTypeName(typeName);
reference.setCreated(DateUtils.getNowDate());
u8ReferenceService.save(reference);
}
|
|
440
|
}
|
|
441
|
if (ajaxResult.getCode() == 200 && !isUpdate) {
|
|
442
|
return AjaxResult.success("入库单下发成功");
|
|
443
|
} else if (ajaxResult.getCode() == 200 && isUpdate) {
|
|
444
|
return AjaxResult.success("入库单更新成功");
|
|
445
|
} else {
|
|
446
447
|
return ajaxResult;
}
|
|
448
449
|
}
|
|
450
451
452
453
454
455
456
457
458
|
/**
* 其他入库单/调拨入库单
*
* @param icsReceiptModel
* @return
* @throws ParseException
*/
@Transactional(rollbackFor = Exception.class)
|
周鸿
authored
|
459
|
public AjaxResult otherReceipt(ICSReceiptModel icsReceiptModel) {
|
|
460
461
462
463
464
465
466
467
468
469
470
471
|
//校验null
checkOtherReceiptNull(icsReceiptModel);
ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
String receiptHeaderType = icsReceiptHeader.getType();
String warehouseCode = icsReceiptHeader.getWarehouseCode();
String whCode = null;
String referCode = null;
String companyCode = null;
String u8CompanyCode = icsReceiptHeader.getCompanyCode();
|
周鸿
authored
|
472
|
Date created = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, icsReceiptHeader.getDDate());
|
|
473
474
475
476
477
478
|
String createdBy = icsReceiptHeader.getCMaker();
String receiptNote = icsReceiptHeader.getCMemo();
Integer referHeaderId = icsReceiptHeader.getID();
BigDecimal totalQty = BigDecimal.ZERO;
int totalLines = BigDecimal.ZERO.intValue();
|
周鸿
authored
|
479
|
switch (icsReceiptHeader.getType()) {
|
|
480
481
482
483
484
485
486
487
488
489
490
491
492
|
case "TI": // 调拨其他入库单
whCode = icsReceiptHeader.getIWHCode();
referCode = icsReceiptHeader.getCTVCode();
break;
case "QI": //其他入库单
whCode = icsReceiptHeader.getCWHCode();
referCode = icsReceiptHeader.getCCode();
break;
default:
}
ReceiptHeader receiptHeader = new ReceiptHeader();
List<ReceiptDetail> receiptDetails = new ArrayList<>();
|
周鸿
authored
|
493
494
495
|
WarehouseU8 warehouseU8 = warehouseU8Service.getWarehouseU8ByUCompanyUWarehouseCode(u8CompanyCode, whCode, warehouseCode);
if (warehouseU8 == null) {
throw new ServiceException("未找到库房代码:" + whCode);
|
|
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
|
}
companyCode = warehouseU8.getCompanyCode();
receiptHeader.setReferCode(referCode);
receiptHeader.setReferId(referHeaderId);
receiptHeader.setReceiptType(receiptHeaderType);
receiptHeader.setWarehouseCode(icsReceiptHeader.getWarehouseCode());
receiptHeader.setUWarehouseCode(warehouseU8.getUWarehouseCode());
receiptHeader.setCompanyCode(companyCode);
receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
receiptHeader.setCreated(created);
receiptHeader.setCreatedBy(createdBy);
receiptHeader.setReceiptNote(receiptNote);
for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
ReceiptDetail receiptDetail = new ReceiptDetail();
receiptDetail.setReferId(icsReceiptDetail.getAutoID()); //其他入库单/调拨单 子表id
receiptDetail.setAutoId(icsReceiptDetail.getAutoID());
|
|
515
516
517
|
if("TI".equals(icsReceiptHeader.getType())){
receiptDetail.setAutoId(icsReceiptDetail.getITrIds());
}
|
|
518
519
520
521
522
523
524
525
526
|
receiptDetail.setProjectNo(icsReceiptDetail.getCItemName());
receiptDetail.setProcessStamp(QuantityConstant.RECEIPT_HEADER_BUILD.toString());
receiptDetail.setWarehouseCode(warehouseCode);
receiptDetail.setUWarehouseCode(whCode);
receiptDetail.setCompanyCode(companyCode);
receiptDetail.setInventorySts(QuantityConstant.GOOD);
receiptDetail.setCreatedBy(createdBy);
receiptDetail.setCreated(created);
Material material = materialService.getMaterialByCode(icsReceiptDetail.getCInvCode(), warehouseCode);
|
周鸿
authored
|
527
528
|
if (material == null) {
throw new ServiceException("物料编码未找到" + icsReceiptDetail.getCInvCode());
|
|
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
|
}
receiptDetail.setMaterialCode(material.getCode());
receiptDetail.setMaterialName(material.getName());
receiptDetail.setMaterialSpec(material.getSpec());
receiptDetail.setMaterialUnit(material.getUnit());
BigDecimal qty = icsReceiptDetail.getIQuantity();
totalQty = totalQty.add(qty);
receiptDetail.setQty(qty);
totalLines += 1;
receiptDetails.add(receiptDetail);
}
receiptHeader.setTotalQty(totalQty);
receiptHeader.setTotalLines(totalLines);
ReceiptDomain receiptModel = new ReceiptDomain();
receiptModel.setReceiptHeader(receiptHeader);
receiptModel.setReceiptDetails(receiptDetails);
AjaxResult result = receiptApiService.receipt(receiptModel);
|
周鸿
authored
|
548
549
|
if (result.hasErr()) {
throw new ServiceException(result.getMsg());
|
|
550
|
}
|
周鸿
authored
|
551
|
if ("0".equals(icsReceiptHeader.getIsNew())) {
|
|
552
553
554
555
556
557
|
return AjaxResult.success("入库单更新成功");
}
return AjaxResult.success("入库单下发成功");
}
|
周鸿
authored
|
558
|
public void checkOtherReceiptNull(ICSReceiptModel icsReceiptModel) {
|
|
559
560
561
562
563
564
565
566
|
ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
String type = icsReceiptHeader.getType();
String currentWarehouseCode = icsReceiptHeader.getWarehouseCode();
if (StringUtils.isEmpty(currentWarehouseCode)) {
throw new ServiceException("仓库编码warehouseCode:不能为空");
}
|
周鸿
authored
|
567
|
if (StringUtils.isEmpty(icsReceiptHeader.getCompanyCode())) {
|
|
568
569
|
throw new ServiceException("公司账套CompanyCode 不能为空");
}
|
周鸿
authored
|
570
|
if (StringUtils.isEmpty(type) || receiptTypeCheck(type)) {
|
|
571
572
573
574
575
576
577
578
579
580
581
|
throw new ServiceException("入库类型不存在");
}
if (StringUtils.isEmpty(icsReceiptHeader.getIsNew())) {
throw new ServiceException("isNew为空");
}
String referCode = null;
Integer referId = icsReceiptHeader.getID();
String dDateStr = icsReceiptHeader.getDDate();
String whCode = null;
String busTypeName = getReceiptTypeName(type);
|
周鸿
authored
|
582
|
switch (type) {
|
|
583
584
585
586
587
588
589
590
591
592
|
case "TI": //
whCode = icsReceiptHeader.getIWHCode();
referCode = icsReceiptHeader.getCTVCode();
break;
case "QI": //其他入库单
whCode = icsReceiptHeader.getCWHCode();
referCode = icsReceiptHeader.getCCode();
break;
default:
}
|
周鸿
authored
|
593
594
|
if (StringUtils.isEmpty(referCode)) {
throw new ServiceException(busTypeName + "业务Code 不能为空:" + referCode);
|
|
595
|
}
|
周鸿
authored
|
596
597
|
if (StringUtils.isNull(referId)) {
throw new ServiceException(busTypeName + "业务ID 不能为空:" + referId);
|
|
598
|
}
|
周鸿
authored
|
599
600
|
if (StringUtils.isEmpty(dDateStr)) {
throw new ServiceException(busTypeName + "业务入库日期 不能为空:" + dDateStr);
|
|
601
|
}
|
周鸿
authored
|
602
603
|
if (StringUtils.isEmpty(whCode)) {
throw new ServiceException(busTypeName + "业务入库库房代码 不能为空:" + whCode);
|
|
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
|
}
boolean isUpdate = "0".equals(icsReceiptHeader.getIsNew()) ? true : false;
Warehouse warehouse = warehouseService.getOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getCode, currentWarehouseCode));
if (warehouse == null) {
throw new ServiceException("WMS系统中没有仓库编号:【" + currentWarehouseCode + "】的仓库。");
}
//u8关联表 检查上游单号是否重复
U8Reference one = u8ReferenceService.getOne(new LambdaQueryWrapper<U8Reference>()
.eq(U8Reference::getReferCode, referCode)
.eq(U8Reference::getReferType, type)
.eq(U8Reference::getWarehouseCode, currentWarehouseCode));
//入库单表 检查上游单号是否重复
ReceiptHeader receiptHeader1 = receiptHeaderService.getOne(new LambdaQueryWrapper<ReceiptHeader>()
.eq(ReceiptHeader::getReferCode, referCode)
.eq(ReceiptHeader::getWarehouseCode, currentWarehouseCode)
.last("LIMIT 1"));
if (one != null && !isUpdate && receiptHeader1 != null) {
throw new ServiceException(busTypeName + ":请不要重复下发 " + referCode);
}
U8Reference u8Reference = u8ReferenceService.getOne(new LambdaQueryWrapper<U8Reference>()
.eq(U8Reference::getReferType, icsReceiptHeader.getType())
.eq(U8Reference::getReferCode, referCode)
.eq(U8Reference::getWarehouseCode, currentWarehouseCode)
.last(" LIMIT 1"));
|
周鸿
authored
|
632
|
if (u8Reference == null) {
|
|
633
634
635
636
637
638
639
640
641
642
643
644
|
U8Reference reference = new U8Reference();
reference.setReferType(icsReceiptHeader.getType());
reference.setReferCode(referCode);
reference.setWarehouseCode(currentWarehouseCode);
reference.setTypeName(busTypeName);
reference.setCreated(DateUtils.getNowDate());
u8ReferenceService.save(reference);
}
}
|
|
645
|
private ICSReceiptModel assign(ICSReceiptModel icsReceiptModel) {
|
|
646
647
648
649
|
ICSReceiptHeader header = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> details = icsReceiptModel.getIcsReceiptDetails();
String type = header.getType();
Date created = null;
|
|
650
|
if (header.getDDate() != null) {
|
|
651
|
try {
|
|
652
|
created = DateUtils.parseDate(header.getDDate(), DateUtils.YYYY_MM_DD_HH_MM_SS_S);
|
|
653
654
655
656
|
} catch (ParseException e) {
e.printStackTrace();
}
}
|
|
657
658
|
switch (type) {
case "PI":
|
|
659
660
|
header.setReferCode(header.getCCode());
try {
|
|
661
|
header.setCreated(DateUtils.parseDate(header.getDPODate(), DateUtils.YYYY_MM_DD_HH_MM_SS));
|
|
662
663
664
665
|
} catch (ParseException e) {
e.printStackTrace();
}
for (ICSReceiptDetail detail : details) {
|
|
666
667
|
detail.setReferId(detail.getPODID());
detail.setReferCode(detail.getPOCode());
|
|
668
669
|
}
break;
|
|
670
|
case "SRI":
|
|
671
|
header.setReferId(header.getDLID());
|
|
672
673
|
header.setReferCode(header.getCDLCode());
header.setCreated(created);
|
|
674
|
String uwarehouseCode1 = "";
|
|
675
|
for (ICSReceiptDetail detail : details) {
|
|
676
677
|
detail.setReferId(detail.getCSOAutoID());
detail.setReferCode(detail.getCSOCode());
|
|
678
679
|
}
break;
|
|
680
|
case "PCI":
|
|
681
682
683
|
header.setReferCode(header.getCPOID());
header.setReferId(header.getPOID());
try {
|
|
684
|
header.setCreated(DateUtils.parseDate(header.getDPODate(), DateUtils.YYYY_MM_DD_HH_MM_SS_S));
|
|
685
686
687
|
} catch (ParseException e) {
e.printStackTrace();
}
|
|
688
|
String uwarehouseCode2 = "";
|
|
689
690
|
for (ICSReceiptDetail detail : details) {
detail.setReferCode(header.getReferCode());
|
|
691
|
detail.setReferId(detail.getPODID());
|
|
692
|
if (StringUtils.isEmpty(detail.getCWHCode())) {
|
|
693
694
695
|
detail.setCWHCode(header.getIWHCode());
}
}
|
|
696
|
if (StringUtils.isEmpty(header.getIWHCode())) {
|
|
697
698
|
header.setIWHCode(uwarehouseCode2);
header.setCWHCode(uwarehouseCode2);
|
|
699
700
|
}
break;
|
|
701
|
case "CI":
|
|
702
|
default:
|
|
703
|
header.setReferId(header.getID());
|
|
704
705
706
707
708
709
710
711
712
713
714
715
716
|
header.setReferCode(header.getCCode());
header.setStock(header.getCWHCode());
header.setCreated(created);
for (ICSReceiptDetail detail : details) {
detail.setReferCode(header.getReferCode());
}
break;
}
icsReceiptModel.setIcsReceiptHeader(header);
icsReceiptModel.setIcsReceiptDetails(details);
return icsReceiptModel;
}
|
|
717
718
|
/**
* 判断入库单是否可以更新
|
|
719
720
|
*
* @param code U8单号
|
|
721
|
*/
|
|
722
|
private void checkReceiptBill(boolean isFlag, String code, String type, String warehouseCode) {
|
|
723
|
LambdaQueryWrapper<ReceiptHeader> queryWrapper = Wrappers.lambdaQuery();
|
|
724
725
726
|
queryWrapper.eq(ReceiptHeader::getReferCode, code)
.eq(ReceiptHeader::getWarehouseCode, warehouseCode)
.eq(ReceiptHeader::getReceiptType, type)
|
|
727
|
.last("LIMIT 1");
|
|
728
729
|
ReceiptHeader receiptHeader = receiptHeaderService.getOne(queryWrapper);
|
|
730
|
if (isFlag) {
|
|
731
|
if (receiptHeader != null) {
|
|
732
|
LambdaQueryWrapper<TaskDetail> queryWrapper3 = Wrappers.lambdaQuery();
|
|
733
734
735
|
queryWrapper3.eq(TaskDetail::getBillCode, receiptHeader.getCode())
.eq(TaskDetail::getBillCode, receiptHeader.getWarehouseCode())
.le(TaskDetail::getStatus, QuantityConstant.TASK_STATUS_COMPLETED);
|
|
736
|
List<TaskDetail> taskDetailList = taskDetailService.list(queryWrapper3);
|
|
737
738
|
if (taskDetailList == null || taskDetailList.size() > 0) {
throw new ServiceException("更新失敗,此入库单存在任务");
|
|
739
740
|
}
LambdaQueryWrapper<ReceiptContainerDetail> queryWrapper1 = Wrappers.lambdaQuery();
|
|
741
742
743
|
queryWrapper1.eq(ReceiptContainerDetail::getReceiptCode, receiptHeader.getCode())
.eq(ReceiptContainerDetail::getWarehouseCode, receiptHeader.getWarehouseCode())
.le(ReceiptContainerDetail::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED);
|
|
744
|
List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(queryWrapper1);
|
|
745
746
|
if (receiptContainerDetails == null || receiptContainerDetails.size() > 0) {
throw new ServiceException("更新失敗,此入库单已组盘");
|
|
747
|
}
|
|
748
749
750
751
|
receiptHeaderService.removeById(receiptHeader.getId());
List<ReceiptDetail> receiptDetails = receiptDetailService.findByReceiptId(receiptHeader.getId());
List<Integer> ids = receiptDetails.stream().map(ReceiptDetail::getId).collect(Collectors.toList());
receiptDetailService.removeByIds(ids);
|
|
752
|
}
|
|
753
754
755
|
ICSReceiptHeader icsReceiptHeader = icsReceiptHeaderService.getOne(new LambdaQueryWrapper<ICSReceiptHeader>()
.eq(ICSReceiptHeader::getReferCode, code)
.eq(ICSReceiptHeader::getType, type));
|
|
756
|
if (icsReceiptHeader != null) {
|
|
757
758
|
icsReceiptHeaderService.removeById(icsReceiptHeader.getRid());
icsReceiptDetailService.remove(new LambdaQueryWrapper<ICSReceiptDetail>()
|
|
759
|
.eq(ICSReceiptDetail::getHeaderId, icsReceiptHeader.getRid()));
|
|
760
|
}
|
|
761
762
763
|
}
}
|
|
764
|
private String getReceiptTypeName(String code) {
|
|
765
|
String typeName = "";
|
|
766
767
|
switch (code) {
case "PCI":
|
|
768
769
|
typeName = "采购订单";
break;
|
|
770
|
case "CI":
|
|
771
772
|
typeName = "生产退料单";
break;
|
|
773
|
case "QI":
|
|
774
775
|
typeName = "其他入库单";
break;
|
|
776
|
case "PPI":
|
|
777
778
|
typeName = "手持入库单";
break;
|
|
779
|
case "TI":
|
|
780
781
|
typeName = "调拨入库单";
break;
|
|
782
|
case "SRI":
|
|
783
784
|
typeName = "销售退货单";
break;
|
|
785
|
case "SI":
|
|
786
787
|
typeName = "产成品入库单";
break;
|
|
788
|
case "PI":
|
|
789
790
|
typeName = "采购到货单";
break;
|
|
791
|
case "AI":
|
|
792
793
794
795
796
797
|
typeName = "调整单";
break;
}
return typeName;
}
|
|
798
799
800
801
802
803
|
private boolean receiptTypeCheck(String code) {
switch (code) {
case "PI":
case "SRI":
case "PCI":
case "CI":
|
|
804
805
|
case "TI":
case "QI":
|
|
806
807
808
809
810
811
|
return false;
default:
return true;
}
}
|
|
812
|
public Boolean isSameMonth(Date date) {
|
|
813
814
815
816
817
818
819
820
821
822
823
824
825
826
|
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(new Date());
boolean isSameYear = cal1.get(Calendar.YEAR) == cal2
.get(Calendar.YEAR);
boolean isSameMonth = isSameYear
&& cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);
boolean isSameDate = isSameMonth
&& cal1.get(Calendar.DAY_OF_MONTH) == cal2
.get(Calendar.DAY_OF_MONTH);
return isSameDate;
}
|
|
827
|
//采购到货单和销售退货入库单
|
|
828
|
public synchronized AjaxResult insertICSReceipts(ICSReceiptModel icsReceiptModel) {
|
|
829
830
831
832
|
ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
|
|
833
|
if (!QuantityConstant.U8_RECEIPT_TYPE_SRI.equals(icsReceiptHeader.getType()) && !QuantityConstant.U8_RECEIPT_TYPE_PI.equals(icsReceiptHeader.getType())) {
|
|
834
835
|
return AjaxResult.error("入库类型不匹配");
}
|
|
836
837
838
839
840
|
String code = null;
if (icsReceiptHeader.getType().equals("SRI")) {
code = icsReceiptHeader.getCDLCode();
} else {
code = icsReceiptHeader.getCCode();
|
|
841
|
}
|
|
842
843
|
if (StringUtils.isEmpty(code)) {
if (icsReceiptHeader.getType().equals("SRI")) {
|
|
844
|
// documentWarningService.ErpSendWarning("", "销售退货入库单没有单号");
|
|
845
|
} else {
|
|
846
|
// documentWarningService.ErpSendWarning("", "采购到货单下发没有单号");
|
|
847
848
849
850
|
}
throw new ServiceException("没有单号");
}
|
|
851
852
853
|
CompanyU8 companyWu = companyU8Service.getCompanyByU8CodeWarehouseCode(icsReceiptHeader.getCompanyCode(), icsReceiptHeader.getWarehouseCode());
if (companyWu == null) {
return AjaxResult.error("单据货主不存在" + icsReceiptHeader.getCompanyCode());
|
|
854
|
}
|
|
855
|
ReceiptHeader receiptHeaderB = new ReceiptHeader();
|
|
856
857
|
receiptHeaderB.setReferCode(code);
receiptHeaderB.setCompanyCode(companyWu.getCompanyCode());
|
|
858
|
List<ReceiptHeader> receiptHeaders = receiptHeaderService.getByDomain(receiptHeaderB);
|
|
859
|
if (CollectionUtils.isNotEmpty(receiptHeaders)) {
|
|
860
861
862
863
864
865
866
|
return AjaxResult.success("单号重复,已跳过");
}
//判断仓库是否存在单据的物料编码
ReceiptHeader receiptHeader;
List<ReceiptDetail> receiptDetails;
Set<String> warehouseCodes = new HashSet<>();
Set<String> uwarehouseCodes = new HashSet<>();
|
|
867
|
String companyCode = null;
|
|
868
869
870
|
Map<String, String> companyCodeMap = new HashMap<>();
for (ICSReceiptDetail item : icsReceiptDetails) {
//通过u8的货主和仓库匹配wms的仓库
|
|
871
|
WarehouseU8 warehouseWu = new WarehouseU8();
|
|
872
873
|
warehouseWu.setUCompanyCode(icsReceiptHeader.getCompanyCode());
warehouseWu.setUWarehouseCode(item.getCWHCode());
|
|
874
|
warehouseWu.setWarehouseCode(item.getWarehouseCode());
|
|
875
876
877
|
List<WarehouseU8> list = warehouseU8Service.getByDomain(warehouseWu);
if (list != null && list.size() > 0) {
warehouseWu = list.get(0);
|
|
878
|
companyCodeMap.put(item.getCWHCode() + icsReceiptHeader.getCompanyCode(), warehouseWu.getCompanyCode());
|
|
879
|
companyCode = warehouseWu.getCompanyCode();
|
|
880
881
882
883
|
uwarehouseCodes.add(item.getCWHCode());
warehouseCodes.add(warehouseWu.getWarehouseCode());
}
}
|
|
884
885
|
if (companyCode != null && !companyCode.equals(companyWu.getCompanyCode())) {
ReceiptHeader receiptHeader1 = new ReceiptHeader();
|
|
886
887
|
receiptHeader1.setReferCode(code);
receiptHeader1.setCompanyCode(companyCode);
|
|
888
|
receiptHeader1.setWarehouseCode(icsReceiptHeader.getWarehouseCode());
|
|
889
|
receiptHeader1 = receiptHeaderService.selectFirstEntity(receiptHeader1);
|
|
890
|
if (receiptHeader1 != null) {
|
|
891
892
893
|
return AjaxResult.success("单号重复,已跳过");
}
}
|
|
894
|
if (warehouseCodes == null || uwarehouseCodes.size() < 1) {
|
|
895
896
897
|
return AjaxResult.success("没有此仓库");
}
|
|
898
|
String maker = icsReceiptHeader.getCMaker();
|
|
899
900
901
902
903
|
for (String warehouseCode : warehouseCodes) {
for (String uwarehouseCode : uwarehouseCodes) {
receiptDetails = new ArrayList<>();
//出库主单
receiptHeader = new ReceiptHeader();
|
|
904
|
if (!StringUtils.isEmpty(icsReceiptHeader.getCTVCode())) {
|
|
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
|
receiptHeader.setUserDef3(icsReceiptHeader.getCTVCode());
}
receiptHeader.setReceiptType(icsReceiptHeader.getType());
receiptHeader.setId(null);
receiptHeader.setLastUpdatedBy(maker);
receiptHeader.setCreatedBy(maker);
receiptHeader.setLastUpdated(new Date());
receiptHeader.setCreated(new Date());
receiptHeader.setReferCode(code);
receiptHeader.setSupplierCode(icsReceiptHeader.getCVenCode());
receiptHeader.setSupplierName(icsReceiptHeader.getCVenName());
receiptHeader.setWarehouseCode(warehouseCode);
receiptHeader.setUWarehouseCode(uwarehouseCode);
receiptHeader.setCompanyCode(companyCodeMap.get(uwarehouseCode + icsReceiptHeader.getCompanyCode()));
// receiptHeader.setSourcePlatform(icsReceiptHeader.getSourcePlatform());
receiptHeader.setCDeptName(icsReceiptHeader.getCDepName());
//细单
for (ICSReceiptDetail item : icsReceiptDetails) {
//匹配仓库
if (uwarehouseCode.equals(item.getCWHCode())) {
//查找物料
Material material = new Material();
material.setCode(item.getCInvCode());
material.setWarehouseCode(warehouseCode);
|
|
931
932
|
material = materialService.getMaterialByDomain(material);
if (material == null) {
|
|
933
|
// documentWarningService.ErpSendWarning(code, "该物料不存在:"+item.getCInvCode());
|
|
934
|
throw new ServiceException("该物料不存在:" + item.getCInvCode());
|
|
935
936
937
938
939
940
|
}
ReceiptDetail receiptDetail = new ReceiptDetail();
receiptDetail.setId(null);
receiptDetail.setLot(item.getCDefine23());
receiptDetail.setReferCode(code);
receiptDetail.setAutoId(item.getAutoID());
|
|
941
|
if (StringUtils.isNotEmpty(item.getCDefine22())) {
|
|
942
943
944
|
Boolean
flag
= StringUtils.isChineseChar(item.getCDefine22());
|
周鸿
authored
|
945
|
if ((item.getCDefine22().length() == 19 || item.getCDefine22().length() == 22) && flag == false) {
|
|
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
|
receiptDetail.setMoCode(item.getCDefine22());
} else {
receiptDetail.setBatch(item.getCDefine22());
}
}
receiptDetail.setWarehouseCode(warehouseCode);
receiptDetail.setMaterialCode(item.getCInvCode());
receiptDetail.setZoneCode(material.getZoneCode());
receiptDetail.setCreated(new Date());
receiptDetail.setUWarehouseCode(uwarehouseCode);
receiptDetail.setMaterialUnit(item.getCComUnitName());
receiptDetail.setCreatedBy(maker);
receiptDetail.setLastUpdated(new Date());
receiptDetail.setLastUpdatedBy(maker);
if (!item.getCompanyCode().equals(icsReceiptHeader.getCompanyCode())) {
|
|
961
|
// documentWarningService.ErpSendWarning(code, "子单货主与主单不对应");
|
|
962
963
|
throw new ServiceException("子单货主与主单不对应");
}
|
|
964
|
if (icsReceiptHeader.getType().equals("SRI")) {
|
|
965
|
receiptDetail.setCPoCode(item.getCSOCode());
|
|
966
|
} else {
|
|
967
968
969
970
971
972
973
|
receiptDetail.setCPoCode(item.getPOCode());
}
receiptDetail.setCompanyCode(companyCodeMap.get(item.getCWHCode() + icsReceiptHeader.getCompanyCode()));
receiptDetail.setProjectNo(item.getCItemName());
receiptDetail.setQty(item.getIQuantity().abs());
// receiptDetail.setQtyCompleted(item.getiQuantity());
receiptDetail.setInventorySts("good");
|
|
974
|
if (StringUtils.isNotEmpty(item.getLotno())) {
|
|
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
|
receiptDetail.setUserDef2(item.getLotno());
}
receiptDetails.add(receiptDetail);
}
}
//调用公共API
ReceiptDomain receiptModel = new ReceiptDomain();
receiptModel.setReceiptHeader(receiptHeader);
receiptModel.setReceiptDetails(receiptDetails);
receiptApiService.receipt(receiptModel);
}
}
return AjaxResult.success("入货单下发成功");
}
|
|
991
|
}
|