Files
zszq-trs/YLErpDAL/Modules/SuperviseReportModule/ExtendReport/Common/ExtendOtherReport.cs
T
2024-05-09 14:06:26 +08:00

86 lines
4.5 KiB
C#

using YLErp.Model;
namespace YLErp.Modules.SuperviseReportModule.ExtendReport.Common
{
public class ExtendOtherReport : SimpleExtendReportBaseService
{
public ExtendOtherReport(OptUserInfo userInfo, SuperviseReportReq req) : base(userInfo, req)
{ }
public override string TemplateName => "风险资本准备计算表.xlsx";
public override string TargetFileName => "风险资本准备计算表.xlsx";
public override object SearchReportInfo(string sheetName)
{
var tradeIdsOfStockIndex = (from t in DbContext.trade.Where(a => a.ValidState != ConsGlobal.InValid)
join um in DbContext.underlying_manager
on t.UnderlyingId equals um.id
where um.UnderlyingInstrumentType == ConsGlobal.InstrumentType.StockIndex &&
(um.UnderlyingCode.StartsWith("000001") ||
um.UnderlyingCode.StartsWith("399001") ||
um.UnderlyingCode.StartsWith("399006"))
select t.id).ToArray();
var eodTradeRiskOfStockIndexList = DbContext.eod_trade_risk.Where(a => tradeIdsOfStockIndex.Contains(a.TradeId) && SystemValueDate == RequestInfo.ValueDate).ToList();
var eodTradeRiskListOfCommodityFutures = (from t in DbContext.trade.Where(a => a.ValidState != ConsGlobal.InValid)
join um in DbContext.underlying_manager on t.UnderlyingId equals um.id
join v in DbContext.variety on um.UnderlyingTypeId equals v.id
join etr in DbContext.eod_trade_risk on t.id equals etr.TradeId
where um.UnderlyingInstrumentType == "CommodityFutures" && etr.ValueDate == RequestInfo.ValueDate
select new ExtendOtherEodTradeRiskInfo
{
DeltaCash = etr.DeltaCash,
GammaCash = etr.GammaCash,
RiskValue = string.IsNullOrEmpty(um.UpDownLimit) ? (string.IsNullOrEmpty(v.UpLimit) ? "" : v.UpLimit) : um.UpDownLimit
}).ToList();
return new
{
StockIndexDeltaCash = eodTradeRiskOfStockIndexList.Sum(a => a.DeltaCash).ToString("F2"),
StockIndexDeltaRisk = (eodTradeRiskOfStockIndexList.Sum(a => a.DeltaCash) * 0.1).ToString("F2"),
StockIndexGammaRisk = eodTradeRiskOfStockIndexList.Sum(a => a.GammaCash).ToString("F2"),
CommodityFuturesDeltaCash = eodTradeRiskListOfCommodityFutures.Sum(a => a.DeltaCash).ToString("F2"),
CommodityFuturesDeltaRisk =
eodTradeRiskListOfCommodityFutures
.Sum(a =>
a.DeltaCash *
(string.IsNullOrEmpty(a.RiskValue) ?
0.2 :
(NumberHelper.ToDouble(a.RiskValue.Replace("%", string.Empty)) / 100 * 2)))
.ToString("F2"),
CommodityFuturesGammaRisk =
eodTradeRiskListOfCommodityFutures
.Sum(a =>
a.GammaCash *
(string.IsNullOrEmpty(a.RiskValue) ?
0.2 :
(NumberHelper.ToDouble(a.RiskValue.Replace("%", string.Empty)) / 100 * 2)))
.ToString("F2")
};
}
private class ExtendOtherRiskModel
{
public string StockIndexDeltaCash { get; set; }
public string StockIndexDeltaRisk { get; set; }
public string StockIndexGammaRisk { get; set; }
public string CommodityFuturesDeltaCash { get; set; }
public string CommodityFuturesDeltaRisk { get; set; }
public string CommodityFuturesGammaRisk { get; set; }
}
private class ExtendOtherEodTradeRiskInfo
{
public double DeltaCash { get; set; }
public double GammaCash { get; set; }
public string RiskValue { get; set; }
}
}
}