Commit 3f7a3aa9 LN

工单出库如果预留失败自动预留下一盘

1 个父辈 65a73fee
...@@ -1127,16 +1127,16 @@ public class LiteOrderCache { ...@@ -1127,16 +1127,16 @@ public class LiteOrderCache {
assignReelCount = assignReelCount + 1; assignReelCount = assignReelCount + 1;
taskReelCount = taskReelCount + 1; taskReelCount = taskReelCount + 1;
log.info("工单[" + orderNo + "],挑料盘数[" + taskReelCount + "]挑料信息:【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount()); log.info("工单[" + orderNo + "],挑料盘数[" + taskReelCount + "]挑料信息:【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount());
LiteOrderItem selItem = new LiteOrderItem(); LiteOrderItem selItem = newSubItem(pos);
selItem.setRi(pos.getBarcode().getBarcode()); // selItem.setRi(pos.getBarcode().getBarcode());
selItem.setPn(pos.getBarcode().getPartNumber()); // selItem.setPn(pos.getBarcode().getPartNumber());
selItem.setStatus(OrderItemStatus.wait); // selItem.setStatus(OrderItemStatus.wait);
selItem.setNeedNum(pos.getBarcode().getAmount()); // selItem.setNeedNum(pos.getBarcode().getAmount());
selItem.setOutNum(pos.getBarcode().getAmount()); // selItem.setOutNum(pos.getBarcode().getAmount());
//物料类型 // //物料类型
//
String mtype = MicronDataCache.GetReelType(pos.getBarcode().getPlateSize(), pos.getBarcode().getHeight()); // String mtype = MicronDataCache.GetReelType(pos.getBarcode().getPlateSize(), pos.getBarcode().getHeight());
selItem.updateAppendData("mtype",mtype); // selItem.updateAppendData("mtype",mtype);
selectReelItems.add(selItem); selectReelItems.add(selItem);
allBarcodes.add(pos.getBarcode()); allBarcodes.add(pos.getBarcode());
findPosList.add(pos.getId() ); findPosList.add(pos.getId() );
...@@ -1168,10 +1168,161 @@ public class LiteOrderCache { ...@@ -1168,10 +1168,161 @@ public class LiteOrderCache {
item.setOutReelCount(0); item.setOutReelCount(0);
int outNum = 0; int outNum = 0;
int outReelCount = 0; int outReelCount = 0;
List<LiteOrderItem> selItemList=new ArrayList<>(); List<LiteOrderItem> selItemList = new ArrayList<>();
for (LiteOrderItem reelItem : for (LiteOrderItem reelItem :
item.getSelectItems()) { item.getSelectItems()) {
MaterialStatus s = apiResultMap.get(reelItem.getRi()); MaterialStatus s = apiResultMap.get(reelItem.getRi());
reelItem = updateItemInfo(orderNo, item, reelItem, s);
if (reelItem.getStatus().equals(OrderItemStatus.CheckOk)) {
outNum += reelItem.getOutNum();
outReelCount += 1;
taskReelCount += 1;
}
// String reservedLinePrepOrderId=(s==null?"":s.getReservedLinePrepOrderId());
// if(ObjectUtil.isEmpty(reservedLinePrepOrderId)){
// reservedLinePrepOrderId="";
// }
//
// reelItem.updateAppendData("lineId",reservedLinePrepOrderId);
// if (s != null && s.isAvailable()) {
// reelItem.setStatus(OrderItemStatus.CheckOk);
// //reservedLinePrepOrderId
// //预留数量
// StoragePos pos = storagePosManager.getByBarcode(s.getSerialNum());
// log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证成功,更改状态为 CheckOk ,锁定库位【" + pos.getPosName() + "】");
//
//
// pos.getBarcode().setLockId(cacheOrder.getOrderNo());
// pos.getBarcode().setLockName(item.getPn());
// storagePosManager.save(pos);
// outNum += pos.getBarcode().getAmount();
// outReelCount += 1;
// taskReelCount+=1;
// }
// else if(s!=null && s.isReserved()){
// String str=s.getDescription();
// if(ObjectUtil.isNotEmpty(s.getMaterialStatus())){
// str=str+";"+s.getMaterialStatus();
// }
// reelItem.setExecutFailReason(str);
// reelItem.setStatus(OrderItemStatus.Reserved);
// log.info("工单【" + orderNo + "】PN [" + item.getPn() + "] RI [" + item.getRi() + "] API009 验证失败,更改状态为 Reserved");
// }else if(s==null){
//
// reelItem.setExecutFailReason("no result ");
// reelItem.setStatus(OrderItemStatus.CheckFail);
// log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证失败,更改状态为 CheckFail");
// }
// else {
// String str= s.getDescription();
// if(ObjectUtil.isNotEmpty(s.getMaterialStatus())){
// str=str+";"+s.getMaterialStatus();
// }
// reelItem.setExecutFailReason(str);
// reelItem.setStatus(OrderItemStatus.CheckFail);
// log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证失败,更改状态为 CheckFail");
// }
selItemList.add(reelItem);
}
item.setSelectItems(selItemList);
item.setOutNum(outNum);
item.setOutReelCount(outReelCount);
//判断是否缺料
if (outNum >= item.getNeedNum() && outReelCount >= item.getNeedReelCount()) {
//已有足够物料
item.setStatus(OrderItemStatus.CheckOk);
} else {
String partNumber = item.getPn();
String reelId = item.getRi();
String mpn = item.getMpn();
//需要自动补充其他物料
while (outNum < item.getNeedNum() || outReelCount < item.getNeedReelCount()) {
Collection<String> excludePosIds = excludeOutPosIds();
excludePosIds.addAll(findPosList);
StoragePos pos = null;
if (ObjectUtil.isNotEmpty(reelId)) {
break;
} else if (Strings.isNullOrEmpty(reelId) && !Strings.isNullOrEmpty(partNumber)) {
//PN
pos = storagePosManager.findPartNumberInStorages(availableStorageIds, "", partNumber, excludePosIds, checkoutType, item.getAppendData());
} else if (Strings.isNullOrEmpty(reelId) && Strings.isNullOrEmpty(partNumber) && !Strings.isNullOrEmpty(mpn)) {
pos = storagePosManager.findMpnInStorages(availableStorageIds, mpn, excludePosIds, checkoutType, item.getAppendData());
}
if (pos == null) {
// log.error("未找到可以出库的物料[" + partNumber + "]");
break;
}
findPosList.add(pos.getId());
taskReelCount = taskReelCount + 1;
log.info("工单[" + orderNo + "],api009验证完成后物料不足,重新挑选物料: 【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount());
LiteOrderItem newSubItem = newSubItem(pos);
List<Barcode> addBarcodes = new ArrayList<>();
addBarcodes.add(pos.getBarcode());
Map<String, MaterialStatus> buReelMap = MicronApi.Api009(cacheOrder.getOperationId(), lineId, addBarcodes);
MaterialStatus s = buReelMap.get(newSubItem.getRi());
newSubItem = updateItemInfo(orderNo, item, newSubItem, s);
if (newSubItem.getStatus().equals(OrderItemStatus.CheckOk)) {
outNum += newSubItem.getOutNum();
outReelCount += 1;
taskReelCount += 1;
}
selItemList.add(newSubItem);
}
item.setSelectItems(selItemList);
item.setOutNum(outNum);
item.setOutReelCount(outReelCount);
if (outNum >= item.getNeedNum() && outReelCount >= item.getNeedReelCount()) {
//已有足够物料
item.setStatus(OrderItemStatus.CheckOk);
log.info("工单[" + orderNo + "],RI=[" + reelId + "] PN=[" + partNumber + "],MPN=[" + mpn + "]重新挑选物料后已有足够物料,设置状态=CheckOk");
} else {
//缺料
item.setStatus(OrderItemStatus.shortage);
log.info("工单[" + orderNo + "],RI=[" + reelId + "] PN=[" + partNumber + "],MPN=[" + mpn + "]重新挑选物料后仍然缺料,设置状态=shortage");
}
}
liteOrderItemManager.save(item);
finItem.add(item);
}
cacheOrder.setOrderItems(finItem);
cacheOrder.setTaskReelCount(taskReelCount);
cacheOrder.setTotalTaskReelCount(cacheOrder.getTotalTaskReelCount() + taskReelCount);
liteOrderManager.save(cacheOrder);
addOrderToMap(cacheOrder);
log.info("工单[" + orderNo + "]物料验证结束,验证成功盘数[" + taskReelCount + "]");
if (taskReelCount <= 0) {
//return "工单无可执行的任务";
return "smfcore.order.out.noTask";
}
return "";
}
private LiteOrderItem newSubItem(StoragePos pos){
LiteOrderItem newItem = new LiteOrderItem();
newItem.setRi(pos.getBarcode().getBarcode());
newItem.setPn(pos.getBarcode().getPartNumber());
newItem.setStatus(OrderItemStatus.wait);
newItem.setNeedNum(pos.getBarcode().getAmount());
newItem.setOutNum(pos.getBarcode().getAmount());
//物料类型
String mtype = MicronDataCache.GetReelType(pos.getBarcode().getPlateSize(), pos.getBarcode().getHeight());
newItem.updateAppendData("mtype",mtype);
return newItem;
}
private LiteOrderItem updateItemInfo(String orderNo,LiteOrderItem parItem,LiteOrderItem reelItem,MaterialStatus s){
// MaterialStatus s = apiResultMap.get(reelItem.getRi());
String reservedLinePrepOrderId=(s==null?"":s.getReservedLinePrepOrderId()); String reservedLinePrepOrderId=(s==null?"":s.getReservedLinePrepOrderId());
if(ObjectUtil.isEmpty(reservedLinePrepOrderId)){ if(ObjectUtil.isEmpty(reservedLinePrepOrderId)){
reservedLinePrepOrderId=""; reservedLinePrepOrderId="";
...@@ -1185,13 +1336,11 @@ public class LiteOrderCache { ...@@ -1185,13 +1336,11 @@ public class LiteOrderCache {
StoragePos pos = storagePosManager.getByBarcode(s.getSerialNum()); StoragePos pos = storagePosManager.getByBarcode(s.getSerialNum());
log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证成功,更改状态为 CheckOk ,锁定库位【" + pos.getPosName() + "】"); log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证成功,更改状态为 CheckOk ,锁定库位【" + pos.getPosName() + "】");
reelItem.setOutNum(pos.getBarcode().getAmount());
pos.getBarcode().setLockId(cacheOrder.getOrderNo()); pos.getBarcode().setLockId(orderNo);
pos.getBarcode().setLockName(item.getPn()); pos.getBarcode().setLockName(parItem.getPn());
storagePosManager.save(pos); storagePosManager.save(pos);
outNum += pos.getBarcode().getAmount();
outReelCount += 1;
taskReelCount+=1;
} }
else if(s!=null && s.isReserved()){ else if(s!=null && s.isReserved()){
String str=s.getDescription(); String str=s.getDescription();
...@@ -1200,7 +1349,7 @@ public class LiteOrderCache { ...@@ -1200,7 +1349,7 @@ public class LiteOrderCache {
} }
reelItem.setExecutFailReason(str); reelItem.setExecutFailReason(str);
reelItem.setStatus(OrderItemStatus.Reserved); reelItem.setStatus(OrderItemStatus.Reserved);
log.info("工单【" + orderNo + "】PN [" + item.getPn() + "] RI [" + item.getRi() + "] API009 验证失败,更改状态为 Reserved"); log.info("工单【" + orderNo + "】PN [" + parItem.getPn() + "] RI [" + parItem.getRi() + "] API009 验证失败,更改状态为 Reserved");
}else if(s==null){ }else if(s==null){
reelItem.setExecutFailReason("no result "); reelItem.setExecutFailReason("no result ");
...@@ -1216,38 +1365,8 @@ public class LiteOrderCache { ...@@ -1216,38 +1365,8 @@ public class LiteOrderCache {
reelItem.setStatus(OrderItemStatus.CheckFail); reelItem.setStatus(OrderItemStatus.CheckFail);
log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证失败,更改状态为 CheckFail"); log.info("工单【" + orderNo + "】PN [" + reelItem.getPn() + "] RI [" + reelItem.getRi() + "] API009 验证失败,更改状态为 CheckFail");
} }
return reelItem;
selItemList.add(reelItem);
}
item.setSelectItems(selItemList);
item.setOutNum(outNum);
item.setOutReelCount(outReelCount);
//判断是否缺料
if(outNum>=item.getNeedNum()&&outReelCount>=item.getNeedReelCount()){
//已有足够物料
item.setStatus(OrderItemStatus.CheckOk);
}else{
//缺料
item.setStatus(OrderItemStatus.shortage);
}
liteOrderItemManager.save(item);
finItem.add(item);
} }
cacheOrder.setOrderItems(finItem);
cacheOrder.setTaskReelCount(taskReelCount);
cacheOrder.setTotalTaskReelCount(cacheOrder.getTotalTaskReelCount() + taskReelCount);
liteOrderManager.save(cacheOrder);
addOrderToMap(cacheOrder);
log.info("工单[" + orderNo + "]物料验证结束,验证成功盘数[" + taskReelCount + "]");
if (taskReelCount <= 0) {
//return "工单无可执行的任务";
return "smfcore.order.out.noTask";
}
return "";
}
public LiteOrderItem NewSelItem(StoragePos pos){ public LiteOrderItem NewSelItem(StoragePos pos){
LiteOrderItem selItem = new LiteOrderItem(); LiteOrderItem selItem = new LiteOrderItem();
selItem.setRi(pos.getBarcode().getBarcode()); selItem.setRi(pos.getBarcode().getBarcode());
...@@ -1303,7 +1422,8 @@ public class LiteOrderCache { ...@@ -1303,7 +1422,8 @@ public class LiteOrderCache {
//只出checkOK的 //只出checkOK的
needOutBarcode.add(selItem.getRi()); needOutBarcode.add(selItem.getRi());
} }
if (selItem.getStatus().equals(OrderItemStatus.Reserved) && isOver) { boolean checkOutRe=(!item.getStatus().equals(OrderItemStatus.CheckOk))||item.getStatus().equals(OrderItemStatus.shortage);
if (selItem.getStatus().equals(OrderItemStatus.Reserved) && isOver && checkOutRe) {
needOutBarcode.add(selItem.getRi()); needOutBarcode.add(selItem.getRi());
} }
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!