private void GetAccountSummaryCallback(Guid instrumentId, List<CommonOpenInterestSummary> openInterestSummarys) { this.Dispatcher.BeginInvoke((Action)delegate() { if (openInterestSummarys == null) return; ExchangeSettingManager settingManager = this._App.ExchangeDataManager.GetExchangeSetting(this._CurrentExchangeCode); ObservableCollection<OpenInterestSummary> accountGroupSummarys = new ObservableCollection<OpenInterestSummary>(); foreach (CommonOpenInterestSummary openInterestSummary in openInterestSummarys) { OpenInterestSummary entity = new OpenInterestSummary(openInterestSummary, OpenInterestSummaryType.Account); entity.InstrumentId = instrumentId; Guid accountId = entity.Id; Account account = settingManager.GetAccount(accountId); if (account != null) { entity.Code = account.Code; } accountGroupSummarys.Add(entity); } OpenInterestSummary instrumentSummary = this._OpenInterestSummarys.SingleOrDefault(P => P.Id == instrumentId); instrumentSummary.ChildSummaryItems.Clear(); IEnumerable<IGrouping<string, OpenInterestSummary>> query = accountGroupSummarys.GroupBy(P => P.GroupCode, P => P); foreach (IGrouping<string, OpenInterestSummary> group in query) { OpenInterestSummary groupSummary = new OpenInterestSummary(OpenInterestSummaryType.Group); Guid accountId = accountGroupSummarys[0].Id; Guid accountGroupId = Guid.Empty; Account account = settingManager.GetAccount(accountId); if (account != null) { accountGroupId = account.GroupId; } AccountGroup accountGroup = settingManager.GetAccountGroup(accountGroupId); if (accountGroup != null) { groupSummary.Code = accountGroup.Code; } groupSummary.Id = accountGroupId; List<OpenInterestSummary> accountSummarys = group.ToList<OpenInterestSummary>(); foreach (OpenInterestSummary item in accountGroupSummarys) { groupSummary.SetItem(item,true); groupSummary.ChildSummaryItems.Add(item); } groupSummary.SetAvgPrice(); instrumentSummary.ChildSummaryItems.Add(groupSummary); } }); }
private void GetAccountSummaryCallback(Guid instrumentId, List<CommonOpenInterestSummary> openInterestSummarys) { this.Dispatcher.BeginInvoke((Action)delegate() { if (openInterestSummarys == null) return; OpenInterestSummary instrumentSummary = this._OpenInterestSummaryModel.GetInstrumentSummaryItem(instrumentId); this._OpenInterestSummaryModel.ResetChildItem(instrumentSummary); ExchangeSettingManager settingManager = this._App.ExchangeDataManager.GetExchangeSetting(this._CurrentExchangeCode); ObservableCollection<OpenInterestSummary> accountItemList = new ObservableCollection<OpenInterestSummary>(); foreach (CommonOpenInterestSummary commonEntity in openInterestSummarys) { OpenInterestSummary accountSummaryItem = new OpenInterestSummary(commonEntity,OpenInterestSummaryType.Account); accountSummaryItem.InstrumentId = instrumentId; Guid accountId = accountSummaryItem.Id; Account account = settingManager.GetAccount(accountId); if (account == null) continue; accountSummaryItem.GroupId = account.GroupId; accountSummaryItem.Code = account.Code; AccountGroup accountGroup = settingManager.GetAccountGroup(account.GroupId); accountSummaryItem.GroupCode = accountGroup.Code; accountItemList.Add(accountSummaryItem); } IEnumerable<IGrouping<string, OpenInterestSummary>> query = accountItemList.GroupBy(P => P.GroupCode, P => P); foreach (IGrouping<string, OpenInterestSummary> group in query) { OpenInterestSummary accountItem = group.First(); OpenInterestSummary groupSummary = new OpenInterestSummary(null,OpenInterestSummaryType.Group); groupSummary.UpdateGroupFromAccountItem(accountItem);//更新分子分母 List<OpenInterestSummary> accountSummarys = group.ToList<OpenInterestSummary>(); foreach (OpenInterestSummary item in accountSummarys) { groupSummary.SetItem(item, true); groupSummary.ChildSummaryItems.Add(item); } groupSummary.SetAvgPrice(); instrumentSummary.ChildSummaryItems.Add(groupSummary); } }); }