|
@@ -33,6 +33,7 @@ import java.math.BigDecimal;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.ruoyi.ams.xuankuang.service.BaseLocationInfoSubService.OUT_ZONES;
|
|
import static com.ruoyi.ams.xuankuang.service.BaseLocationInfoSubService.OUT_ZONES;
|
|
|
|
|
|
@@ -89,13 +90,7 @@ public class WmsDocOrderSubService {
|
|
List<BaseLocationLotattVO> baseLocationLotattVOS = addConfirmAllocationAuto(orderNo);
|
|
List<BaseLocationLotattVO> baseLocationLotattVOS = addConfirmAllocationAuto(orderNo);
|
|
|
|
|
|
//筛选库存
|
|
//筛选库存
|
|
- List<BaseLocationLotattVO> baseLocationLotattVOS1 = filterInv(baseLocationLotattVOS, orderNo);
|
|
|
|
-
|
|
|
|
- // 匹配库存(撇开先进先出)
|
|
|
|
-// baseLocationLotattVOS = addConfirmAllocationAuto(orderNo);
|
|
|
|
-
|
|
|
|
- //重新筛选库存
|
|
|
|
-// baseLocationLotattVOS1 = filterInv(baseLocationLotattVOS, orderNo);
|
|
|
|
|
|
+ List<BaseLocationLotattVO> filterBaseLocationLotattVOS = filterInv(baseLocationLotattVOS, orderNo);
|
|
|
|
|
|
|
|
|
|
boolean con = true;
|
|
boolean con = true;
|
|
@@ -103,8 +98,7 @@ public class WmsDocOrderSubService {
|
|
int allocateQuantities = 0;
|
|
int allocateQuantities = 0;
|
|
//出库单对应袋数
|
|
//出库单对应袋数
|
|
int orderNum = list.get(0).getQtyOrderedEach().intValue();
|
|
int orderNum = list.get(0).getQtyOrderedEach().intValue();
|
|
- for (BaseLocationLotattVO baseLocationLotattVO1 : baseLocationLotattVOS1) {
|
|
|
|
-
|
|
|
|
|
|
+ for (BaseLocationLotattVO baseLocationLotattVO1 : filterBaseLocationLotattVOS) {
|
|
|
|
|
|
BaseSku baseSku = iBaseSkuService.selectBaseSkuByCustomerId(Constant.CUSTOMER_ID, list.get(0).getSku());
|
|
BaseSku baseSku = iBaseSkuService.selectBaseSkuByCustomerId(Constant.CUSTOMER_ID, list.get(0).getSku());
|
|
String pallentNo = baseLocationLotattVO1.getLotattVO().getLotatt07();
|
|
String pallentNo = baseLocationLotattVO1.getLotattVO().getLotatt07();
|
|
@@ -171,7 +165,7 @@ public class WmsDocOrderSubService {
|
|
wmsDocOrderHeader.setOrderStatus(Constant.ORDER_STS.STS10.getValue());
|
|
wmsDocOrderHeader.setOrderStatus(Constant.ORDER_STS.STS10.getValue());
|
|
iWmsDocOrderHeaderService.updateWmsDocOrderHeader(wmsDocOrderHeader);
|
|
iWmsDocOrderHeaderService.updateWmsDocOrderHeader(wmsDocOrderHeader);
|
|
}
|
|
}
|
|
- return AjaxResult.success("", baseLocationLotattVOS1);
|
|
|
|
|
|
+ return AjaxResult.success("", filterBaseLocationLotattVOS);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -211,47 +205,37 @@ public class WmsDocOrderSubService {
|
|
WmsDocOrderDetails wmsDocOrderDetails = new WmsDocOrderDetails();
|
|
WmsDocOrderDetails wmsDocOrderDetails = new WmsDocOrderDetails();
|
|
wmsDocOrderDetails.setOrderNo(orderNo);
|
|
wmsDocOrderDetails.setOrderNo(orderNo);
|
|
wmsDocOrderDetails.setLineStatus(Constant.ASN_STS.STS00.getValue());
|
|
wmsDocOrderDetails.setLineStatus(Constant.ASN_STS.STS00.getValue());
|
|
- List<WmsDocOrderDetails> list = iWmsDocOrderDetailsService.selectWmsDocOrderDetailsList(wmsDocOrderDetails);
|
|
|
|
|
|
+ List<WmsDocOrderDetails> wmsDocOrderDetailsList = iWmsDocOrderDetailsService.selectWmsDocOrderDetailsList(wmsDocOrderDetails);
|
|
|
|
+
|
|
|
|
+ List<BaseLocationLotattVO> baseLocationLotattVOList = new ArrayList<>();
|
|
|
|
|
|
- //出库同列阻挡和任务阻挡
|
|
|
|
- List<BaseLocationLotattVO> baseLocationLotattVOS2 = new ArrayList<>();
|
|
|
|
- for (int i = 0; i < baseLocationLotattVOS.size(); i++) {
|
|
|
|
- BaseLocationLotattVO baseLocationLotattVO = baseLocationLotattVOS.get(i);
|
|
|
|
- BaseLocationLotattVO baseLocationLotattVO1 = baseLocationInfoService.checkTheSameColumnLocation1(baseLocationLotattVO, baseLocationLotattVOS2);
|
|
|
|
- if (baseLocationLotattVO1 != null) {
|
|
|
|
- baseLocationLotattVOS2.add(baseLocationLotattVO1);
|
|
|
|
|
|
+ baseLocationLotattVOS.forEach(item -> {
|
|
|
|
+ BaseLocationLotattVO baseLocationLotattVO = baseLocationInfoService.checkOutboundTheSameColumnLocation(item, baseLocationLotattVOList);
|
|
|
|
+ if (ObjectUtil.isNotNull(baseLocationLotattVO)) {
|
|
|
|
+ baseLocationLotattVOList.add(baseLocationLotattVO);
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ });
|
|
|
|
|
|
- List<BaseLocationLotattVO> baseLocationLotattVOS1 = new ArrayList<>();
|
|
|
|
|
|
+ List<BaseLocationLotattVO> result = new ArrayList<>();
|
|
|
|
|
|
- for (WmsDocOrderDetails wmsDocOrderDetails1 : list) {
|
|
|
|
- String sku1 = wmsDocOrderDetails1.getSku();
|
|
|
|
|
|
+ for (WmsDocOrderDetails wmsDocOrderDetail : wmsDocOrderDetailsList) {
|
|
|
|
+ String sku = wmsDocOrderDetail.getSku();
|
|
//出库数量
|
|
//出库数量
|
|
- BigDecimal qtyAllocatedEach = wmsDocOrderDetails1.getQtyOrderedEach();
|
|
|
|
-
|
|
|
|
- for (BaseLocationLotattVO baseLocationLotattVO1 : baseLocationLotattVOS2) {
|
|
|
|
- if (qtyAllocatedEach.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
- return baseLocationLotattVOS1;
|
|
|
|
- }
|
|
|
|
- //库存数量
|
|
|
|
- String sku = baseLocationLotattVO1.getSku();
|
|
|
|
- BigDecimal qty = new BigDecimal(baseLocationLotattVO1.getQty());
|
|
|
|
|
|
+ BigDecimal qtyAllocatedEach = wmsDocOrderDetail.getQtyOrderedEach();
|
|
|
|
+ //根据sku筛选库位
|
|
|
|
+ List<BaseLocationLotattVO> skuBaseLocationLotattVOList = baseLocationLotattVOList.stream().filter(item -> item.getSku().equals(sku)).collect(Collectors.toList());
|
|
|
|
|
|
- if (!sku.equals(sku1)) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- int i = qty.compareTo(qtyAllocatedEach);
|
|
|
|
- if (i >= 0) {
|
|
|
|
- baseLocationLotattVOS1.add(baseLocationLotattVO1);
|
|
|
|
- return baseLocationLotattVOS1;
|
|
|
|
- } else if (i < 0) {
|
|
|
|
- qtyAllocatedEach = qtyAllocatedEach.subtract(qty);
|
|
|
|
- baseLocationLotattVOS1.add(baseLocationLotattVO1);
|
|
|
|
|
|
+ for (BaseLocationLotattVO baseLocationLotattVO : skuBaseLocationLotattVOList) {
|
|
|
|
+ BigDecimal qty = new BigDecimal(baseLocationLotattVO.getQty());
|
|
|
|
+ if (qty.compareTo(qtyAllocatedEach) >= 0) {
|
|
|
|
+ result.add(baseLocationLotattVO);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
|
|
+ qtyAllocatedEach = qtyAllocatedEach.subtract(qty);
|
|
|
|
+ result.add(baseLocationLotattVO);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return baseLocationLotattVOS1;
|
|
|
|
|
|
+ return result;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|