Commit 703320327764d09dc7eaf1c74265e3462770edc6

Authored by 谭毅彬
2 parents 0651771a 65beebbb

Merge branch 'develop' of http://172.16.29.40:8010/wms/wms4.git into develop

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&lt;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&lt;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 }
... ...