保证金算法&资金计算

This commit is contained in:
吴方海
2025-04-16 15:15:59 +08:00
parent 6e644083df
commit 8e61f23e18
47 changed files with 695 additions and 1194 deletions
@@ -165,76 +165,44 @@ namespace YLErp.Modules.EodModule.SettlementModule
var nextSettleDate = QdpCalendarHelper.GetNonHoliday(settleDate.AddDays(1));
var days = (nextSettleDate - settleDate).Days;
logger.Info("settleDate:" + settleDate.ToString("yyyy-MM-dd") + " nextSettleDate:" + nextSettleDate + " days:" + days);
for (var i=0; i< days; i++)
for (var i = 0; i < days; i++)
{
var yesterday= settleDate.AddDays(i-1);
var today= settleDate.AddDays(i);
var yesterday = settleDate.AddDays(i - 1);
var today = settleDate.AddDays(i);
new SwapEodPositionService(OptUser).SwapPositionCompose(today, yesterday, clientIds);
CalculateMargin(today, yesterday, clientIds);
new SwapEodPositionService(OptUser).SwapEodCompose(today, yesterday, clientIds);
}
}
/// <summary>
/// 追加预付金腿利息归档
/// </summary>
public void ExceuteEodSwapMarginPosi()
{
var settleDate = _context.SettleDate;
var clientIds = _context.Request.ClientIds;
var nextSettleDate = QdpCalendarHelper.GetNonHoliday(settleDate.AddDays(1));
var days = (nextSettleDate - settleDate).Days;
for (var i = 0; i < days; i++)
{
var yesterday = settleDate.AddDays(i - 1);
var today = settleDate.AddDays(i);
new SwapEodPositionService(OptUser).SwapEodCompose(today, yesterday, clientIds);
}
}
/// <summary>
/// 框架合约汇总
/// </summary>
/// <param name="setTaskStep"></param>
public void ExecuteEodSwap()
{
var settleDate = _context.SettleDate;
var clientIds = _context.Request.ClientIds;
var nextSettleDate = QdpCalendarHelper.GetNonHoliday(settleDate.AddDays(1));
var days = (nextSettleDate - settleDate).Days;
for (var i = 0; i < days; i++)
{
var yesterday = settleDate.AddDays(i - 1);
var today = settleDate.AddDays(i);
new SwapEodPositionService(OptUser).SwapEodCompose(today, yesterday, clientIds);
}
}
/// <summary>
/// 计算互换预付金
/// </summary>
/// <returns></returns>
public bool CalculateMargin()
public bool CalculateMargin(DateTime settleDate, DateTime preSettleDate, IEnumerable<int> ClientIds)
{
var balanceDate = _context.SettleDate;
var preSettleDate = _context.PreSettleDate;
var reqClientIds = _context.Request.ClientIds;
// 构建请求对象
CalculateMarginRequest request = new CalculateMarginRequest()
{
currentDate = balanceDate.ToString("yyyy-MM-dd"),
clientIds = reqClientIds,
preSettleDate= preSettleDate.ToString("yyyy-MM-dd")
currentDate = settleDate.ToString("yyyy-MM-dd"),
clientIds = ClientIds,
preSettleDate = preSettleDate.ToString("yyyy-MM-dd")
};
var baseUrl = Environment.GetEnvironmentVariable("BondOmsInterface_BaseUrl");
var calculateMarginUrl = "/marginAlgorithm/triggerMarginCalc";
if (!string.IsNullOrEmpty(baseUrl))
{
var httpHelper = new HttpHelper(baseUrl, null);
// http 请求 Web项目接口
var result = httpHelper.PostRequestNoAuth<CalculateMarginRequest, CalculateMarginResponse>(calculateMarginUrl, request).Result;
if (result!=null&&!result.success)
if (result != null && !result.success)
{
throw new ServiceException($"互换预付金计算失败:{result.message}");
}
}
return true;
}
}