Files
zszq-trs/YLErpDAL/Modules/SuperviseReportModule/XingZhengReport/Service/SuperviseReportSwapService.cs
T
2024-05-09 14:06:26 +08:00

79 lines
3.9 KiB
C#

using BaseOUDAL;
using YLErp.Model;
using YLErp.Modules.DataProviderModule;
using YLErp.Modules.RiskModule;
using YLErp.QdpModule;
namespace YLErp.Modules.SuperviseReportModule.XingZhengReport.Service
{
public class SuperviseReportSwapService : SuperviseReportBaseService<SuperviseReportSwapModel>
{
public SuperviseReportSwapService(OptUserInfo userInfo, SuperviseReportReq req) : base(userInfo, req)
{
}
private SearchListResult<SuperviseReportSwapModel> ReportQuery(SuperviseReportReq req)
{
var query = from et in DbContext.eod_trade
join risk in DbContext.eod_trade_risk
on new { et.TradeId, et.ValueDate } equals new { risk.TradeId, risk.ValueDate }
//join cfm in DbContext.trade_contract_r.Where(O => O.IsValid && O.Type == "交易确认书")
//on et.TradeId equals cfm.TradeId into cfmTemp
//from cfm in cfmTemp.DefaultIfEmpty()
where et.ValueDate == req.ValueDate && et.TradeType == "收益互换" && et.TradeType != "现金流交易"
orderby et.TradeId descending
select new
{
et = new xodTradeBase() { TradeJson = et.TradeJson },
risk = risk,
//cfm.ContractCode,
};
var searchTradeInfo = query.ToSearchList(req, false);
List<SuperviseReportSwapModel> modelList = new List<SuperviseReportSwapModel>();
var tradeList = searchTradeInfo.rows.Select(O => O.et.trade).ToList();
var priceProvider = new EodPriceProvider(req.ValueDate).GetPriceProvider(SettlementTypeEnum.ClosePrice);
var service = new QuotaMonitorService(OptUser);
service.GetHedgeGroup(tradeList, priceProvider, out _, out _, out _, out var hedgeGroup, out _);
//service.GetRiskScale(tradeList,)
foreach (var item in searchTradeInfo.rows)
{
var trade = item.et.trade;
var risk = item.risk;
var obj = new SuperviseReportSwapModel();
FormatModel(obj, trade, hedgeGroup, trade.TradeNumber);
modelList.Add(obj);
}
searchTradeInfo.total = Math.Max(1, (int)Math.Ceiling((double)searchTradeInfo.records / searchTradeInfo.rows.Count()));
return new SearchListResult<SuperviseReportSwapModel>(searchTradeInfo, modelList);
}
public override SearchListResult<SuperviseReportSwapModel> SearchReportList()
{
return ReportQuery(RequestInfo);
}
protected override void FormatModel(SuperviseReportSwapModel model, trade trade, IEnumerable<string> hedgeGroup, string contractCode)
{
base.FormatModel(model, trade, hedgeGroup, contractCode);
var client = DataCacheProvider.GetClientDataSource().GetData(trade.ClientId);
var um = DataCacheProvider.GetUnderlyingDataSource().GetData(trade.UnderlyingCode);
model.HoldAcct = trade.AssetBookName;
model.CutpNo = client.Number;
model.EqyFlag = (um.IsStock() || um.IsStockIndex()) ? "1" : "2";
model.InsmTgt = um.UnderlyingName;
model.TgtSecuCd = um.UnderlyingCode;
model.ExchCd = base.getTgtExchCd(um.MarketName);
model.NomnVal = trade.OriginalStockEqvNotional;
model.AhedEndDt = trade.UnWindDate?.ToString("yyyyMMdd");
model.ValtnDays = QdpCalendarHelper.GetNonHolidayDaysBetween(trade.StartDate.GetValueOrDefault(), trade.ExerciseDate.GetValueOrDefault());
model.FixPrftPayType = "";
//model.FixPrftRate = 0;
model.FlotPrftPayDay = "";
//model.EnhPrftRate = 0;
//model.XyzqPrftPay = 0;
model.SrvlNomnVal = trade.StockEqvNotionalReal;
}
}
}