/// <summary>
        /// 代码分配
        /// </summary>
        /// <param name="MachineNO">撮合机个数</param>
        /// <param name="BourseTypeID">交易所标识ID</param>
        /// <param name="MatchCenterID">撮合中心ID</param>
        /// <param name="Tran">事务</param>
        /// <param name="db">数据库</param>
        /// <returns></returns>
        private bool AssignCode(int MachineNO, int BourseTypeID, int MatchCenterID, DbTransaction Tran, Database db)
        {
            RC_MatchMachineDAL         MatchMachineDAL         = new RC_MatchMachineDAL();
            RC_TradeCommodityAssignDAL TradeCommodityAssignDAL = new RC_TradeCommodityAssignDAL();

            try
            {
                RC_MatchMachine         MatchMachine;
                RC_TradeCommodityAssign TradeCommodityAssign;

                DataSet ds      = TradeCommodityAssignDAL.GetCodeListByBourseTypeID(BourseTypeID);
                int     CodeNum = ds.Tables[0].Rows.Count;
                int     M_C_Num = (int)CodeNum / MachineNO;

                for (int i = 1; i <= MachineNO; i++)
                {
                    MatchMachine = new RC_MatchMachine();
                    MatchMachine.BourseTypeID  = BourseTypeID;
                    MatchMachine.MatchCenterID = MatchCenterID;
                    int MachineID = MatchMachineDAL.Add(MatchMachine, Tran, db);

                    int start, end;
                    if (i < MachineNO)
                    {
                        start = (i - 1) * M_C_Num;
                        end   = i * M_C_Num;
                    }
                    else
                    {
                        start = (i - 1) * M_C_Num;
                        end   = CodeNum;
                    }
                    for (int j = start; j < end; j++)
                    {
                        TradeCommodityAssign = new RC_TradeCommodityAssign();
                        TradeCommodityAssign.CommodityCode  = ds.Tables[0].Rows[j]["CommodityCode"].ToString();
                        TradeCommodityAssign.MatchMachineID = MachineID;
                        //代码来源那个表:1是CM_Commodity表;2:是HK_Commodity表
                        TradeCommodityAssign.CodeFormSource = Convert.ToInt32(ds.Tables[0].Rows[j]["CodeFormSource"].ToString());
                        TradeCommodityAssignDAL.Add(TradeCommodityAssign, Tran, db);
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                string      errCode = "GL-2202";
                string      errMsg  = "代码分配失败";
                VTException vte     = new VTException(errCode, errMsg, ex);
                LogHelper.WriteError(vte.ToString(), vte.InnerException);
                return(false);
            }
        }
        /// <summary>
        /// 删除交易所类型及相关联的表
        /// </summary>
        /// <param name="BourseTypeID">交易所类型ID</param>
        public bool DeleteCMBourseTypeAbout(int BourseTypeID)
        {
            CM_NotTradeDateDAL         cM_NotTradeDateDAL         = new CM_NotTradeDateDAL();
            CM_TradeTimeDAL            cM_TradeTimeDAL            = new CM_TradeTimeDAL();
            CM_BreedClassDAL           cM_BreedClassDAL           = new CM_BreedClassDAL();
            RC_MatchMachineDAL         rC_MatchMachineDAL         = new RC_MatchMachineDAL();
            RC_TradeCommodityAssignDAL rC_TradeCommodityAssignDAL = new RC_TradeCommodityAssignDAL();

            DbConnection Conn = null;
            Database     db   = DatabaseFactory.CreateDatabase();

            Conn = db.CreateConnection();
            if (Conn.State != ConnectionState.Open)
            {
                Conn.Open();
            }
            DbTransaction Tran = Conn.BeginTransaction();

            try
            {
                int NewBourseTypeID = 5;//未分配交易所的ID=5,固定值
                //获得撮合机数据列表
                List <RC_MatchMachine> rCMatchMachineList =
                    rC_MatchMachineDAL.GetListArray(string.Format("BourseTypeID={0}", BourseTypeID), Tran, db);
                if (rCMatchMachineList.Count > 0)
                {
                    foreach (RC_MatchMachine rCMatchMode in rCMatchMachineList)
                    {
                        // List<RC_TradeCommodityAssign> rCTradeCommodityAssignList =
                        //rC_TradeCommodityAssignDAL.GetListArray(string.Format("MatchMachineID={0}", rCMatchMode.MatchMachineID), Tran, db);
                        //删除撮合机代码分配表中同一个撮合机ID的代码
                        if (!rC_TradeCommodityAssignDAL.DeleteRCTradeCommodityAByMachineID(rCMatchMode.MatchMachineID))
                        {
                            Tran.Rollback();
                            return(false);
                        }
                    }
                    //根据交易所类型ID,删除撮合机
                    if (!rC_MatchMachineDAL.DeleteByBourseTypeID(BourseTypeID, Tran, db))
                    {
                        Tran.Rollback();
                        return(false);
                    }
                }
                //根据交易所类型删除交易日
                if (!cM_TradeTimeDAL.DeleteCMTradeTimeByBourseTypeID(BourseTypeID, Tran, db))
                {
                    Tran.Rollback();
                    return(false);
                }
                //根据交易所类型删除非交易日
                if (!cM_NotTradeDateDAL.DeleteByBourseTypeID(BourseTypeID, Tran, db))
                {
                    Tran.Rollback();
                    return(false);
                }

                //根据交易所类型ID,更新交易商品品种中的交易所类型ID
                if (!cM_BreedClassDAL.UpdateBourseTypeID(BourseTypeID, NewBourseTypeID, Tran, db))
                {
                    Tran.Rollback();
                    return(false);
                }
                if (!cM_BourseTypeDAL.Delete(BourseTypeID, Tran, db))
                {
                    Tran.Rollback();
                    return(false);
                }
                Tran.Commit();
                return(true);
            }
            catch (Exception ex)
            {
                Tran.Rollback();
                string errCode   = "GL-4701";
                string errMsg    = "删除交易所类型失败!";
                var    exception = new VTException(errCode, errMsg, ex);
                LogHelper.WriteError(exception.ToString(), exception.InnerException);
                return(false);
            }
            finally
            {
                if (Conn.State == ConnectionState.Open)
                {
                    Conn.Close();
                }
            }
        }
        /// <summary>
        /// 向导数据保存
        /// </summary>
        /// <param name="MatchCenter">撮合中心实体</param>
        /// <param name="dt">交易所撮合机个数分配表</param>
        /// <returns></returns>
        public bool GuideSave(RC_MatchCenter MatchCenter, DataTable dt)
        {
            try
            {
                RC_MatchCenterDAL          MatchCenterDAL          = new RC_MatchCenterDAL();
                RC_MatchMachineDAL         MatchMachineDAL         = new RC_MatchMachineDAL();
                RC_TradeCommodityAssignDAL TradeCommodityAssignDAL = new RC_TradeCommodityAssignDAL();

                Database     db   = DatabaseFactory.CreateDatabase();
                DbConnection Conn = db.CreateConnection();
                if (Conn.State != ConnectionState.Open)
                {
                    Conn.Open();
                }
                DbTransaction Tran = Conn.BeginTransaction();
                try
                {
                    TradeCommodityAssignDAL.DeleteAll(Tran, db);
                    MatchMachineDAL.DeleteAll(Tran, db);
                    MatchCenterDAL.DeleteAll(Tran, db);

                    int MatchCenterID = MatchCenterDAL.Add(MatchCenter, Tran, db);

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        int BourseTypeID = int.Parse(dt.Rows[i]["BourseTypeID"].ToString());
                        int MachineNO    = int.Parse(dt.Rows[i]["MachineNo"].ToString());
                        if (!AssignCode(MachineNO, BourseTypeID, MatchCenterID, Tran, db))
                        {
                            return(false);
                        }
                    }
                    Tran.Commit();
                    return(true);
                }
                catch (Exception ex)
                {
                    Tran.Rollback();
                    string      errCode = "GL-2200";
                    string      errMsg  = "向导数据保存失败";
                    VTException vte     = new VTException(errCode, errMsg, ex);
                    LogHelper.WriteError(vte.ToString(), vte.InnerException);
                    return(false);
                }
                finally
                {
                    if (Conn.State == ConnectionState.Open)
                    {
                        Conn.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                string      errCode = "GL-2201";
                string      errMsg  = "数据库连接失败";
                VTException vte     = new VTException(errCode, errMsg, ex);
                LogHelper.WriteError(vte.ToString(), vte.InnerException);
                return(false);
            }
        }