|
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
48
|
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import javax.annotation.Resource;
import java.text.ParseException;
|
|
49
|
import java.util.*;
|
|
50
|
import java.util.stream.Collectors;
|
|
51
52
53
54
|
/**
* u8-wms入库下发或回传接口服务层
*
|
|
55
56
|
* @author huaheng
* @date 2019-1-4
|
|
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
|
*/
@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;
|
|
90
91
92
93
|
@Resource
private CompanyU8Service companyU8Service;
@Resource
private AddressService addressService;
|
|
94
95
|
@Resource
private U8ReferenceService u8ReferenceService;
|
|
96
97
98
99
100
101
|
//入库单下发
//采购入库
@Transactional
public AjaxResult procureReceipt(@RequestBody ICSReceiptModel icsReceiptModel) {
|
|
102
|
icsReceiptModel = assign(icsReceiptModel);
|
|
103
104
|
ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
|
|
105
|
|
|
106
|
//是否更新
|
|
107
|
if (StringUtils.isEmpty(icsReceiptHeader.getIsNew())) {
|
|
108
109
|
return AjaxResult.error("isNew为空");
}
|
|
110
111
112
|
boolean isFlag = "0".equals(icsReceiptHeader.getIsNew()) ? true : false;
//仓库编码
String currentWarehouseCode = icsReceiptHeader.getWarehouseCode();
|
|
113
|
if (StringUtils.isEmpty(currentWarehouseCode)) {
|
|
114
115
116
|
return AjaxResult.error("仓库编码warehouseCode:不能为空");
}
//入库类型
|
|
117
|
String type = icsReceiptHeader.getType();
|
|
118
119
|
if (receiptTypeCheck(type)) {
return AjaxResult.error("入库类型不匹配");
|
|
120
|
}
|
|
121
|
String typeName = getReceiptTypeName(type);
|
|
122
|
String stock = icsReceiptHeader.getStock();
|
|
123
124
|
//U8companyCode
String U8CompanyCode = icsReceiptHeader.getCompanyCode();
|
|
125
|
//判断U8货主
|
|
126
|
CompanyU8 companyU8 = companyU8Service.getCompanyByU8CodeWarehouseCode(U8CompanyCode, currentWarehouseCode);
|
|
127
128
|
if (companyU8 == null) {
return AjaxResult.error("系统没有此货主:【" + U8CompanyCode + "】");
|
|
129
|
}
|
|
130
131
|
companyService.checkwarehouseCompany(companyU8.getCompanyCode());
//判断U8仓库
|
|
132
|
if (!StringUtils.isEmpty(stock)) {
|
|
133
|
LambdaQueryWrapper<WarehouseU8> queryWrapper = Wrappers.lambdaQuery();
|
|
134
135
|
queryWrapper.eq(WarehouseU8::getUCompanyCode, icsReceiptHeader.getCompanyCode())
.eq(WarehouseU8::getUWarehouseCode, stock);
|
|
136
|
WarehouseU8 one = warehouseU8Service.getOne(queryWrapper);
|
|
137
138
|
if (one == null) {
return AjaxResult.error("系统没有此仓库:【" + stock + "】");
|
|
139
140
|
}
}
|
|
141
142
143
144
145
146
147
|
//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>()
|
|
148
149
|
.eq(ReceiptHeader::getReferCode, icsReceiptHeader.getReferCode())
.eq(ReceiptHeader::getWarehouseCode, icsReceiptHeader.getWarehouseCode()));
|
|
150
151
|
if (one != null && !isFlag && receiptHeader1 != null) {
return AjaxResult.error(typeName + ":请不要重复下发 " + icsReceiptHeader.getReferCode());
|
|
152
153
|
}
//判断是否更新
|
|
154
|
checkReceiptBill(isFlag, icsReceiptHeader.getReferCode(), icsReceiptHeader.getType(), currentWarehouseCode);
|
|
155
156
|
boolean save = icsReceiptHeaderService.save(icsReceiptHeader);
|
|
157
|
if (!save) {
|
|
158
159
160
161
162
163
|
throw new ServiceException("下发失败");
}
for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
icsReceiptDetail.setHeaderId(icsReceiptHeader.getRid());
}
save = icsReceiptDetailService.saveBatch(icsReceiptDetails);
|
|
164
|
if (!save) {
|
|
165
166
167
168
|
throw new ServiceException("下发失败");
}
|
|
169
|
//根据icsReceiptHeader生成receiptHeader
|
|
170
|
ReceiptHeader receiptHeader = new ReceiptHeader();
|
|
171
172
|
String maker = icsReceiptHeader.getCMaker();
receiptHeader.setReceiptType(type);
|
|
173
|
receiptHeader.setReferId(icsReceiptHeader.getReferId());
|
|
174
|
receiptHeader.setCreatedBy(maker);
|
|
175
|
receiptHeader.setUWarehouseCode(icsReceiptHeader.getStock());
|
|
176
|
receiptHeader.setCreated(icsReceiptHeader.getCreated());
|
|
177
|
receiptHeader.setTypeName(icsReceiptHeader.getCBusType());
|
|
178
|
receiptHeader.setDeptCode(icsReceiptHeader.getCDepCode());
|
|
179
|
receiptHeader.setCDeptName(icsReceiptHeader.getCDepName());
|
|
180
181
|
receiptHeader.setReceiptNote(icsReceiptHeader.getCMemo());
receiptHeader.setSupplierCode(icsReceiptHeader.getCVenCode());
|
|
182
183
184
|
receiptHeader.setWarehouseCode(currentWarehouseCode);
receiptHeader.setReferCode(icsReceiptHeader.getReferCode());
receiptHeader.setCompanyCode(companyU8.getCompanyCode());
|
|
185
186
187
188
189
|
//根据icsShipmentDetail生成shipmentAetail
List<ReceiptDetail> receiptDetails = new ArrayList<ReceiptDetail>();
for (ICSReceiptDetail item : icsReceiptDetails) {
//查找物料
LambdaQueryWrapper<Material> queryWrapper1 = Wrappers.lambdaQuery();
|
|
190
191
|
queryWrapper1.eq(Material::getCode, item.getCInvCode())
.eq(Material::getWarehouseCode, currentWarehouseCode);
|
|
192
193
|
Material material = materialService.getOne(queryWrapper1);
if (material == null) {
|
|
194
|
// documentWarningService.ErpSendWarning(receiptHeader.getReferCode(), "该物料不存在:" + item.getCInvCode());
|
|
195
196
197
198
|
throw new ServiceException("该物料不存在:" + item.getCInvCode());
}
ReceiptDetail receiptDetail = new ReceiptDetail();
|
|
199
|
receiptDetail.setAutoId(item.getAutoID());
|
|
200
|
receiptDetail.setReferId(item.getReferId());
|
|
201
202
203
204
|
if (icsReceiptHeader.getType().equals("TI")) {
receiptDetail.setAutoId(item.getITrIds());
}
receiptDetail.setReferCode(receiptHeader.getReferCode());
|
|
205
|
receiptDetail.setMoCode(item.getMoCode());
|
|
206
|
if (StringUtils.isNotEmpty(item.getCDefine22())) {
|
|
207
208
209
210
211
212
|
Boolean flag = StringUtils.isChineseChar(item.getCDefine22());
if (item.getCDefine22().length() == 19 && flag == false) {
receiptDetail.setMoCode(item.getCDefine22());
} else {
receiptDetail.setBatch(item.getCDefine22());
}
|
|
213
214
215
|
}
receiptDetail.setLot(item.getCDefine23());
receiptDetail.setProjectNo(item.getCDefine23());
|
|
216
|
receiptDetail.setWarehouseCode(currentWarehouseCode);
|
|
217
218
|
receiptDetail.setMaterialCode(item.getCInvCode());
receiptDetail.setZoneCode(material.getZoneCode());
|
|
219
|
receiptDetail.setCreated(icsReceiptHeader.getCreated());
|
|
220
221
|
receiptDetail.setMaterialUnit(item.getCComUnitName());
receiptDetail.setCreatedBy(maker);
|
|
222
|
receiptDetail.setCompanyCode(companyU8.getCompanyCode());
|
|
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
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);
|
|
237
|
if (!ajaxResult.hasErr() && !isFlag) {
|
|
238
239
240
241
|
U8Reference reference = new U8Reference();
reference.setReferType(icsReceiptHeader.getType());
reference.setReferCode(icsReceiptHeader.getReferCode());
reference.setStock(stock);
|
|
242
|
reference.setCompanyCode(companyU8.getCompanyCode());
|
|
243
244
245
246
247
|
reference.setWarehouseCode(currentWarehouseCode);
reference.setTypeName(typeName);
reference.setCreated(DateUtils.getNowDate());
u8ReferenceService.save(reference);
}
|
|
248
|
if (ajaxResult.getCode() == 200 && !isFlag) {
|
|
249
|
return AjaxResult.success("入库单下发成功");
|
|
250
|
} else if (ajaxResult.getCode() == 200 && isFlag) {
|
|
251
|
return AjaxResult.success("入库单更新成功");
|
|
252
|
} else {
|
|
253
254
255
256
257
258
259
|
return ajaxResult;
}
}
/**
* 采购到货 or 退货入库
* 采购到货单 | 销售退货入库单
|
|
260
|
*
|
|
261
262
263
264
265
|
* @param icsReceiptModel
* @return
* @throws ParseException
*/
@Transactional
|
|
266
|
public AjaxResult procureArrive(ICSReceiptModel icsReceiptModel) {
|
|
267
|
icsReceiptModel = assign(icsReceiptModel);
|
|
268
269
|
ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
|
|
270
|
//是否更新
|
|
271
|
if (StringUtils.isEmpty(icsReceiptHeader.getIsNew())) {
|
|
272
273
|
return AjaxResult.error("isNew为空");
}
|
|
274
|
boolean isUpdate = "0".equals(icsReceiptHeader.getIsNew()) ? true : false;
|
|
275
|
String currentWarehouseCode = icsReceiptHeader.getWarehouseCode();
|
|
276
277
278
|
if (StringUtils.isEmpty(currentWarehouseCode)) {
return AjaxResult.error("仓库编码warehouseCode:不能为空");
}
|
|
279
280
|
Warehouse warehouse = warehouseService.getOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getCode, currentWarehouseCode));
|
|
281
282
|
if (warehouse == null) {
return AjaxResult.error("本系统中没有编号:【" + currentWarehouseCode + "】的仓库。");
|
|
283
|
}
|
|
284
|
//入库类型
|
|
285
286
|
String type = icsReceiptHeader.getType();
if (receiptTypeCheck(type)) {
|
|
287
288
|
return AjaxResult.error("入库类型不匹配");
}
|
|
289
|
String typeName = getReceiptTypeName(type);
|
|
290
291
292
293
294
295
296
|
//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>()
|
|
297
|
.eq(ReceiptHeader::getReferCode, icsReceiptHeader.getReferCode())
|
|
298
299
|
.eq(ReceiptHeader::getWarehouseCode, icsReceiptHeader.getWarehouseCode())
.last("LIMIT 1"));
|
|
300
301
|
if (one != null && !isUpdate && receiptHeader1 != null) {
return AjaxResult.error(typeName + ":请不要重复下发 " + icsReceiptHeader.getReferCode());
|
|
302
|
}
|
|
303
|
// checkReceiptBill(isUpdate, icsReceiptHeader.getReferCode(),icsReceiptHeader.getType(),currentWarehouseCode);
|
|
304
|
|
|
305
306
307
308
309
310
311
312
313
314
315
|
// 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("下发失败");
// }
|
|
316
317
|
|
|
318
|
String maker = icsReceiptHeader.getCMaker();
|
|
319
|
|
|
320
|
|
|
321
|
CompanyU8 companyU81 = companyU8Service.getCompanyByU8CodeWarehouseCode(icsReceiptHeader.getCompanyCode(), currentWarehouseCode);
|
|
322
|
|
|
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
Set<String> cwhcodes = icsReceiptDetails.stream().map(ICSReceiptDetail::getCWHCode).collect(Collectors.toSet());
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<>();
|
|
342
|
|
|
343
|
for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
|
|
344
|
if (!cwhcode.equals(icsReceiptDetail.getCWHCode())) {
|
|
345
346
347
|
continue;
}
ReceiptDetail receiptDetail = new ReceiptDetail();
|
|
348
|
if (!StringUtils.isEmpty(icsReceiptDetail.getCWHCode())) {
|
|
349
350
|
WarehouseU8 warehouseU8 = warehouseU8Service.getOne(new LambdaQueryWrapper<WarehouseU8>()
.eq(WarehouseU8::getWarehouseCode, currentWarehouseCode)
|
|
351
|
.eq(WarehouseU8::getUWarehouseCode, icsReceiptDetail.getCWHCode())
|
|
352
|
.eq(WarehouseU8::getUCompanyCode, icsReceiptDetail.getCompanyCode()));
|
|
353
354
355
|
if (warehouseU8 == null) {
return AjaxResult.error(icsReceiptDetail.getCompanyCode() + "::" + icsReceiptDetail.getCWHCode() + ",找不到对应的u8仓库");
}
|
|
356
357
358
359
360
361
362
363
364
365
366
|
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());
|
|
367
368
|
}
|
|
369
|
if (StringUtils.isNotEmpty(icsReceiptDetail.getCDefine22())) {
|
|
370
371
372
373
374
|
Boolean flag = StringUtils.isChineseChar(icsReceiptDetail.getCDefine22());
if (icsReceiptDetail.getCDefine22().length() == 19 && flag == false) {
receiptDetail.setMoCode(icsReceiptDetail.getCDefine22());
} else {
receiptDetail.setBatch(icsReceiptDetail.getCDefine22());
|
|
375
|
}
|
|
376
377
378
379
380
381
|
}
receiptDetail.setWarehouseCode(currentWarehouseCode);
receiptDetail.setMaterialCode(icsReceiptDetail.getCInvCode());
receiptDetail.setCreated(icsReceiptHeader.getCreated());
receiptDetail.setMaterialUnit(icsReceiptDetail.getCComUnitName());
receiptDetail.setCreatedBy(maker);
|
|
382
|
if (icsReceiptHeader.getType().equals("SRI")) {
|
|
383
|
receiptDetail.setCPoCode(icsReceiptDetail.getCSOCode());
|
|
384
|
} else {
|
|
385
386
387
388
389
390
391
|
receiptDetail.setCPoCode(icsReceiptDetail.getPOCode());
}
receiptDetail.setCompanyCode(companyU81.getCompanyCode());
receiptDetail.setProjectNo(icsReceiptDetail.getCItemName());
receiptDetail.setQty(icsReceiptDetail.getIQuantity().abs());
receiptDetail.setInventorySts(QuantityConstant.GOOD);
receiptDetails.add(receiptDetail);
|
|
392
|
|
|
393
394
395
396
397
398
399
|
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");
|
|
400
401
402
|
String JsonParam = JSON.toJSONString(json);
System.out.println(JsonParam);
//调用mms更改采购状态
|
|
403
404
405
|
if (currentWarehouseCode.equals("CS0001")) {
String url = addressService.selectAddress("mms", currentWarehouseCode);
String result2 = HttpUtils.bodypost(url, JsonParam, currentWarehouseCode);
|
|
406
407
|
}
|
|
408
|
} catch (Exception e) {
|
|
409
410
|
e.printStackTrace();
}
|
|
411
|
}
|
|
412
|
}
|
|
413
414
415
416
417
|
//调用公共API
ReceiptDomain receiptModel = new ReceiptDomain();
receiptModel.setReceiptHeader(receiptHeader);
receiptModel.setReceiptDetails(receiptDetails);
domains.add(receiptModel);
|
|
418
|
}
|
|
419
|
AjaxResult ajaxResult = receiptApiService.receipt(domains);
|
|
420
|
if (!ajaxResult.hasErr() && !isUpdate) {
|
|
421
422
423
424
425
426
427
428
429
|
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);
}
|
|
430
|
if (ajaxResult.getCode() == 200 && !isUpdate) {
|
|
431
|
return AjaxResult.success("入库单下发成功");
|
|
432
|
} else if (ajaxResult.getCode() == 200 && isUpdate) {
|
|
433
|
return AjaxResult.success("入库单更新成功");
|
|
434
|
} else {
|
|
435
436
|
return ajaxResult;
}
|
|
437
438
|
}
|
|
439
|
private ICSReceiptModel assign(ICSReceiptModel icsReceiptModel) {
|
|
440
441
442
443
|
ICSReceiptHeader header = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> details = icsReceiptModel.getIcsReceiptDetails();
String type = header.getType();
Date created = null;
|
|
444
|
if (header.getDDate() != null) {
|
|
445
|
try {
|
|
446
|
created = DateUtils.parseDate(header.getDDate(), DateUtils.YYYY_MM_DD_HH_MM_SS_S);
|
|
447
448
449
450
|
} catch (ParseException e) {
e.printStackTrace();
}
}
|
|
451
452
|
switch (type) {
case "PI":
|
|
453
454
|
header.setReferCode(header.getCCode());
try {
|
|
455
|
header.setCreated(DateUtils.parseDate(header.getDPODate(), DateUtils.YYYY_MM_DD_HH_MM_SS));
|
|
456
457
458
459
|
} catch (ParseException e) {
e.printStackTrace();
}
for (ICSReceiptDetail detail : details) {
|
|
460
461
|
detail.setReferId(detail.getPODID());
detail.setReferCode(detail.getPOCode());
|
|
462
463
|
}
break;
|
|
464
|
case "SRI":
|
|
465
|
header.setReferId(header.getDLID());
|
|
466
467
|
header.setReferCode(header.getCDLCode());
header.setCreated(created);
|
|
468
|
String uwarehouseCode1 = "";
|
|
469
|
for (ICSReceiptDetail detail : details) {
|
|
470
471
|
detail.setReferId(detail.getCSOAutoID());
detail.setReferCode(detail.getCSOCode());
|
|
472
473
|
}
break;
|
|
474
|
case "PCI":
|
|
475
476
477
|
header.setReferCode(header.getCPOID());
header.setReferId(header.getPOID());
try {
|
|
478
|
header.setCreated(DateUtils.parseDate(header.getDPODate(), DateUtils.YYYY_MM_DD_HH_MM_SS_S));
|
|
479
480
481
|
} catch (ParseException e) {
e.printStackTrace();
}
|
|
482
|
String uwarehouseCode2 = "";
|
|
483
484
|
for (ICSReceiptDetail detail : details) {
detail.setReferCode(header.getReferCode());
|
|
485
|
detail.setReferId(detail.getPODID());
|
|
486
|
if (StringUtils.isEmpty(detail.getCWHCode())) {
|
|
487
488
489
|
detail.setCWHCode(header.getIWHCode());
}
}
|
|
490
|
if (StringUtils.isEmpty(header.getIWHCode())) {
|
|
491
492
|
header.setIWHCode(uwarehouseCode2);
header.setCWHCode(uwarehouseCode2);
|
|
493
494
|
}
break;
|
|
495
|
case "CI":
|
|
496
|
default:
|
|
497
|
header.setReferId(header.getID());
|
|
498
499
500
501
502
503
504
505
506
507
508
509
510
|
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;
}
|
|
511
512
|
/**
* 判断入库单是否可以更新
|
|
513
514
|
*
* @param code U8单号
|
|
515
|
*/
|
|
516
|
private void checkReceiptBill(boolean isFlag, String code, String type, String warehouseCode) {
|
|
517
|
LambdaQueryWrapper<ReceiptHeader> queryWrapper = Wrappers.lambdaQuery();
|
|
518
519
520
|
queryWrapper.eq(ReceiptHeader::getReferCode, code)
.eq(ReceiptHeader::getWarehouseCode, warehouseCode)
.eq(ReceiptHeader::getReceiptType, type)
|
|
521
|
.last("LIMIT 1");
|
|
522
523
|
ReceiptHeader receiptHeader = receiptHeaderService.getOne(queryWrapper);
|
|
524
|
if (isFlag) {
|
|
525
|
if (receiptHeader != null) {
|
|
526
|
LambdaQueryWrapper<TaskDetail> queryWrapper3 = Wrappers.lambdaQuery();
|
|
527
528
529
|
queryWrapper3.eq(TaskDetail::getBillCode, receiptHeader.getCode())
.eq(TaskDetail::getBillCode, receiptHeader.getWarehouseCode())
.le(TaskDetail::getStatus, QuantityConstant.TASK_STATUS_COMPLETED);
|
|
530
|
List<TaskDetail> taskDetailList = taskDetailService.list(queryWrapper3);
|
|
531
532
|
if (taskDetailList == null || taskDetailList.size() > 0) {
throw new ServiceException("更新失敗,此入库单存在任务");
|
|
533
534
|
}
LambdaQueryWrapper<ReceiptContainerDetail> queryWrapper1 = Wrappers.lambdaQuery();
|
|
535
536
537
|
queryWrapper1.eq(ReceiptContainerDetail::getReceiptCode, receiptHeader.getCode())
.eq(ReceiptContainerDetail::getWarehouseCode, receiptHeader.getWarehouseCode())
.le(ReceiptContainerDetail::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED);
|
|
538
|
List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(queryWrapper1);
|
|
539
540
|
if (receiptContainerDetails == null || receiptContainerDetails.size() > 0) {
throw new ServiceException("更新失敗,此入库单已组盘");
|
|
541
|
}
|
|
542
543
544
545
|
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);
|
|
546
|
}
|
|
547
548
549
|
ICSReceiptHeader icsReceiptHeader = icsReceiptHeaderService.getOne(new LambdaQueryWrapper<ICSReceiptHeader>()
.eq(ICSReceiptHeader::getReferCode, code)
.eq(ICSReceiptHeader::getType, type));
|
|
550
|
if (icsReceiptHeader != null) {
|
|
551
552
|
icsReceiptHeaderService.removeById(icsReceiptHeader.getRid());
icsReceiptDetailService.remove(new LambdaQueryWrapper<ICSReceiptDetail>()
|
|
553
|
.eq(ICSReceiptDetail::getHeaderId, icsReceiptHeader.getRid()));
|
|
554
|
}
|
|
555
556
557
|
}
}
|
|
558
|
private String getReceiptTypeName(String code) {
|
|
559
|
String typeName = "";
|
|
560
561
|
switch (code) {
case "PCI":
|
|
562
563
|
typeName = "采购订单";
break;
|
|
564
|
case "CI":
|
|
565
566
|
typeName = "生产退料单";
break;
|
|
567
|
case "QI":
|
|
568
569
|
typeName = "其他入库单";
break;
|
|
570
|
case "PPI":
|
|
571
572
|
typeName = "手持入库单";
break;
|
|
573
|
case "TI":
|
|
574
575
|
typeName = "调拨入库单";
break;
|
|
576
|
case "SRI":
|
|
577
578
|
typeName = "销售退货单";
break;
|
|
579
|
case "SI":
|
|
580
581
|
typeName = "产成品入库单";
break;
|
|
582
|
case "PI":
|
|
583
584
|
typeName = "采购到货单";
break;
|
|
585
|
case "AI":
|
|
586
587
588
589
590
591
|
typeName = "调整单";
break;
}
return typeName;
}
|
|
592
593
594
595
596
597
|
private boolean receiptTypeCheck(String code) {
switch (code) {
case "PI":
case "SRI":
case "PCI":
case "CI":
|
|
598
599
600
601
602
603
|
return false;
default:
return true;
}
}
|
|
604
|
public Boolean isSameMonth(Date date) {
|
|
605
606
607
608
609
610
611
612
613
614
615
616
617
618
|
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;
}
|
|
619
|
//采购到货单和销售退货入库单
|
|
620
|
public synchronized AjaxResult insertICSReceipts(ICSReceiptModel icsReceiptModel) {
|
|
621
622
623
624
|
ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
|
|
625
|
if (!QuantityConstant.U8_RECEIPT_TYPE_SRI.equals(icsReceiptHeader.getType()) && !QuantityConstant.U8_RECEIPT_TYPE_PI.equals(icsReceiptHeader.getType())) {
|
|
626
627
|
return AjaxResult.error("入库类型不匹配");
}
|
|
628
629
630
631
632
|
String code = null;
if (icsReceiptHeader.getType().equals("SRI")) {
code = icsReceiptHeader.getCDLCode();
} else {
code = icsReceiptHeader.getCCode();
|
|
633
|
}
|
|
634
635
|
if (StringUtils.isEmpty(code)) {
if (icsReceiptHeader.getType().equals("SRI")) {
|
|
636
|
// documentWarningService.ErpSendWarning("", "销售退货入库单没有单号");
|
|
637
|
} else {
|
|
638
|
// documentWarningService.ErpSendWarning("", "采购到货单下发没有单号");
|
|
639
640
641
642
|
}
throw new ServiceException("没有单号");
}
|
|
643
644
645
|
CompanyU8 companyWu = companyU8Service.getCompanyByU8CodeWarehouseCode(icsReceiptHeader.getCompanyCode(), icsReceiptHeader.getWarehouseCode());
if (companyWu == null) {
return AjaxResult.error("单据货主不存在" + icsReceiptHeader.getCompanyCode());
|
|
646
|
}
|
|
647
|
ReceiptHeader receiptHeaderB = new ReceiptHeader();
|
|
648
649
|
receiptHeaderB.setReferCode(code);
receiptHeaderB.setCompanyCode(companyWu.getCompanyCode());
|
|
650
|
List<ReceiptHeader> receiptHeaders = receiptHeaderService.getByDomain(receiptHeaderB);
|
|
651
|
if (CollectionUtils.isNotEmpty(receiptHeaders)) {
|
|
652
653
654
655
656
657
658
|
return AjaxResult.success("单号重复,已跳过");
}
//判断仓库是否存在单据的物料编码
ReceiptHeader receiptHeader;
List<ReceiptDetail> receiptDetails;
Set<String> warehouseCodes = new HashSet<>();
Set<String> uwarehouseCodes = new HashSet<>();
|
|
659
|
String companyCode = null;
|
|
660
661
662
|
Map<String, String> companyCodeMap = new HashMap<>();
for (ICSReceiptDetail item : icsReceiptDetails) {
//通过u8的货主和仓库匹配wms的仓库
|
|
663
|
WarehouseU8 warehouseWu = new WarehouseU8();
|
|
664
665
|
warehouseWu.setUCompanyCode(icsReceiptHeader.getCompanyCode());
warehouseWu.setUWarehouseCode(item.getCWHCode());
|
|
666
|
warehouseWu.setWarehouseCode(item.getWarehouseCode());
|
|
667
668
669
|
List<WarehouseU8> list = warehouseU8Service.getByDomain(warehouseWu);
if (list != null && list.size() > 0) {
warehouseWu = list.get(0);
|
|
670
|
companyCodeMap.put(item.getCWHCode() + icsReceiptHeader.getCompanyCode(), warehouseWu.getCompanyCode());
|
|
671
|
companyCode = warehouseWu.getCompanyCode();
|
|
672
673
674
675
|
uwarehouseCodes.add(item.getCWHCode());
warehouseCodes.add(warehouseWu.getWarehouseCode());
}
}
|
|
676
677
|
if (companyCode != null && !companyCode.equals(companyWu.getCompanyCode())) {
ReceiptHeader receiptHeader1 = new ReceiptHeader();
|
|
678
679
|
receiptHeader1.setReferCode(code);
receiptHeader1.setCompanyCode(companyCode);
|
|
680
|
receiptHeader1.setWarehouseCode(icsReceiptHeader.getWarehouseCode());
|
|
681
|
receiptHeader1 = receiptHeaderService.selectFirstEntity(receiptHeader1);
|
|
682
|
if (receiptHeader1 != null) {
|
|
683
684
685
|
return AjaxResult.success("单号重复,已跳过");
}
}
|
|
686
|
if (warehouseCodes == null || uwarehouseCodes.size() < 1) {
|
|
687
688
689
|
return AjaxResult.success("没有此仓库");
}
|
|
690
|
String maker = icsReceiptHeader.getCMaker();
|
|
691
692
693
694
695
|
for (String warehouseCode : warehouseCodes) {
for (String uwarehouseCode : uwarehouseCodes) {
receiptDetails = new ArrayList<>();
//出库主单
receiptHeader = new ReceiptHeader();
|
|
696
|
if (!StringUtils.isEmpty(icsReceiptHeader.getCTVCode())) {
|
|
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
|
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);
|
|
723
724
|
material = materialService.getMaterialByDomain(material);
if (material == null) {
|
|
725
|
// documentWarningService.ErpSendWarning(code, "该物料不存在:"+item.getCInvCode());
|
|
726
|
throw new ServiceException("该物料不存在:" + item.getCInvCode());
|
|
727
728
729
730
731
732
|
}
ReceiptDetail receiptDetail = new ReceiptDetail();
receiptDetail.setId(null);
receiptDetail.setLot(item.getCDefine23());
receiptDetail.setReferCode(code);
receiptDetail.setAutoId(item.getAutoID());
|
|
733
|
if (StringUtils.isNotEmpty(item.getCDefine22())) {
|
|
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
|
Boolean
flag
= StringUtils.isChineseChar(item.getCDefine22());
if (item.getCDefine22().length() == 19 && flag == false) {
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())) {
|
|
753
|
// documentWarningService.ErpSendWarning(code, "子单货主与主单不对应");
|
|
754
755
|
throw new ServiceException("子单货主与主单不对应");
}
|
|
756
|
if (icsReceiptHeader.getType().equals("SRI")) {
|
|
757
|
receiptDetail.setCPoCode(item.getCSOCode());
|
|
758
|
} else {
|
|
759
760
761
762
763
764
765
|
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");
|
|
766
|
if (StringUtils.isNotEmpty(item.getLotno())) {
|
|
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
|
receiptDetail.setUserDef2(item.getLotno());
}
receiptDetails.add(receiptDetail);
}
}
//调用公共API
ReceiptDomain receiptModel = new ReceiptDomain();
receiptModel.setReceiptHeader(receiptHeader);
receiptModel.setReceiptDetails(receiptDetails);
receiptApiService.receipt(receiptModel);
}
}
return AjaxResult.success("入货单下发成功");
}
|
|
783
|
}
|