fix: 修复交易审批期初标的价格取值

This commit is contained in:
tengyufan
2026-08-06 11:29:54 +08:00
parent c1c2ed9dda
commit b0b04dbdea
+7 -7
View File
@@ -276,10 +276,10 @@ namespace YLErp.BLL
}
var swapPositions = db.Set<swap_position>()
.Where(sp => swapTradeIds.Contains(sp.SwapTradeId) && sp.IsInitial && sp.UnderlyingCode != null)
.Select(sp => new { sp.SwapTradeId, sp.PosiNetPrice, sp.UnderlyingCode })
.Select(sp => new { sp.SwapTradeId, sp.PosiGrossPrice, sp.UnderlyingCode })
.ToList();
var logger = LogFactory.GetLogger<tradeBLL>();
var posDict = swapPositions.GroupBy(sp => sp.SwapTradeId).ToDictionary(g => g.Key, g => g.First().PosiNetPrice);
var posDict = swapPositions.GroupBy(sp => sp.SwapTradeId).ToDictionary(g => g.Key, g => g.First().PosiGrossPrice);
var umProvider = DataCacheProvider.GetUnderlyingDataSource();
// 需求②:平仓/行权/互换交易,审批角色应取 CloseProcess 流程的节点角色,而非 TradeProcess
var closeProcessRoles = db.approvalprocess
@@ -312,14 +312,14 @@ namespace YLErp.BLL
tradeLinq.TradeSinglePrice = option.OpenCommission;
}
// --- 新增逻辑:针对收益互换类型,用 swap_position.PosiNetPrice 覆盖展示用的期初标的价格 ---
// --- 针对收益互换类型,用 swap_position.PosiGrossPrice 覆盖展示用的期初标的价格 ---
try
{
if (tradeLinq.TradeType == "收益互换" && posDict.TryGetValue(tradeLinq.id, out var netPrice) && netPrice > 0)
if (tradeLinq.TradeType == "收益互换" && posDict.TryGetValue(tradeLinq.id, out var grossPrice) && grossPrice > 0)
{
// 将期初价格覆盖为互换持仓的 PosiNetPrice(仅使用 PosiDirection != 0 的期初持仓)
logger.Info($"tradeOpeningProcessQuery.DAL override: tradeId={tradeLinq.id} beforeInitialSpot={tradeLinq.InitialSpotPrice} dbPosi={netPrice}");
tradeLinq.InitialSpotPrice = Convert.ToDouble(netPrice);
// 将期初价格覆盖为互换持仓的 PosiGrossPrice(仅使用 PosiDirection != 0 的期初持仓)
logger.Info($"tradeOpeningProcessQuery.DAL override: tradeId={tradeLinq.id} beforeInitialSpot={tradeLinq.InitialSpotPrice} dbPosi={grossPrice}");
tradeLinq.InitialSpotPrice = Convert.ToDouble(grossPrice);
}
}
catch (Exception ex)