Commit 2572be5523f2a5ff9cb3b2d971631d9fc87fb2d2
Merge branch 'develop' of http://172.16.29.40:8010/wms/wms2 into develop
Showing
2 changed files
with
118 additions
and
86 deletions
src/main/java/com/huaheng/pc/inventory/inventoryHeader/service/InventoryHeaderServiceImpl.java
... | ... | @@ -25,6 +25,7 @@ import com.huaheng.pc.task.taskDetail.service.TaskDetailServiceImpl; |
25 | 25 | import com.huaheng.pc.task.taskHeader.domain.TaskHeader; |
26 | 26 | import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; |
27 | 27 | import com.huaheng.pc.task.taskHeader.service.TaskHeaderServiceImpl; |
28 | +import com.huaheng.pc.task.taskHeader.service.WorkTaskService; | |
28 | 29 | import org.springframework.stereotype.Service; |
29 | 30 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
30 | 31 | import com.huaheng.pc.inventory.inventoryHeader.mapper.InventoryHeaderMapper; |
... | ... | @@ -54,6 +55,8 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe |
54 | 55 | private InventoryDetailService inventoryDetailService; |
55 | 56 | @Resource |
56 | 57 | private MaterialService materialService; |
58 | + @Resource | |
59 | + private WorkTaskService workTaskService; | |
57 | 60 | |
58 | 61 | |
59 | 62 | /** |
... | ... | @@ -89,97 +92,17 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe |
89 | 92 | /** |
90 | 93 | * 空托入库 |
91 | 94 | * */ |
92 | - @Transactional | |
93 | 95 | @Override |
94 | 96 | public AjaxResult createEmptyIn(String containerCode, String destinationLocation) { |
95 | - | |
96 | - return AjaxResult.success(); | |
97 | + return workTaskService.createEmptyIn(containerCode, destinationLocation); | |
97 | 98 | } |
98 | 99 | |
99 | 100 | /** |
100 | 101 | *空托出库 |
101 | 102 | * */ |
102 | - @Transactional | |
103 | 103 | @Override |
104 | 104 | public AjaxResult createEmptyOut(String containerCode, String sourceLocation) { |
105 | - // 检查容器 | |
106 | - Container temp3 = new Container(); | |
107 | - temp3.setCode(containerCode); | |
108 | - temp3.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
109 | - LambdaQueryWrapper lambda3 = Wrappers.lambdaQuery(temp3); | |
110 | - Container container = containerService.getOne(lambda3); | |
111 | - if(container==null){ | |
112 | - return AjaxResult.error("托盘不存在"); | |
113 | - } | |
114 | - if (StringUtils.isEmpty(container.getLocationCode())|| !(container.getLocationCode().equals(sourceLocation))) { | |
115 | - return AjaxResult.error("容器不在库位[" + sourceLocation + "]上"); | |
116 | - } | |
117 | - //检查库位 | |
118 | - Location temp4 = new Location(); | |
119 | - temp4.setCode(sourceLocation); | |
120 | - temp4.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
121 | - LambdaQueryWrapper lamda4 = Wrappers.lambdaQuery(temp4); | |
122 | - Location loc = locationService.getOne(lamda4); | |
123 | - if(loc==null){ | |
124 | - return AjaxResult.error("源货位不存在"); | |
125 | - } | |
126 | - if(StringUtils.isEmpty(loc.getContainerCode())){ | |
127 | - return AjaxResult.error("源货位没有托盘"); | |
128 | - } | |
129 | - if(!"empty".equals(loc.getStatus())){ | |
130 | - return AjaxResult.error("源货位非空闲"); | |
131 | - } | |
132 | - //检查库存,有库存不给生成任务。 | |
133 | - LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
134 | - inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getWarehouseCode,loc.getWarehouseCode()) | |
135 | - .eq(InventoryDetail::getLocationCode, loc.getCode()); | |
136 | - List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper); | |
137 | - if(inventoryDetailList != null && inventoryDetailList.size() > 0){ | |
138 | - return AjaxResult.error("该容器上有库存,无法空托出库!"); | |
139 | - } | |
140 | - //判断托盘是否已经存在任务 | |
141 | - Integer taskCount = taskHeaderService.UncompleteCount(containerCode); | |
142 | - if (taskCount != null && taskCount.intValue() > 0) { | |
143 | - return AjaxResult.error("容器已存在任务"); | |
144 | - } | |
145 | - //生成任务 | |
146 | - TaskHeader taskHeader = new TaskHeader(); | |
147 | - taskHeader.setWarehouseCode(loc.getWarehouseCode()); | |
148 | - taskHeader.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0));//货主 | |
149 | - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_PICKING); //出库内部类型都给200 | |
150 | - taskHeader.setTaskType(QuantityConstant.TASK_TYPE_EMPTYSHIPMENT); | |
151 | - taskHeader.setContainerCode(container.getCode()); | |
152 | - taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); | |
153 | - taskHeader.setFromLocation(sourceLocation); | |
154 | - taskHeader.setToLocation(""); | |
155 | - taskHeader.setCreated(new Date()); | |
156 | - taskHeader.setCreatedBy(ShiroUtils.getLoginName()); | |
157 | - taskHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
158 | - taskHeader.setLastUpdated(new Date()); | |
159 | - if(taskHeaderService.save(taskHeader)){ | |
160 | - //锁定库位状态 | |
161 | - locationService.updateStatus(loc.getCode(),"lock"); | |
162 | - }else{ | |
163 | - throw new ServiceException("空托出库主表生成失败!"); | |
164 | - } | |
165 | - //写入任务细表 | |
166 | - TaskDetail taskDetail = new TaskDetail(); | |
167 | - taskDetail.setTaskId(taskHeader.getId());//主单ID | |
168 | - taskDetail.setTaskType(taskHeader.getTaskType()); | |
169 | - taskDetail.setInternalTaskType(taskHeader.getInternalTaskType()); | |
170 | - taskDetail.setWarehouseCode(taskHeader.getWarehouseCode()); | |
171 | - taskDetail.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0)); | |
172 | - taskDetail.setFromLocation(taskHeader.getFromLocation()); | |
173 | - taskDetail.setToLocation(taskHeader.getToLocation()); | |
174 | - taskDetail.setContainerCode(taskHeader.getContainerCode()); | |
175 | - taskDetail.setCreated(new Date()); | |
176 | - taskDetail.setCreatedBy(ShiroUtils.getLoginName()); | |
177 | - taskDetail.setLastUpdated(new Date()); | |
178 | - taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
179 | - if(taskDetailService.save(taskDetail) == false){ | |
180 | - throw new ServiceException("空托出库任务明细生成失败!"); | |
181 | - } | |
182 | - return AjaxResult.success(taskHeader.getId()); | |
105 | + return workTaskService.createEmptyOut(containerCode, sourceLocation); | |
183 | 106 | } |
184 | 107 | |
185 | 108 | /** |
... | ... |
src/main/java/com/huaheng/pc/task/taskHeader/service/WorkTaskService.java
... | ... | @@ -18,9 +18,14 @@ import com.huaheng.pc.config.location.domain.Location; |
18 | 18 | import com.huaheng.pc.config.location.service.LocationService; |
19 | 19 | import com.huaheng.pc.config.receiptPreference.domain.ReceiptPreference; |
20 | 20 | import com.huaheng.pc.config.receiptPreference.service.ReceiptPreferenceService; |
21 | +import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; | |
22 | +import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; | |
23 | +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; | |
24 | +import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; | |
21 | 25 | import com.huaheng.pc.task.taskDetail.domain.TaskDetail; |
22 | 26 | import com.huaheng.pc.task.taskDetail.service.TaskDetailService; |
23 | 27 | import com.huaheng.pc.task.taskHeader.domain.TaskHeader; |
28 | +import org.aspectj.weaver.loadtime.Aj; | |
24 | 29 | import org.springframework.stereotype.Service; |
25 | 30 | import org.springframework.transaction.annotation.Transactional; |
26 | 31 | |
... | ... | @@ -47,6 +52,10 @@ public class WorkTaskService { |
47 | 52 | private ReceiptPreferenceService preferenceService; |
48 | 53 | @Resource |
49 | 54 | private FilterConfigDetailService filterConfigDetailService; |
55 | + @Resource | |
56 | + private InventoryDetailService inventoryDetailService; | |
57 | + @Resource | |
58 | + private InventoryHeaderService inventoryHeaderService; | |
50 | 59 | |
51 | 60 | /** |
52 | 61 | * 创建入库任务 |
... | ... | @@ -61,7 +70,7 @@ public class WorkTaskService { |
61 | 70 | return AjaxResult.error("容器不存在"); |
62 | 71 | } |
63 | 72 | if (StringUtils.isNotEmpty(container.getLocationCode())) { |
64 | - return AjaxResult.error("容器已在库位[" + container.getLocationCode() + "]上"); | |
73 | + return AjaxResult.error("容器已在库位" + container.getLocationCode() + "上"); | |
65 | 74 | } |
66 | 75 | |
67 | 76 | if (StringUtils.isNotEmpty(destinationLocation)) { |
... | ... | @@ -72,7 +81,7 @@ public class WorkTaskService { |
72 | 81 | if (StringUtils.isNotEmpty(location.getContainerCode())) { |
73 | 82 | return AjaxResult.error(destinationLocation+"上已存在容器"+location.getContainerCode()); |
74 | 83 | } |
75 | - if ("empty".equals(location.getStatus())) { | |
84 | + if (!"empty".equals(location.getStatus())) { | |
76 | 85 | return AjaxResult.error("目标库位非空闲"); |
77 | 86 | } |
78 | 87 | } |
... | ... | @@ -109,10 +118,15 @@ public class WorkTaskService { |
109 | 118 | return AjaxResult.error("容器已存在任务"); |
110 | 119 | } |
111 | 120 | |
121 | + LambdaQueryWrapper<InventoryDetail> queryWrapper = Wrappers.lambdaQuery(); | |
122 | + queryWrapper.eq(InventoryDetail::getContainerCode, containerCode); | |
123 | + if (inventoryDetailService.count(queryWrapper) > 0) { | |
124 | + return AjaxResult.error("该容器上已有库存"); | |
125 | + } | |
112 | 126 | LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate(); |
113 | 127 | containerUpdateWrapper.eq(Container::getCode, container.getCode()) |
114 | 128 | .set(Container::getStatus, "lock"); |
115 | - if (containerService.update(container, containerUpdateWrapper)) { | |
129 | + if (!containerService.update(container, containerUpdateWrapper)) { | |
116 | 130 | throw new ServiceException("容器状态更新失败"); |
117 | 131 | } |
118 | 132 | |
... | ... | @@ -144,7 +158,7 @@ public class WorkTaskService { |
144 | 158 | taskDetail.setToLocation(taskHeader.getToLocation()); |
145 | 159 | taskDetail.setContainerCode(taskHeader.getContainerCode()); |
146 | 160 | |
147 | - if(taskDetailService.save(taskDetail)){ | |
161 | + if(!taskDetailService.save(taskDetail)){ | |
148 | 162 | throw new ServiceException("空托入库任务明细生成失败!"); |
149 | 163 | } |
150 | 164 | //锁库位 |
... | ... | @@ -153,4 +167,99 @@ public class WorkTaskService { |
153 | 167 | } |
154 | 168 | return AjaxResult.success(taskHeader.getId()); |
155 | 169 | } |
170 | + | |
171 | + /** | |
172 | + * 创建空托出库任务 | |
173 | + * 容器编码与源库位只需要填一个 | |
174 | + * @param containerCode 容器编码 | |
175 | + * @param sourceLocation 源库位 | |
176 | + * @return | |
177 | + */ | |
178 | + @Transactional(rollbackFor = Exception.class) | |
179 | + public AjaxResult createEmptyOut(String containerCode, String sourceLocation) { | |
180 | + /* 容器编码*/ | |
181 | + String conCode = null; | |
182 | + /* 库位编码*/ | |
183 | + String locationCode = null; | |
184 | + //验证容器 | |
185 | + if (StringUtils.isNotEmpty(containerCode)) { | |
186 | + Container container = containerService.findAllByCode(containerCode); | |
187 | + if (StringUtils.isNull(container)) { | |
188 | + return AjaxResult.error(containerCode+"容器不存在"); | |
189 | + } | |
190 | + if (!"empty".equals(container.getStatus())) { | |
191 | + return AjaxResult.error(containerCode+"容器状态不为空,不能执行空托出库"); | |
192 | + } | |
193 | + if (StringUtils.isEmpty(container.getLocationCode())) { | |
194 | + return AjaxResult.error("该容器不在库位上"); | |
195 | + } | |
196 | + if (StringUtils.isNotEmpty(sourceLocation)) { | |
197 | + if (!container.getLocationCode().equals(sourceLocation)) { | |
198 | + return AjaxResult.error("该容器所在库位与源库位不同"); | |
199 | + } | |
200 | + } | |
201 | + LambdaQueryWrapper<InventoryDetail> queryWrapper = Wrappers.lambdaQuery(); | |
202 | + queryWrapper.eq(InventoryDetail::getContainerCode, containerCode); | |
203 | + if (inventoryDetailService.count(queryWrapper) > 0) { | |
204 | + return AjaxResult.error("该容器上有库存,无法空托出库!"); | |
205 | + } | |
206 | + conCode = containerCode; | |
207 | + locationCode = container.getLocationCode(); | |
208 | + } | |
209 | + //验证库位 | |
210 | + if (StringUtils.isNotEmpty(sourceLocation)) { | |
211 | + Location location = locationService.findLocationByCode(sourceLocation); | |
212 | + if (StringUtils.isNull(location)) { | |
213 | + return AjaxResult.error(sourceLocation+"库位不存在"); | |
214 | + } | |
215 | + if (!"empty".equals(location.getStatus())) { | |
216 | + return AjaxResult.error(location.getCode()+"库位状态不为空闲不能执行出库"); | |
217 | + } | |
218 | + if (StringUtils.isEmpty(location.getContainerCode())) { | |
219 | + return AjaxResult.error(location.getCode()+"库位上没有容器"); | |
220 | + } | |
221 | + if (StringUtils.isNotEmpty(containerCode)) { | |
222 | + if (!location.getContainerCode().equals(sourceLocation)) { | |
223 | + return AjaxResult.error("该库位上容器编码与输入容器编码不同"); | |
224 | + } | |
225 | + } | |
226 | + LambdaQueryWrapper<InventoryDetail> queryWrapper = Wrappers.lambdaQuery(); | |
227 | + queryWrapper.eq(InventoryDetail::getLocationCode, sourceLocation); | |
228 | + if (inventoryDetailService.count(queryWrapper) > 0) { | |
229 | + return AjaxResult.error("该库位上有库存,无法空托出库!"); | |
230 | + } | |
231 | + | |
232 | + locationCode = location.getCode(); | |
233 | + conCode = location.getContainerCode(); | |
234 | + } | |
235 | + | |
236 | + TaskHeader taskHeader = new TaskHeader(); | |
237 | + taskHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
238 | + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_WORK); | |
239 | + taskHeader.setTaskType(QuantityConstant.TASK_TYPE_EMPTYSHIPMENT); | |
240 | + taskHeader.setContainerCode(conCode); | |
241 | + taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); | |
242 | + taskHeader.setFromLocation(locationCode); | |
243 | + taskHeader.setToLocation(""); | |
244 | + if(taskHeaderService.save(taskHeader)){ | |
245 | + //锁定库位状态 | |
246 | + locationService.updateStatus(locationCode,"lock"); | |
247 | + } else { | |
248 | + throw new ServiceException("空托出库主表生成失败!"); | |
249 | + } | |
250 | + //写入任务细表 | |
251 | + TaskDetail taskDetail = new TaskDetail(); | |
252 | + taskDetail.setTaskId(taskHeader.getId()); | |
253 | + taskDetail.setTaskType(taskHeader.getTaskType()); | |
254 | + taskDetail.setInternalTaskType(taskHeader.getInternalTaskType()); | |
255 | + taskDetail.setWarehouseCode(taskHeader.getWarehouseCode()); | |
256 | + taskDetail.setCompanyCode(ShiroUtils.getCompanyCodeList().get(0)); | |
257 | + taskDetail.setFromLocation(taskHeader.getFromLocation()); | |
258 | + taskDetail.setToLocation(taskHeader.getToLocation()); | |
259 | + taskDetail.setContainerCode(taskHeader.getContainerCode()); | |
260 | + if(taskDetailService.save(taskDetail)){ | |
261 | + throw new ServiceException("空托出库任务明细生成失败!"); | |
262 | + } | |
263 | + return AjaxResult.success(taskHeader.getId()); | |
264 | + } | |
156 | 265 | } |
... | ... |