Files
zszq-trs/YLErpDAL/Modules/SuperviseReportModule/CFMMC/Model/SuperviseReportMonthlyTradeModel.cs
T
2024-05-09 14:06:26 +08:00

457 lines
17 KiB
C#

namespace YLErp.Modules.SuperviseReportModule.CFMMC.Model
{
public class SuperviseReportMonthlyTradeModel
{
/// <summary>
/// 风险管理公司名称
/// </summary>
public string CompanyName { get; set; }
/// <summary>
/// 统一社会信用代码
/// </summary>
public string SuperviseMainCode { get; set; }
/// <summary>
/// 报告期
/// </summary>
public string DataDate { get; set; }
/// <summary>
/// 填报日期
/// </summary>
public string ReportDate { get; set; }
/// <summary>
/// 填表人
/// </summary>
public string ReportUser { get; set; }
/// <summary>
/// 联系电话
/// </summary>
public string Tel { get; set; }
/// <summary>
/// 场外商品衍生品月度交易规模统计表
/// </summary>
public MonthlyTransactionSizeInfoGroup MonthlyTransactionSizeInfo { get; set; }
///// <summary>
///// 场外衍生品客户情况统计表
///// </summary>
//public TransactionScaleClientInfoType TransactionScaleClientInfo { get; set; }
///// <summary>
///// 场外商品衍生品客户交易情况统计表
///// </summary>
//public TransactionScaleClientTradeInfoGroup TransactionScaleClientTradeInfo { get; set; }
///// <summary>
///// 场外商品衍生品存量交易客户情况统计表
///// </summary>
//public TransactionScaleStockClientInfoGroup TransactionScaleStockClientInfo { get; set; }
///// <summary>
///// 场外商品衍生品履约担保情况统计表
///// </summary>
//public TransactionScaleMarginInfoModel TransactionScaleMarginInfo { get; set; }
/// <summary>
/// 场外商品衍生品交易月度盈亏情况统计表
/// </summary>
public TransactionScalePnlInfoGroup TransactionScalePnlInfo { get; set; }
}
/// <summary>
/// 场外商品衍生品月度交易规模统计表
/// </summary>
public class MonthlyTransactionSizeInfoGroup
{
/// <summary>
/// 名义本金
/// (单位:元)
/// </summary>
public TransactionScaleSizeType Notional { get; set; } = new TransactionScaleSizeType();
/// <summary>
/// 交易确认书
/// (单位:笔)
/// </summary>
public TransactionScaleSizeType ConfirmBook { get; set; } = new TransactionScaleSizeType();
/// <summary>
/// 权利金收取
/// (单位:元)
/// </summary>
public TransactionScaleSizeInfo2 TradePriceEarning { get; set; } = new TransactionScaleSizeInfo2();
/// <summary>
/// 权利金支付
/// (单位:元)
/// </summary>
public TransactionScaleSizeInfo2 TradePricePay { get; set; } = new TransactionScaleSizeInfo2();
}
public class TransactionScaleClientTradeInfoGroup
{
/// <summary>
/// 是否计算合计,设置为true会计算合计,完成后该字段会变为false;
/// </summary>
public bool sum;
/// <summary>
/// 互换
/// </summary>
public TransactionScaleInfoModel Swap { get; set; } = new TransactionScaleInfoModel();
/// <summary>
/// 期权
/// </summary>
public TransactionScaleInfoModel Option { get; set; } = new TransactionScaleInfoModel();
/// <summary>
/// 远期
/// </summary>
public TransactionScaleInfoModel Forward { get; set; } = new TransactionScaleInfoModel();
private TransactionScaleInfoModel _total;
/// <summary>
/// 合计
/// </summary>
public TransactionScaleInfoModel Total
{
get
{
if (sum)
{
_total = new TransactionScaleInfoModel();
var stockMonthly = (Swap?.MonthlyTotal?.Stock + Option?.MonthlyTotal?.Stock + Forward?.MonthlyTotal?.Stock) ?? 0;
var indexMonthly = (Swap?.MonthlyTotal?.Index + Option?.MonthlyTotal?.Index + Forward?.MonthlyTotal?.Index) ?? 0;
var fundMonthly = (Swap?.MonthlyTotal?.Fund + Option?.MonthlyTotal?.Fund + Forward?.MonthlyTotal?.Fund) ?? 0;
var otherMonthly = (Swap?.MonthlyTotal?.Other + Option?.MonthlyTotal?.Other + Forward?.MonthlyTotal?.Other) ?? 0;
var commodityMonthly = (Swap?.MonthlyTotal?.Commodity + Option?.MonthlyTotal?.Commodity + Forward?.MonthlyTotal?.Commodity) ?? 0;
_total.MonthlyTotal = new TransactionScaleItem(stockMonthly, indexMonthly, fundMonthly, otherMonthly, commodityMonthly);
var stockYear = (Swap?.YearTotal?.Stock + Option?.YearTotal?.Stock + Forward?.YearTotal?.Stock) ?? 0;
var indexYear = (Swap?.YearTotal?.Index + Option?.YearTotal?.Index + Forward?.YearTotal?.Index) ?? 0;
var fundYear = (Swap?.YearTotal?.Fund + Option?.YearTotal?.Fund + Forward?.YearTotal?.Fund) ?? 0;
var otherYear = (Swap?.YearTotal?.Other + Option?.YearTotal?.Other + Forward?.YearTotal?.Other) ?? 0;
var commodityYear = (Swap?.YearTotal?.Commodity + Option?.YearTotal?.Commodity + Forward?.YearTotal?.Commodity) ?? 0;
_total.YearTotal = new TransactionScaleItem(stockYear, indexYear, fundYear, otherYear, commodityYear);
sum = false;
}
return _total;
}
}
}
public class TransactionScaleStockClientInfoGroup
{
/// <summary>
/// 是否计算合计,设置为true会计算合计,完成后该字段会变为false;
/// </summary>
public bool sum;
/// <summary>
/// 互换
/// </summary>
public TransactionScaleClientInfoType Swap { get; set; } = new TransactionScaleClientInfoType();
/// <summary>
/// 期权
/// </summary>
public TransactionScaleClientInfoType Option { get; set; } = new TransactionScaleClientInfoType();
/// <summary>
/// 远期
/// </summary>
public TransactionScaleClientInfoType Forward { get; set; } = new TransactionScaleClientInfoType();
private TransactionScaleItem _total;
/// <summary>
/// 合计
/// </summary>
public TransactionScaleItem Total
{
get
{
if (sum)
{
var stockMonthly = (Swap?.Monthly?.Stock + Option?.Monthly?.Stock + Forward?.Monthly?.Stock) ?? 0;
var indexMonthly = (Swap?.Monthly?.Index + Option?.Monthly?.Index + Forward?.Monthly?.Index) ?? 0;
var fundMonthly = (Swap?.Monthly?.Fund + Option?.Monthly?.Fund + Forward?.Monthly?.Fund) ?? 0;
var otherMonthly = (Swap?.Monthly?.Other + Option?.Monthly?.Other + Forward?.Monthly?.Other) ?? 0;
var commodityMonthly = (Swap?.Monthly?.Commodity + Option?.Monthly?.Commodity + Forward?.Monthly?.Commodity) ?? 0;
_total = new TransactionScaleItem(stockMonthly, indexMonthly, fundMonthly, otherMonthly, commodityMonthly);
sum = false;
}
return _total;
}
}
}
public class TransactionScalePnlInfoGroup
{
/// <summary>
/// 本月发生额(元)
/// </summary>
public TransactionScalePnlType Monthly { get; set; } = new TransactionScalePnlType();
/// <summary>
/// 本年累计额(元)
/// </summary>
public TransactionScalePnlType Year { get; set; } = new TransactionScalePnlType();
}
public class TransactionScalePnlType
{
/// <summary>
/// 场内
/// </summary>
public TransactionScalePnlItem Hedge { get; set; } = new TransactionScalePnlItem();
/// <summary>
/// 期权
/// </summary>
public TransactionScalePnlItem Option { get; set; } = new TransactionScalePnlItem();
/// <summary>
/// 所有的
/// </summary>
public TransactionScalePnlItem All { get; set; } = new TransactionScalePnlItem();
}
public class TransactionScalePnlItem
{
private double _realizedPnl;
/// <summary>
/// 已实现损益
/// </summary>
public double RealizedPnl { get { return _realizedPnl; } set { _realizedPnl = value.Normalize(); } }
private double _pnl;
/// <summary>
/// 公允价值变动损益
/// </summary>
public double Pnl { get { return _pnl; } set { _pnl = value.Normalize(); } }
/// <summary>
/// 损益合计
/// </summary>
public double Sum
{
get
{
return RealizedPnl + Pnl;
}
}
}
public class TransactionScaleMarginInfoModel
{
/// <summary>
/// 存量名义本金总额
/// (单位:元)
/// </summary>
public TransactionScaleMarginItem StockNotionalTotal { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 存量交易对应履约保障品价值
/// (单位:元)
/// </summary>
public TransactionScaleMarginItem StockClientCashTotle { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 存量交易对应履约保障品价值-现金
/// (单位:元)
/// </summary>
public TransactionScaleMarginItem StockClientCash { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 存量交易对应履约保障品价值-抵押品
/// (单位:元)
/// </summary>
public TransactionScaleMarginItem StockClientProduct { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 业务整体履约保障比例(全额)
/// </summary>
public TransactionScaleMarginItem StockMarginPercentFull { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 业务整体履约保障比例(净额)
/// </summary>
public TransactionScaleMarginItem StockMarginPercentNet { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 本月违约客户数(单位:户)
/// </summary>
public TransactionScaleMarginItem StockBadClientMonthly { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 本月违约交易数(单位:笔)
/// </summary>
public TransactionScaleMarginItem StockBadTradeMonthly { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 本年累计为约客户数(单位:户)
/// </summary>
public TransactionScaleMarginItem StockBadClientYear { get; set; } = new TransactionScaleMarginItem();
/// <summary>
/// 本年累计违约交易数(单位:笔)
/// </summary>
public TransactionScaleMarginItem StockBadTradeYear { get; set; } = new TransactionScaleMarginItem();
}
public class TransactionScaleMarginItem
{
private double _monthly;
/// <summary>
/// 本月末
/// </summary>
public double Monthly { get { return _monthly; } set { _monthly = value.Normalize(); } }
private double _preMonthly;
/// <summary>
/// 上月末
/// </summary>
public double PreMonthly { get { return _preMonthly; } set { _preMonthly = value.Normalize(); } }
}
/// <summary>
/// 场外衍生品客户情况统计表
/// </summary>
public class TransactionScaleClientInfoType
{
/// <summary>
/// 本月末
/// </summary>
public TransactionScaleItem Monthly { get; set; } = new TransactionScaleItem();
/// <summary>
/// 上月末
/// </summary>
public TransactionScaleItem PreMonthly { get; set; } = new TransactionScaleItem();
}
public class TransactionScaleInfoModel
{
/// <summary>
/// 本月累计
/// </summary>
public TransactionScaleItem MonthlyTotal { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本年累计
/// </summary>
public TransactionScaleItem YearTotal { get; set; } = new TransactionScaleItem();
}
public class TransactionScaleSizeType
{
/// <summary>
/// 互换类
/// </summary>
public TransactionScaleSizeInfo1 Swap { get; set; } = new TransactionScaleSizeInfo1();
/// <summary>
/// 期权类
/// </summary>
public TransactionScaleSizeInfo1 Option { get; set; } = new TransactionScaleSizeInfo1();
/// <summary>
/// 远期类
/// </summary>
public TransactionScaleSizeInfo1 Forward { get; set; } = new TransactionScaleSizeInfo1();
}
public class TransactionScaleSizeInfo1
{
/// <summary>
/// 上月末存量
/// </summary>
public TransactionScaleItem PreMonthlyCount { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本月新增开仓
/// </summary>
public TransactionScaleItem MonthlyOpen { get; set; } = new TransactionScaleItem();
/// <summary>
/// 中小微企业本月新增开仓
/// </summary>
public TransactionScaleItem MonthlyOpenSmallAndMicro { get; set; } = new TransactionScaleItem();
/// <summary>
/// 上市公司本月新增开仓
/// </summary>
public TransactionScaleItem MonthlyOpenListed { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本月平仓
/// </summary>
public TransactionScaleItem MonthlyUnwind { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本月执行/终止交易
/// </summary>
public TransactionScaleItem MonthlyExecute { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本月末存量
/// </summary>
public TransactionScaleItem MonthlyCount { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本月末存量
/// </summary>
public TransactionScaleItem MonthlyCountSmallAndMicro { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本月末存量
/// </summary>
public TransactionScaleItem MonthlyCountListed { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本年累计新增(请公司注意填写)
/// <para>本年累计:"各交易类型年度累计新增成交量,成交名义本金及权利金收取和支付"</para>
/// </summary>
public TransactionScaleItem YearCount { get; set; } = new TransactionScaleItem();
}
public class TransactionScaleSizeInfo2
{
/// <summary>
/// 本月新增开仓
/// </summary>
public TransactionScaleItem MonthlyOpen { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本月平仓
/// </summary>
public TransactionScaleItem MonthlyUnwind { get; set; } = new TransactionScaleItem();
/// <summary>
/// 本年累计新增(请公司注意填写)
/// <para>本年累计:"各交易类型年度累计新增成交量,成交名义本金及权利金收取和支付"</para>
/// </summary>
public TransactionScaleItem YearCount { get; set; } = new TransactionScaleItem();
}
public class TransactionScaleItem
{
private double _stock;
/// <summary>
/// 个股
/// </summary>
public double Stock { get { return _stock; } set { _stock = value.Normalize(); } }
private double _index;
/// <summary>
/// 指数
/// </summary>
public double Index { get { return _index; } set { _index = value.Normalize(); } }
private double _fund;
/// <summary>
/// 基金
/// </summary>
public double Fund { get { return _fund; } set { _fund = value.Normalize(); } }
private double _other;
/// <summary>
/// 其他
/// </summary>
public double Other { get { return _other; } set { _other = value.Normalize(); } }
//private double _industrialClient;
///// <summary>
///// 产业客户
///// </summary>
//public double IndustrialClient { get { return _industrialClient; } set { _industrialClient = value.Normalize(); } }
//private double _otherClient;
///// <summary>
///// 其他机构
///// </summary>
//public double OtherClient { get { return _otherClient; } set { _otherClient = value.Normalize(); } }
/// <summary>
/// 合计
/// </summary>
public double Sum { get { return Stock + Index + Fund + Other; } }
private double _commodity;
/// <summary>
/// 商品
/// </summary>
public double Commodity { get { return _commodity; } set { _commodity = value.Normalize(); } }
public TransactionScaleItem() { }
public TransactionScaleItem(double stock, double index, double fund, double other, double commodity)
{
this.Stock = stock;
this.Index = index;
this.Fund = fund;
this.Other = other;
this.Commodity = commodity;
}
}
}