Commit 07f32fda zshaohui

1.工单出库 逻辑优化

1 个父辈 98ddbcd9
...@@ -948,6 +948,19 @@ public class LiteOrderCache { ...@@ -948,6 +948,19 @@ public class LiteOrderCache {
CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType(); CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType();
//可用料仓 //可用料仓
List<String> availableStorageIds = dataCache.getAvailableStorageIds(); List<String> availableStorageIds = dataCache.getAvailableStorageIds();
//提取到所有的partNumber
List<String> partNumberList = new ArrayList<>();
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) {
partNumberList.add(orderItem.getPn());
}
Collection<String> excludePosIds = excludeOutPosIds();
List<StoragePos> allPnPosList = storagePosManager.findAllPartNumberInStorages(availableStorageIds, partNumberList, excludePosIds, checkoutType);
if (allPnPosList == null){
allPnPosList = new ArrayList<>();
}
//开始循环处理数据 //开始循环处理数据
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) { for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) {
...@@ -973,10 +986,8 @@ public class LiteOrderCache { ...@@ -973,10 +986,8 @@ public class LiteOrderCache {
int countTask = 0; int countTask = 0;
if (remainNum > 0 || remainReelCount > 0) { if (remainNum > 0 || remainReelCount > 0) {
Collection<String> excludePosIds = excludeOutPosIds();
//查询 //查询
List<StoragePos> allPosList = storagePosManager.findAllPartNumberInStorages(availableStorageIds, orderItem.getPn(), excludePosIds, checkoutType); List<StoragePos> allPosList = getPosListByPn(allPnPosList,orderItem.getPn());
if (allPosList == null){ if (allPosList == null){
allPosList = new ArrayList<>(); allPosList = new ArrayList<>();
} }
...@@ -1182,4 +1193,17 @@ public class LiteOrderCache { ...@@ -1182,4 +1193,17 @@ public class LiteOrderCache {
} }
return ""; return "";
} }
private List<StoragePos> getPosListByPn(List<StoragePos> allPnPosList, String pn) {
List<StoragePos> storagePosList = new ArrayList<>();
for (StoragePos pos : allPnPosList) {
Barcode barcode = pos.getBarcode();
if (barcode != null){
if (barcode.getPartNumber().equals(pn)){
storagePosList.add(pos);
}
}
}
return storagePosList;
}
} }
...@@ -104,5 +104,5 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> { ...@@ -104,5 +104,5 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
int getRemainPosCountByStorage(Storage storage, Barcode barcode, Collection<String> excludePosIds, String lastPosId, String endStr) throws ValidateException; int getRemainPosCountByStorage(Storage storage, Barcode barcode, Collection<String> excludePosIds, String lastPosId, String endStr) throws ValidateException;
List<StoragePos> findAllPartNumberInStorages(List<String> availableStorageIds, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkoutType); List<StoragePos> findAllPartNumberInStorages(List<String> availableStorageIds, List<String> pnList, Collection<String> excludePosIds, CHECKOUT_TYPE checkoutType);
} }
...@@ -936,8 +936,8 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -936,8 +936,8 @@ public class StoragePosManagerImpl implements IStoragePosManager {
} }
@Override @Override
public List<StoragePos> findAllPartNumberInStorages(List<String> storageIdList, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType) { public List<StoragePos> findAllPartNumberInStorages(List<String> storageIdList, List<String> pnList, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType) {
Criteria c = Criteria.where("barcode.partNumber").is(pn) Criteria c = Criteria.where("barcode.partNumber").in(pnList)
.and("id").nin(excludePosIds) .and("id").nin(excludePosIds)
.and("enabled").is(true)//可用 .and("enabled").is(true)//可用
.and("barcode.lockId").is(null);//没有被锁定的仓位; .and("barcode.lockId").is(null);//没有被锁定的仓位;
...@@ -949,7 +949,7 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -949,7 +949,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
q.with(sort); q.with(sort);
List<StoragePos> list = storagePosDao.findByQuery(q); List<StoragePos> list = storagePosDao.findByQuery(q);
if (list == null || list.isEmpty()) { if (list == null || list.isEmpty()) {
log.info("使用" + checkOutType + " 策略出库 partNumber=" + pn + ",未找到可以出库的物料 "); //log.info("使用" + checkOutType + " 策略出库 partNumber=" + pn + ",未找到可以出库的物料 ");
} }
return list; return list;
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!