From b2dce0e4f7b04e94441d0243e8959b7b12844903 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E5=90=8D=E9=94=90?= <1565842059@qq.com>
Date: Thu, 2 Jul 2026 14:28:47 +0800
Subject: [PATCH] =?UTF-8?q?fix(swap):=20=E4=BF=AE=E5=A4=8D=E4=BA=92?=
=?UTF-8?q?=E6=8D=A2=E4=BA=A4=E6=98=93=E6=B5=81=E7=A8=8B=E4=BA=8B=E4=BB=B6?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A1=AB=E5=85=85=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 添加SwapTradeNo、EventType和EventReason字段到流程事件
- 修正EventType枚举类型从SwapEventTypeEnum改为SwapFlowEventTypeEnum
- 在SaveSwapDeal方法中添加交易信息验证逻辑
- 提取FillSwapFlowEvent方法统一处理流程事件数据填充
- 优化数据库保存操作确保数据一致性
---
.../Modules/SwapModule/SwapDealService.cs | 29 +++++++++++++++++--
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/YLErpDAL/Modules/SwapModule/SwapDealService.cs b/YLErpDAL/Modules/SwapModule/SwapDealService.cs
index c79a30a5..fcffad1c 100644
--- a/YLErpDAL/Modules/SwapModule/SwapDealService.cs
+++ b/YLErpDAL/Modules/SwapModule/SwapDealService.cs
@@ -254,6 +254,9 @@ namespace YLErp.Modules.SwapModule
unwindData.PayDate = QdpCalendarHelper.GetNonHoliday(unwindData.UnwindDate.Value.AddDays(td.trade_extend.ExtendObj.SettlementRules));
floatEvent.PayDate = unwindData.PayDate;
floatEvent.SwapTradeId = tradeId;
+ floatEvent.SwapTradeNo = td.TradeNumber;
+ floatEvent.EventType = (int)SwapFlowEventTypeEnum.互换;
+ floatEvent.EventReason = "交易";
unwindData.SwapTradeId = tradeId;
unwindData.StructureType = td.StructureType;
unwindData.NotionalValue = Convert.ToDecimal(td.OriginalStockEqvNotional ?? 0);
@@ -265,8 +268,6 @@ namespace YLErp.Modules.SwapModule
unwindData.CloseNotionalValue = unwindData.PosiNotionalValue;
if (position != null)
{
- floatEvent.EventType = (int)SwapEventTypeEnum.互换;
- floatEvent.EventReason = "交易";
floatEvent.PositionId = position.PositionId;
floatEvent.DividendIn = 0;
floatEvent.UnderlyingCode = position.UnderlyingCode;
@@ -1619,6 +1620,11 @@ namespace YLErp.Modules.SwapModule
///
private long SaveSwapDeal(UnwindData unwindData, int eventType, int clientCashId, string eventResason = "", bool approve = false)
{
+ var td = DbContext.trade.Find(unwindData.SwapTradeId);
+ if (td == null)
+ {
+ throw new ServiceException("未找到交易信息");
+ }
var flowList = new List(unwindData.FlowEvents);
unwindData.FlowEvents.Clear();
string data = JsonConvert.SerializeObject(unwindData);
@@ -1633,7 +1639,7 @@ namespace YLErp.Modules.SwapModule
item.PayDate = unwindData.PayDate;
item.UnwindDate = unwindData.UnwindDate;
item.EventDate = unwindData.ValueDate;
- item.EventId = swapEvent.id;
+ FillSwapFlowEvent(item, unwindData, td, eventType, swapEvent.id);
DbContext.swap_flow_event.Add(item);
}
if (!approve)
@@ -1641,8 +1647,25 @@ namespace YLErp.Modules.SwapModule
UpdateInitalPosition(flowList, unwindData, eventType);
}
DbContext.SaveChanges();
+ var savedFlowEvents = DbContext.swap_flow_event.Where(x => x.EventId == swapEvent.id).ToList();
+ foreach (var item in savedFlowEvents)
+ {
+ FillSwapFlowEvent(item, unwindData, td, eventType, swapEvent.id);
+ }
+ DbContext.SaveChanges();
return swapEvent.id;
}
+
+ private void FillSwapFlowEvent(swap_flow_event item, UnwindData unwindData, trade td, int eventType, long eventId)
+ {
+ item.EventId = eventId;
+ item.SwapTradeId = unwindData.SwapTradeId;
+ item.SwapTradeNo = td.TradeNumber;
+ item.EventType = eventType;
+ item.EventReason = string.IsNullOrWhiteSpace(item.EventReason) ? "交易" : item.EventReason;
+ UpdateDbOption(item);
+ }
+
///
/// 计算平仓数据
///