基于 .NET 的本地预付金互换预付金计算逻辑,调整菜单项名
This commit is contained in:
@@ -176,33 +176,37 @@ namespace YLErp.Modules.EodModule.SettlementModule
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 计算互换预付金
|
||||
/// 计算互换预付金(保证金模板V2 引擎,本端闭环)。
|
||||
/// 2026-08-26 收口:原实现 HTTP 调 bond-oms /marginAlgorithm/triggerMarginCalc——Java 按 marginrate
|
||||
/// (旧预付金率维护数据)对在市互换算盯市并清写当天 trade_span/client_span;现改为直接跑本端预付金引擎
|
||||
/// EodWorstClientPayableCalc(模板V2 三级层解析:无预付金=0、区间追保结构 x/y 或方案B收盘落档,
|
||||
/// 产出 trade_span.Spv 并聚合 client_span),保证金计算→追加预付金生成闭环全部在 .NET。
|
||||
/// 交易范围与原 Java selectPreCloseTradeList 同口径:在市收益互换(确认成交未到期 + 平仓日落在区间),
|
||||
/// 剔除多空组合子交易(引擎本身跳过);"日终持仓结算"步骤随后会对确认成交全集幂等重算覆盖。
|
||||
/// Java 侧自此仅保留资金通知书邮件与 DMA 实时预付金(RealtimePnlCalc.CalcDMAMargin,迁移方案阶段三待切项)。
|
||||
/// preSettleDate 参数保留以维持调用签名,引擎取数按 settleDate 自行解析。
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool CalculateMargin(DateTime settleDate, DateTime preSettleDate, IEnumerable<int> ClientIds)
|
||||
{
|
||||
// 构建请求对象
|
||||
CalculateMarginRequest request = new CalculateMarginRequest()
|
||||
var clientIds = ClientIds?.Where(x => x > 0).Distinct().ToList();
|
||||
List<trade> tradeList;
|
||||
using (var db = new YLErp.BLL.YLContext())
|
||||
{
|
||||
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)
|
||||
var query = db.trade.Where(t => t.TradeType == "收益互换"
|
||||
&& t.ValidState != YLErp.ConsGlobal.InValid
|
||||
&& t.ParentTradeId == 0
|
||||
&& ((t.TradeStatus == YLErp.DBModels.ConsTrade.确认成交 && t.TradeDate <= settleDate && t.ExerciseDate >= settleDate)
|
||||
|| (t.TradeStatus == YLErp.DBModels.ConsTrade.已平仓 && t.TradeDate <= settleDate
|
||||
&& t.UnWindDate > settleDate && t.UnWindDate > t.StartDate)));
|
||||
if (clientIds != null && clientIds.Count > 0)
|
||||
{
|
||||
throw new ServiceException($"互换预付金计算失败:{result.message}");
|
||||
var idScope = clientIds;
|
||||
query = query.Where(t => idScope.Contains(t.ClientId));
|
||||
}
|
||||
tradeList = query.ToList();
|
||||
}
|
||||
|
||||
new EodWorstClientPayableCalc(_context).WorstClientPayableCalc(tradeList);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
{Name:"交易市场",Rights:["基础参数管理-交易市场"],Url:"market/marketList"},
|
||||
{Name:"变更记录",Rights:["基础参数管理-变更记录"],Url:"Datatrace/ClientInfoChange"},
|
||||
{Name:"设置货币",Rights:["基础参数管理-设置货币"],Url:"Currency/setCurrency"},
|
||||
{Name:"预付金模板V2",Rights:["基础参数管理-预付金模板V2"],Url:"margin_template_v2/margin_template_v2List"},
|
||||
{Name:"预付金模板",Rights:["基础参数管理-预付金模板V2"],Url:"margin_template_v2/margin_template_v2List"},
|
||||
]
|
||||
},
|
||||
{Name:"系统管理",Rights:["系统管理"],Icon:"menu-icon iconten"
|
||||
|
||||
Reference in New Issue
Block a user