PdaApiServiceImpl.java
6.48 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package com.huaheng.api.pda.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.general.domain.ReceiptDomain;
import com.huaheng.api.general.service.ReceiptApiService;
import com.huaheng.api.pda.domain.PdaParameter;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.datasource.DynamicDataSource;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.U8.domain.U8ReceiptDetail;
import com.huaheng.pc.U8.domain.U8ReceiptHeader;
import com.huaheng.pc.U8.service.U8ReceiptDetailService;
import com.huaheng.pc.U8.service.U8ReceiptHeaderService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
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 org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* pda逻辑处理层
* @author xcq
*/
@Service
public class PdaApiServiceImpl {
@Resource
private U8ReceiptHeaderService u8ReceiptHeaderService;
@Resource
private U8ReceiptDetailService u8ReceiptDetailService;
@Resource
private ReceiptApiService receiptApiService;
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private ReceiptHeaderService receiptHeaderService;
/**
* 通过送货单号创建入库
* @param parameter
* @return
*/
public AjaxResult createReceiptService(PdaParameter parameter){
if (parameter == null){
return AjaxResult.error("请勿发送空数据!");
}
String code = parameter.getCode();
String lot = parameter.getLot();
ReceiptDomain receiptDomain = new ReceiptDomain();
if (StringUtils.isEmpty(code) || StringUtils.isEmpty(lot)){
return AjaxResult.error("到货单号货批号不能为空!");
}
// 查询到货单是否已经存在
LambdaQueryWrapper<ReceiptDetail> lambdaQuery = Wrappers.lambdaQuery();
lambdaQuery.eq(ReceiptDetail::getUserDef1, code)
.eq(ReceiptDetail::getLot, lot);
List<ReceiptDetail> receiptDetails = receiptDetailService.list(lambdaQuery);
if (receiptDetails != null && receiptDetails.size() > 0){
LambdaQueryWrapper<ReceiptHeader> headerLambdaQueryWrapper = Wrappers.lambdaQuery();
headerLambdaQueryWrapper.eq(ReceiptHeader::getCode, receiptDetails.get(0).getReceiptCode());
ReceiptHeader receiptHeader = receiptHeaderService.getOne(headerLambdaQueryWrapper);
receiptDomain.setReceiptHeader(receiptHeader);
receiptDomain.setReceiptDetails(receiptDetails);
AjaxResult result = AjaxResult.success("入库单已存在!");
result.setData(receiptDomain);
return result;
}
// 切换至从库
DynamicDataSource.slave();
// 通过erp数据查询到货单
LambdaQueryWrapper<U8ReceiptHeader> lambda = Wrappers.lambdaQuery();
lambda.eq(U8ReceiptHeader::getReferCode, code);
U8ReceiptHeader u8ReceiptHeader = u8ReceiptHeaderService.getOne(lambda);
if (u8ReceiptHeader == null){
return AjaxResult.error("到货单查询失败!");
}
String cWhCode = null;
// 通过到货单号查询到货单详情
LambdaQueryWrapper<U8ReceiptDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(U8ReceiptDetail::getReferCode, code);
List<U8ReceiptDetail> u8ReceiptDetails = u8ReceiptDetailService.list(queryWrapper);
if (u8ReceiptDetails.size() == 0){
return AjaxResult.error("查询送货单详情失败!");
}
if (StringUtils.isNotEmpty(u8ReceiptHeader.getCWhCode())){
cWhCode = u8ReceiptHeader.getCWhCode();
}else {
cWhCode = u8ReceiptDetails.get(0).getCWhCode();
}
if (StringUtils.isEmpty(cWhCode)){
return AjaxResult.error("到货单:"+u8ReceiptHeader.getReferCode()+"仓库为空!");
}
// 创建入库单头表
ReceiptHeader header = new ReceiptHeader();
// 设置单据类型为采购入库单
header.setReceiptType(QuantityConstant.PURCHASE_RECEIPT_DOC);
// 存储到货单号
header.setUserDef1(code);
// 设置U8仓库单号
header.setUserDef2(cWhCode);
// 设置货主
header.setCompanyCode(QuantityConstant.COMPANYCODE);
// 设置仓库
header.setWarehouseCode(QuantityConstant.WAREHOUSECODE);
// 供应商编码
header.setSupplierCode(u8ReceiptHeader.getSupplierCode());
// 入库头表保存批次号
header.setUserDef3(lot);
// 创建入库单详情
List<ReceiptDetail> receiptDetailList = new ArrayList<>();
u8ReceiptDetails.forEach(item->{
ReceiptDetail receiptDetail = new ReceiptDetail();
// 数量
receiptDetail.setQty(item.getQty());
// 物料编码
receiptDetail.setMaterialCode(item.getMaterialCode());
// 货主
receiptDetail.setCompanyCode(QuantityConstant.COMPANYCODE);
// 仓库编码
receiptDetail.setWarehouseCode(QuantityConstant.WAREHOUSECODE);
// 制单人
receiptDetail.setCreatedBy(ShiroUtils.getUser().getUserName());
// 送货单号
receiptDetail.setUserDef1(code);
// 批次
receiptDetail.setLot(lot);
// 到货单子单id
receiptDetail.setUserDef2(item.getAutoId());
// 库存状态
receiptDetail.setInventorySts(QuantityConstant.GOOD);
receiptDetailList.add(receiptDetail);
});
// 切换至主库
DynamicDataSource.master();
receiptDomain.setReceiptHeader(header);
receiptDomain.setReceiptDetails(receiptDetailList);
AjaxResult result = receiptApiService.receipt(receiptDomain);
if (result.hasErr()){
return result;
}
result.setData(receiptDomain);
return result;
}
}