|
1
2
|
package com.huaheng.api.wcs.service.overrideHandle;
|
|
3
4
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
5
|
import com.huaheng.api.wcs.domain.TaskFinishDomain;
|
|
6
|
import com.huaheng.api.wcs.domain.WcsTask;
|
|
7
|
import com.huaheng.api.wcs.service.warecellAllocation.WarecellAllocationService;
|
|
8
9
|
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
|
|
10
|
import com.huaheng.common.utils.security.ShiroUtils;
|
|
11
|
import com.huaheng.framework.web.domain.AjaxResult;
|
|
12
13
|
import com.huaheng.pc.config.FilterConfigDetail.domain.FilterConfigDetail;
import com.huaheng.pc.config.FilterConfigDetail.service.FilterConfigDetailService;
|
|
14
15
16
17
18
19
20
21
|
import com.huaheng.pc.config.location.domain.Location;
import com.huaheng.pc.config.location.service.LocationService;
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 com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
|
|
22
|
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
|
|
23
24
|
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import org.springframework.beans.factory.annotation.Autowired;
|
|
25
|
import org.springframework.stereotype.Service;
|
|
26
27
|
import org.springframework.transaction.annotation.Transactional;
|
|
28
|
import javax.annotation.Resource;
|
|
29
30
|
import java.util.ArrayList;
import java.util.List;
|
|
31
32
33
34
|
@Service
public class OverrideHandleServiceImpl implements OverrideHandleService {
|
|
35
36
37
38
39
40
41
42
43
44
45
|
@Autowired
private TaskHeaderService taskHeaderService;
@Autowired
private TaskDetailService taskDetailService;
@Autowired
private LocationService locationService;
@Autowired
private ReceiptContainerHeaderService receiptContainerHeaderService;
@Autowired
private ReceiptContainerDetailService receiptContainerDetailService;
|
|
46
47
48
49
|
@Resource
private WarecellAllocationService warecellAllocationService;
@Resource
private FilterConfigDetailService filterConfigDetailService;
|
|
50
|
|
|
51
52
53
|
/**
* 重入处理
* 1、判断非空字段
|
|
54
55
|
* 2、根据任务号查找任务
* 3、修改任务目的库位,修改入库组盘的库位,修改库位状态
|
|
56
57
58
|
*/
@Override
|
|
59
|
@Transactional
|
|
60
|
public AjaxResult OverrideHandle(TaskFinishDomain taskFinishDomain) {
|
|
61
62
|
Boolean flag = true;
|
|
63
|
//1、判断非空字段
|
|
64
|
if(StringUtils.isEmpty(taskFinishDomain.getTaskNo())){
|
|
65
66
|
return AjaxResult.error("任务号为空");
}
|
|
67
|
if(StringUtils.isEmpty(taskFinishDomain.getToLocationCode())){
|
|
68
69
|
return AjaxResult.error("目的库位为空");
}
|
|
70
|
if(StringUtils.isEmpty(taskFinishDomain.getRedirectionLocationCode())){
|
|
71
|
return AjaxResult.error("重入的库位编码为空");
|
|
72
73
74
|
}
|
|
75
|
|
|
76
|
//2、根据任务号查找任务
|
|
77
|
TaskHeader taskHeader = taskHeaderService.getById(Integer.valueOf(taskFinishDomain.getTaskNo()));
|
|
78
79
80
|
if(taskHeader == null){
return AjaxResult.error("任务号错误,没有找到该任务");
}
|
|
81
82
83
|
if(taskHeader.getStatus() == 100){
return AjaxResult.error("任务已完成");
}
|
|
84
85
86
87
88
89
90
91
92
93
94
|
//3、修改任务目的库位,修改入库组盘的库位,修改库位状态
//修改原来目的库位的状态
LambdaQueryWrapper<Location> locationLam = Wrappers.lambdaQuery();
locationLam.eq(Location::getCode,taskHeader.getToLocation())
.eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode());
Location location = locationService.getOne(locationLam);
if(location == null){
return AjaxResult.error("此任务的原目的库位在系统中不存在");
}
location.setStatus("empty");
|
|
95
|
location.setContainerCode("");
|
|
96
97
98
99
100
|
flag = locationService.updateById(location);
if(flag == false){
return AjaxResult.error("修改此任务的原目的库位错误");
}
|
|
101
102
103
104
105
106
107
108
|
/**
* 查看新库位有两种情况
* 1、重入的库位由wcs提供
* 2、重入的库位由wms提供
*/
Location newlocation =new Location();
|
|
109
|
String code=ShiroUtils.getWarehouseCode();
|
|
110
111
|
//重入的库位由wcs提供
if(!taskFinishDomain.getRedirectionLocationCode().equals("0")) {
|
|
112
113
114
|
LambdaQueryWrapper<Location> locationLa = Wrappers.lambdaQuery();
locationLa.eq(Location::getCode, taskFinishDomain.getRedirectionLocationCode())
.eq(Location::getStatus,"empty")
|
|
115
|
.eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode());
|
|
116
|
newlocation = locationService.getOne(locationLa);
|
|
117
|
if (newlocation == null) {
|
|
118
119
120
121
|
throw new ServiceException("新目的库位在系统中不存在或非空闲");
}
if(StringUtils.isNotEmpty(newlocation.getContainerCode())){
throw new ServiceException("新目的库位在系统中已经有容器");
|
|
122
123
124
|
}
}else {
//重入的库位由wms提供
|
|
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
//查询任务明细
LambdaQueryWrapper<TaskDetail> taskDetailLambda = Wrappers.lambdaQuery();
taskDetailLambda.eq(TaskDetail::getTaskId, taskFinishDomain.getTaskNo());
List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambda);
//查询入库组盘明细
List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
for (TaskDetail taskDetail : taskDetailList) {
receiptContainerDetailList.add(receiptContainerDetailService.getById(taskDetail.getAllocationId()));
}
ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(receiptContainerDetailList.get(0).getReceiptContainerId());
String locatingRule = warecellAllocationService.taskPositioning(receiptContainerDetailList.get(0));
LambdaQueryWrapper<FilterConfigDetail> filterConfigDetailLambda = Wrappers.lambdaQuery();
filterConfigDetailLambda.eq(FilterConfigDetail::getCode, locatingRule);
FilterConfigDetail filterConfigDetail = filterConfigDetailService.getOne(filterConfigDetailLambda);
|
|
140
|
|
|
141
142
143
144
|
//根据定位规则查询库位编码
LambdaQueryWrapper<Location> locationLambda = Wrappers.lambdaQuery();
locationLambda.last(filterConfigDetail.getStatement());
newlocation = locationService.getOne(locationLambda);
|
|
145
|
}
|
|
146
|
|
|
147
|
//修改任务
|
|
148
149
|
taskHeader.setToLocation(newlocation.getCode());
taskHeader.setExceptionCode("重入处理");
|
|
150
151
152
153
154
155
156
157
158
159
160
161
162
|
flag = taskHeaderService.updateById(taskHeader);
if(flag == false){
throw new ServiceException("修改此任务错误");
}
//修改子任务
LambdaQueryWrapper<TaskDetail> taskDetailLam = Wrappers.lambdaQuery();
taskDetailLam.eq(TaskDetail::getWarehouseCode,ShiroUtils.getWarehouseCode())
.eq(TaskDetail::getTaskId,taskHeader.getId());
List<TaskDetail> taskDetails = taskDetailService.list(taskDetailLam);
List<TaskDetail> taskDetailList = new ArrayList<>();
if(taskDetails != null && taskDetails.size()> 0){
for(TaskDetail taskDetail : taskDetails){
|
|
163
|
taskDetail.setToLocation(newlocation.getCode());
|
|
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
taskDetailList.add(taskDetail);
}
flag = taskDetailService.updateBatchById(taskDetailList);
if(flag == false){
throw new ServiceException("修改此任务的明细错误");
}
}
//修改入库组盘
if(taskHeader.getAllocationHeadId() == null){
throw new ServiceException("找不到此任务的组盘头id");
}
ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(taskHeader.getAllocationHeadId());
if(receiptContainerHeader == null){
throw new ServiceException("找不到此任务的组盘头");
}
|
|
180
|
receiptContainerHeader.setToLocation(newlocation.getCode());
|
|
181
182
183
184
185
186
187
188
189
190
|
flag = receiptContainerHeaderService.updateById(receiptContainerHeader);
if(flag == false){
throw new ServiceException("修改此任务对应的组盘头错误");
}
//修改入库组盘明细
LambdaQueryWrapper<ReceiptContainerDetail> lam = Wrappers.lambdaQuery();
lam.eq(ReceiptContainerDetail::getReceiptContainerId,receiptContainerHeader.getId())
.eq(ReceiptContainerDetail::getWarehouseCode,ShiroUtils.getWarehouseCode());
List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(lam);
|
|
191
|
|
|
192
193
194
|
List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
if(receiptContainerDetails != null && receiptContainerDetails.size()> 0){
for(ReceiptContainerDetail receiptContainerDetail : receiptContainerDetails){
|
|
195
|
receiptContainerDetail.setLocationCode(newlocation.getCode());
|
|
196
197
198
199
200
201
202
203
|
receiptContainerDetailList.add(receiptContainerDetail);
}
flag = receiptContainerDetailService.updateBatchById(receiptContainerDetailList);
if(flag == false){
throw new ServiceException("修改此任务的组盘明细错误");
}
}
return AjaxResult.success("重入处理成功");
|
|
204
205
|
}
}
|