Ejemplo n.º 1
0
        /// <summary>
        /// 登录分红记录(每天清算的时候记录)
        /// </summary>
        /// <returns></returns>
        public static bool RegisterMeloncutTable()
        {
            //今天已经登记过
            if (StatusTableChecker.HasDoneRegistMelonCutDate(DateTime.Now))
            {
                return(true);
            }
            //1.如果今日有需要登记的就进行登记
            IList <CM_StockMelonCash> list = MCService.CommonPara.GetAllStockMelonCash();
            bool isSuccess = true;

            if (!Utils.IsNullOrEmpty(list))
            {
                isSuccess = RegisterCashList(list);
            }

            if (isSuccess)
            {
                IList <CM_StockMelonStock> items = MCService.CommonPara.GetAllStockMelonStock();
                if (!Utils.IsNullOrEmpty(items))
                {
                    isSuccess = RegisterStockList(items);
                }
            }
            if (isSuccess)
            {
                StatusTableChecker.UpdateRegistMelonCutDate(null);
            }
            return(isSuccess);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 进行分红处理
        /// </summary>
        public static bool Process()
        {
            try
            {
                //1.清除分红表中过期的数据(分红日期已超过一个月的全部删除)
                bool isSuccess = ClearHistoryData();
                if (!isSuccess)
                {
                    LogHelper.WriteInfo("MeloncutService清除分红表中过期的数据失败!");
                    return(false);
                }

                //2.处理现金分红
                isSuccess = ProcessCStockMelonCash();
                if (!isSuccess)
                {
                    LogHelper.WriteInfo("MeloncutService处理现金分红失败!");
                    return(false);
                }

                //3.处理股票分红
                isSuccess = ProcessCStockMelonStock();
                if (!isSuccess)
                {
                    LogHelper.WriteInfo("MeloncutService处理股票分红失败!");
                    return(false);
                }

                //4.更新数据库中的分红日期
                StatusTableChecker.UpdateMelonCutDate();
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
            }
            return(true);
        }
        /// <summary>
        /// 资金检查
        /// </summary>
        private void CheckCapitalTable()
        {
            #region new 李健华 2010-06-08
            //VTTraders traders = VTTradersFactory.GetFutureTraders();

            //if (!traders.IsInitializeSuccess)
            //    return;

            LogHelper.WriteInfo("FutureDayChecker.Process开始每日开盘期货资金检查处理");

            //var tm = TransactionFactory.GetTransactionManager();
            //tm.BeginTransaction();
            ReckoningTransaction reckoningTransaction = new ReckoningTransaction();
            Database             database             = DatabaseFactory.CreateDatabase();
            DbConnection         connection           = database.CreateConnection();

            try
            {
                connection.Open();
                reckoningTransaction.Database = database;
                DbTransaction transaction = connection.BeginTransaction();
                reckoningTransaction.Transaction = transaction;

                //获取所有期货持仓账号类型
                List <BD_AccountTypeInfo> futureAccountTypes = AccountManager.Instance.GetAccoutTypeByACTID((int)Types.AccountAttributionType.FuturesCapital);

                if (Utils.IsNullOrEmpty(futureAccountTypes))
                {
                    return;
                }
                foreach (var item in futureAccountTypes)
                {
                    List <AccountPair> userAccountPair = VTTradersFactory.InitializeAccountPair(item);
                    if (Utils.IsNullOrEmpty(userAccountPair))
                    {
                        continue;
                    }
                    foreach (var accountPair in userAccountPair)
                    {
                        UserAccountChecker checker = new UserAccountChecker(accountPair.CapitalAccount, accountPair.HoldAccount);
                        checker.ProcessCapital();
                    }
                }

                //更新数据库中的每日检查日期
                StatusTableChecker.UpdateFutureDayCheckDate(reckoningTransaction);

                reckoningTransaction.Transaction.Commit();
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message, ex);
                reckoningTransaction.Transaction.Rollback();
                LogHelper.WriteInfo("FutureDayChecker.Process每日开盘期货检查:资金处理失败!");
            }
            finally
            {
                //这里为了安全起见,自行执行一次关闭数据连接
                //if (reckoningTransaction != null && reckoningTransaction.Transaction != null)
                //{
                //    reckoningTransaction.Transaction.Dispose();
                //}
                if (connection != null && connection.State != ConnectionState.Closed)
                {
                    connection.Close();
                }
            }

            LogHelper.WriteInfo("FutureDayChecker.Process结束每日开盘期货检查处理");
            #endregion

            #region old code update by李健华 2010-06-08
            //VTTraders traders = VTTradersFactory.GetFutureTraders();

            //if (!traders.IsInitializeSuccess)
            //    return;

            //LogHelper.WriteInfo("FutureDayChecker.Process开始每日开盘期货资金检查处理");

            ////var tm = TransactionFactory.GetTransactionManager();
            ////tm.BeginTransaction();
            //ReckoningTransaction reckoningTransaction = new ReckoningTransaction();
            //Database database = DatabaseFactory.CreateDatabase();
            //DbConnection connection = database.CreateConnection();

            //try
            //{
            //    connection.Open();
            //    reckoningTransaction.Database = database;
            //    DbTransaction transaction = connection.BeginTransaction();
            //    reckoningTransaction.Transaction = transaction;
            //    foreach (var vtTrader in traders.TraderList)
            //    {
            //        foreach (var accountPair in vtTrader.AccountPairList)
            //        {
            //            UserAccountChecker checker = new UserAccountChecker(accountPair.CapitalAccount, accountPair.HoldAccount);
            //            checker.ProcessCapital();
            //        }
            //    }

            //    //更新数据库中的每日检查日期
            //    StatusTableChecker.UpdateFutureDayCheckDate(reckoningTransaction);

            //    reckoningTransaction.Transaction.Commit();
            //}
            //catch (Exception ex)
            //{
            //    LogHelper.WriteError(ex.Message, ex);
            //    reckoningTransaction.Transaction.Rollback();
            //    LogHelper.WriteInfo("FutureDayChecker.Process每日开盘期货检查:资金处理失败!");
            //}
            //finally
            //{
            //    //这里为了安全起见,自行执行一次关闭数据连接
            //    //if (reckoningTransaction != null && reckoningTransaction.Transaction != null)
            //    //{
            //    //    reckoningTransaction.Transaction.Dispose();
            //    //}
            //    if (connection != null && connection.State != ConnectionState.Closed)
            //    {
            //        connection.Close();
            //    }
            //}

            //LogHelper.WriteInfo("FutureDayChecker.Process结束每日开盘期货检查处理");
            #endregion
        }