ERPServiceImpl.java
6.17 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
package com.huaheng.api.erp.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.erp.domain.BoxInfo;
import com.huaheng.api.erp.domain.MaterialInfo;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.config.containerType.domain.ContainerType;
import com.huaheng.pc.config.containerType.service.ContainerTypeService;
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Service
public class ERPServiceImpl implements ERPService {
@Resource
private ContainerService containerService;
@Resource
private ContainerTypeService containerTypeService;
@Resource
private ReceiptContainerHeaderService receiptContainerHeaderService;
@Resource
private ReceiptContainerDetailService receiptContainerDetailService;
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult innerReceipt(String containerCode, String position, String orderCode,
String orderName, List<BoxInfo> boxInfoList,
String receiptCode, String stack, int qc) {
String warehouseCode = "CS0001";
Container container = containerService.getContainerByCode(containerCode, warehouseCode);
if(container == null) {
return AjaxResult.error("根据托盘号:" + containerCode + "没有找到匹配的容器");
}
String locationCode = container.getLocationCode();
if(StringUtils.isNotEmpty(locationCode)) {
return AjaxResult.error("这个容器在库位上,不能用来入库, 托盘号:" + containerCode);
}
String containerTypeCode = container.getContainerType();
if(containerTypeCode == null) {
return AjaxResult.error("容器类型编码为空");
}
ContainerType containerType = containerTypeService.getContainerTypeByCode(containerTypeCode, warehouseCode);
if(containerType == null) {
return AjaxResult.error("容器类型为空");
}
if(boxInfoList == null || boxInfoList.size() == 0) {
return AjaxResult.error("箱信息为空");
}
List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
for(BoxInfo boxInfo : boxInfoList) {
ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
String boxCode = boxInfo.getBoxCode();
String boxPosition = boxInfo.getBoxPosition();
List<MaterialInfo> materialInfoList = boxInfo.getMaterialInfo();
for(MaterialInfo materialInfo : materialInfoList) {
String materialCode = materialInfo.getMaterialCode();
String chipCode = materialInfo.getChipCode();
String level = materialInfo.getLevel();
String color = materialInfo.getColor();
BigDecimal qty = materialInfo.getQty();
String batch = materialInfo.getBatch();
receiptContainerDetail.setMaterialCode(materialCode);
receiptContainerDetail.setChipCode(chipCode);
receiptContainerDetail.setLevel(level);
receiptContainerDetail.setColor(color);
receiptContainerDetail.setQty(qty);
receiptContainerDetail.setBatch(batch);
}
receiptContainerDetail.setReceiptCode(receiptCode);
receiptContainerDetail.setBoxCode(boxCode);
receiptContainerDetail.setBoxPosition(boxPosition);
receiptContainerDetailList.add(receiptContainerDetail);
}
LambdaQueryWrapper<ReceiptContainerHeader> receiptContainerHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
receiptContainerHeaderLambdaQueryWrapper.eq(ReceiptContainerHeader::getContainerCode, containerCode)
.lt(ReceiptContainerHeader::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED);
ReceiptContainerHeader receiptContainerHeader =
receiptContainerHeaderService.getOne(receiptContainerHeaderLambdaQueryWrapper);
if(receiptContainerHeader != null) {
return AjaxResult.error("容器已经有组盘信息,容器号:" + containerCode);
}
ReceiptContainerHeader receiptContainerHeader1 = new ReceiptContainerHeader();
receiptContainerHeader1.setWarehouseCode(warehouseCode);
receiptContainerHeader1.setCompanyCode("JY");
receiptContainerHeader1.setContainerCode(containerCode);
receiptContainerHeader1.setPosition(position);
receiptContainerHeader1.setContainerType(containerTypeCode);
receiptContainerHeader1.setTaskType(QuantityConstant.TASK_TYPE_WHOLERECEIPT);
receiptContainerHeader1.setStatus(QuantityConstant.RECEIPT_CONTAINER_BUILD);
receiptContainerHeader1.setCreatedBy("赋码系统");
receiptContainerHeader1.setStack(stack);
boolean result = receiptContainerHeaderService.save(receiptContainerHeader1);
if(!result) {
throw new ServiceException("保存入库组盘头失败");
}
result = receiptContainerDetailService.saveBatch(receiptContainerDetailList);
if(!result) {
throw new ServiceException("保存入库组盘详情失败");
}
return AjaxResult.success("保存入库组盘信息成功");
}
}