ShipmentItemReceiveImpl.java
4.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.huaheng.api.erp.server;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.erp.domain.Shipment;
import com.huaheng.api.erp.domain.WebserviceResult;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.JaxbXmlUtil;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
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 javax.annotation.Resource;
public class ShipmentItemReceiveImpl implements ShipmentItemReceive {
@Resource
private MaterialService materialService;
@Resource
private ShipmentHeaderService shipmentHeaderService;
@Resource
private ShipmentDetailService shipmentDetailService;
/**
* 先检验是否有该物料,如有,执行下一步,如没有,调接口查物料
* 查完物料后,如有,继续下一步,如没有,返回没有物料
* 后检验是否有该库存,如有,检验库存里批次,库存地点是否一致,如果一致,执行,如果不一致,返回信息
* @param shipmentItem
* @return
*/
@Override
public String addShipment(String shipmentItem) {
System.out.println(shipmentItem);
if(StringUtils.isEmpty(shipmentItem)){
return WebserviceResult.error("XML异常");
}
Shipment shipmentBean = null;
try {
shipmentBean = JSON.parseObject(shipmentItem, Shipment.class);
} catch (Exception e) {
return WebserviceResult.error("接收处理XML失败,请检查数据!");
}
if(shipmentBean==null){
return WebserviceResult.error("xml数据格式有误,请校验");
}
//校验
if(shipmentBean.getSAPNO()==null){
return WebserviceResult.error("出库单号不能为空");
}
if(shipmentBean.getMATNR()==null){
return WebserviceResult.error("物料号不能为空");
}
if(shipmentBean.getMENCE()==null){
return WebserviceResult.error("数量不能为空");
}
//检验是否有该物料
LambdaQueryWrapper<Material> materialWrapper = Wrappers.lambdaQuery();
materialWrapper.eq(Material::getCode, shipmentBean.getMATNR());
Material material = materialService.getOne(materialWrapper);
if (material == null) {
//调接口查物料
return WebserviceResult.error("该物料不存在");
}
LambdaQueryWrapper<ShipmentHeader> headerWrapper = Wrappers.lambdaQuery();
headerWrapper.eq(ShipmentHeader::getReferCode, shipmentBean.getSAPNO());
ShipmentHeader shipmentHeader = shipmentHeaderService.getOne(headerWrapper);
if (shipmentHeader == null){
ShipmentHeader emptyShipmentHeader = new ShipmentHeader();
emptyShipmentHeader.setShipmentType("ELO");
emptyShipmentHeader.setReferPlatform("SAP");
emptyShipmentHeader.setReferCode(shipmentBean.getSAPNO());
if (shipmentHeaderService.saveHeader(shipmentHeader).getCode()!=200){
throw new ServiceException("出库头表创建失败");
}
shipmentHeader = shipmentHeaderService.getOne(headerWrapper);
}
ShipmentDetail shipmentDetail = new ShipmentDetail();
shipmentDetail.setShipmentId(shipmentHeader.getId());
shipmentDetail.setReferCode(shipmentBean.getSAPNO());
shipmentDetail.setReferLineNum(shipmentBean.getItem().getSAPLINE());
shipmentDetail.setMaterialCode(shipmentBean.getMATNR());
shipmentDetail.setMaterialName(material.getName());
shipmentDetail.setBatch(shipmentBean.getItem().getCHARG());
shipmentDetail.setRequestQty(shipmentBean.getMENCE());
if (shipmentDetailService.insertDetail(shipmentDetail).getCode()!=200){
throw new ServiceException("出库明细创建失败");
}
return WebserviceResult.success("出库单下发成功");
}
}