Пример #1
0
        private void DeleteData(DateTime date)
        {
            using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 30, 0)))
            {
                InitialStatusAndProgressBar(11);
                StatementStream stream = new StatementStream();

                UpdateStatusAndProgressBar("(1/11)正在删除平仓明细数据...", 1);
                List <ClosedTradeDetail> ClosedTradeDetails = stream.GetClosedTradeDetails();
                ClosedTradeDetails.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.ActualDate >= date);
                File.Delete(_Session.ClosedTradeDetailFilePath);
                stream.Append(ClosedTradeDetails);

                UpdateStatusAndProgressBar("(2/11)正在删除品种统计数据...", 1);
                List <CommoditySummarization> CommoditySummarizations = stream.GetCommoditySummarizations();
                CommoditySummarizations.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date);
                File.Delete(_Session.CommoditySummarizationFilePath);
                stream.Append(CommoditySummarizations);


                UpdateStatusAndProgressBar("(3/11)正在删除结算单数据...", 1);
                List <FundStatus> FundStatus = stream.GetFundStatus();
                FundStatus.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date);
                File.Delete(_Session.FundStatusFilePath);
                stream.Append(FundStatus);


                UpdateStatusAndProgressBar("(4/11)正在删除持仓明细数据...", 1);
                List <PositionDetail> PositionDetails = stream.GetPositionDetails();
                PositionDetails.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.DateForPosition >= date);
                File.Delete(_Session.PositionDetailFilePath);
                stream.Append(PositionDetails);


                UpdateStatusAndProgressBar("(5/11)正在删除持仓数据...", 1);
                List <Position> Positions = stream.GetPositions();
                Positions.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date);
                File.Delete(_Session.PositionFilePath);
                stream.Append(Positions);


                UpdateStatusAndProgressBar("(6/11)正在删除出入金数据...", 1);
                List <Remittance> Remittances = stream.GetRemittances();
                Remittances.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date);
                File.Delete(_Session.RemittanceFilePath);
                stream.Append(Remittances);


                UpdateStatusAndProgressBar("(7/11)正在删除股票图数据...", 1);
                List <Stock> Stocks = stream.GetStocks();
                Stocks.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date);
                File.Delete(_Session.StockFilePath);
                stream.Append(Stocks);


                UpdateStatusAndProgressBar("(8/11)正在删除交易明细数据...", 1);
                List <TradeDetail> TradeDetails = stream.GetTradeDetails();
                TradeDetails.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.ActualTime >= date);
                File.Delete(_Session.TradeDetailFilePath);
                stream.Append(TradeDetails);


                UpdateStatusAndProgressBar("(9/11)正在删除交易数据...", 1);
                List <Trade> Trades = stream.GetTrades();
                Trades.RemoveAll(m => m.AccountId == _Session.SelectedAccountId && m.Date >= date);
                File.Delete(_Session.TradeFilePath);
                stream.Append(Trades);

                UpdateStatusAndProgressBar("(10/11)正在校准权益...", 1);
                using (StatementContext statement = new StatementContext(typeof(Stock), typeof(FundStatus), typeof(Account)))
                {
                    var stocks     = statement.Stocks.Where(m => m.AccountId == _Session.SelectedAccountId).OrderBy(m => m.Date);
                    var fundStatus = statement.FundStatus.Where(m => m.AccountId == _Session.SelectedAccountId).OrderBy(m => m.Date);
                    if (stocks.Count() > 0 && fundStatus.Count() > 0)
                    {
                        var lastStock      = stocks.ToList().LastOrDefault();
                        var lastFundStatus = fundStatus.ToList().LastOrDefault();
                        var diff           = lastFundStatus.CustomerRights - lastStock.Close;
                        if (diff != 0)
                        {
                            foreach (var stc in stocks)
                            {
                                stc.Open  += diff;
                                stc.High  += diff;
                                stc.Low   += diff;
                                stc.Close += diff;
                            }
                            statement.Cover(statement.Stocks.ToList());
                        }
                    }
                    UpdateStatusAndProgressBar("(11/11)正在保存数据...", 1);

                    OverStatusAndProgressBar();
                    this.AddLog(string.Concat("账号:<", statement.Accounts.FirstOrDefault(m => m.Id == _Session.SelectedAccountId).AccountNumber,
                                              ">", date.ToString("yyyy年MM月dd日"), "以及之后的数据以全部删除,重启软件生效。"));
                }
                ts.Complete();
            }
        }