using YLErp.DBModels.Consts; using YLErp.Model; namespace YLErp.BLL.GenerateDocument { public class GeneralBatchGenerateSettleBill : BatchGenerateDocs { public GeneralBatchGenerateSettleBill(List tradeIds, string docType, int optId, string optName, List tradeCashIds) : base(tradeIds, docType, optId, optName, tradeCashIds) { } protected override string ContractType => ContractTypeEnum.Clearing; public override List GetDatas() { //当前交易日 var valueDate = valuedateBLL.ValueDate; var tradeStatus = new List { ConsTrade.已到期, ConsTrade.已执行 }; var tradeCashStatus = new List { ClientCashInCashOut.系统操作_行权费 }; //获取当日行权 平仓 到期的有效交易 var tradeList = (from trade in db.trade join tcr in (from aa in db.trade_contract_r where aa.Type == ContractTypeEnum.Trade && aa.IsValid select aa) on trade.id equals tcr.TradeId into tradeCR from tcr in tradeCR.DefaultIfEmpty() join tc in (from tradeCash in db.trade_cash where tradeCash.ValidState != ConsGlobal.InValid && !tradeCash.IsDeleted && tradeCashStatus.Contains(tradeCash.Action) && tradeCash.ExerciseWay == TradeCashExerciseWayEnum.到期行权 select tradeCash) on trade.id equals tc.TradeId into tCash from tc in tCash.DefaultIfEmpty() where tradeStatus.Contains(trade.TradeStatus) && trade.ValidState != "InValid" && trade.UnWindDate <= valueDate && trade.ClientId != 0 && TradeIdList.Contains(trade.id) select new trade_contract_group { trade = trade, trade_cash = tc, ConfirmContractR = tcr, }).ToList(); return tradeList; } } }