using YieldChain.Helpers; using YLErp.Modules.EodModule.SettlementModule; using YLErp.Modules.SuperviseReportModule.ChangJiangReport.Service; namespace YLErp.Modules.EodModule.CompanySpecial { /// /// 长江日终结算任务 /// class ChangJiangService { /// /// 长江日终结算任务 /// /// /// 持仓 或 对冲 或 开仓 /// 收盘价 或 结算价 /// public static void EodExecute(EodSettlementContextV2 context, string volType, string settlePriceType) { if (context is null) { throw new ArgumentNullException(nameof(context)); } if (volType == "持仓" && settlePriceType == "收盘价") { try { var clienIds = context.Request.ClientIds; new SuperviseReportClientCashService(context.UserInfo).SaveReportData(context.SettleDate, clienIds); } catch (Exception ex) { LogFactory.GetLogger("长江衍生品客户资金表").Error(ex); } try { new SuperviseReportCreditRiskService(context.UserInfo).SaveReportData(context.SettleDate); } catch (Exception ex) { LogFactory.GetLogger("长江衍生品信用风险表").Error(ex); } } try { var nv = UrlHelper.ParseQueryString(PS.Config.ErpElement.Supervise_Position); var exposureMode = nv?["敞口算法"]; switch (exposureMode) { case "收盘价+持仓波动率": if (volType == "持仓" && settlePriceType == "收盘价") { break; } return; case "结算价+持仓波动率": if (volType == "持仓" && settlePriceType == "结算价") { break; } return; case "结算价+对冲波动率": if (volType == "对冲" && settlePriceType == "结算价") { break; } return; default: if (volType == "对冲" && settlePriceType == "收盘价") { break; } return; } new SuperviseReportPositionService(context.UserInfo).SaveReportData(context.SettleDate, exposureMode); } catch (Exception ex) { LogFactory.GetLogger("长江场外业务持仓表").Error(ex); } } } }