Commit f94231f4 zshaohui

1.绑定料箱为空处理

2.工单出库挑最合适的料箱
1 个父辈 e6e4df6f
...@@ -814,6 +814,17 @@ public class LiteOrderCache implements ITaskListener { ...@@ -814,6 +814,17 @@ public class LiteOrderCache implements ITaskListener {
} }
} }
int oneReelNum = component.getAmount(); int oneReelNum = component.getAmount();
//如果单盘能满足,直接返回
StoragePos pos = pickFitWholeReel(excludePosNameList, posList, targetNum);
if (pos != null) {
if (pos.getBarcode().getAmount() - targetNum >= 0) {
log.info("需求数量为:" + targetNum + ",barcode:" + pos.getBarcode().getBarcode() + " 对应的数量为:" + pos.getBarcode().getAmount() + ",满足需求数量,直接返回");
outPosList.add(pos);
return outPosList;
}
}
//挑选整盘 //挑选整盘
log.info("开始挑选整盘料,共需要" + needWholeReelCount + "盘"); log.info("开始挑选整盘料,共需要" + needWholeReelCount + "盘");
for (int i = 0; i < needWholeReelCount; i++) { for (int i = 0; i < needWholeReelCount; i++) {
...@@ -837,7 +848,8 @@ public class LiteOrderCache implements ITaskListener { ...@@ -837,7 +848,8 @@ public class LiteOrderCache implements ITaskListener {
break; break;
} }
if (notWholePosList.size() >= notFullNum) { if (notWholePosList.size() >= notFullNum) {
StoragePos outPos = pickWholeReel(excludePosNameList, posList, targetNum, oneReelNum); break;
/* StoragePos outPos = pickWholeReel(excludePosNameList, posList, targetNum, oneReelNum);
if (outPos == null) { if (outPos == null) {
break; break;
} else { } else {
...@@ -845,7 +857,7 @@ public class LiteOrderCache implements ITaskListener { ...@@ -845,7 +857,7 @@ public class LiteOrderCache implements ITaskListener {
outPosList.add(outPos); outPosList.add(outPos);
excludePosNameList.add(outPos.getPosName()); excludePosNameList.add(outPos.getPosName());
targetNum = targetNum - outPos.getBarcode().getAmount(); targetNum = targetNum - outPos.getBarcode().getAmount();
} }*/
} else { } else {
for (StoragePos outPos : notWholePosList) { for (StoragePos outPos : notWholePosList) {
log.info("挑选到批次[" + outPos.getBarcode().getBatch() + "]的散盘物料:" + outPos.getBarcode().getBarcode() + " 数量:" + outPos.getBarcode().getAmount()); log.info("挑选到批次[" + outPos.getBarcode().getBatch() + "]的散盘物料:" + outPos.getBarcode().getBarcode() + " 数量:" + outPos.getBarcode().getAmount());
...@@ -984,14 +996,24 @@ public class LiteOrderCache implements ITaskListener { ...@@ -984,14 +996,24 @@ public class LiteOrderCache implements ITaskListener {
private List<StoragePos> findNotWholePosList(List<String> excludePosNameList, List<StoragePos> posList, int targetNum, int oneReelNum, String pn,int notFullNum) { private List<StoragePos> findNotWholePosList(List<String> excludePosNameList, List<StoragePos> posList, int targetNum, int oneReelNum, String pn,int notFullNum) {
List<StoragePos> storagePosList = new ArrayList<>(); List<StoragePos> storagePosList = new ArrayList<>();
//新创建一个list对象,防止引用
List<String> newExcluePosNameList = new ArrayList<>();
if (excludePosNameList != null && !excludePosNameList.isEmpty()){
for (String excludePosName : excludePosNameList) {
newExcluePosNameList.add(excludePosName);
}
}
while (true) { while (true) {
if (storagePosList != null && !storagePosList.isEmpty()) { if (storagePosList != null && !storagePosList.isEmpty()) {
for (StoragePos pos : storagePosList) { for (StoragePos pos : storagePosList) {
excludePosNameList.add(pos.getPosName()); if (!newExcluePosNameList.contains(pos.getPosName())) {
newExcluePosNameList.add(pos.getPosName());
}
} }
} }
//取散盘 //取散盘
StoragePos outPos = pickNotWholeReel(excludePosNameList, posList, targetNum, oneReelNum); StoragePos outPos = pickNotWholeReel(newExcluePosNameList, posList, targetNum, oneReelNum);
if (outPos == null) { if (outPos == null) {
break; break;
} else { } else {
......
...@@ -664,6 +664,11 @@ public class OrderController { ...@@ -664,6 +664,11 @@ public class OrderController {
continue; continue;
} }
} }
if (!onlyNotEndTask){
if (datalog.isWait()){
continue;
}
}
if (datalog.isOrderTask() && datalog.getSourceId().equals(liteOrder.getId())) { if (datalog.isOrderTask() && datalog.getSourceId().equals(liteOrder.getId())) {
//判断是否再自己的权限范围内 //判断是否再自己的权限范围内
if (myStorageIds.contains(datalog.getStorageId())) { if (myStorageIds.contains(datalog.getStorageId())) {
......
...@@ -105,6 +105,7 @@ public class OrderSheetController { ...@@ -105,6 +105,7 @@ public class OrderSheetController {
} }
for (String boxName : boxNames) { for (String boxName : boxNames) {
log.info(orderNo+"绑定料箱信息:"+boxName);
if (liteOrder.hasBox(boxName)) { if (liteOrder.hasBox(boxName)) {
throw new ValidateException("smfcore.orderSheet.box.exists", "工单{0}已存在箱子{0}", new String[]{liteOrder.getOrderNo(), boxName}); throw new ValidateException("smfcore.orderSheet.box.exists", "工单{0}已存在箱子{0}", new String[]{liteOrder.getOrderNo(), boxName});
} }
......
...@@ -378,6 +378,9 @@ public class LiteOrder extends BasePo implements Serializable { ...@@ -378,6 +378,9 @@ public class LiteOrder extends BasePo implements Serializable {
public boolean hasBox(String boxName){ public boolean hasBox(String boxName){
if(boxInfos!=null){ if(boxInfos!=null){
for (OrderBoxInfo box :boxInfos) { for (OrderBoxInfo box :boxInfos) {
if (StringUtils.isEmpty(box.getBoxName())){
continue;
}
if(box.getBoxName().equals(boxName)){ if(box.getBoxName().equals(boxName)){
return true; return true;
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!