|
|
|
@ -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); |
|
|
|
|