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); + } + /// /// 计算平仓数据 ///