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,54 +1168,60 @@ public class LiteOrderCache { ...@@ -1168,54 +1168,60 @@ 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());
String reservedLinePrepOrderId=(s==null?"":s.getReservedLinePrepOrderId()); reelItem = updateItemInfo(orderNo, item, reelItem, s);
if(ObjectUtil.isEmpty(reservedLinePrepOrderId)){ if (reelItem.getStatus().equals(OrderItemStatus.CheckOk)) {
reservedLinePrepOrderId=""; outNum += reelItem.getOutNum();
}
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; outReelCount += 1;
taskReelCount+=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");
} }
// 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); selItemList.add(reelItem);
} }
...@@ -1223,12 +1229,65 @@ public class LiteOrderCache { ...@@ -1223,12 +1229,65 @@ public class LiteOrderCache {
item.setOutNum(outNum); item.setOutNum(outNum);
item.setOutReelCount(outReelCount); item.setOutReelCount(outReelCount);
//判断是否缺料 //判断是否缺料
if(outNum>=item.getNeedNum()&&outReelCount>=item.getNeedReelCount()){ if (outNum >= item.getNeedNum() && outReelCount >= item.getNeedReelCount()) {
//已有足够物料 //已有足够物料
item.setStatus(OrderItemStatus.CheckOk); item.setStatus(OrderItemStatus.CheckOk);
}else{ } else {
//缺料
item.setStatus(OrderItemStatus.shortage); 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); liteOrderItemManager.save(item);
finItem.add(item); finItem.add(item);
...@@ -1248,6 +1307,66 @@ public class LiteOrderCache { ...@@ -1248,6 +1307,66 @@ public class LiteOrderCache {
return ""; 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());
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() + "】");
reelItem.setOutNum(pos.getBarcode().getAmount());
pos.getBarcode().setLockId(orderNo);
pos.getBarcode().setLockName(parItem.getPn());
storagePosManager.save(pos);
}
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 [" + parItem.getPn() + "] RI [" + parItem.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");
}
return reelItem;
}
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!