PdaApiServiceImpl.java
5.25 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
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 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;
/**
* 通过送货单号创建入库
* @param parameter
* @return
*/
public AjaxResult createReceiptService(PdaParameter parameter){
if (parameter == null){
return AjaxResult.error("请勿发送空数据!");
}
String code = parameter.getCode();
String lot = parameter.getLot();
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){
return AjaxResult.error("入库单已存在请勿重复扫码!");
}
// 切换至从库
DynamicDataSource.slave();
// 通过erp数据查询到货单
LambdaQueryWrapper<U8ReceiptHeader> lambda = Wrappers.lambdaQuery();
lambda.eq(U8ReceiptHeader::getReferCode, code);
U8ReceiptHeader u8ReceiptHeader = u8ReceiptHeaderService.getOne(lambda);
if (u8ReceiptHeader == null){
return AjaxResult.error("到货单查询失败!");
}
// 通多到货单号查询到货单详情
LambdaQueryWrapper<U8ReceiptDetail> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(U8ReceiptDetail::getReferCode, code);
List<U8ReceiptDetail> u8ReceiptDetails = u8ReceiptDetailService.list(queryWrapper);
if (u8ReceiptDetails.size() == 0){
return AjaxResult.error("查询送货单详情失败!");
}
// 创建入库单头表
ReceiptHeader header = new ReceiptHeader();
// 设置单据类型为采购入库单
header.setReceiptType(QuantityConstant.PURCHASE_RECEIPT_DOC);
// 存储到货单号
header.setUserDef1(code);
// 生成上游单号
String referCode = u8ReceiptHeaderService.createCode(QuantityConstant.PURCHASE_RECEIPT_DOC_TYPE);
// 设置货主
header.setCompanyCode(QuantityConstant.COMPANYCODE);
// 设置仓库
header.setWarehouseCode(QuantityConstant.WAREHOUSECODE);
header.setReferCode(referCode);
// 创建入库单详情
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);
receiptDetailList.add(receiptDetail);
});
// 切换至主库
DynamicDataSource.master();
ReceiptDomain receiptDomain = new ReceiptDomain();
receiptDomain.setReceiptHeader(header);
receiptDomain.setReceiptDetails(receiptDetailList);
AjaxResult result = receiptApiService.receipt(receiptDomain);
if (result.hasErr()){
return result;
}
result.setData(receiptDomain);
return result;
}
}