82 lines
2.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|