Commit e71444db LN

工单出库和转储单出库挑料规则修改。

1 个父辈 c6b20dfa
......@@ -499,7 +499,6 @@ public class LiteOrderCache implements ITaskListener {
int targetNum = needNum;
for (int i=0;i<posList.size();i++
) {
StoragePos tempPos = null;
List<StoragePos> forPosList=new ArrayList<>();
for (StoragePos pos :
posList) {
......@@ -523,9 +522,12 @@ public class LiteOrderCache implements ITaskListener {
if (isGuizhong || needJieliao) {
if (pos.getBarcode().getAmount() >= targetNum) {
//一盘刚好满足
targetNum = 0;
targetNum -= pos.getBarcode().getAmount();
itemPosList.add(pos);
itemPosNameList.add(pos.getPosName());
if (targetNum < 0) {
jieliaoPosMap.put(pos.getPosName(), targetNum);
}
break;
} else if (isLast) {
//一盘料不足,直接加入
......@@ -533,7 +535,7 @@ public class LiteOrderCache implements ITaskListener {
itemPosNameList.add(pos.getPosName());
targetNum -= pos.getBarcode().getAmount();
if (targetNum < 0) {
jieliaoPosMap.put(tempPos.getPosName(), targetNum);
jieliaoPosMap.put(pos.getPosName(), targetNum);
}
break;
}
......
......@@ -238,8 +238,6 @@ public class OutListCache implements ITaskListener {
continue;
}
List<StoragePos> itemPosList = new ArrayList<>();
List<String> itemPosNameList = new ArrayList<>();
//查找PN的所有库存,PN=pn,未锁定,qty 从大到小,入库时间正序
List<StoragePos> posList = storagePosManager.findOrderItemInStorage(availableStorageIds, pn, taskService.excludePosIds());
......@@ -272,24 +270,60 @@ public class OutListCache implements ITaskListener {
}
}
List<StoragePos> itemPosList = new ArrayList<>();
List<String> itemPosNameList = new ArrayList<>();
//此PN未完成
int targetNum = needNum;
StoragePos tempPos = null;
for (StoragePos pos :
posList) {
//已经在出库列表
if (itemPosNameList.contains(pos.getPosName())) {
continue;
for (int i=0;i<posList.size();i++
) {
List<StoragePos> forPosList = new ArrayList<>();
for (StoragePos pos :
posList) {
if (!needOutPosMap.containsKey(pos.getPosName())) {
forPosList.add(pos);
}
}
//循环剩余的库位,查找
int forIndex = -1;
for (StoragePos pos :
forPosList) {
forIndex++;
boolean isLast = (forIndex == (forPosList.size() - 1));
//不需要截料,也不按照整盘比,按照数量满足或最后一盘来出
if (pos.getBarcode().getAmount() >= targetNum || isLast) {
itemPosList.add(pos);
itemPosNameList.add(pos.getPosName());
targetNum -= pos.getBarcode().getAmount();
break;
}
if (targetNum <= 0) {
break;
}
}
//不需要截料,也不按照整盘比,直接数量最大的发料
itemPosList.add(pos);
itemPosNameList.add(pos.getPosName());
targetNum -= pos.getBarcode().getAmount();
if (targetNum <= 0) {
break;
}
}
// StoragePos tempPos = null;
// for (StoragePos pos :
// posList) {
// //已经在出库列表
// if (itemPosNameList.contains(pos.getPosName())) {
// continue;
// }
// //不需要截料,也不按照整盘比,直接数量最大的发料
// itemPosList.add(pos);
// itemPosNameList.add(pos.getPosName());
// targetNum -= pos.getBarcode().getAmount();
//
// if (targetNum <= 0) {
// break;
// }
// }
//判断数量是否满足
if (targetNum > 0) {
int outNum = needNum - targetNum;
......
......@@ -589,7 +589,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
}
@Override
public List<StoragePos> findOrderItemInStorage(List<String> storageIdList,String pn, Collection<String> excludePosIds ) {
public List<StoragePos> findOrderItemInStorage(List<String> storageIdList,String pn, Collection<String> excludePosIds ) {
Criteria c = Criteria.where("barcode.partNumber").is(pn)
.and("id").nin(excludePosIds)
.and("enabled").is(true)//可用
......@@ -600,7 +600,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
}
Query q = new Query(c);
//数量从大到小,出库先进先出
Sort sort = Sort.by(Sort.Direction.DESC, "barcode.amount");
Sort sort = Sort.by(Sort.Direction.ASC, "barcode.amount");
sort.and(Sort.by(Sort.Direction.ASC, "canCheckOutTime"));
q.with(sort);
List<StoragePos> posList = storagePosDao.findByQuery(q);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!