diff --git a/Framework/YLErp.Core/DBModels/ClientBalanceView.cs b/Framework/YLErp.Core/DBModels/ClientBalanceView.cs
new file mode 100644
index 00000000..08f4322e
--- /dev/null
+++ b/Framework/YLErp.Core/DBModels/ClientBalanceView.cs
@@ -0,0 +1,187 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace YLErp.DBModels
+{
+ ///
+ /// 资金监控视图
+ ///
+ [Table("client_balance_view")]
+ public class ClientBalanceView : DBModelBase
+ {
+ /*客户编号 客户名称 交易总数 名义本金总额 当日交易数 当日交易名义本金
+ 持仓名义本金 持仓笔数 实现盈亏 持仓盈亏 期初结存 出金入金 初保账户 追保账户 其他收支
+ 期末结存 初始保证金金额 维持保证金金额 盯市金额 履约保证金比例 可用资金 追保金额 可取资金*/
+ ///
+ /// 估值时间
+ ///
+ [Column("valuedate")]
+ public DateTime ValueDate { get; set; }
+
+ ///
+ /// 客户编号
+ ///
+ [Column("number")]
+ public string Number { get; set; }
+
+ ///
+ /// 客户名称
+ ///
+ [Column("name")]
+ public string Name { get; set; }
+
+ ///
+ /// 交易总数
+ ///
+ [Column("total_trade_count")]
+ public int TotalTradeCount { get; set; }
+
+ ///
+ /// 名义本金总额
+ ///
+ [Column("total_notional_principal")]
+ public double TotalNotionalPrincipal { get; set; }
+
+ ///
+ /// 当日交易数
+ ///
+ [Column("transaction_pen_number")]
+ public int TransactionPenNumber { get; set; }
+
+ ///
+ /// 当日交易名义本金
+ ///
+ [Column("today_notional_principal")]
+ public double TodayNotionalPrincipal { get; set; }
+
+ ///
+ /// 持仓名义本金
+ ///
+ [Column("position_notional_principal")]
+ public double PositionNotionalPrincipal { get; set; }
+
+ ///
+ /// 持仓笔数
+ ///
+ [Column("current_holding_pennumber")]
+ public int CurrentHoldingPenNumber { get; set; }
+
+ ///
+ /// 实现盈亏
+ ///
+ [Column("win_loss")]
+ public double WinLoss { get; set; }
+
+ ///
+ /// 持仓盈亏
+ ///
+ [Column("position_pnl")]
+ public double PositionPnl { get; set; }
+
+ ///
+ /// 持仓盈亏(四舍五入)
+ ///
+ [Column("rounded_position_pnl")]
+ public double RoundedPositionPnl { get; set; }
+
+ ///
+ /// 期初结存
+ ///
+ [Column("last_day_remain_fund")]
+ public double LastDayRemainFund { get; set; }
+
+ ///
+ /// 出金入金
+ ///
+ [Column("net_fund_all")]
+ public double NetFundAll { get; set; }
+
+ ///
+ /// 初保账户
+ ///
+ [Column("net_fund")]
+ public double NetFund { get; set; }
+
+ ///
+ /// 追保账户
+ ///
+ [Column("vm_fund_sum")]
+ public double VmFundSum { get; set; }
+
+ ///
+ /// 其他收支
+ ///
+ [Column("other_fund")]
+ public double OtherFund { get; set; }
+
+ ///
+ /// 期末结存
+ ///
+ [Column("amount_fund")]
+ public double AmountFund { get; set; }
+
+ ///
+ /// 初始保证金金额
+ ///
+ [Column("my_side_margin")]
+ public double MySideMargin { get; set; }
+
+ ///
+ /// 维持保证金金额
+ ///
+ [Column("maintenance_margin")]
+ public double MaintenanceMargin { get; set; }
+
+ ///
+ /// 盯市金额
+ ///
+ [Column("swap_market_amount")]
+ public double SwapMarketAmount { get; set; }
+
+ ///
+ /// 履约保证金比例
+ ///
+ [Column("swap_market_amount_percent")]
+ public decimal SwapMarketAmountPercent { get; set; }
+
+ ///
+ /// 可用资金
+ ///
+ [Column("available_amount")]
+ public double AvailableAmount { get; set; }
+
+ ///
+ /// 追保金额
+ ///
+ [Column("insured_amount")]
+ public double InsuredAmount { get; set; }
+
+ ///
+ /// 可取资金
+ ///
+ [Column("desirable_fund")]
+ public double DesirableFund { get; set; }
+
+ ///
+ /// 交易手续费
+ ///
+ [Column("trade_fee")]
+ public double TradeFee { get; set; }
+
+ ///
+ /// 利息盈亏
+ ///
+ [Column("interest_pnl")]
+ public double InterestPnl { get; set; }
+
+ ///
+ /// 更新日期
+ ///
+ [Column("updatetime")]
+ public DateTime Updatetime { get; set; }
+ }
+}
diff --git a/YLErpDAL/BLL/EodSettlement/ClientBalanceUtility.cs b/YLErpDAL/BLL/EodSettlement/ClientBalanceUtility.cs
index 2f14ab3f..db108d51 100644
--- a/YLErpDAL/BLL/EodSettlement/ClientBalanceUtility.cs
+++ b/YLErpDAL/BLL/EodSettlement/ClientBalanceUtility.cs
@@ -1,4 +1,6 @@
using BaseOUDAL;
+using DocumentFormat.OpenXml.Bibliography;
+using DocumentFormat.OpenXml.Spreadsheet;
using NPOI.SS.UserModel;
using YLErp.BLL.Eod;
using YLErp.DBModels;
@@ -109,9 +111,9 @@ namespace YLErp.BLL.EodSettlement
clientIdS.AddRange(clientIdList);
using (var db = new YLContext())
{
- //系统交易日
- var valuedate = valuedateBLL.ValueDate;
- var lastpushLog = db.push_log.Where(x => x.data_type == (int)SwapPushDataEnum.日终估值获取 && x.data_state == (int)SwapPushDataStateEnum.接收处理成功&&x.create_time> valuedate).OrderByDescending(o => o.create_time).FirstOrDefault();
+ //系统交易日
+ var valuedate = valuedateBLL.ValueDate;
+ var lastpushLog = db.push_log.Where(x => x.data_type == (int)SwapPushDataEnum.日终估值获取 && x.data_state == (int)SwapPushDataStateEnum.接收处理成功 && x.create_time > valuedate).OrderByDescending(o => o.create_time).FirstOrDefault();
//获取根据系统时间
var lastBalanceDate = EodOperationBase.GetLastSettlementDate(valuedate);
// 获取定义文件预付金率设置
@@ -149,9 +151,9 @@ namespace YLErp.BLL.EodSettlement
FundJson = t.FundJson,
PFE = t.PFE,
EAD = t.EAD,
- LastSettlemetTime=t.OptDate,
- TradeFee=t.trade_fee_sum??0,
- InterestPnl=t.interest_pnl_sum??0
+ LastSettlemetTime = t.OptDate,
+ TradeFee = t.trade_fee_sum ?? 0,
+ InterestPnl = t.interest_pnl_sum ?? 0
};
var sumDatas = sumQuery.ToArray();
@@ -176,15 +178,15 @@ namespace YLErp.BLL.EodSettlement
balance.Coupon = data.Coupon;
balance.CashInCashOutProductChange = data.CashInCashOutProductChange;
balance.WinLoss = data.WinLoss;
- balance.TradeFee=data.TradeFee;
+ balance.TradeFee = data.TradeFee;
balance.InterestPnl = data.InterestPnl;
//起始时间 有值 和 WinLoss 区分 -- 国投不含当天
balance.WinLossSum = data.WinLoss;
balance.FundJson = data.FundJson;
balance.PFE = data.PFE;
balance.EAD = data.EAD;
- balance.LastSettlemetTime = endDate <= lastDate? data.LastSettlemetTime:null;
- balance.LastHTSettlemetTime = lastpushLog==null?"未同步": lastpushLog.update_time.ToString("yyyy-MM-dd HH:mm:ss");
+ balance.LastSettlemetTime = endDate <= lastDate ? data.LastSettlemetTime : null;
+ balance.LastHTSettlemetTime = lastpushLog == null ? "未同步" : lastpushLog.update_time.ToString("yyyy-MM-dd HH:mm:ss");
}
}
@@ -286,7 +288,7 @@ namespace YLErp.BLL.EodSettlement
TdWinLoss = t.WinLoss,
MarginJson = cs.PVJsons,
MaintenanceLine = t.MaintenanceLine,
- TotalNominal=t.TotalNominal,
+ TotalNominal = t.TotalNominal,
InFundSum = t.InFundSum,
OutFundSum = t.OutFundSum,
VmInFundSum = t.vm_in_fund_sum,
@@ -308,7 +310,7 @@ namespace YLErp.BLL.EodSettlement
balance.FreezePremium = data.FreezePremium;
balance.ReceivablesPremium = data.ReceivablesPremium;
balance.AmountFund = data.AmountFund;
-
+
balance.TotalCredit = data.TotalCredit;
balance.PayableMargin = data.PayableMargin;
@@ -324,7 +326,7 @@ namespace YLErp.BLL.EodSettlement
balance.TwoSideMargin = data.TwoSideMargin;
balance.OtherSideMargin = data.OtherSideMargin;
balance.MySideMargin = data.MySideMargin;
- balance.MaintenanceMargin=data.MaintenanceMargin;
+ balance.MaintenanceMargin = data.MaintenanceMargin;
balance.IsPayableMarginManual = data.IsPayableMarginManual;
balance.IsPayableMarginLock = data.IsPayableMarginLock;
balance.FrozenMarginMoney = data.FrozenMarginMoney;
@@ -352,8 +354,8 @@ namespace YLErp.BLL.EodSettlement
balance.ClientType = client.SwapTradeType ?? 0;
balance.ClientName = client.Name;
balance.MaintenanceLine = data.MaintenanceLine ?? 0;
- balance.PositionNotionalPrincipal = data.TotalNominal??0;
-
+ balance.PositionNotionalPrincipal = data.TotalNominal ?? 0;
+
balance.OutFundSum = data.OutFundSum ?? 0;
balance.InFundSum = data.InFundSum ?? 0;
balance.VmInFundSum = data.VmInFundSum ?? 0;
@@ -365,9 +367,9 @@ namespace YLErp.BLL.EodSettlement
// 是否追保=盯市金额小于维持保证金额
balance.NeedAddMargin = balance.SwapMarketAmount < balance.MaintenanceMargin;
// 追保金额=初始保证金金额-盯市金额
- balance.MarginByPayableMarginTotal = balance.NeedAddMargin ? (balance.MySideMargin - balance.SwapMarketAmount):0;
+ balance.MarginByPayableMarginTotal = balance.NeedAddMargin ? (balance.MySideMargin - balance.SwapMarketAmount) : 0;
// 可取资金=Math.Max(期末结存-min(持仓盈亏,0)-初始保证金,0)
- balance.DesirableFund = Math.Max(balance.MarginBalance + Math.Min(balance.RoundedPositionPnl, 0),0);
+ balance.DesirableFund = Math.Max(balance.MarginBalance + Math.Min(balance.RoundedPositionPnl, 0), 0);
}
}
@@ -1392,7 +1394,7 @@ namespace YLErp.BLL.EodSettlement
}
var clientTradePosiQuery = tradePosiQuery.Where(x => x.ClientId == balance.ClientId && x.p.PosiQuantity > 0 && x.p.ValueDate == searchDate);
- balance.PositionCount = clientTradePosiQuery.Select(s=>s.id).Distinct().Count();
+ balance.PositionCount = clientTradePosiQuery.Select(s => s.id).Distinct().Count();
var PosiNotionalValue = clientTradePosiQuery.Sum(o => o.p.PosiNotionalValue);
balance.PositionNotionalPrincipal = Convert.ToDouble(PosiNotionalValue);
}
@@ -1403,12 +1405,12 @@ namespace YLErp.BLL.EodSettlement
public static void FillClientBalanceHisTradeFee()
{
List marginTypes = new List() { (int)InterestModeEnum.追加预付金, (int)InterestModeEnum.初始预付金 };
- var clients= DataCacheProvider.GetClientDataSource().AsQueryable().Where(x=>x.ProcessStatus=="已开户").ToList();
+ var clients = DataCacheProvider.GetClientDataSource().AsQueryable().Where(x => x.ProcessStatus == "已开户").ToList();
using var db = new YLContext();
- var firstEodStatusDate = db.eodStatus.OrderBy(o=>o.ValueDate).FirstOrDefault();
- if (firstEodStatusDate!=null)
+ var firstEodStatusDate = db.eodStatus.OrderBy(o => o.ValueDate).FirstOrDefault();
+ if (firstEodStatusDate != null)
{
- var firstDate=firstEodStatusDate.ValueDate;
+ var firstDate = firstEodStatusDate.ValueDate;
var preBalanceDate = valuedateBLL.GetNonHolidayDefore(valuedateBLL.ValueDate.AddDays(-1));
while (firstDate < valuedateBLL.ValueDate)
{
@@ -1416,18 +1418,18 @@ namespace YLErp.BLL.EodSettlement
{
var interestPnl = 0d;
var tradeFee = 0d;
- var clientBalance=db.ClientBalanceDaily.FirstOrDefault(x => x.ClientId == client.id && x.BalanceDate == firstDate);
+ var clientBalance = db.ClientBalanceDaily.FirstOrDefault(x => x.ClientId == client.id && x.BalanceDate == firstDate);
var clientBalancePre = db.ClientBalanceDaily.FirstOrDefault(x => x.ClientId == client.id && x.BalanceDate == preBalanceDate);
if (clientBalance != null)
{
// 互换平仓信息
- var clientEventFlowQuery = from eod in db.swap_flow_event.Where(x => x.EventDate <= firstDate && x.EventDate > preBalanceDate &&x.ClientId== client.id &&x.DataState==(int)SwapFlowDateStateEnum.完成&&x.EventType==(int)SwapFlowEventTypeEnum.平仓)
- join t in db.trade.Where(x => x.TradeType == "收益互换" && x.ValidState != ConsGlobal.InValid ) on eod.SwapTradeId equals t.id
- select eod;
+ var clientEventFlowQuery = from eod in db.swap_flow_event.Where(x => x.EventDate <= firstDate && x.EventDate > preBalanceDate && x.ClientId == client.id && x.DataState == (int)SwapFlowDateStateEnum.完成 && x.EventType == (int)SwapFlowEventTypeEnum.平仓)
+ join t in db.trade.Where(x => x.TradeType == "收益互换" && x.ValidState != ConsGlobal.InValid) on eod.SwapTradeId equals t.id
+ select eod;
var clientEodSwaps = clientEventFlowQuery.ToList();
foreach (var item in clientEodSwaps.GroupBy(x => x.SwapTradeId))
{
-
+
var eventPosi = item.FirstOrDefault(t => t.PayDirection > 0);
var eventInterests = item.Where(t => t.PayDirection == 0).ToList();
@@ -1441,14 +1443,14 @@ namespace YLErp.BLL.EodSettlement
}
interestPnl += Convert.ToDouble(interest.InterestClosePnL) * (-1);
}
-
- tradeFee += Convert.ToDouble(eventPosi.TradingFee+ eventPosi.TradingFeePending) * (-1);
+
+ tradeFee += Convert.ToDouble(eventPosi.TradingFee + eventPosi.TradingFeePending) * (-1);
}
clientBalance.trade_fee = tradeFee;
clientBalance.interest_pnl = interestPnl;
clientBalance.trade_fee_sum = clientBalance.trade_fee;
clientBalance.interest_pnl_sum = clientBalance.interest_pnl;
- if (clientBalancePre!=null)
+ if (clientBalancePre != null)
{
clientBalance.trade_fee_sum += clientBalancePre.trade_fee_sum;
clientBalance.interest_pnl_sum += clientBalancePre.interest_pnl_sum;
@@ -1456,7 +1458,7 @@ namespace YLErp.BLL.EodSettlement
db.SaveChanges();
}
}
- preBalanceDate= firstDate;
+ preBalanceDate = firstDate;
firstDate = valuedateBLL.GetNonHoliday(firstDate.AddDays(1));
}
}
@@ -1467,9 +1469,9 @@ namespace YLErp.BLL.EodSettlement
///
///
///
- private static client_marginrate GetClientMarginRate(int clientId, List clientMarginTemplates)
+ private static client_marginrate GetClientMarginRate(int clientId, List clientMarginTemplates)
{
- var marinRate = clientMarginTemplates.Where(x => x.ClientId == clientId ).FirstOrDefault();
+ var marinRate = clientMarginTemplates.Where(x => x.ClientId == clientId).FirstOrDefault();
if (marinRate == null)
{
marinRate = clientMarginTemplates.Where(x => x.ClientId == 0).FirstOrDefault();
@@ -1548,5 +1550,96 @@ namespace YLErp.BLL.EodSettlement
}
return result;
}
+
+ public static List queryClientRiskMonitor(ClientRiskMonitorReq 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)
+ {
+ var clientService = new ClientQueryService(OptUserInfo.SystemUser);
+ var predicate = clientService.CreatePredicate(new ClientReq() { ValueDate = req.SearchDate });
+ req.ClientIds = clientService.GetClientListByWhere(predicate).Select(o => o.id).Distinct().ToList();
+ }
+ var result = ClientBalanceUtility.GetClientRiskMonitorForShanXiGuShou(req.ClientIds, req.SearchDate.Value, req.marginShownType);
+ if (result == null)
+ {
+ return new List();
+ }
+ //精简字段
+ var resultList = result.Select(item => new ClientBalanceView
+ {
+ ValueDate = req.SearchDate.Value,
+ 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,
+ TradeFee = item.TradeFee,
+ InterestPnl = item.InterestPnl,
+ Updatetime = DateTime.Now
+ }).ToList();
+ return resultList;
+ }
+
+ ///
+ /// 保存客户资金监控结果, 用于浙商数据采集
+ ///
+ ///
+ public static void saveClientRiskMonitor(DateTime valueDate)
+ {
+ LogFactory.GetLogger("saveClientRiskMonitor").Info($"开始执行 {valueDate:yyyy-MM-dd} 数据落库操作");
+ var req = new ClientRiskMonitorReq
+ {
+ SearchDate = valueDate
+ };
+ var list = queryClientRiskMonitor(req);
+ if (list.Count == 0)
+ {
+ LogFactory.GetLogger("saveClientRiskMonitor").Info($"{valueDate:yyyy-MM-dd} 记录数为0,跳过落库");
+ }
+ using (var db = new YLContext())
+ {
+ db.BulkDelete($"ValueDate='{valueDate:yyyy-MM-dd}'");
+ db.clientBalanceView.AddRange(list);
+ db.SaveChanges();
+ }
+ LogFactory.GetLogger("saveClientRiskMonitor").Info($"{valueDate:yyyy-MM-dd} 记录数为{list.Count},落库完成");
+ }
+
+ public class ClientRiskMonitorReq
+ {
+ public List ClientIds { get; set; }
+
+ public DateTime? SearchDate { get; set; }
+
+ public string marginShownType { get; set; }
+ }
+
}
}
diff --git a/YLErpDAL/DataBase/YLContext.cs b/YLErpDAL/DataBase/YLContext.cs
index d5d5799d..e8385372 100644
--- a/YLErpDAL/DataBase/YLContext.cs
+++ b/YLErpDAL/DataBase/YLContext.cs
@@ -400,5 +400,7 @@ namespace YLErp.BLL
public DbSet trs_open_config { get; set; }
public DbSet trs_account_manage { get; set; }
public DbSet trs_account_manage_detail { get; set; }
+
+ public DbSet clientBalanceView { get; set; }
}
}
\ No newline at end of file
diff --git a/YLErpDAL/Modules/EodModule/SettlementModule/EodTaskRunner.cs b/YLErpDAL/Modules/EodModule/SettlementModule/EodTaskRunner.cs
index 8aff5480..5aec7026 100644
--- a/YLErpDAL/Modules/EodModule/SettlementModule/EodTaskRunner.cs
+++ b/YLErpDAL/Modules/EodModule/SettlementModule/EodTaskRunner.cs
@@ -1,4 +1,5 @@
using System.Text;
+using YLErp.BLL.EodSettlement;
using YLErp.Configuration;
using YLErp.Modules.EodFileModule;
using YLErp.Modules.EodModule.CompanySpecial;
@@ -423,6 +424,7 @@ where {nameof(t.TaskStartTime)}>'{startDateStr}' and {nameof(t.TaskState)}={(int
}
}
}
+ ClientBalanceUtility.saveClientRiskMonitor(eodTask.ValueDate);
new EodFileService(this.OptUser).GenerateFileAfterEod(eodTask.ValueDate);
//执行下一日
eodTask.ValueDate = eodTask.ValueDate.AddDays(1);
diff --git a/YLErpWeb/WebAPI/Controllers/ClientBalanceController.cs b/YLErpWeb/WebAPI/Controllers/ClientBalanceController.cs
index a523fe77..b7ddeedd 100644
--- a/YLErpWeb/WebAPI/Controllers/ClientBalanceController.cs
+++ b/YLErpWeb/WebAPI/Controllers/ClientBalanceController.cs
@@ -1,129 +1,24 @@
using System;
+using System.ComponentModel.DataAnnotations.Schema;
using System.Data;
using YLErp.BLL.EodSettlement;
using YLErp.Modules.ClientModule;
using YLErp.Modules.VolatilityModule;
+using static YLErp.BLL.EodSettlement.ClientBalanceUtility;
namespace YLErp.Web.WebAPI.Controllers
{
public class ClientBalanceController
{
-
- ///
- ///
- [HttpPost("m/api/ClientBalance/GetClientRsikMonitor")]
- public JsonResult GetClientRsikMonitor([FromBody]MonitorReq req)
+ [HttpPost("m/api/ClientBalance/GetClientRiskMonitor")]
+ public JsonResult GetClientRsikMonitor([FromBody] ClientRiskMonitorReq 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();
+ var resultList = queryClientRiskMonitor(req);
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; }
- }
-
}
}