互换估值bug修复
This commit is contained in:
@@ -458,7 +458,7 @@ namespace YLErp.Modules.SwapModule
|
||||
// List<int> eventTyps = new List<int>() { (int)SwapEventTypeEnum.平仓, (int)SwapEventTypeEnum.互换, (int)SwapEventTypeEnum.自动互换 };
|
||||
var predicate = PredicateBuilder.Create<swap_flow_event>(n => n.DataState == (int)SwapFlowDateStateEnum.完成 );
|
||||
var tradePredicate = PredicateBuilder.Create<trade>(n => n.TradeType == "收益互换"
|
||||
&& n.ValidState != "InValid");
|
||||
&& n.ValidState == ConsGlobal.Valid);
|
||||
if (req.ClientId > 0)
|
||||
{
|
||||
tradePredicate = tradePredicate.And(x => x.ClientId == req.ClientId);
|
||||
@@ -471,12 +471,13 @@ namespace YLErp.Modules.SwapModule
|
||||
{
|
||||
predicate = predicate.And(x => x.EventDate <= req.ValueDate);
|
||||
}
|
||||
DbContext.SetDebugLog();
|
||||
var positionQuery = DbContext.swap_flow_event.Where(predicate);
|
||||
var tradeQuery = DbContext.trade.Where(tradePredicate);
|
||||
var query = from flow in positionQuery
|
||||
join td in tradeQuery on flow.SwapTradeId equals td.id
|
||||
join posi in DbContext.swap_position on flow.PositionId equals posi.PositionId
|
||||
join tr in DbContext.trade_contract_r on td.id equals tr.TradeId into tradeContractGroup
|
||||
var query = from td in tradeQuery
|
||||
//join posi in DbContext.swap_position.Where(s=>!s.Invalid&&s.IsInitial) on td.id equals posi.SwapTradeId
|
||||
join flow in positionQuery on td.id equals flow.SwapTradeId
|
||||
join tr in DbContext.trade_contract_r.Where(x=>x.IsValid&&x.Type=="交易确认书") on td.id equals tr.TradeId into tradeContractGroup
|
||||
from tradeContract in tradeContractGroup.DefaultIfEmpty()
|
||||
select new ClientSwapPositionResponse
|
||||
{
|
||||
@@ -486,7 +487,7 @@ namespace YLErp.Modules.SwapModule
|
||||
ClientName = td.ClientName,
|
||||
ClientId = td.ClientId,
|
||||
ContractCode = tradeContract.ContractCode,
|
||||
FloatRateUnderlyingCode=posi.FloatRateUnderlyingCode,
|
||||
// FloatRateUnderlyingCode=posi.FloatRateUnderlyingCode,
|
||||
StartDate = td.StartDate.Value,
|
||||
};
|
||||
if (string.IsNullOrEmpty(req.sidx))
|
||||
@@ -495,6 +496,8 @@ namespace YLErp.Modules.SwapModule
|
||||
req.sord = "asc";
|
||||
}
|
||||
var retListResult = query.ToSearchList(req);
|
||||
var tds= retListResult.rows.Select(x => x.FlowEvent.SwapTradeId).Distinct().ToList();
|
||||
var posiList = DbContext.swap_position.Where(s => !s.Invalid && s.IsInitial && tds.Contains(s.SwapTradeId)&&!string.IsNullOrEmpty(s.FloatRateUnderlyingCode)).ToList();
|
||||
foreach (var item in retListResult.rows)
|
||||
{
|
||||
item.FlowEvent.DividendPending = -item.FlowEvent.DividendPending;
|
||||
@@ -504,7 +507,9 @@ namespace YLErp.Modules.SwapModule
|
||||
item.FlowEvent.InterestFee = -item.FlowEvent.InterestFee;
|
||||
item.FlowEvent.TradingFee = -item.FlowEvent.TradingFee;
|
||||
item.FlowEvent.TradingFeePending = -item.FlowEvent.TradingFeePending;
|
||||
|
||||
item.FlowEvent.InterestClosePnL = -item.FlowEvent.InterestClosePnL;
|
||||
var posi= posiList.FirstOrDefault(s => s.id == item.FlowEvent.PositionId);
|
||||
item.FloatRateUnderlyingCode= posi?.FloatRateUnderlyingCode;
|
||||
if (item.FlowEvent.EventType==(int)SwapFlowEventTypeEnum.开仓)
|
||||
{
|
||||
item.TradeFee = 0;
|
||||
|
||||
Reference in New Issue
Block a user