Commit 703320327764d09dc7eaf1c74265e3462770edc6
Merge branch 'develop' of http://172.16.29.40:8010/wms/wms4.git into develop
Showing
3 changed files
with
45 additions
and
5 deletions
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/LocationAllocationServiceImpl.java
... | ... | @@ -2,12 +2,12 @@ package org.jeecg.modules.wms.api.wcs.service; |
2 | 2 | |
3 | 3 | import static java.util.stream.Collectors.toList; |
4 | 4 | |
5 | -import java.util.ArrayList; | |
6 | -import java.util.Collections; | |
7 | -import java.util.List; | |
5 | +import java.util.*; | |
6 | +import java.util.stream.Collectors; | |
8 | 7 | |
9 | 8 | import javax.annotation.Resource; |
10 | 9 | |
10 | +import cn.hutool.core.collection.CollUtil; | |
11 | 11 | import org.jeecg.common.exception.JeecgBootException; |
12 | 12 | import org.jeecg.modules.wms.config.container.entity.Container; |
13 | 13 | import org.jeecg.modules.wms.config.container.service.IContainerService; |
... | ... | @@ -22,6 +22,10 @@ import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterCon |
22 | 22 | import org.jeecg.modules.wms.config.zone.service.IZoneService; |
23 | 23 | import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; |
24 | 24 | import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; |
25 | +import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerDetail; | |
26 | +import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; | |
27 | +import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerDetailService; | |
28 | +import org.jeecg.modules.wms.receipt.receiptContainerHeader.service.IReceiptContainerHeaderService; | |
25 | 29 | import org.jeecg.modules.wms.task.taskHeader.entity.TaskHeader; |
26 | 30 | import org.jeecg.modules.wms.task.taskHeader.service.ITaskHeaderService; |
27 | 31 | import org.jeecg.utils.StringUtils; |
... | ... | @@ -61,6 +65,10 @@ public class LocationAllocationServiceImpl implements LocationAllocationService |
61 | 65 | private LocationAllocationService locationAllocationService; |
62 | 66 | @Resource |
63 | 67 | private IInventoryDetailService inventoryDetailService; |
68 | + @Resource | |
69 | + private IReceiptContainerHeaderService receiptContainerHeaderService; | |
70 | + @Resource | |
71 | + private IReceiptContainerDetailService receiptContainerDetailService; | |
64 | 72 | |
65 | 73 | @Override |
66 | 74 | @Transactional(rollbackFor = Exception.class) |
... | ... | @@ -344,9 +352,32 @@ public class LocationAllocationServiceImpl implements LocationAllocationService |
344 | 352 | return roadWay; |
345 | 353 | } |
346 | 354 | int min = Integer.MAX_VALUE; |
355 | + List<String> locationCodes = new ArrayList<>(); | |
356 | + //1、将未完成状态已分库位的入库组盘并且明细料号与当前任务相同的去向库位找出来 | |
357 | + List<ReceiptContainerHeader> unCompleteCombineList = receiptContainerHeaderService.getUnCompleteCombineList(); | |
358 | + if (CollUtil.isNotEmpty(unCompleteCombineList)) { | |
359 | + List<Integer> headerIds = unCompleteCombineList.stream().filter(r -> StringUtils.isNotEmpty(r.getToLocationCode())).map(ReceiptContainerHeader::getId).collect(toList()); | |
360 | + if (CollUtil.isNotEmpty(headerIds)) { | |
361 | + List<ReceiptContainerDetail> receiptContainerDetailList = receiptContainerDetailService.getReceiptContainerDetailListByHeaderIds(headerIds); | |
362 | + Set<Integer> receiptContainerIds = receiptContainerDetailList.stream().filter(r -> r.getMaterialCode().equals(materialCode)).map(ReceiptContainerDetail::getReceiptContainerId).collect(Collectors.toSet()); | |
363 | + if(CollUtil.isNotEmpty(receiptContainerIds)){ | |
364 | + List<String> toLocationCodes = unCompleteCombineList.stream().filter(r -> receiptContainerIds.contains(r.getId())).map(ReceiptContainerHeader::getToLocationCode).collect(toList()); | |
365 | + locationCodes.addAll(toLocationCodes); | |
366 | + } | |
367 | + } | |
368 | + } | |
347 | 369 | List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByMaterialCodeAndZoneCode(materialCode, zoneCode, warehouseCode); |
348 | - if (CollectionUtils.isNotEmpty(inventoryDetailList)) { | |
349 | - List<Integer> roadWayList = inventoryDetailList.stream().map(InventoryDetail::getRoadWay).collect(toList()); | |
370 | + if (CollUtil.isNotEmpty(inventoryDetailList)) { | |
371 | + Map<String, List<InventoryDetail>> map = inventoryDetailList.stream().collect(Collectors.groupingBy(InventoryDetail::getLocationCode)); | |
372 | + locationCodes.addAll(map.keySet()); | |
373 | + } | |
374 | + if(CollUtil.isNotEmpty(locationCodes)){ | |
375 | + LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
376 | + locationLambdaQueryWrapper.eq(Location::getWarehouseCode, warehouseCode); | |
377 | + locationLambdaQueryWrapper.eq(Location::getZoneCode, zoneCode); | |
378 | + locationLambdaQueryWrapper.in(Location::getCode, locationCodes); | |
379 | + List<Location> locationList = locationService.list(locationLambdaQueryWrapper); | |
380 | + List<Integer> roadWayList = locationList.stream().map(Location::getRoadWay).collect(toList()); | |
350 | 381 | roadWayList.removeAll(Collections.singleton(null)); |
351 | 382 | for (Integer road : roadWays) { |
352 | 383 | // i是查出现次数 这里速度很快返回次数 |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/IReceiptContainerDetailService.java
... | ... | @@ -16,4 +16,6 @@ public interface IReceiptContainerDetailService extends IService<ReceiptContaine |
16 | 16 | public List<ReceiptContainerDetail> selectByMainId(String mainId); |
17 | 17 | |
18 | 18 | public List<ReceiptContainerDetail> getReceiptContainerDetailListByHeaderId(int receiptContainerHeaderId); |
19 | + | |
20 | + public List<ReceiptContainerDetail> getReceiptContainerDetailListByHeaderIds(List<Integer> receiptContainerHeaderIds); | |
19 | 21 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerDetailServiceImpl.java
... | ... | @@ -34,4 +34,11 @@ public class ReceiptContainerDetailServiceImpl extends ServiceImpl<ReceiptContai |
34 | 34 | List<ReceiptContainerDetail> receiptContainerDetailList = list(receiptContainerDetailLambdaQueryWrapper); |
35 | 35 | return receiptContainerDetailList; |
36 | 36 | } |
37 | + @Override | |
38 | + public List<ReceiptContainerDetail> getReceiptContainerDetailListByHeaderIds(List<Integer> receiptContainerHeaderIds) { | |
39 | + LambdaQueryWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
40 | + receiptContainerDetailLambdaQueryWrapper.in(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeaderIds); | |
41 | + List<ReceiptContainerDetail> receiptContainerDetailList = list(receiptContainerDetailLambdaQueryWrapper); | |
42 | + return receiptContainerDetailList; | |
43 | + } | |
37 | 44 | } |
... | ... |