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