79 lines
3.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|