using Newtonsoft.Json; using YLErp.BLL.EodSettlement; using YLErp.Modules.IntradayModule; namespace YLWebAPI.ApiModule.ManagerApi { /// /// 实时结算数据 /// [ManagerAuth] public class RealTimeController : BaseApiController { /// /// 实时结算数据 /// [HttpPost, Route("api/v1/realtime/info_all")] public IActionResult RealTimeSettlementInfoAll([FromBody] RealTimeSettlementInfoAllRequest req) { //当前交易日期 var valueDate = YLErp.BLL.valuedateBLL.ValueDate; var startDate = req?.StartDate ?? valueDate; if (startDate > valueDate) { return Ok(JsonError("处理请求失败:开始日期不能大于当天")); } var context = new IntradaySettleInfoQueryContext(CurUser); var clientIdsOfInside = context.GetClientIdsOfInside(); var clientIdsOfNoInside = context.GetClientIds().Where(a => !clientIdsOfInside.Contains(a)).ToList(); //持仓记录 var positionResult = new IntradayPositionApiService(context).GetIntradayPositions(valueDate, clientIdsOfInside); //平仓记录 var CloseInfos = new IntradayCloseInfoQueryService(context).GetIntradayCloseInfoList(valueDate, clientIdsOfInside); //账户结算信息 var AccountInfos = ClientBalanceUtility.GetClientBanlances( clientIdList: clientIdsOfNoInside, startDate: startDate, endDate: valueDate, IsGetOuterMarginGap: false, IsClientBalanceGap: false, ParentFlag: false, clientDataSource: context); //账户基础信息 var AccountBaseInfos = context.AsQueryable().Where(a => !clientIdsOfInside.Contains(a.id)).Select(n => new { n.id, n.ParentId, n.Name, n.Number, n.LicenseCode }).ToArray(); var SummaryInfo = new IntradayPositionApiService(context).GetClientSettleBalancesSumInfo(AccountInfos); var result = new { positionResult.OptionPositions, positionResult.SwapPositions, positionResult.ForwardPositions, CloseInfos, AccountInfos, AccountBaseInfos, SummaryInfo }; var serializeSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; if (serializeSettings.Converters == null) { serializeSettings.Converters = new List(); } serializeSettings.Converters.Add(new DoubleJsonWriteConverter(2, 8)); return new JsonResult(new ApiResponseModel { data = result }, serializeSettings); } } }