fix: keep shadow work off legacy threads

This commit is contained in:
zgw
2026-08-12 09:19:59 +08:00
parent 34c4d54669
commit bb3b93a79f
8 changed files with 274 additions and 169 deletions

View File

@@ -1,7 +1,7 @@
package com.ruoyi.out.outStockout.service.impl;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.algorithm.shadow.OutboundShadowObservation;
import com.ruoyi.algorithm.shadow.OutboundShadowCompletion;
import com.ruoyi.algorithm.shadow.ShadowObservationGateway;
import com.ruoyi.api.service.IToWcsService;
import com.ruoyi.bas.basJobId.service.IBasJobIdService;
@@ -188,10 +188,10 @@ public class OutStockoutServiceImpl implements IOutStockoutService
map.put("v_stockout_detail_id", detail.getStockoutDetailId());
map.put("v_result", null);
map.put("v_resultmsg", null);
OutboundShadowObservation shadowObservation =
planProjectOutboundShadow(detail.getStockoutDetailId());
OutboundShadowCompletion shadowCompletion =
observeProjectOutboundShadow(detail.getStockoutDetailId());
outStockoutMapper.autoAllot(map);
compareOutboundShadow(shadowObservation, map.get("v_result"));
shadowCompletion.complete(map.get("v_result"));
if (!"10".equals(map.get("v_result"))){
stringBuilder.append(",").append(detail.getStockoutDetailId()+map.get("v_resultmsg"));
}
@@ -218,10 +218,10 @@ public class OutStockoutServiceImpl implements IOutStockoutService
for (String stock : stockList) {
map.put("v_stockout_detail_id", stockoutDetailId);
map.put("v_stock_id", stock);
OutboundShadowObservation shadowObservation =
planExactStockOutboundShadow(stockoutDetailId, stock);
OutboundShadowCompletion shadowCompletion =
observeExactStockOutboundShadow(stockoutDetailId, stock);
outStockoutMapper.manualAllot(map);
compareOutboundShadow(shadowObservation, map.get("v_result"));
shadowCompletion.complete(map.get("v_result"));
//toWcsService.pushOutMydoJob();
if (!"10".equals(map.get("v_result"))){
stringBuilder.append(",").append(stockoutDetailId+map.get("v_resultString"));
@@ -233,32 +233,23 @@ public class OutStockoutServiceImpl implements IOutStockoutService
return AjaxResult.success();
}
private OutboundShadowObservation planProjectOutboundShadow(String stockoutDetailId) {
private OutboundShadowCompletion observeProjectOutboundShadow(String stockoutDetailId) {
try {
return shadowObservationGateway.planProjectOutbound(stockoutDetailId);
return shadowObservationGateway.observeProjectOutbound(stockoutDetailId);
} catch (RuntimeException exception) {
log.warn("Project outbound shadow observation failed open for detail {}: {}",
log.warn("Project outbound shadow submission failed open for detail {}: {}",
stockoutDetailId, exception.getMessage());
return OutboundShadowObservation.empty();
return OutboundShadowCompletion.rejected();
}
}
private OutboundShadowObservation planExactStockOutboundShadow(String stockoutDetailId, String stockId) {
private OutboundShadowCompletion observeExactStockOutboundShadow(String stockoutDetailId, String stockId) {
try {
return shadowObservationGateway.planExactStockOutbound(stockoutDetailId, stockId);
return shadowObservationGateway.observeExactStockOutbound(stockoutDetailId, stockId);
} catch (RuntimeException exception) {
log.warn("Exact-stock shadow observation failed open for detail {} stock {}: {}",
log.warn("Exact-stock shadow submission failed open for detail {} stock {}: {}",
stockoutDetailId, stockId, exception.getMessage());
return OutboundShadowObservation.empty();
}
}
private void compareOutboundShadow(OutboundShadowObservation observation, String legacyResultCode) {
try {
shadowObservationGateway.compareOutbound(observation, legacyResultCode);
} catch (RuntimeException exception) {
log.warn("Outbound shadow comparison failed open for request {}: {}",
observation == null ? null : observation.requestId(), exception.getMessage());
return OutboundShadowCompletion.rejected();
}
}