fix(swap): 修复互换交易流程事件数据填充问题
- 添加SwapTradeNo、EventType和EventReason字段到流程事件 - 修正EventType枚举类型从SwapEventTypeEnum改为SwapFlowEventTypeEnum - 在SaveSwapDeal方法中添加交易信息验证逻辑 - 提取FillSwapFlowEvent方法统一处理流程事件数据填充 - 优化数据库保存操作确保数据一致性
This commit is contained in:
@@ -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
|
||||
/// <param name="eventType"></param>
|
||||
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<swap_flow_event>(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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 计算平仓数据
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user