/// <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="HKCommodityCode">港股商品代码</param> /// <returns></returns> public bool DeleteHKCommodity(string HKCommodityCode) { HK_CommodityDAL hKCommodityDAL = new HK_CommodityDAL(); RC_TradeCommodityAssignDAL 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 { TradeCommodityAssignDAL.DeleteByCommodityCode(HKCommodityCode, Tran, db); if (!hKCommodityDAL.Delete(HKCommodityCode, Tran, db)) { Tran.Rollback(); return(false); } Tran.Commit(); return(true); } catch (Exception ex) { Tran.Rollback(); string errCode = "GL-7752"; string errMsg = "删除港股交易商品失败!"; VTException exception = new VTException(errCode, errMsg, ex); LogHelper.WriteError(exception.ToString(), exception.InnerException); return(false); } finally { if (Conn.State == ConnectionState.Open) { Conn.Close(); } } }
/// <summary> /// 删除一条数据 /// </summary> public bool Delete(int MatchMachineID) { Database db = DatabaseFactory.CreateDatabase(); DbConnection Conn = db.CreateConnection(); if (Conn.State != ConnectionState.Open) { Conn.Open(); } DbTransaction Tran = Conn.BeginTransaction(); try { ManagementCenter.DAL.RC_TradeCommodityAssignDAL TradeCommodityAssignDAL = new RC_TradeCommodityAssignDAL(); TradeCommodityAssignDAL.DeleteByMachineID(MatchMachineID, Tran, db); dal.Delete(MatchMachineID, Tran, db); Tran.Commit(); return(true); } catch (Exception ex) { Tran.Rollback(); string errCode = "GL-2221"; string errMsg = "删除撮合机失败 ID=" + MatchMachineID.ToString(); VTException vte = new VTException(errCode, errMsg, ex); LogHelper.WriteError(vte.ToString(), vte.InnerException); return(false); } finally { if (Conn.State == ConnectionState.Open) { Conn.Close(); } } }
/// <summary> /// 删除品种时,则根据品种ID,删除所有相关联的表 /// </summary> /// <param name="BreedClassID">品种ID</param> /// <returns></returns> public bool DeleteCMBreedClassALLAbout(int BreedClassID) { XH_SpotTradeRulesBLL xH_SpotTradeRulesBLL = new XH_SpotTradeRulesBLL(); QH_FuturesTradeRulesBLL qH_FuturesTradeRulesBLL = new QH_FuturesTradeRulesBLL(); QH_SIFPositionBLL qH_SIFPositionBLL = new QH_SIFPositionBLL(); CM_CommodityDAL cM_CommodityDAL = new CM_CommodityDAL(); CM_BreedClassDAL cMBreedClassDAL = new CM_BreedClassDAL(); CM_BreedClass cM_BreedClass = new CM_BreedClass(); XH_SpotPositionDAL xH_SpotPositionDAL = new XH_SpotPositionDAL(); UM_DealerTradeBreedClassDAL uM_DealerTradeBreedClassDAL = new UM_DealerTradeBreedClassDAL(); UM_DealerTradeBreedClass uM_DealerTradeBreedClass = new UM_DealerTradeBreedClass(); //QH_SIFPositionDAL qH_SIFPositionDAL=new QH_SIFPositionDAL();//股指期货持仓限制 //QH_SIFPosition qH_SIFPosition=new QH_SIFPosition(); QH_PositionLimitValueDAL qH_PositionLimitValueDAL = new QH_PositionLimitValueDAL(); //期货持仓限制 XH_SpotCostsDAL xH_SpotCostsDAL = new XH_SpotCostsDAL(); //现货交易费用 QH_FutureCostsDAL qH_FutureCostsDAL = new QH_FutureCostsDAL(); //期货交易费用 QH_CFBailScaleValueDAL qH_CFBailScaleValueDAL = new QH_CFBailScaleValueDAL(); //商品期货_保证金比例 HK_SpotTradeRulesBLL hK_SpotTradeRulesBLL = new HK_SpotTradeRulesBLL(); //港股交易规则BLL HK_SpotCostsDAL hK_SpotCostsDAL = new HK_SpotCostsDAL(); //港股交易费用 HK_CommodityDAL hK_CommodityDAL = new HK_CommodityDAL(); //港股交易商品 //期货保证金 add by 董鹏 2010-02-02 QH_SIFBailDAL qh_SIFBailDal = new QH_SIFBailDAL(); 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 NewBreedClassID = AppGlobalVariable.INIT_INT; //未分配品种ID //获取系统默认未分配品种的品种ID List <CM_BreedClass> cMBreedClassList = cMBreedClassDAL.GetListArray(string.Format("DeleteState={0}", (int)Types.IsYesOrNo.Yes)); if (cMBreedClassList.Count == 0) { return(false); } if (cMBreedClassList[0].ISSysDefaultBreed == (int)Types.IsYesOrNo.Yes) { NewBreedClassID = cMBreedClassList[0].BreedClassID; } cM_BreedClass = cMBreedClassDAL.GetModel(BreedClassID); if (cM_BreedClass == null) { return(false); } //删除撮合机里的代码 int ISHKBreedClassType = Convert.ToInt32(cM_BreedClass.ISHKBreedClassType); //是否港股类型 if (ISHKBreedClassType == (int)GTA.VTS.Common.CommonObject.Types.IsYesOrNo.Yes) //当品种类型是港股时 { List <ManagementCenter.Model.HK_Commodity> hkCommodityList = hK_CommodityDAL.GetListArray(string.Format("BreedClassID={0}", BreedClassID)); if (hkCommodityList.Count > 0) { List <ManagementCenter.Model.RC_TradeCommodityAssign> rcTradeCommodityAssignList = rC_TradeCommodityAssignDAL.GetListArray(string.Format("CodeFormSource={0}", (int)Types.IsCodeFormSource.No)); if (rcTradeCommodityAssignList.Count > 0) { for (int i = 0; i < hkCommodityList.Count; i++) { for (int j = i; j < rcTradeCommodityAssignList.Count; j++) { if (hkCommodityList[i].HKCommodityCode == rcTradeCommodityAssignList[j].CommodityCode) { if (!rC_TradeCommodityAssignDAL.DeleteRCByCommodityCode(hkCommodityList[i].HKCommodityCode, Tran, db)) { Tran.Rollback(); return(false); } break; } } } } } } else if (ISHKBreedClassType == (int)GTA.VTS.Common.CommonObject.Types.IsYesOrNo.No)//当其它品种类型是时) { List <ManagementCenter.Model.CM_Commodity> cmCommodityList = cM_CommodityDAL.GetListArray(string.Format("BreedClassID={0}", BreedClassID)); if (cmCommodityList.Count > 0) { List <ManagementCenter.Model.RC_TradeCommodityAssign> rcTradeCommodityAssignList = rC_TradeCommodityAssignDAL.GetListArray(string.Format("CodeFormSource={0}", (int)Types.IsCodeFormSource.Yes)); if (rcTradeCommodityAssignList.Count > 0) { for (int i = 0; i < cmCommodityList.Count; i++) { for (int j = i; j < rcTradeCommodityAssignList.Count; j++) { if (cmCommodityList[i].CommodityCode == rcTradeCommodityAssignList[j].CommodityCode) { if (!rC_TradeCommodityAssignDAL.DeleteRCByCommodityCode(cmCommodityList[i].CommodityCode, Tran, db)) { Tran.Rollback(); return(false); } break; } } } } } } //品种类型ID int breedClassType = Convert.ToInt32(cM_BreedClass.BreedClassTypeID); if (breedClassType == (int)GTA.VTS.Common.CommonObject.Types.BreedClassTypeEnum.Stock) { if (!xH_SpotTradeRulesBLL.DeleteSpotTradeRulesAboutAll(BreedClassID)) { Tran.Rollback(); return(false); } if (!xH_SpotPositionDAL.Delete(BreedClassID, Tran, db)) //删除持仓 { Tran.Rollback(); return(false); } if (!xH_SpotCostsDAL.Delete(BreedClassID, Tran, db)) //删除现货交易费用 { Tran.Rollback(); return(false); } } else if (breedClassType == (int)GTA.VTS.Common.CommonObject.Types.BreedClassTypeEnum.StockIndexFuture) { if (!qH_FuturesTradeRulesBLL.DeleteFuturesTradeRulesAboutAll(BreedClassID)) { Tran.Rollback(); return(false); } if (!qH_SIFPositionBLL.DeleteQHSIFPositionAndQHSIFBail(BreedClassID)) { Tran.Rollback(); return(false); } if (!qH_PositionLimitValueDAL.DeletePositionLimitVByBreedClassID(BreedClassID, Tran, db)) { Tran.Rollback(); return(false); } if (!qH_FutureCostsDAL.Delete(BreedClassID, Tran, db)) //删除期货交易费用 { Tran.Rollback(); return(false); } if (!qH_CFBailScaleValueDAL.DeleteCFBailScaleVByBreedClassID(BreedClassID, Tran, db))//删除商品期货_保证金比例 { Tran.Rollback(); return(false); } } else if (breedClassType == (int)GTA.VTS.Common.CommonObject.Types.BreedClassTypeEnum.HKStock) { if (!hK_SpotTradeRulesBLL.DeleteHKSpotTradeRulesAbout(BreedClassID)) { Tran.Rollback(); return(false); } if (!hK_SpotCostsDAL.Delete(BreedClassID, Tran, db)) //删除港股交易费用 { Tran.Rollback(); return(false); } if (!xH_SpotPositionDAL.Delete(BreedClassID, Tran, db)) //删除持仓 { Tran.Rollback(); return(false); } //根据品种ID,更新港股交易商品表中的品种ID( if (!hK_CommodityDAL.UpdateHKBreedClassID(BreedClassID, NewBreedClassID, Tran, db)) { Tran.Rollback(); return(false); } } if (breedClassType != (int)GTA.VTS.Common.CommonObject.Types.BreedClassTypeEnum.HKStock) { //根据品种ID,更新交易商品表中的品种ID( if (!cM_CommodityDAL.UpdateBreedClassID(BreedClassID, NewBreedClassID, Tran, db)) { Tran.Rollback(); return(false); } } //删除品种权限表记录 List <Model.UM_DealerTradeBreedClass> uMDealerTradeBreedClass = uM_DealerTradeBreedClassDAL.GetListArray(string.Format("BreedClassID={0}", BreedClassID)); foreach (Model.UM_DealerTradeBreedClass umDTradeBreedClass in uMDealerTradeBreedClass) { if (!uM_DealerTradeBreedClassDAL.DeleteDealerTradeByBreedClassID(Convert.ToInt32(umDTradeBreedClass.BreedClassID), Tran, db)) { Tran.Rollback(); return(false); } } //删除期货保证金记录 add by 董鹏 2010-02-02 if (!qh_SIFBailDal.Delete(BreedClassID, Tran, db)) { Tran.Rollback(); return(false); } if (!cMBreedClassDAL.Delete(BreedClassID, Tran, db)) { Tran.Rollback(); return(false); } Tran.Commit(); return(true); } catch (Exception ex) { Tran.Rollback(); string errCode = "GL-4115"; string errMsg = " 删除品种时,则根据品种ID,删除所有相关联的表失败!"; VTException 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="CommodityCode">商品代码</param> /// <param name="BreedClassID">品种ID</param> /// <returns></returns> public bool DeleteCMCommodity(string CommodityCode, int BreedClassID) { CM_CommodityDAL cMCommodityDAL = new CM_CommodityDAL(); RC_TradeCommodityAssignDAL TradeCommodityAssignDAL = new RC_TradeCommodityAssignDAL(); CM_CommodityFuseDAL cMCommodityFuseDAL = new CM_CommodityFuseDAL(); CM_FuseTimesectionDAL cMFuseTimesectionDAL = new CM_FuseTimesectionDAL(); CM_BreedClassBLL cM_BreedClassBLL = new CM_BreedClassBLL(); DbConnection Conn = null; Database db = DatabaseFactory.CreateDatabase(); Conn = db.CreateConnection(); if (Conn.State != ConnectionState.Open) { Conn.Open(); } DbTransaction Tran = Conn.BeginTransaction(); try { int breedClassTypeID = AppGlobalVariable.INIT_INT;//品种类型ID List <CM_BreedClass> cM_BreedClassList = cM_BreedClassBLL.GetListArray(string.Format("BreedClassID={0}", BreedClassID)); if (cM_BreedClassList.Count > 0) { CM_BreedClass cM_BreedClass = cM_BreedClassList[0]; if (cM_BreedClass != null) { breedClassTypeID = Convert.ToInt32(cM_BreedClass.BreedClassTypeID); } } if (breedClassTypeID == (int)GTA.VTS.Common.CommonObject.Types.BreedClassTypeEnum.StockIndexFuture) { if (!string.IsNullOrEmpty(CommodityCode)) { if (!cMFuseTimesectionDAL.DeleteByCommodityCode(CommodityCode, Tran, db)) { Tran.Rollback(); return(false); } else { if (!cMCommodityFuseDAL.Delete(CommodityCode, Tran, db)) { Tran.Rollback(); return(false); } } } TradeCommodityAssignDAL.DeleteByCommodityCode(CommodityCode, Tran, db); if (!cMCommodityDAL.Delete(CommodityCode, Tran, db)) { Tran.Rollback(); return(false); } } else { TradeCommodityAssignDAL.DeleteByCommodityCode(CommodityCode, Tran, db); if (!cMCommodityDAL.Delete(CommodityCode, Tran, db)) { Tran.Rollback(); return(false); } } Tran.Commit(); return(true); } catch (Exception ex) { Tran.Rollback(); string errCode = "GL-4301"; string errMsg = "删除交易商品失败!"; VTException 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="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="breedclass"></param> private void SpecialQHCodeUpdate(int breedclass) { try { //根据品种ID,找到品种的前缀代码 string QH_PrefixCode = GetQH_PrefixCodeByID(breedclass); //根据品种ID,找到品种的名称 string QH_breedclassName = GetBreedClassNameByID(breedclass); string OldCode = string.Empty; string NewCode = string.Empty; //1,2,3, 4,5,6, 7,8,9 ,10,11,12 //1,2,3, 6, // 2,3, 6, 9, // 3, 4, 6, 9, // 4,5,6, 9, // 5,6, 9, 12, // 6, 7, 9, 12, // 7,8,9, 12, // 3, 8,9, 12, // 3, 9, 10, 12, // 3, 10,11,12, // 3, 6, 11,12, //1, 3, 6, 12, //1,2,3, 6, //add 李健华 2010-01-15 //比如今天之前是,1001,1002,1003,1006,今天之后是1002,1003,1006,1009, //下一个月1002到期后就是,1004,1006,1009,1010 //保证3,6,9,12中有连续2个的季月,以及连续的两个自然月,总共4个合约是不变的。 //============== switch (System.DateTime.Now.Month) { case 1: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "01"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "09"; break; case 2: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "02"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "04"; break; case 3: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "03"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "05"; break; case 4: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "04"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "12"; break; case 5: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "05"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "07"; break; case 6: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "06"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "08"; break; case 7: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "07"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now.AddYears(1)) + "03"; break; case 8: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "08"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "10"; break; case 9: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "09"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "11"; break; case 10: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "10"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now.AddYears(1)) + "06"; break; case 11: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "11"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now.AddYears(1)) + "01"; break; case 12: OldCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now) + "12"; NewCode = QH_PrefixCode + GetTwoLenYear(System.DateTime.Now.AddYears(1)) + "02"; break; } CM_CommodityDAL CommodityDAL = new CM_CommodityDAL(); RC_TradeCommodityAssignDAL TradeCommodityAssignDAL = new RC_TradeCommodityAssignDAL(); CM_Commodity CM_Commodity = CommodityDAL.GetModel(OldCode); if (CM_Commodity == null) { CM_Commodity = new CM_Commodity(); } CM_Commodity.CommodityCode = NewCode; CM_Commodity.MarketDate = DateTime.Parse(System.DateTime.Now.AddDays(1).ToShortDateString()); //若第二天是非交易日则顺延一天 add by 董鹏 2010-03-31 while (!JudgmentIsTrandingDay(CM_Commodity.MarketDate, breedclass)) { CM_Commodity.MarketDate = CM_Commodity.MarketDate.AddDays(1); } CM_Commodity.CommodityName = NewCode; //QH_breedclassName + NewCode.Substring(NewCode.Length - 4); CM_Commodity.BreedClassID = breedclass; CM_Commodity.GoerScale = decimal.MaxValue; CM_Commodity.LabelCommodityCode = null; CM_Commodity.StockPinYin = null; CM_Commodity.turnovervolume = null; CM_Commodity.IsExpired = (int)Types.IsYesOrNo.No; //新增期货代码时,默认代码没有过期 CM_Commodity.ISSysDefaultCode = (int)Types.IsYesOrNo.Yes; //新增期货代码时,默认是系统代码 bool _result = CommodityDAL.Add(CM_Commodity); if (!_result) { LogHelper.WriteDebug("SpecialQHCodeUpdate()方法中的添加代码失败"); return; } //更新代码分配表 TradeCommodityAssignDAL.Update(OldCode, NewCode); // CommodityDAL.Delete(OldCode); //根据2009-7-22需求过期代码添加标识 int isExpired = (int)Types.IsYesOrNo.Yes;//旧代码状态设置为过期 bool _resultUpdate = CommodityDAL.Update(OldCode, isExpired); if (!_resultUpdate) { LogHelper.WriteDebug("SpecialQHCodeUpdate()方法中的更新代码失败"); } //调用把期货新增的代码自动添加到可交易商品_撮合机_分配表中的方法 QHCodeAutoRCTradeCommodityAssign(NewCode, breedclass); } catch (Exception ex) { string errCode = "GL-7003"; string errMsg = "执行更新方法SpecialQHCodeUpdate()失败"; VTException exception = new VTException(errCode, errMsg, ex); LogHelper.WriteError(exception.ToString(), exception.InnerException); } }
/// <summary> /// 期货代码更新 /// Update by: 董鹏 /// Update Date: 2010-03-10 /// Desc: 使用代码规则管理器生成代码 /// </summary> /// <param name="breedclass">品种ID</param> /// <param name="LastTradingDayEntity">期货最后交易日实体</param> public void QHCodeUpdata(int breedclass, QH_LastTradingDay LastTradingDayEntity) { try { //根据品种ID,找到品种的代码名称 string QH_Prefixname = GetQH_PrefixCodeByID(breedclass); //根据品种ID,找到品种的名称 string QH_breedclassName = GetBreedClassNameByID(breedclass); //根据品种获取交易所 CM_BreedClassBLL bc = new CM_BreedClassBLL(); CM_BourseTypeBLL bt = new CM_BourseTypeBLL(); var bourseType = bt.GetModel(bc.GetModel(breedclass).BourseTypeID.Value); //创建代码规则管理 CodeRulesManager codeRule; if (bourseType.CodeRulesType.HasValue) { LogHelper.WriteDebug("===开始自动生成代码,代码规则类型:" + bourseType.CodeRulesType.ToString()); codeRule = new CodeRulesManager((Types.CodeRulesType)bourseType.CodeRulesType.Value); } else { LogHelper.WriteDebug("===开始自动生成代码,没有获取到交易所对应的代码规则,交易所:" + bourseType.BourseTypeName); codeRule = new CodeRulesManager(null); } CM_CommodityDAL CommodityDAL = new CM_CommodityDAL(); RC_TradeCommodityAssignDAL TradeCommodityAssignDAL = new RC_TradeCommodityAssignDAL(); string Old_QH_codename; string New_QH_codename; if ((int)LastTradingDayEntity.LastTradingDayTypeID == (int)Types.QHLastTradingDayType.DeliMonthAgoMonthLastTradeDay) { //Old_QH_codename = QH_Prefixname + GetTwoLenYear(DateTime.Now) + // GetTwoLenMonth(DateTime.Now.AddMonths(1)); //New_QH_codename = QH_Prefixname + GetTwoLenYear(DateTime.Now.AddYears(1)) + // GetTwoLenMonth(DateTime.Now.AddMonths(1)); //使用代码规则管理器生成代码 Old_QH_codename = codeRule.GetCode(QH_Prefixname, DateTime.Now.Year.ToString(), DateTime.Now.AddMonths(1).Month.ToString().PadLeft(2, '0')); New_QH_codename = codeRule.GetCode(QH_Prefixname, DateTime.Now.AddYears(1).Year.ToString(), DateTime.Now.AddMonths(1).Month.ToString().PadLeft(2, '0')); } else { //Old_QH_codename = QH_Prefixname + GetTwoLenYear(DateTime.Now) + GetTwoLenMonth(DateTime.Now); //New_QH_codename = QH_Prefixname + GetTwoLenYear(DateTime.Now.AddYears(1)) + // GetTwoLenMonth(DateTime.Now); //使用代码规则管理器生成代码 Old_QH_codename = codeRule.GetCode(QH_Prefixname, DateTime.Now.Year.ToString(), DateTime.Now.Month.ToString().PadLeft(2, '0')); New_QH_codename = codeRule.GetCode(QH_Prefixname, DateTime.Now.AddYears(1).Year.ToString(), DateTime.Now.Month.ToString().PadLeft(2, '0')); } CM_Commodity CM_Commodity = CommodityDAL.GetModel(Old_QH_codename); if (CM_Commodity == null) { CM_Commodity = new CM_Commodity(); } CM_Commodity.CommodityCode = New_QH_codename; CM_Commodity.MarketDate = DateTime.Parse(System.DateTime.Now.AddDays(1).ToShortDateString()); //若第二天是非交易日则顺延一天 add by 董鹏 2010-03-31 while (!JudgmentIsTrandingDay(CM_Commodity.MarketDate, breedclass)) { CM_Commodity.MarketDate = CM_Commodity.MarketDate.AddDays(1); } //根据确认结果 期货名称等于期货代码 CM_Commodity.CommodityName = New_QH_codename;// QH_breedclassName + New_QH_codename.Substring(New_QH_codename.Length - 4); CM_Commodity.BreedClassID = breedclass; CM_Commodity.GoerScale = decimal.MaxValue; CM_Commodity.LabelCommodityCode = null; CM_Commodity.StockPinYin = null; CM_Commodity.turnovervolume = null; CM_Commodity.IsExpired = (int)Types.IsYesOrNo.No; //新增期货代码时,默认代码没有过期 CM_Commodity.ISSysDefaultCode = (int)Types.IsYesOrNo.Yes; //新增期货代码时,默认是系统代码 #region old //bool _result = CommodityDAL.Add(CM_Commodity); //if (!_result) //{ // LogHelper.WriteDebug("添加代码失败"); // return; //} ////更新代码分配表 //TradeCommodityAssignDAL.Update(Old_QH_codename, New_QH_codename); ////CommodityDAL.Delete(Old_QH_codename); ////根据2009-7-22需求过期代码添加标识 //int isExpired = (int)Types.IsYesOrNo.Yes;//旧代码状态设置为过期 //bool _resultUpdate = CommodityDAL.Update(Old_QH_codename, isExpired); //if (!_resultUpdate) //{ // LogHelper.WriteDebug("更新代码失败"); //} ////调用把期货新增的代码自动添加到可交易商品_撮合机_分配表中的方法 //QHCodeAutoRCTradeCommodityAssign(New_QH_codename, breedclass); #endregion //前面的bool值实际上没有用处,改为直接抛出异常,并增加日志记录 update by 董鹏 2010-03-31 LogHelper.WriteDebug("===生成新代码:" + New_QH_codename); //添加新代码 CommodityDAL.Add(CM_Commodity); LogHelper.WriteDebug("===更新代码分配表"); //更新代码分配表 TradeCommodityAssignDAL.Update(Old_QH_codename, New_QH_codename); LogHelper.WriteDebug("===设置代码过期:" + Old_QH_codename); //旧代码状态设置为过期 int isExpired = (int)Types.IsYesOrNo.Yes; CommodityDAL.Update(Old_QH_codename, isExpired); LogHelper.WriteDebug("===将代码添加到撮合机分配表中"); //如果新代码未分配,将代码添加到撮合机分配表中 QHCodeAutoRCTradeCommodityAssign(New_QH_codename, breedclass); LogHelper.WriteDebug("===新代码:" + New_QH_codename + "完成生成并分配到撮合机,旧代码:" + Old_QH_codename + "完成从撮合机分配表中移除并设为过期。"); } catch (Exception ex) { string errCode = "GL-7002"; string errMsg = "执行更新方法QHCodeUpdata()失败"; //VTException exception = new VTException(errCode, errMsg, ex); //LogHelper.WriteError(exception.ToString(), exception.InnerException); LogHelper.WriteError(errCode + ":" + errMsg, ex); } }
/// <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); } }