Browse Source

自动分拣

master
常熟吴彦祖 4 months ago
parent
commit
a60bcb0e01
  1. 60
      src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java

60
src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java

@ -1,5 +1,6 @@
package com.gaotao.modules.other.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.gaotao.common.exception.XJException;
import com.gaotao.common.utils.HttpUtils;
import com.gaotao.common.utils.IfsErrorMessageUtils;
@ -372,7 +373,13 @@ public class InventoryMoveServiceImpl implements InventoryMoveService {
group.partNo, group.lotBatchNo, group.sourceLocationNo));
continue;
}
BigDecimal reservedQty = new BigDecimal(matchedStock.getQtyReserved());
if(reservedQty.compareTo(new BigDecimal(0))>0){
insufficientStockErrors.add(String.format(
"物料%s批次%s在库位%s在ifs中被预留:%s",
group.partNo, group.lotBatchNo, group.sourceLocationNo,
matchedStock.getQtyReserved()));
}
// 计算可用库存在库数量 - 预留数量
BigDecimal availableQty = matchedStock.getAvailableQty();
@ -482,6 +489,57 @@ public class InventoryMoveServiceImpl implements InventoryMoveService {
String jsonBody = null;
String ifsResponse = null;
//校验库存是否被预留 后面要删除
// 获取该站点指定物料的库存信息
List<IfsInventoryPartInStock> inventoryList=new ArrayList<>();
try {
inventoryList = ifsApiService.getInventoryPartInStock(group.site, group.partNo);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
log.info("获取站点{}物料{}的库存信息,共{}条记录", group.site, group.partNo, inventoryList.size());
IfsInventoryPartInStock matchedStock = findMatchingStock(inventoryList, group);
boolean failedFlag=false;
if (matchedStock == null) {
failedFlag=true;
}
if (matchedStock != null) {
BigDecimal reservedQty = new BigDecimal(matchedStock.getQtyReserved());
if(reservedQty.compareTo(new BigDecimal(0))>0){
failedFlag=true;
}
}
if(failedFlag){
log.warn("IFS移库同步失败 - 物料: {}, 批次: {}, 在库位:{}的库存被预留,无法移库",
group.partNo, group.lotBatchNo,group.sourceLocationNo);
// 记录到错误日志表 - rqrq
ifsCallErrorLogService.logIfsError(
group.site,
"MoveInventoryPart",
"库存移库(栈板)",
group.partNo,
group.lotBatchNo,
group.sourceLocationNo,
group.destLocationNo,
group.totalQty,
group.expiredDate,
"ifs库存被预留或者查不到库存,无法移库",
"ifs库存被预留或者查不到库存,无法移库",
"ifs库存被预留或者查不到库存,无法移库"
);
return;
}
//校验库存预留结束
try {
Map<String, Object> params = new HashMap<>();
params.put("ifsDBName", ifsDBName);

Loading…
Cancel
Save