|
|
@ -234,10 +234,10 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre |
|
|
* @param ifsServer IFS服务器连接 |
|
|
* @param ifsServer IFS服务器连接 |
|
|
*/ |
|
|
*/ |
|
|
private void getFinalPartCost(QuoteDetailBom component, Server ifsServer) { |
|
|
private void getFinalPartCost(QuoteDetailBom component, Server ifsServer) { |
|
|
// 最大重试次数 |
|
|
|
|
|
final int MAX_RETRY_COUNT = 3; |
|
|
|
|
|
// 重试间隔(毫秒) |
|
|
|
|
|
final long RETRY_INTERVAL_MS = 1000; |
|
|
|
|
|
|
|
|
// 最大重试次数(设置为2次,平衡成功率和响应时间) |
|
|
|
|
|
final int MAX_RETRY_COUNT = 2; |
|
|
|
|
|
// 重试间隔(毫秒,设置为500ms,减少等待时间) |
|
|
|
|
|
final long RETRY_INTERVAL_MS = 500; |
|
|
|
|
|
|
|
|
String partNo = component.getComponentPart(); |
|
|
String partNo = component.getComponentPart(); |
|
|
String site = component.getSite(); |
|
|
String site = component.getSite(); |
|
|
@ -277,13 +277,22 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre |
|
|
log.warn("[COST_QUERY] 第 {} 次查询失败 - PartNo: {}, Site: {}, ResultCode: {}, ErrorMsg: {}", |
|
|
log.warn("[COST_QUERY] 第 {} 次查询失败 - PartNo: {}, Site: {}, ResultCode: {}, ErrorMsg: {}", |
|
|
retryCount, partNo, site, map.get("resultCode"), lastErrorMsg); |
|
|
retryCount, partNo, site, map.get("resultCode"), lastErrorMsg); |
|
|
|
|
|
|
|
|
// 账号密码错误不重试,直接抛异常 |
|
|
|
|
|
if (lastErrorMsg != null && lastErrorMsg.contains("You have entered an invalid username and/or password")) { |
|
|
|
|
|
log.error("[COST_QUERY] IFS账号密码错误,停止重试 - PartNo: {}", partNo); |
|
|
|
|
|
throw new RuntimeException(lastErrorMsg); |
|
|
|
|
|
|
|
|
// 判断是否需要重试(某些明确的业务错误不需要重试) |
|
|
|
|
|
if (lastErrorMsg != null) { |
|
|
|
|
|
// 账号密码错误不重试,直接抛异常 |
|
|
|
|
|
if (lastErrorMsg.contains("You have entered an invalid username and/or password")) { |
|
|
|
|
|
log.error("[COST_QUERY] IFS账号密码错误,停止重试 - PartNo: {}", partNo); |
|
|
|
|
|
throw new RuntimeException(lastErrorMsg); |
|
|
|
|
|
} |
|
|
|
|
|
// 业务数据不存在类的错误不重试(重试也不会成功) |
|
|
|
|
|
if (lastErrorMsg.contains("不存在") || lastErrorMsg.contains("not exist") |
|
|
|
|
|
|| lastErrorMsg.contains("No data found") || lastErrorMsg.contains("not found")) { |
|
|
|
|
|
log.info("[COST_QUERY] 物料成本数据不存在,无需重试 - PartNo: {}, ErrorMsg: {}", partNo, lastErrorMsg); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 如果不是最后一次重试,等待后继续 |
|
|
|
|
|
|
|
|
// 如果不是最后一次重试,等待后继续(仅对网络/临时性错误重试) |
|
|
if (retryCount < MAX_RETRY_COUNT) { |
|
|
if (retryCount < MAX_RETRY_COUNT) { |
|
|
log.info("[COST_QUERY] 等待 {}ms 后进行第 {} 次重试 - PartNo: {}", |
|
|
log.info("[COST_QUERY] 等待 {}ms 后进行第 {} 次重试 - PartNo: {}", |
|
|
RETRY_INTERVAL_MS, retryCount + 1, partNo); |
|
|
RETRY_INTERVAL_MS, retryCount + 1, partNo); |
|
|
|