AsServiceImpl.java
7.76 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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package com.huaheng.api.as.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.inventory.asmInventory.domain.AsmInventory;
import com.huaheng.pc.inventory.asmInventory.service.IAsmInventoryService;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
import com.huaheng.pc.shipment.shipmentHeader.domain.ASDocumentDetail;
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 升降柜实现方法
* @author xcq
*/
@Service
public class AsServiceImpl implements AsService {
@Resource
private ShipmentDetailService shipmentDetailService;
@Resource
private ShipmentHeaderService shipmentHeaderService;
@Resource
private AsService asService;
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult executionResultFeedbackService(List<ASDocumentDetail> asDocumentDetailList) {
if (asDocumentDetailList == null || asDocumentDetailList.size() == 0){
return AjaxResult.error("执行结果不能为空值!");
}
List<String> codes = asDocumentDetailList.stream().map(ASDocumentDetail::getRIG_ORDINE).distinct().collect(Collectors.toList());
for (ASDocumentDetail asDocumentDetail : asDocumentDetailList){
String code = asDocumentDetail.getRIG_ORDINE();
String materialCode = asDocumentDetail.getRIG_ARTICOLO();
// 查询出库单详情
LambdaQueryWrapper<ShipmentDetail> query = Wrappers.lambdaQuery();
query.eq(ShipmentDetail::getShipmentCode, code)
.eq(ShipmentDetail::getMaterialCode, materialCode);
ShipmentDetail shipmentDetail = shipmentDetailService.getOne(query);
if (shipmentDetail != null && (!QuantityConstant.SHIPMENT_HEADER_RETURN.equals(shipmentDetail.getStatus()))){
shipmentDetail.setStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
shipmentDetail.setTaskQty(asDocumentDetail.getRIG_QTAE());
shipmentDetailService.updateById(shipmentDetail);
}
}
for (String code : codes){
LambdaQueryWrapper<ShipmentDetail> query = Wrappers.lambdaQuery();
query.eq(ShipmentDetail::getShipmentCode, code);
List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(query);
Boolean complete = true;
BigDecimal total = BigDecimal.ZERO;
for (ShipmentDetail item : shipmentDetailList){
if (!QuantityConstant.SHIPMENT_HEADER_RETURN.equals(item.getStatus())){
complete = false;
}
total = total.add(item.getTaskQty());
}
if (complete){
LambdaQueryWrapper<ShipmentHeader> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(ShipmentHeader::getCode, code);
ShipmentHeader shipmentHeader = shipmentHeaderService.getOne(queryWrapper);
shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
shipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
shipmentHeader.setTotalQty(total);
shipmentHeaderService.updateById(shipmentHeader);
}
}
return AjaxResult.success();
}
@Resource
private IAsmInventoryService asmInventoryService;
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult shipmentExecutionResult(List<ASDocumentDetail> asDocumentDetailList) {
if (asDocumentDetailList == null || asDocumentDetailList.size() == 0){
return AjaxResult.error("执行结果不能为空值!");
}
for (ASDocumentDetail asDocumentDetail : asDocumentDetailList){
String id = asDocumentDetail.getRIG_ORDINE();
String materialCode = asDocumentDetail.getRIG_ARTICOLO();
// 查询出库单详情
LambdaQueryWrapper<AsmInventory> query = Wrappers.lambdaQuery();
query.eq(AsmInventory::getId, id)
.eq(AsmInventory::getMaterialCode, materialCode);
AsmInventory asmInventory = asmInventoryService.getOne(query);
if (asmInventory != null && (!QuantityConstant.SHIPMENT_HEADER_RETURN.equals(asmInventory.getState()))){
asmInventory.setState(QuantityConstant.SHIPMENT_HEADER_RETURN);
asmInventory.setTaskQty(asDocumentDetail.getRIG_QTAE());
asmInventoryService.updateById(asmInventory);
// 反馈结果完成后创建升降柜周转任务
AjaxResult result = asService.createTransitTask(asmInventory);
if (result.hasErr()){
throw new ServiceException(result.getMsg());
}
}
}
return AjaxResult.success();
}
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private TaskDetailService taskDetailService;
@Override
public AjaxResult createTransitTask(AsmInventory asmInventory) {
// 创建任务头表
TaskHeader taskHeader = new TaskHeader();
// 任务类型
taskHeader.setTaskType(QuantityConstant.TASK_ASM_SHIPMENT);
// 任务状态
taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
// 仓库
taskHeader.setWarehouseCode(QuantityConstant.WAREHOUSECODE);
// 容器号
taskHeader.setContainerCode(asmInventory.getLocation());
// 创建时间
taskHeader.setCreated(new Date());
// 创建人
taskHeader.setCreatedBy(asmInventory.getCreatedBy());
// 更新时间
taskHeader.setLastUpdated(new Date());
// 更新用户
taskHeader.setLastUpdatedBy(asmInventory.getLastUpdatedBy());
// 周转任务状态
taskHeader.setTurnoverStatus(QuantityConstant.TASK_NEWLY_BUILT);
if (!taskHeaderService.save(taskHeader)){
throw new ServiceException("创建周转任务头表失败!");
}
// 查询物料数据
// 创建任务详情
TaskDetail taskDetail = new TaskDetail();
// 任务头表id
taskDetail.setTaskId(taskHeader.getId());
// 物料编码
taskDetail.setMaterialCode(asmInventory.getMaterialCode());
// 出库数量
taskDetail.setQty(asmInventory.getTaskQty());
// 容器号
taskDetail.setContainerCode(asmInventory.getLocation());
// 仓库
taskDetail.setWarehouseCode(QuantityConstant.WAREHOUSECODE);
// 货主
taskDetail.setCompanyCode(QuantityConstant.COMPANYCODE);
// 任务类型
taskDetail.setTaskType(QuantityConstant.TASK_ASM_SHIPMENT);
if (!taskDetailService.save(taskDetail)){
throw new ServiceException("创建任务详情失败!");
}
return AjaxResult.success();
}
}