平仓资金记录不应该被覆盖

This commit is contained in:
吴方海
2025-04-24 13:50:33 +08:00
parent 465fae3160
commit e150526564
3 changed files with 14 additions and 63 deletions
+10 -10
View File
@@ -763,15 +763,15 @@ namespace YLErp.Modules.SwapModule
bool cofirm = false;
try
{
int clientCashId = CloseTrade_ClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut._平仓费, unwindData.ValueDate);
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut._平仓费, unwindData.ValueDate);
if (unwindData.SwapMarginAmount != 0)
{
AddClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapMarginAmount), ClientCashInCashOut._应付预付金, unwindData.ValueDate);
}
if (unwindData.SwapMarginRebatePnl != 0)
{
AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapMarginRebatePnl), ClientCashInCashOut._预付金返息, unwindData.ValueDate);
}
//if (unwindData.SwapMarginRebatePnl != 0)
//{
// AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapMarginRebatePnl), ClientCashInCashOut.系统操作_预付金返息, unwindData.ValueDate);
//}
DealFloatPosition(unwindData);
var flowList = new List<swap_flow_event>(unwindData.FlowEvents);
var eventId = SaveSwapDeal(unwindData, (int)SwapEventTypeEnum., clientCashId, "系统操作_平仓");
@@ -1051,7 +1051,7 @@ namespace YLErp.Modules.SwapModule
}
private void DealUnwind(UnwindData unwindData, trade td, string actionMsg = "系统操作_自动平仓")
{
int clientCashId = CloseTrade_ClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut._平仓费, unwindData.ValueDate);
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut._平仓费, unwindData.ValueDate);
if (unwindData.SwapMarginAmount != 0)
{
AddClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapMarginAmount), ClientCashInCashOut._应付预付金, unwindData.ValueDate);
@@ -1129,7 +1129,7 @@ namespace YLErp.Modules.SwapModule
var trans = DbContext.Database.BeginTransaction();
try
{
int clientCashId = CloseTrade_ClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapCloseAmount), ClientCashInCashOut._平仓费, unwindData.ValueDate);
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapCloseAmount), ClientCashInCashOut._平仓费, unwindData.ValueDate);
if (unwindData.SwapMarginAmount != 0)
{
AddClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapMarginAmount), ClientCashInCashOut._应付预付金, unwindData.ValueDate);
@@ -1172,7 +1172,7 @@ namespace YLErp.Modules.SwapModule
var trans = DbContext.Database.BeginTransaction();
try
{
int clientCashId = CloseTrade_ClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapCloseAmount), ClientCashInCashOut._互换, unwindData.ValueDate);
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(unwindData.SwapCloseAmount), ClientCashInCashOut._互换, unwindData.ValueDate);
SaveSwapDeal(unwindData, (int)SwapEventTypeEnum., clientCashId, "系统操作_互换");
trans.Commit();
}
@@ -1203,7 +1203,7 @@ namespace YLErp.Modules.SwapModule
bool confirm = false;
try
{
int clientCashId = CloseTrade_ClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut._互换, unwindData.ValueDate);
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapRealizedPnL), ClientCashInCashOut._互换, unwindData.ValueDate);
if (unwindData.SwapMarginRebatePnl != 0)
{
AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapMarginRebatePnl), ClientCashInCashOut._预付金返息, unwindData.ValueDate);
@@ -1251,7 +1251,7 @@ namespace YLErp.Modules.SwapModule
swapEvent.unwindData = JsonConvert.DeserializeObject<UnwindData>(swapEvent.EventData);
var flowList = DbContext.swap_flow_event.Where(x => x.EventId == swapEvent.id).ToList();
string action = eventType == (int)SwapEventTypeEnum. ? ClientCashInCashOut._互换 : ClientCashInCashOut._平仓费;
int clientCashId = CloseTrade_ClientCashInCashOut(td, Convert.ToDouble(swapEvent.unwindData.SwapCloseAmount), action, swapEvent.unwindData.ValueDate);
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(swapEvent.unwindData.SwapCloseAmount), action, swapEvent.unwindData.ValueDate);
swapEvent.ClientCashId = clientCashId;
if (td.StructureType != "多空组合")
{
@@ -366,7 +366,7 @@ namespace YLErp.Modules.SwapModule
private long SaveAutoSwapDeal(trade td, List<swap_flow_event> flowEvents, UnwindData unwindData)
{
//td.UnWindDate = unwindData.ValueDate;
int clientCashId = CloseTrade_ClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapCloseAmount), ClientCashInCashOut._互换, unwindData.ValueDate);
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(-unwindData.SwapCloseAmount), ClientCashInCashOut._互换, unwindData.ValueDate);
string data = JsonConvert.SerializeObject(unwindData);
var swapEvent = new SwapEventService(this).AddSwapEventDate(unwindData.ValueDate, unwindData.SwapTradeId, (int)SwapEventTypeEnum., data, clientCashId, true, "系统操作-自动互换");//将互换总额存入事件
flowEvents.ForEach(x =>
@@ -504,7 +504,7 @@ namespace YLErp.Modules.SwapModule
//记录资金记录
if (amount != 0)
{
int clientCashId = CloseTrade_ClientCashInCashOut(td, Convert.ToDouble(x.MarkClosePnl), ClientCashInCashOut._平仓费, x.UnwindDate.Value);
int clientCashId = AddClientCashInCashOut(td, Convert.ToDouble(x.MarkClosePnl), ClientCashInCashOut._平仓费, x.UnwindDate.Value);
x.ClientCashId = clientCashId;
}
payQty = payQty - x.Quantity;
@@ -282,57 +282,7 @@ namespace YLErp.Modules.SwapModule
}
return swapEvent.ValueDate;
}
/// <summary>
/// 收益互换 客户资金记录保存
/// </summary>
/// <param name="td">主交易信息</param>
/// <param name="amount">平仓盈亏</param>
/// <param name="action">操作类型</param>
/// <param name="valueDate">操作日期</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public int CloseTrade_ClientCashInCashOut(OtcTradeBase td, double amount, string action, DateTime valueDate)
{
var cl = DataCacheProvider.GetClientDataSource().GetData(td.ClientId);
if (cl == null)
{
throw new Exception("客户信息未找到,交易编号:" + td.TradeNumber);
}
var ee = DbContext.ClientCashInCashOut.FirstOrDefault(x => x.TradeId == td.id && x.Action == action && x.HappenDate == valueDate);
if (ee == null)
{
//增加出入金记录
ee = new ClientCashInCashOut();
ee.CreateDate = DateTime.Now;
ee.CreatorId = UserId;
ee.CreatorName = UserName;
}
ee.Direction = "应收";
ee.Number = UniqueTimeId.GetStr();
ee.ClientId = cl.id;
ee.ClientNumber = cl.Number;
ee.ClientName = cl.Name;
ee.Money = amount;
ee.CurrencyCode = td.SettlementCurrency;
ee.HappenDate = valueDate;
ee.State = ClientCashInCashOut.;
ee.OptId = UserId;
ee.OptName = UserName;
ee.OptDate = DateTime.Now;
ee.TradeId = td.id;
ee.Action = action;
ee.ValidState = "Valid";
ee.TradeNumber = td.TradeNumber;
ee.CurrencyCode = "CNY";
if (ee.id == 0)
{
DbContext.ClientCashInCashOut.Add(ee);
}
DbContext.SaveChanges();
return ee.id;
}
public void AddClientCashInCashOut(OtcTradeBase td, double amount, string action, DateTime valueDate)
public int AddClientCashInCashOut(OtcTradeBase td, double amount, string action, DateTime valueDate)
{
var cl = DataCacheProvider.GetClientDataSource().GetData(td.ClientId);
@@ -364,6 +314,7 @@ namespace YLErp.Modules.SwapModule
ee.CurrencyCode = "CNY";
DbContext.ClientCashInCashOut.Add(ee);
DbContext.SaveChanges();
return ee.id;
}
/// <summary>
/// 初始化 利息计算起始日期