diff --git a/YLErpWeb/WebAPI/Controllers/ClientBalanceController.cs b/YLErpWeb/WebAPI/Controllers/ClientBalanceController.cs new file mode 100644 index 00000000..a523fe77 --- /dev/null +++ b/YLErpWeb/WebAPI/Controllers/ClientBalanceController.cs @@ -0,0 +1,129 @@ +using System; +using System.Data; +using YLErp.BLL.EodSettlement; +using YLErp.Modules.ClientModule; +using YLErp.Modules.VolatilityModule; + +namespace YLErp.Web.WebAPI.Controllers +{ + public class ClientBalanceController + { + + /// + /// + [HttpPost("m/api/ClientBalance/GetClientRsikMonitor")] + public JsonResult GetClientRsikMonitor([FromBody]MonitorReq req) + { + LogFactory.GetLogger("GetClientRsikMonitor请求").Info(JsonHelper.Serialize(req)); + if (!req.SearchDate.HasValue) + { + req.SearchDate = valuedateBLL.ValueDate; + } + if (string.IsNullOrWhiteSpace(req.marginShownType)) + { + req.marginShownType = "default"; + } + if (req.ClientIds == null || req.ClientIds.Count <= 0) + { + req.ClientIds = DataCacheProvider.GetClientDataSource().AsQueryable().Select(o => o.id).Distinct().ToList(); + } + var result = ClientBalanceUtility.GetClientRiskMonitorForShanXiGuShou(req.ClientIds, req.SearchDate.Value, req.marginShownType); + //精简字段 + var resultList = result.Select(item => new resultParam + { + Number = item.ClientNumber, + Name = item.ClientName, + TotalTradeCount = item.TotalTradeCount, + TotalNotionalPrincipal = item.TotalNotionalPrincipal, + TransactionPenNumber = item.TradeCount, + TodayNotionalPrincipal = item.TodayNotionalPrincipal, + PositionNotionalPrincipal = item.PositionNotionalPrincipal, + CurrentHoldingPenNumber = item.PositionCount, + WinLoss = item.WinLoss, + PositionPnl = item.PositionPnl, + RoundedPositionPnl = item.RoundedPositionPnl, + LastDayRemainFund = item.LastDayRemainFund, + NetFundAll = item.NetFundAll, + NetFund = item.NetFund, + VmFundSum = item.VmFundSum, + OtherFund = item.OtherFund, + AmountFund = item.AmountFund, + MySideMargin = item.MySideMargin, + MaintenanceMargin = item.MaintenanceMargin, + SwapMarketAmount = item.SwapMarketAmount, + SwapMarketAmountPercent = item.SwapMarketAmountPercent, + AvailableAmount = item.AvailableAmount, + InsuredAmount = item.MarginByPayableMarginTotal, + DesirableFund = item.DesirableFund + }).ToList(); + LogFactory.GetLogger().Info($"GetClientRsikMonitor: {JsonHelper.Serialize(resultList)}"); + return new JsonResult(resultList); + } + + public class MonitorReq + { + public List ClientIds { get; set; } + + public DateTime? SearchDate { get; set; } + + public string marginShownType { get; set; } + } + + public class resultParam + { + /*客户编号 客户名称 交易总数 名义本金总额 当日交易数 当日交易名义本金 + 持仓名义本金 持仓笔数 实现盈亏 持仓盈亏 期初结存 出金入金 初保账户 追保账户 其他收支 + 期末结存 初始保证金金额 维持保证金金额 盯市金额 履约保证金比例 可用资金 追保金额 可取资金*/ + + public string Number { get; set; } + + public string Name { get; set; } + + public int TotalTradeCount { get; set; } + + public double TotalNotionalPrincipal { get; set; } + + public int TransactionPenNumber { get; set; } + + public double TodayNotionalPrincipal { get; set; } + + public double PositionNotionalPrincipal { get; set; } + + public int CurrentHoldingPenNumber { get; set; } + + public double WinLoss { get; set; } + + public double PositionPnl { get; set; } + + public double RoundedPositionPnl { get; set; } + + public double LastDayRemainFund { get; set; } + + public double NetFundAll { get; set; } + + public double NetFund { get; set; } + + public double VmFundSum { get; set; } + + public double OtherFund { get; set; } + + public double AmountFund { get; set; } + + public double MySideMargin { get; set; } + + public double MaintenanceMargin { get; set; } + + public double SwapMarketAmount { get; set; } + + public decimal SwapMarketAmountPercent { get; set; } + + public double AvailableAmount { get; set; } + + public double InsuredAmount { get; set; } + + public double DesirableFund { get; set; } + } + + + } +}