Commit 60fc6633fb1668b1cfc7673ed069d94d2dcccd17

Authored by DESKTOP-AO0VKC8\mahua
1 parent cabf7776

修改入库任务完成、出库自动组盘

src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/service/ShipmentContainerHeaderServiceImpl.java
@@ -243,11 +243,12 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont @@ -243,11 +243,12 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl<ShipmentCont
243 Boolean flag =true; 243 Boolean flag =true;
244 //1.查看是否有同一出库明细的物料需要出库 244 //1.查看是否有同一出库明细的物料需要出库
245 LambdaQueryWrapper<ShipmentContainerDetail> lambdaQueryWrapper=Wrappers.lambdaQuery(); 245 LambdaQueryWrapper<ShipmentContainerDetail> lambdaQueryWrapper=Wrappers.lambdaQuery();
246 - lambdaQueryWrapper.eq(ShipmentContainerDetail::getShippingContainerId,shipmentContainerHeader.getId())  
247 - .eq(ShipmentContainerDetail::getLocationCode,shipmentContainerHeader.getLocationCode())  
248 - .eq(ShipmentContainerDetail::getContainerCode,shipmentContainerHeader.getContainerCode())  
249 - .eq(ShipmentContainerDetail::getShipmentDetailId,shipmentCombinationModel.getShipmentDetailId())  
250 - .eq(ShipmentContainerDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()); 246 + lambdaQueryWrapper.eq(ShipmentContainerDetail::getShippingContainerId, shipmentContainerHeader.getId())
  247 + .eq(ShipmentContainerDetail::getLocationCode, shipmentContainerHeader.getLocationCode())
  248 + .eq(ShipmentContainerDetail::getContainerCode, shipmentContainerHeader.getContainerCode())
  249 + .eq(ShipmentContainerDetail::getShipmentDetailId, shipmentCombinationModel.getShipmentDetailId())
  250 + .eq(ShipmentContainerDetail::getInventoryId, shipmentCombinationModel.getInventoryDetailId())
  251 + .eq(ShipmentContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
251 ShipmentContainerDetail shipmentContainerDetail = shipmentContainerDetailService.getOne(lambdaQueryWrapper); 252 ShipmentContainerDetail shipmentContainerDetail = shipmentContainerDetailService.getOne(lambdaQueryWrapper);
252 ShipmentContainerDetail shipmentContainerDetaill = new ShipmentContainerDetail(); 253 ShipmentContainerDetail shipmentContainerDetaill = new ShipmentContainerDetail();
253 254
@@ -472,7 +473,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;ShipmentCont @@ -472,7 +473,7 @@ public class ShipmentContainerHeaderServiceImpl extends ServiceImpl&lt;ShipmentCont
472 lambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode, shipmentCode) 473 lambdaQueryWrapper.eq(ShipmentDetail::getShipmentCode, shipmentCode)
473 .eq(ShipmentDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()); 474 .eq(ShipmentDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
474 List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(lambdaQueryWrapper); 475 List<ShipmentDetail> shipmentDetailList = shipmentDetailService.list(lambdaQueryWrapper);
475 - if (shipmentDetailList.size() < 1 || shipmentDetailList == null) { 476 + if (shipmentDetailList.isEmpty()) {
476 return AjaxResult.error("找不到子单链"); 477 return AjaxResult.error("找不到子单链");
477 } 478 }
478 for(ShipmentDetail shipmentDetail: shipmentDetailList){ 479 for(ShipmentDetail shipmentDetail: shipmentDetailList){
src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java
@@ -91,7 +91,7 @@ public class ReceiptTaskService { @@ -91,7 +91,7 @@ public class ReceiptTaskService {
91 * 创建入库任务(整盘入库、补充入库) 91 * 创建入库任务(整盘入库、补充入库)
92 * 92 *
93 * @param ids 入库组盘头表id 93 * @param ids 入库组盘头表id
94 - * @return 94 + * @return AjaxResult 创建结果
95 */ 95 */
96 @Transactional(rollbackFor = Exception.class) 96 @Transactional(rollbackFor = Exception.class)
97 public AjaxResult createReceiptTask(List<Integer> ids) { 97 public AjaxResult createReceiptTask(List<Integer> ids) {
@@ -170,9 +170,7 @@ public class ReceiptTaskService { @@ -170,9 +170,7 @@ public class ReceiptTaskService {
170 throw new ServiceException("更新入库组盘明细状态出错"); 170 throw new ServiceException("更新入库组盘明细状态出错");
171 } 171 }
172 172
173 - /**  
174 - * 修改明细状态为上架  
175 - */ 173 + /* 修改明细状态为上架*/
176 ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId()); 174 ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId());
177 receiptDetail.setProcessStamp(String.valueOf(QuantityConstant.RECEIPT_HEADER_SHELF)); 175 receiptDetail.setProcessStamp(String.valueOf(QuantityConstant.RECEIPT_HEADER_SHELF));
178 if (!receiptDetailService.updateById(receiptDetail)) { 176 if (!receiptDetailService.updateById(receiptDetail)) {
@@ -192,137 +190,84 @@ public class ReceiptTaskService { @@ -192,137 +190,84 @@ public class ReceiptTaskService {
192 190
193 /** 191 /**
194 * 完成入库任务 192 * 完成入库任务
  193 + * @param task 任务
  194 + * @return AjaxResult 完成入库任务结果
195 */ 195 */
196 @Transactional(rollbackFor = Exception.class) 196 @Transactional(rollbackFor = Exception.class)
197 public AjaxResult completeReceiptTask(TaskHeader task) { 197 public AjaxResult completeReceiptTask(TaskHeader task) {
198 - List<Map<String, Object>> taskReceiptContainerDetail = taskHeaderMapper.getReceiptTask(task.getId());  
199 - if (taskReceiptContainerDetail.size() < 1) {  
200 - return AjaxResult.success("未找到对应任务的入库单号!!!"); 198 + /* 判断任务状态*/
  199 + if (task.getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) {
  200 + return AjaxResult.error("任务已完成");
201 } 201 }
202 - LambdaQueryWrapper<InventoryHeader> inventoryHeaderErapper = Wrappers.lambdaQuery();  
203 - inventoryHeaderErapper.eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()) 202 + BigDecimal totalQty = BigDecimal.ZERO;
  203 + List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(task.getId());
  204 + if (taskDetailList.isEmpty()) {
  205 + throw new ServiceException("任务明细为空");
  206 + }
  207 +
  208 + LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
  209 + inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())
204 .eq(InventoryHeader::getLocationCode, task.getToLocation()) 210 .eq(InventoryHeader::getLocationCode, task.getToLocation())
205 .eq(InventoryHeader::getContainerCode, task.getContainerCode()); 211 .eq(InventoryHeader::getContainerCode, task.getContainerCode());
206 - InventoryHeader header = inventoryHeaderService.getOne(inventoryHeaderErapper);  
207 -  
208 - if(header == null) {  
209 - //添加库存单  
210 - header = new InventoryHeader();  
211 - header.setWarehouseCode(task.getWarehouseCode());  
212 - header.setCompanyCode(task.getCompanyCode());//货主  
213 - header.setContainerCode(task.getContainerCode());  
214 - header.setContainerStatus("some");  
215 - header.setLocationCode(task.getToLocation());  
216 - header.setLocking(1);  
217 - header.setEnable(1);  
218 - header.setTotalQty(new BigDecimal(0));  
219 - header.setTotalWeight(task.getWeight());  
220 - header.setCreatedBy(ShiroUtils.getLoginName());  
221 - header.setCreated(new Date());  
222 - header.setLastUpdatedBy(ShiroUtils.getLoginName());  
223 - header.setLastUpdated(new Date());  
224 - if (!inventoryHeaderService.save(header)) { 212 + InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
  213 + /* 如果库存 头明细不存在则新增库存头表记录*/
  214 + if (StringUtils.isNull(inventoryHeader)) {
  215 + inventoryHeader = new InventoryHeader();
  216 + inventoryHeader.setWarehouseCode(task.getWarehouseCode());
  217 + inventoryHeader.setLocationCode(task.getToLocation());
  218 + inventoryHeader.setContainerCode(task.getContainerCode());
  219 + inventoryHeader.setContainerStatus("some");
  220 + inventoryHeader.setTotalWeight(task.getWeight());
  221 + inventoryHeader.setTotalQty(new BigDecimal(0));
  222 + inventoryHeader.setTotalLines(0);
  223 + inventoryHeader.setLocking(1);
  224 + inventoryHeader.setEnable(1);
  225 + if (!inventoryHeaderService.save(inventoryHeader)) {
225 throw new ServiceException("添加库存单失败"); 226 throw new ServiceException("添加库存单失败");
226 } 227 }
  228 + inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
227 } 229 }
228 - for (Map<String, Object> map : taskReceiptContainerDetail) {  
229 - //将未完成的任务数量更新到库存表  
230 - if (DataUtils.getInteger(map.get("status")) < QuantityConstant.TASK_STATUS_COMPLETED) {  
231 230
232 - LambdaQueryWrapper<InventoryDetail> inventory = Wrappers.lambdaQuery();  
233 - inventory.eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())  
234 - .eq(InventoryDetail::getLocationCode, task.getToLocation())  
235 - .eq(InventoryDetail::getMaterialCode, DataUtils.getString(map.get("materialCode")))  
236 - .eq(InventoryDetail::getContainerCode, DataUtils.getString(map.get("containerCode")))  
237 - .eq(InventoryDetail::getBatch, DataUtils.getString(map.get("batch")))  
238 - .eq(InventoryDetail::getLot, DataUtils.getString(map.get("lot")))  
239 - .eq(InventoryDetail::getProjectNo, DataUtils.getString(map.get("projectNo")))  
240 - .eq(InventoryDetail::getCompanyCode, DataUtils.getString(map.get("companyCode")));  
241 - InventoryDetail detail = inventoryDetailService.getOne(inventory);  
242 - if (detail == null) {  
243 - //库存明细添加  
244 - detail = new InventoryDetail();  
245 - detail.setInventoryHeaderId(header.getId());//库存头ID  
246 - detail.setWarehouseCode(DataUtils.getString(map.get("warehouseCode")));//仓库  
247 - detail.setCompanyCode(task.getCompanyCode());//货主  
248 - detail.setLocationCode(task.getToLocation());//库位号  
249 - detail.setContainerCode(DataUtils.getString(map.get("containerCode")));//容器号  
250 - detail.setMaterialCode(DataUtils.getString(map.get("materialCode")));//物料号  
251 - detail.setMaterialName(DataUtils.getString(map.get("materialName")));//物料名称  
252 - detail.setMaterialSpec(DataUtils.getString(map.get("materialSpec")));//物料规格  
253 - detail.setMaterialUnit(DataUtils.getString(map.get("materialUnit")));//物料单位  
254 - detail.setReceiptCode(DataUtils.getString(map.get("receiptCode")));//入库单编码  
255 - detail.setReceiptDetailId(DataUtils.getInteger(map.get("receiptDetailId")));//入库单明细ID  
256 - detail.setBatch(DataUtils.getString(map.get("batch")));//批次  
257 - detail.setLot(DataUtils.getString(map.get("lot")));//批号  
258 - detail.setProjectNo(DataUtils.getString(map.get("projectNo")));//项目号  
259 - detail.setInventorySts(DataUtils.getString(map.get("inventorySts")));//库存状态  
260 -// detail.setManufactureDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("manufactureDate").toString()));//生产日期  
261 -// detail.setExpirationDate(new SimpleDateFormat("yyyy-MM-dd").parse(map.get("expirationDate").toString()));//失效日期  
262 - detail.setQty(DataUtils.getBigDecimal(map.get("qty")));//数量  
263 - detail.setLockedQty(DataUtils.getBigDecimal(0));  
264 - detail.setTaskQty(DataUtils.getBigDecimal(0));  
265 - detail.setCreatedBy(ShiroUtils.getLoginName());//创建人  
266 - detail.setLastUpdatedBy(ShiroUtils.getLoginName());//创建时间  
267 - if (!inventoryDetailService.save(detail)) {  
268 - throw new ServiceException("添加库存明细失败");  
269 - }  
270 - } else {  
271 - detail.setQty(detail.getQty().add(DataUtils.getBigDecimal(map.get("qty"))));  
272 - detail.setLastUpdatedBy(ShiroUtils.getLoginName());  
273 - LambdaUpdateWrapper<InventoryDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();  
274 - lambdaUpdateWrapper.eq(InventoryDetail::getId, detail.getId());  
275 - if (!inventoryDetailService.update(detail, lambdaUpdateWrapper)){  
276 - throw new ServiceException("更新库存明细失败"); 231 + /* 遍历任务明细,修改关联的入库组盘、入库单状态、添加库存*/
  232 + for (TaskDetail taskDetail : taskDetailList) {
  233 + if (taskDetail.getStatus() < QuantityConstant.TASK_STATUS_COMPLETED) {
  234 + totalQty = totalQty.add(taskDetail.getQty());
  235 + /*查询入库单明细*/
  236 + ReceiptDetail receiptDetail = receiptDetailService.getById(taskDetail.getBillDetailId());
  237 + if (StringUtils.isNotNull(receiptDetail)) {
  238 +
  239 + totalQty = this.addInventoryDetail(taskDetail, receiptDetail, inventoryHeader);
  240 + //修改组盘表状态为完成
  241 + ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
  242 + receiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_FINISHED);
  243 + LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate();
  244 + receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getId, taskDetail.getAllocationId());
  245 + if (!receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper)){
  246 + throw new ServiceException("更新组盘状态失败");
277 } 247 }
278 - }  
279 - //记录库存交易记录  
280 - InventoryTransaction inventoryTransaction = new InventoryTransaction();  
281 - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT);  
282 - inventoryTransaction.setWarehouseCode(DataUtils.getString(map.get("warehouseCode")));  
283 - inventoryTransaction.setCompanyCode(task.getCompanyCode());  
284 - inventoryTransaction.setLocationCode(task.getToLocation());  
285 - inventoryTransaction.setContainerCode(DataUtils.getString(map.get("containerCode")));  
286 - inventoryTransaction.setMaterialCode(DataUtils.getString(map.get("materialCode")));  
287 - inventoryTransaction.setMaterialName(DataUtils.getString(map.get("materialName")));  
288 - inventoryTransaction.setMaterialSpec(DataUtils.getString(map.get("materialSpec")));//物料规格  
289 - inventoryTransaction.setMaterialUnit(DataUtils.getString(map.get("materialUnit")));//物料单位  
290 - inventoryTransaction.setBillCode(DataUtils.getString(map.get("receiptCode")));  
291 - inventoryTransaction.setBillDetailId(DataUtils.getInteger(map.get("receiptDetailId")));  
292 - inventoryTransaction.setBatch(DataUtils.getString(map.get("batch")));  
293 - inventoryTransaction.setLot(DataUtils.getString(map.get("lot")));  
294 - inventoryTransaction.setInventorySts(DataUtils.getString((map.get("inventorySts"))));  
295 - inventoryTransaction.setTaskQty(DataUtils.getBigDecimal(map.get("qty")));  
296 - inventoryTransaction.setCreated(new Date());  
297 - inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());  
298 - if (!inventoryTransactionService.save(inventoryTransaction)) {  
299 - throw new ServiceException("新增库存记录失败");  
300 - }  
301 248
302 - //修改任务明细的状态为完成  
303 - TaskDetail taskDetail = new TaskDetail();  
304 - taskDetail.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);  
305 - taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());  
306 - taskDetail.setAgingDate(new Date()); //入库时间  
307 - LambdaUpdateWrapper<TaskDetail> lambdaUpdateWrapper = Wrappers.lambdaUpdate();  
308 - lambdaUpdateWrapper.eq(TaskDetail::getTaskId, task.getId());  
309 - taskDetailService.update(taskDetail, lambdaUpdateWrapper);  
310 - if (!taskDetailService.update(taskDetail, lambdaUpdateWrapper)) {  
311 - throw new ServiceException("修改入库单明细失败"); 249 + } else {
  250 + throw new ServiceException("未找到id:" + taskDetail.getBillDetailId() + "入库单明细");
312 } 251 }
313 - 252 + receiptDetail.setProcessStamp(String.valueOf(QuantityConstant.RECEIPT_HEADER_POSTING));
  253 + receiptDetailService.updateById(receiptDetail);
  254 + receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());
  255 + materialWarningService.materialWarning(taskDetail.getMaterialCode(), taskDetail.getCompanyCode());
314 } 256 }
  257 + }
  258 + if (StringUtils.isNull(inventoryHeader)) {
  259 + throw new ServiceException("库存添加失败");
  260 + } else {
315 261
316 } 262 }
317 //修改任务主表状态,因为立库任务表单头只对应一个货箱,表单详情的任务会同时完成 263 //修改任务主表状态,因为立库任务表单头只对应一个货箱,表单详情的任务会同时完成
318 task.setStatus(QuantityConstant.TASK_STATUS_COMPLETED); 264 task.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);
319 - task.setLastUpdatedBy(ShiroUtils.getLoginName());  
320 - task.setLastUpdated(new Date());  
321 LambdaUpdateWrapper<TaskHeader> taskHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate(); 265 LambdaUpdateWrapper<TaskHeader> taskHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate();
322 taskHeaderLambdaUpdateWrapper.eq(TaskHeader::getId, task.getId()); 266 taskHeaderLambdaUpdateWrapper.eq(TaskHeader::getId, task.getId());
323 if (!taskHeaderService.update(task, taskHeaderLambdaUpdateWrapper)){ 267 if (!taskHeaderService.update(task, taskHeaderLambdaUpdateWrapper)){
324 throw new ServiceException("更新任务主表失败"); 268 throw new ServiceException("更新任务主表失败");
325 } 269 }
  270 +
326 //修改库位状态和对应的容器 271 //修改库位状态和对应的容器
327 Location location = new Location(); 272 Location location = new Location();
328 location.setContainerCode(task.getContainerCode()); 273 location.setContainerCode(task.getContainerCode());
@@ -341,41 +286,15 @@ public class ReceiptTaskService { @@ -341,41 +286,15 @@ public class ReceiptTaskService {
341 if (!containerService.update(container, containerLambdaUpdateWrapper)) { 286 if (!containerService.update(container, containerLambdaUpdateWrapper)) {
342 throw new ServiceException("更新容器失败"); 287 throw new ServiceException("更新容器失败");
343 } 288 }
344 - //修改组盘表状态为20  
345 - ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();  
346 - receiptContainerDetail.setStatus(QuantityConstant.RECEIPT_CONTAINER_REVIEWSUCCESS);  
347 - receiptContainerDetail.setProcessStamp("0");  
348 - receiptContainerDetail.setLastUpdated(new Date());  
349 - receiptContainerDetail.setLastUpdatedBy(ShiroUtils.getLoginName());  
350 - LambdaUpdateWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaUpdateWrapper = Wrappers.lambdaUpdate();  
351 - receiptContainerDetailLambdaUpdateWrapper.eq(ReceiptContainerDetail::getReceiptId, DataUtils.getInteger(taskReceiptContainerDetail.get(0).get("receiptId")));  
352 - if (!receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaUpdateWrapper)){  
353 - throw new ServiceException("更新组盘状态失败");  
354 - }  
355 289
356 //修改入库组盘头表状态 290 //修改入库组盘头表状态
357 -  
358 ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader(); 291 ReceiptContainerHeader receiptContainerHeader = new ReceiptContainerHeader();
359 receiptContainerHeader.setId(task.getAllocationHeadId()); 292 receiptContainerHeader.setId(task.getAllocationHeadId());
360 - receiptContainerHeader.setLastUpdated(new Date());  
361 - receiptContainerHeader.setLastUpdatedBy(ShiroUtils.getLoginName());  
362 - receiptContainerHeader.setStatus(QuantityConstant.RECEIPT_CONTAINER_FINISHED.intValue()); 293 + receiptContainerHeader.setStatus(QuantityConstant.RECEIPT_CONTAINER_FINISHED);
363 if (!receiptContainerHeaderService.updateById(receiptContainerHeader)) { 294 if (!receiptContainerHeaderService.updateById(receiptContainerHeader)) {
364 throw new ServiceException("更新入库组盘头表状态失败"); 295 throw new ServiceException("更新入库组盘头表状态失败");
365 } 296 }
366 -  
367 - //修改入库单状态  
368 - ReceiptHeader receiptHeader = new ReceiptHeader();  
369 - receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_POSTING);  
370 - receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_POSTING);  
371 - receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName());  
372 - receiptHeader.setLastUpdated(new Date());  
373 - LambdaUpdateWrapper<ReceiptHeader> receiptHeaderLambdaUpdateWrapper = Wrappers.lambdaUpdate();  
374 - receiptHeaderLambdaUpdateWrapper.eq(ReceiptHeader::getId, DataUtils.getInteger(taskReceiptContainerDetail.get(0).get("receiptId")));  
375 - if (!receiptHeaderService.update(receiptHeader, receiptHeaderLambdaUpdateWrapper)) {  
376 - throw new ServiceException("更新入库头表状态失败");  
377 - }  
378 - return AjaxResult.success("完成入库任务"); 297 + return AjaxResult.success();
379 } 298 }
380 299
381 /** 300 /**
@@ -445,10 +364,13 @@ public class ReceiptTaskService { @@ -445,10 +364,13 @@ public class ReceiptTaskService {
445 inventoryDetail.setAttribute3(receiptDetail.getAttribute3()); 364 inventoryDetail.setAttribute3(receiptDetail.getAttribute3());
446 inventoryDetail.setReceiptCode(receiptHeader.getCode()); 365 inventoryDetail.setReceiptCode(receiptHeader.getCode());
447 inventoryDetail.setReceiptDetailId(receiptDetail.getId()); 366 inventoryDetail.setReceiptDetailId(receiptDetail.getId());
448 - if (!inventoryDetailService.save(inventoryDetail)) {  
449 - throw new ServiceException("保存库存明细失败");  
450 - } 367 + inventoryHeader.setTotalLines(inventoryHeader.getTotalLines()+1);
  368 + }
  369 + if (!inventoryDetailService.saveOrUpdate(inventoryDetail)) {
  370 + throw new ServiceException("保存库存明细失败");
451 } 371 }
  372 + inventoryHeader.setTotalQty(inventoryHeader.getTotalQty().add(taskDetail.getQty()));
  373 + inventoryHeaderService.updateById(inventoryHeader);
452 //记录库存交易记录 374 //记录库存交易记录
453 InventoryTransaction inventoryTransaction = new InventoryTransaction(); 375 InventoryTransaction inventoryTransaction = new InventoryTransaction();
454 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT); 376 inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT);
src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java
@@ -54,6 +54,4 @@ public interface TaskHeaderService extends IService&lt;TaskHeader&gt;{ @@ -54,6 +54,4 @@ public interface TaskHeaderService extends IService&lt;TaskHeader&gt;{
54 54
55 AjaxResult setLocationCode(Integer taskId, Integer high); 55 AjaxResult setLocationCode(Integer taskId, Integer high);
56 56
57 - AjaxResult createReceiptTask(List<Integer> ids);  
58 -  
59 } 57 }
src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java
@@ -6,23 +6,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -6,23 +6,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
6 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 6 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 import com.huaheng.api.wcs.service.taskAssignService.TaskAssignService; 7 import com.huaheng.api.wcs.service.taskAssignService.TaskAssignService;
8 import com.huaheng.common.constant.QuantityConstant; 8 import com.huaheng.common.constant.QuantityConstant;
9 -import com.huaheng.common.exception.BusinessException;  
10 import com.huaheng.common.exception.service.ServiceException; 9 import com.huaheng.common.exception.service.ServiceException;
11 import com.huaheng.common.support.Convert; 10 import com.huaheng.common.support.Convert;
12 -import com.huaheng.common.utils.DataUtils;  
13 import com.huaheng.common.utils.StringUtils; 11 import com.huaheng.common.utils.StringUtils;
14 import com.huaheng.common.utils.security.ShiroUtils; 12 import com.huaheng.common.utils.security.ShiroUtils;
15 import com.huaheng.framework.web.domain.AjaxResult; 13 import com.huaheng.framework.web.domain.AjaxResult;
16 -import com.huaheng.mobile.download.Constant;  
17 import com.huaheng.pc.config.configWarning.service.ConfigWarningService; 14 import com.huaheng.pc.config.configWarning.service.ConfigWarningService;
18 import com.huaheng.pc.config.container.domain.Container; 15 import com.huaheng.pc.config.container.domain.Container;
19 import com.huaheng.pc.config.container.service.ContainerService; 16 import com.huaheng.pc.config.container.service.ContainerService;
20 -import com.huaheng.pc.config.containerCapacity.domain.ContainerCapacity;  
21 import com.huaheng.pc.config.containerCapacity.service.ContainerCapacityService; 17 import com.huaheng.pc.config.containerCapacity.service.ContainerCapacityService;
22 import com.huaheng.pc.config.location.domain.Location; 18 import com.huaheng.pc.config.location.domain.Location;
23 import com.huaheng.pc.config.location.service.LocationService; 19 import com.huaheng.pc.config.location.service.LocationService;
24 -import com.huaheng.pc.config.sendMail.service.MailService;  
25 -import com.huaheng.pc.config.sendMail.service.SendMailService;  
26 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail; 20 import com.huaheng.pc.inventory.cycleCountDetail.domain.CycleCountDetail;
27 import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService; 21 import com.huaheng.pc.inventory.cycleCountDetail.service.CycleCountDetailService;
28 import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService; 22 import com.huaheng.pc.inventory.cycleCountHeader.service.CycleCountHeaderService;
@@ -30,33 +24,24 @@ import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; @@ -30,33 +24,24 @@ import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
30 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; 24 import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
31 import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; 25 import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
32 import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; 26 import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
33 -import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction;  
34 import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService; 27 import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService;
35 -import com.huaheng.pc.monitor.message.service.BrokerMessageLogService;  
36 import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail; 28 import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
37 import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService; 29 import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
38 import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader; 30 import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
39 import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService; 31 import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
40 -import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;  
41 import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; 32 import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
42 -import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;  
43 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; 33 import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
44 import com.huaheng.pc.receipt.receiving.service.ReceivingService; 34 import com.huaheng.pc.receipt.receiving.service.ReceivingService;
45 -import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerDetail;  
46 import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService; 35 import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService;
47 import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader; 36 import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
48 import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService; 37 import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
49 -import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;  
50 import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService; 38 import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
51 -import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;  
52 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; 39 import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
53 import com.huaheng.pc.task.taskDetail.domain.TaskDetail; 40 import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
54 import com.huaheng.pc.task.taskDetail.service.TaskDetailService; 41 import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
55 import com.huaheng.pc.task.taskHeader.domain.MobileTask; 42 import com.huaheng.pc.task.taskHeader.domain.MobileTask;
56 -import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel;  
57 import com.huaheng.pc.task.taskHeader.domain.TaskHeader; 43 import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
58 import com.huaheng.pc.task.taskHeader.mapper.TaskHeaderMapper; 44 import com.huaheng.pc.task.taskHeader.mapper.TaskHeaderMapper;
59 -import io.swagger.models.auth.In;  
60 import org.springframework.beans.factory.annotation.Autowired; 45 import org.springframework.beans.factory.annotation.Autowired;
61 import org.springframework.stereotype.Service; 46 import org.springframework.stereotype.Service;
62 import org.springframework.transaction.annotation.Transactional; 47 import org.springframework.transaction.annotation.Transactional;
@@ -162,15 +147,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -162,15 +147,15 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
162 LambdaQueryWrapper<TaskHeader> taskQueryWrapper = Wrappers.lambdaQuery(); 147 LambdaQueryWrapper<TaskHeader> taskQueryWrapper = Wrappers.lambdaQuery();
163 taskQueryWrapper.eq(TaskHeader::getToLocation, locationCode); 148 taskQueryWrapper.eq(TaskHeader::getToLocation, locationCode);
164 List<TaskHeader> list = this.list(taskQueryWrapper); 149 List<TaskHeader> list = this.list(taskQueryWrapper);
165 - if (list.size() < 1) { 150 + if (list.isEmpty()) {
166 throw new ServiceException("库位(" + locationCode + ")没有任务!"); 151 throw new ServiceException("库位(" + locationCode + ")没有任务!");
167 - } else if(list.get(0).getStatus() == 100) { 152 + } else if(list.get(0).getStatus().equals(QuantityConstant.TASK_STATUS_COMPLETED)) {
168 //如果已完成则不管 153 //如果已完成则不管
169 throw new ServiceException("库位(" + locationCode + ")任务已经完成!"); 154 throw new ServiceException("库位(" + locationCode + ")任务已经完成!");
170 } 155 }
171 - if(list.get(0).getTaskType()==100 || list.get(0).getTaskType()==200){ 156 + if(list.get(0).getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF)){
172 //入库任务 157 //入库任务
173 - return receiptTaskService.completeReceiptTask((list.get(0))); 158 + return receiptTaskService.completeReceiptTask((list.get(0)));
174 } else { 159 } else {
175 throw new ServiceException("库位(" + locationCode + ")的任务不是上架,不能完成!"); 160 throw new ServiceException("库位(" + locationCode + ")的任务不是上架,不能完成!");
176 } 161 }
@@ -208,7 +193,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -208,7 +193,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
208 } 193 }
209 List<Integer> ids = new ArrayList<>(); 194 List<Integer> ids = new ArrayList<>();
210 ids.add(containerHeader.getId()); 195 ids.add(containerHeader.getId());
211 - this.createReceiptTask(ids); 196 + receiptTaskService.createReceiptTask(ids);
212 return AjaxResult.success("成功!"); 197 return AjaxResult.success("成功!");
213 } 198 }
214 199
@@ -330,7 +315,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -330,7 +315,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
330 Container container = new Container(); 315 Container container = new Container();
331 container.setStatus("empty"); 316 container.setStatus("empty");
332 if(inventoryHeader != null) { 317 if(inventoryHeader != null) {
333 - if(inventoryHeader.getContainerStatus().equals("some")) { 318 + if("some".equals(inventoryHeader.getContainerStatus())) {
334 container.setStatus("some"); 319 container.setStatus("some");
335 } 320 }
336 } 321 }
@@ -382,13 +367,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -382,13 +367,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
382 if (StringUtils.isEmpty(ids)){ 367 if (StringUtils.isEmpty(ids)){
383 return AjaxResult.error("id不能为空"); 368 return AjaxResult.error("id不能为空");
384 } 369 }
  370 +
385 Integer maxId = idList.stream().max(Comparator.comparing(Integer::intValue)).orElse(null); 371 Integer maxId = idList.stream().max(Comparator.comparing(Integer::intValue)).orElse(null);
386 372
387 LambdaQueryWrapper<ReceiptContainerHeader> lambda = Wrappers.lambdaQuery(); 373 LambdaQueryWrapper<ReceiptContainerHeader> lambda = Wrappers.lambdaQuery();
388 lambda.select(ReceiptContainerHeader::getId) 374 lambda.select(ReceiptContainerHeader::getId)
389 .lt(ReceiptContainerHeader::getStatus, 10) 375 .lt(ReceiptContainerHeader::getStatus, 10)
390 .le(ReceiptContainerHeader::getId, maxId); 376 .le(ReceiptContainerHeader::getId, maxId);
391 - return createReceiptTask(idList); 377 + return receiptTaskService.createReceiptTask(idList);
392 } 378 }
393 return AjaxResult.error("生成入库任务失败"); 379 return AjaxResult.error("生成入库任务失败");
394 } 380 }
@@ -407,6 +393,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -407,6 +393,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
407 if (task.getStatus() >= QuantityConstant.TASK_STATUS_RELEASE) { 393 if (task.getStatus() >= QuantityConstant.TASK_STATUS_RELEASE) {
408 return AjaxResult.error("任务" + taskId + "已经下发,请不要重复下发,操作中止"); 394 return AjaxResult.error("任务" + taskId + "已经下发,请不要重复下发,操作中止");
409 } 395 }
  396 +
410 // 给wcs传递任务 397 // 给wcs传递任务
411 try { 398 try {
412 createTaskMessage.createTask(task); 399 createTaskMessage.createTask(task);
@@ -487,6 +474,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -487,6 +474,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
487 } 474 }
488 475
489 @Override 476 @Override
  477 + @Transactional(rollbackFor = Exception.class)
490 public AjaxResult completeTaskByWMS(Integer[] taskIds, String[] weightConvert) { 478 public AjaxResult completeTaskByWMS(Integer[] taskIds, String[] weightConvert) {
491 for (int i = 0;i<taskIds.length;i++) { 479 for (int i = 0;i<taskIds.length;i++) {
492 TaskHeader task = taskHeaderService.getById(taskIds[i]); 480 TaskHeader task = taskHeaderService.getById(taskIds[i]);
@@ -510,8 +498,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -510,8 +498,8 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
510 if(task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYRECEIPT)){ 498 if(task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLERECEIPT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_EMPTYRECEIPT)){
511 if(StringUtils.isEmpty(task.getToLocation())){ 499 if(StringUtils.isEmpty(task.getToLocation())){
512 //自动分配库位 500 //自动分配库位
513 -// AjaxResult ajaxResult = this.setLocationCode(task.getId(),0 );  
514 -// task.setToLocation((String)ajaxResult.getData()); 501 + // AjaxResult ajaxResult = this.setLocationCode(task.getId(),0 );
  502 + // task.setToLocation((String)ajaxResult.getData());
515 } 503 }
516 } 504 }
517 //如果没有库位不能完成 505 //如果没有库位不能完成
@@ -534,7 +522,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -534,7 +522,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
534 if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) { 522 if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_SHELF) ) {
535 //入库任务 523 //入库任务
536 receiptTaskService.completeReceiptTask(task); 524 receiptTaskService.completeReceiptTask(task);
537 - combineInventory(task);  
538 } 525 }
539 if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING) && 526 if (task.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_PICKING) &&
540 (task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT))) { 527 (task.getTaskType().equals(QuantityConstant.TASK_TYPE_WHOLESHIPMENT) || task.getTaskType().equals(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT))) {
@@ -543,7 +530,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -543,7 +530,7 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
543 } 530 }
544 // 900 出库查看,空托出库查看 531 // 900 出库查看,空托出库查看
545 if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_VIEW)) { 532 if (task.getTaskType().equals( QuantityConstant.TASK_TYPE_VIEW)) {
546 - workTaskService.completeCheckOutTask(task); 533 + workTaskService.completeCheckOutTask(task);
547 } 534 }
548 // 700 盘点 535 // 700 盘点
549 if (task.getTaskType().equals(QuantityConstant.TASK_TYPE_CYCLECOUNT)) { 536 if (task.getTaskType().equals(QuantityConstant.TASK_TYPE_CYCLECOUNT)) {
@@ -634,138 +621,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -634,138 +621,11 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
634 } 621 }
635 List<Integer> idList = new ArrayList<>(); 622 List<Integer> idList = new ArrayList<>();
636 idList.add(receiptContainerHeader.getId()); 623 idList.add(receiptContainerHeader.getId());
637 - createReceiptTask(idList); 624 + receiptTaskService.createReceiptTask(idList);
638 625
639 return AjaxResult.success(receiptContainerHeader); 626 return AjaxResult.success(receiptContainerHeader);
640 } 627 }
641 628
642 -  
643 - /**  
644 - * 完成移库任务  
645 - *  
646 - * @param task  
647 - */  
648 - @Transactional(rollbackFor = Exception.class)  
649 - public void completeTransferTask(TaskHeader task) {  
650 - //找到任务明细  
651 - TaskDetail taskDetail = new TaskDetail();  
652 - taskDetail.setTaskId(task.getId());  
653 - taskDetail.setWarehouseCode(task.getWarehouseCode());  
654 - taskDetail.setCompanyCode(task.getCompanyCode());  
655 - taskDetail.setContainerCode(task.getContainerCode());  
656 - LambdaQueryWrapper<TaskDetail> taskDetailLW = Wrappers.lambdaQuery(taskDetail);  
657 - taskDetail = taskDetailService.getOne(taskDetailLW);  
658 - //更新库存主表和明细的库位,更改更新用户和时间  
659 - InventoryHeader inventoryHeader = new InventoryHeader();  
660 - //主表  
661 - inventoryHeader.setWarehouseCode(taskDetail.getWarehouseCode());  
662 - inventoryHeader.setCompanyCode(taskDetail.getCompanyCode());  
663 - inventoryHeader.setContainerCode(taskDetail.getContainerCode());  
664 - inventoryHeader.setLocationCode(taskDetail.getFromLocation());//通过源库位查找库存  
665 - LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(inventoryHeader);  
666 - inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);  
667 - if (StringUtils.isNotNull(inventoryHeader)){  
668 - inventoryHeader.setLocationCode(taskDetail.getToLocation());//把目的库位写入库存  
669 - inventoryHeader.setLastUpdated(new Date());  
670 - inventoryHeader.setLastUpdatedBy(ShiroUtils.getLoginName());  
671 - inventoryHeaderService.saveOrUpdate(inventoryHeader);//修改主表库位  
672 -  
673 - //明细表  
674 - List<InventoryDetail> inventoryDetails = new ArrayList<>();  
675 - InventoryDetail inventoryDetail = new InventoryDetail();  
676 - inventoryDetail.setWarehouseCode(inventoryHeader.getWarehouseCode());  
677 - inventoryDetail.setCompanyCode(inventoryHeader.getCompanyCode());  
678 - inventoryDetail.setInventoryHeaderId(inventoryHeader.getId());  
679 - LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery(inventoryDetail);  
680 - List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper);  
681 - /*同时写入库存交易表*/  
682 - List<InventoryTransaction> inventoryTransactionList = new ArrayList<>();  
683 - for (InventoryDetail item : inventoryDetailList) {  
684 - item.setLocationCode(inventoryHeader.getLocationCode());//修改明细表库位  
685 - item.setLastUpdated(new Date());  
686 - item.setLastUpdatedBy(ShiroUtils.getLoginName());  
687 - inventoryDetails.add(item);  
688 - /*----------*/  
689 - InventoryTransaction inventoryTransaction = new InventoryTransaction();  
690 - inventoryTransaction.setWarehouseCode(task.getWarehouseCode());  
691 - inventoryTransaction.setLocationCode(taskDetail.getToLocation());  
692 - inventoryTransaction.setContainerCode(taskDetail.getContainerCode());  
693 - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTPROPERTIES);  
694 - inventoryTransaction.setMaterialCode(item.getMaterialCode());  
695 - inventoryTransaction.setManufactureDate(item.getManufactureDate());  
696 - inventoryTransaction.setMaterialName(item.getMaterialName());  
697 - inventoryTransaction.setMaterialSpec(item.getMaterialSpec());  
698 - inventoryTransaction.setMaterialUnit(item.getMaterialUnit());  
699 - inventoryTransaction.setTaskQty(BigDecimal.ZERO);  
700 - inventoryTransaction.setInventorySts(item.getInventorySts());  
701 - inventoryTransaction.setCompanyCode(item.getCompanyCode());  
702 - inventoryTransaction.setReferDetailId(item.getId().toString());  
703 - inventoryTransaction.setBatch(item.getBatch());  
704 - inventoryTransaction.setLot(item.getLot());  
705 - inventoryTransaction.setProjectNo(item.getProjectNo());  
706 - inventoryTransaction.setWeight(item.getWeight());  
707 - inventoryTransaction.setManufactureDate(item.getManufactureDate());  
708 - inventoryTransaction.setExpirationDate(item.getExpirationDate());  
709 - inventoryTransaction.setAgingDate(item.getCreated());  
710 - inventoryTransaction.setAttributeId(item.getAttributeId());  
711 - inventoryTransaction.setAttribute1(item.getAttribute1());  
712 - inventoryTransaction.setAttribute2(item.getAttribute2());  
713 - inventoryTransaction.setAttribute3(item.getAttribute3());  
714 - inventoryTransaction.setCreated(new Date());  
715 - inventoryTransaction.setCreatedBy(ShiroUtils.getLoginName());  
716 - //inventoryTransaction.setLockCode();  
717 - inventoryTransaction.setBillCode(item.getInventoryHeaderId().toString());  
718 - inventoryTransaction.setBillDetailId(item.getId());  
719 - inventoryTransaction.setSupplierCode(item.getSupplierCode());  
720 - inventoryTransactionList.add(inventoryTransaction);  
721 - }  
722 - if(inventoryDetails != null && inventoryDetails.size() > 0) {  
723 - if (inventoryDetailService.saveOrUpdateBatch(inventoryDetails)) {  
724 - //更新库存明细成功后,写入库存交易  
725 - inventoryTransactionService.saveBatch(inventoryTransactionList);  
726 - } else {  
727 - throw new ServiceException("库存明细更新错误!");  
728 - }  
729 - }  
730 -  
731 - }  
732 - //更新托盘、库位状态  
733 - Location temp1 = new Location(); //源库位  
734 - temp1.setCode(taskDetail.getFromLocation());  
735 - temp1.setWarehouseCode(ShiroUtils.getWarehouseCode());  
736 - LambdaQueryWrapper<Location> lambdaQueryWrapper1 = Wrappers.lambdaQuery(temp1);  
737 - Location loc1 = locationService.getOne(lambdaQueryWrapper1);  
738 -  
739 - Location temp2 = new Location();//目的库位  
740 - temp2.setCode(taskDetail.getToLocation());  
741 - temp2.setWarehouseCode(ShiroUtils.getWarehouseCode());  
742 - LambdaQueryWrapper<Location> lambdaQueryWrapper2 = Wrappers.lambdaQuery(temp2);  
743 - Location loc2 = locationService.getOne(lambdaQueryWrapper2);  
744 - loc2.setContainerCode(loc1.getContainerCode());  
745 - loc2.setStatus("empty");  
746 - loc1.setContainerCode("");  
747 - loc1.setStatus("empty");  
748 - locationService.saveOrUpdate(loc1);  
749 - locationService.saveOrUpdate(loc2);  
750 -  
751 - Container container = containerService.findAllByCode(task.getContainerCode());  
752 - container.setLocationCode(task.getToLocation());  
753 - if (!containerService.updateById(container)){  
754 - throw new ServiceException("更新容器失败");  
755 - }  
756 -  
757 - //更新taskHeader状态  
758 - task.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);  
759 - task.setLastUpdatedBy(ShiroUtils.getLoginName());  
760 - task.setLastUpdated(new Date());  
761 - taskHeaderService.saveOrUpdate(task);  
762 - //更新taskDetail状态  
763 - taskDetail.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);  
764 - taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());  
765 - taskDetail.setLastUpdated(new Date());  
766 - taskDetailService.saveOrUpdate(taskDetail);  
767 - }  
768 -  
769 /** 629 /**
770 * 盘点完成 630 * 盘点完成
771 * 631 *
@@ -821,191 +681,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -821,191 +681,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
821 } 681 }
822 682
823 /** 683 /**
824 - * 完成空托盘入库任务  
825 - *  
826 - * @param taskHeader  
827 - */  
828 - @Transactional(rollbackFor = Exception.class)  
829 - public void completeEmptyIn(TaskHeader taskHeader) {  
830 -  
831 - //完成任务,修改主单和明细状态  
832 - taskHeader.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);  
833 - taskHeader.setLastUpdatedBy(ShiroUtils.getLoginName());  
834 - taskHeader.setLastUpdated(new Date());  
835 - //taskHeaderService.saveOrUpdate(taskHeader);  
836 - //taskDetail更新明细单总的状态  
837 - TaskDetail taskDetail = new TaskDetail();  
838 - taskDetail.setWarehouseCode(taskHeader.getWarehouseCode());  
839 - taskDetail.setTaskType(taskHeader.getTaskType());  
840 - taskDetail.setTaskId(taskHeader.getId());  
841 - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(taskDetail);  
842 - List<TaskDetail> taskDetailList = taskDetailService.list(lambdaQueryWrapper);//查询子单  
843 - for (TaskDetail item : taskDetailList) {  
844 - item.setStatus(QuantityConstant.TASK_STATUS_COMPLETED);  
845 - item.setLastUpdatedBy(ShiroUtils.getLoginName()); //更新用户  
846 - item.setLastUpdated(new Date()); //更新时间  
847 - }  
848 - if (taskDetailService.saveOrUpdateBatch(taskDetailList) == false ||  
849 - taskHeaderService.saveOrUpdate(taskHeader) == false) {  
850 - throw new ServiceException("任务单据状态更新失败!");  
851 - }  
852 - //解锁容器,更新库位  
853 - containerService.updateLocationCodeAndStatus(taskHeader.getContainerCode(), taskHeader.getToLocation(), "empty");  
854 - //解锁库位,更新容器  
855 - locationService.updateContainerCodeAndStatus(taskHeader.getToLocation(), taskHeader.getContainerCode(), "empty");  
856 -  
857 - //写入库存头表  
858 - InventoryHeader inventoryHeader = new InventoryHeader();  
859 - inventoryHeader.setWarehouseCode(taskHeader.getWarehouseCode());  
860 - inventoryHeader.setLocationCode(taskHeader.getToLocation());  
861 - inventoryHeader.setContainerCode(taskHeader.getContainerCode());  
862 - inventoryHeader.setContainerStatus("empty");  
863 - inventoryHeader.setCompanyCode(taskHeader.getCompanyCode());  
864 - inventoryHeader.setMaterialSkuQty("0");  
865 - inventoryHeader.setTotalWeight("0");  
866 - inventoryHeader.setTotalQty(new BigDecimal(0));  
867 - inventoryHeader.setTotalLines(0);  
868 - inventoryHeader.setProjectNos("");  
869 - inventoryHeader.setBatchs("");  
870 - inventoryHeader.setLots("");  
871 - inventoryHeader.setLockRemark("");  
872 - inventoryHeader.setCreated(new Date());  
873 - inventoryHeader.setCreatedBy(ShiroUtils.getLoginName());  
874 - inventoryHeader.setLastUpdated(new Date());  
875 - inventoryHeader.setLastUpdatedBy(ShiroUtils.getLoginName());  
876 - Boolean j = inventoryHeaderService.save(inventoryHeader);  
877 - if(!j){  
878 - throw new ServiceException("新增空托库存头失败!");  
879 -  
880 - }  
881 - }  
882 -  
883 - /**  
884 - * 创建上架任务  
885 - *  
886 - * @param ids  
887 - * @return  
888 - */  
889 - @Override  
890 - @Transactional(rollbackFor = Exception.class)  
891 - public AjaxResult createReceiptTask(List<Integer> ids) {  
892 - for (Integer id : ids) {  
893 - ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getById(id);  
894 - if (receiptContainerHeader == null) {  
895 - throw new ServiceException("任务不存在!");  
896 - }  
897 -  
898 - if (!receiptContainerHeader.getWarehouseCode().equals(ShiroUtils.getWarehouseCode())) {  
899 - throw new ServiceException("任务不在当前仓库!");  
900 - }  
901 -  
902 - //锁定容器  
903 - Container container = new Container();  
904 - container.setStatus("lock");  
905 - LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();  
906 - containerUpdateWrapper.eq(Container::getCode, receiptContainerHeader.getContainerCode());  
907 - containerService.update(container, containerUpdateWrapper);  
908 -  
909 - //查询入库组盘明细  
910 - LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery();  
911 - containerDetailLambda.eq(ReceiptContainerDetail::getReceiptContainerId, id);  
912 - List<ReceiptContainerDetail> list = receiptContainerDetailService.list(containerDetailLambda);  
913 -  
914 - if (list.size() < 1) {  
915 - throw new ServiceException("没有组盘明细,请先组盘!");  
916 - }  
917 - if (receiptContainerHeader.getStatus() == QuantityConstant.RECEIPT_CONTAINER_BUILD.intValue()) {  
918 - if (receiptContainerHeader.getStatus().intValue() < QuantityConstant.RECEIPT_CONTAINER_TASK) {  
919 - receiptContainerHeader.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK.intValue());  
920 - receiptContainerHeaderService.updateById(receiptContainerHeader);  
921 - }  
922 - //添加任务主表  
923 - TaskHeader task = new TaskHeader();  
924 - task.setAllocationHeadId(receiptContainerHeader.getId());  
925 - task.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF);  
926 - task.setWarehouseCode(receiptContainerHeader.getWarehouseCode());  
927 - task.setCompanyCode(receiptContainerHeader.getCompanyCode());  
928 - task.setTaskType(Integer.valueOf(receiptContainerHeader.getTaskType()));  
929 - task.setFromLocation(receiptContainerHeader.getFromLocation());  
930 - task.setToLocation(receiptContainerHeader.getToLocation());  
931 - task.setContainerCode(receiptContainerHeader.getContainerCode());  
932 - task.setRecvDock(receiptContainerHeader.getRecvDock());  
933 - task.setCreated(new Date());  
934 - task.setCreatedBy(ShiroUtils.getLoginName());  
935 - if (this.save(task)) {  
936 - //添加任务明细表  
937 - int conatinQty = 0;  
938 - for (ReceiptContainerDetail item : list) {  
939 - LambdaQueryWrapper<ContainerCapacity> lambdaQueryWrapper = Wrappers.lambdaQuery();  
940 - String[] containCodeSplit = task.getContainerCode().split("\\D");  
941 - String containType = containCodeSplit[0];  
942 - lambdaQueryWrapper.eq(ContainerCapacity::getContainerType, task.getContainerCode())  
943 - .eq(ContainerCapacity::getMaterialCode, item.getMaterialCode())  
944 - .eq(ContainerCapacity::getWarehouseCode, ShiroUtils.getWarehouseCode())  
945 - .eq(ContainerCapacity::getEnable, 0);  
946 - ContainerCapacity containerCapacity = containerCapacityService.getOne(lambdaQueryWrapper);  
947 -  
948 - TaskDetail taskDetail = new TaskDetail();  
949 - taskDetail.setTaskId(task.getId());  
950 - taskDetail.setTaskType(Integer.valueOf(receiptContainerHeaderService.getById(item.getReceiptContainerId()).getTaskType()));  
951 - taskDetail.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_SHELF);  
952 - taskDetail.setWarehouseCode(task.getWarehouseCode());  
953 - taskDetail.setAllocationId(item.getId());  
954 - taskDetail.setCompanyCode(task.getCompanyCode());  
955 - taskDetail.setCompanyCode(task.getCompanyCode());  
956 - taskDetail.setMaterialCode(item.getMaterialCode());  
957 - taskDetail.setMaterialName(item.getMaterialName());  
958 - taskDetail.setMaterialSpec(item.getMaterialSpec());  
959 - taskDetail.setMaterialUnit(item.getMaterialUnit());  
960 - taskDetail.setBillCode(item.getReceiptCode());  
961 - taskDetail.setBillDetailId(item.getReceiptDetailId());  
962 - taskDetail.setBillCode(item.getReceiptCode());  
963 - taskDetail.setQty(item.getQty());  
964 - taskDetail.setContainerCode(task.getContainerCode());  
965 - taskDetail.setFromLocation(task.getFromLocation());  
966 - taskDetail.setLastUpdatedBy(ShiroUtils.getLoginName());  
967 - taskDetail.setBatch(item.getBatch());  
968 - taskDetail.setProjectNo(item.getProjectNo());  
969 - if (containerCapacity != null) {  
970 - conatinQty += (int) Math.floor(item.getQty().intValue() / containerCapacity.getQty().intValue());  
971 - taskDetail.setContainQty((int) Math.floor(item.getQty().intValue() / containerCapacity.getQty().intValue()));  
972 - }  
973 - if (!taskDetailService.save(taskDetail)) {  
974 - throw new ServiceException("生成任务明细失败");  
975 - }  
976 -  
977 - //更新入库组盘明细状态  
978 - item.setStatus(QuantityConstant.RECEIPT_CONTAINER_TASK);  
979 - if (!receiptContainerDetailService.updateById(item)) {  
980 - throw new ServiceException("更新入库组盘明细状态出错");  
981 - }  
982 -  
983 - /**  
984 - * 修改明细状态为上架  
985 - */  
986 - ReceiptDetail receiptDetail = receiptDetailService.getById(item.getReceiptDetailId());  
987 - receiptDetail.setProcessStamp(String.valueOf(QuantityConstant.RECEIPT_HEADER_SHELF));  
988 - if (!receiptDetailService.updateById(receiptDetail)) {  
989 - throw new ServiceException("更新入库单详情失败");  
990 - }  
991 - //更新头表状态  
992 - receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId());  
993 -  
994 - }  
995 -  
996 - task.setContainQty(conatinQty);  
997 - if (!taskHeaderService.updateById(task)) {  
998 - throw new ServiceException("更新任务头表容器数量失败");  
999 - }  
1000 - } else {  
1001 - throw new ServiceException("生成任务头表失败");  
1002 - }  
1003 - }  
1004 - }  
1005 - return AjaxResult.success("生成上架任务成功");  
1006 - }  
1007 -  
1008 - /**  
1009 * 自动分配库位 684 * 自动分配库位
1010 * @param taskId 任务号 685 * @param taskId 任务号
1011 * @param high 1是高库位,否则低库位 686 * @param high 1是高库位,否则低库位
@@ -1054,10 +729,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea @@ -1054,10 +729,14 @@ public class TaskHeaderServiceImpl extends ServiceImpl&lt;TaskHeaderMapper, TaskHea
1054 condition.setWarehouseCode(ShiroUtils.getWarehouseCode()); 729 condition.setWarehouseCode(ShiroUtils.getWarehouseCode());
1055 condition.setTaskId(taskHeader.getId()); 730 condition.setTaskId(taskHeader.getId());
1056 LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery(condition); 731 LambdaQueryWrapper<TaskDetail> taskDetailLambdaQueryWrapper = Wrappers.lambdaQuery(condition);
1057 - TaskDetail taskDetail = taskDetailService.getOne(taskDetailLambdaQueryWrapper);  
1058 - if (taskDetail != null) {  
1059 - taskDetail.setToLocation(location.getCode());  
1060 - taskDetailService.update(taskDetail, taskDetailLambdaQueryWrapper); 732 + List<TaskDetail> taskDetailList = taskDetailService.list(taskDetailLambdaQueryWrapper);
  733 + if(taskDetailList != null && taskDetailList.size() > 0) {
  734 + for(TaskDetail taskDetail : taskDetailList) {
  735 + if (taskDetail != null) {
  736 + taskDetail.setToLocation(location.getCode());
  737 + taskDetailService.update(taskDetail, taskDetailLambdaQueryWrapper);
  738 + }
  739 + }
1061 } 740 }
1062 } 741 }
1063 //给任务分配库位 742 //给任务分配库位