/// <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); } }