Files
zszq-trs/Framework/SharedWebApi/ManagerApi/RealTimeController.cs
T
2024-05-09 14:06:26 +08:00

82 lines
2.9 KiB
C#

using Newtonsoft.Json;
using YLErp.BLL.EodSettlement;
using YLErp.Modules.IntradayModule;
namespace YLWebAPI.ApiModule.ManagerApi
{
/// <summary>
/// 实时结算数据
/// </summary>
[ManagerAuth]
public class RealTimeController : BaseApiController
{
/// <summary>
/// 实时结算数据
/// </summary>
[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<JsonConverter>();
}
serializeSettings.Converters.Add(new DoubleJsonWriteConverter(2, 8));
return new JsonResult(new ApiResponseModel { data = result }, serializeSettings);
}
}
}