public frmCalledRule(DB_Talk.Model.m_CalledRule m, int operate) { InitializeComponent(); _operate = operate; if (operate == 0) { this.FormTitle = "添加"; btnOK.Text = "添加"; } else { _mModel = m; this.FormTitle = "编辑"; btnOK.Text = "编辑"; // ShowModel(); } this.Load += new EventHandler(frmCalledRule_Load); }
/// <summary> /// 获得数据列表 /// </summary> public List<DB_Talk.Model.m_CalledRule> DataTableToList(DataSet ds) { List<DB_Talk.Model.m_CalledRule> modelList = new List<DB_Talk.Model.m_CalledRule>(); if (ds == null) return modelList; DataTable dt = ds.Tables[0]; int rowsCount = dt.Rows.Count; if (rowsCount > 0) { DB_Talk.Model.m_CalledRule model; for (int n = 0; n < rowsCount; n++) { model = new DB_Talk.Model.m_CalledRule(); if(dt.Rows[n]["ID"]!=null && dt.Rows[n]["ID"].ToString()!="") { model.ID=int.Parse(dt.Rows[n]["ID"].ToString()); } if(dt.Rows[n]["CalledID"]!=null && dt.Rows[n]["CalledID"].ToString()!="") { model.CalledID=int.Parse(dt.Rows[n]["CalledID"].ToString()); } if(dt.Rows[n]["BoxID"]!=null && dt.Rows[n]["BoxID"].ToString()!="") { model.BoxID=int.Parse(dt.Rows[n]["BoxID"].ToString()); } if(dt.Rows[n]["vc_Code"]!=null && dt.Rows[n]["vc_Code"].ToString()!="") { model.vc_Code= dt.Rows[n]["vc_Code"].ToString(); } if(dt.Rows[n]["vc_Name"]!=null && dt.Rows[n]["vc_Name"].ToString()!="") { model.vc_Name= dt.Rows[n]["vc_Name"].ToString(); } if(dt.Rows[n]["CallingOriID"]!=null && dt.Rows[n]["CallingOriID"].ToString()!="") { model.CallingOriID=int.Parse(dt.Rows[n]["CallingOriID"].ToString()); } if(dt.Rows[n]["vc_CalledNumber"]!=null && dt.Rows[n]["vc_CalledNumber"].ToString()!="") { model.vc_CalledNumber= dt.Rows[n]["vc_CalledNumber"].ToString(); } if(dt.Rows[n]["i_CalledType"]!=null && dt.Rows[n]["i_CalledType"].ToString()!="") { model.i_CalledType=int.Parse(dt.Rows[n]["i_CalledType"].ToString()); } if(dt.Rows[n]["i_CalledSubType"]!=null && dt.Rows[n]["i_CalledSubType"].ToString()!="") { model.i_CalledSubType=int.Parse(dt.Rows[n]["i_CalledSubType"].ToString()); } if(dt.Rows[n]["DestRouteID"]!=null && dt.Rows[n]["DestRouteID"].ToString()!="") { model.DestRouteID=int.Parse(dt.Rows[n]["DestRouteID"].ToString()); } if(dt.Rows[n]["i_CalledChangeType"]!=null && dt.Rows[n]["i_CalledChangeType"].ToString()!="") { model.i_CalledChangeType=int.Parse(dt.Rows[n]["i_CalledChangeType"].ToString()); } if(dt.Rows[n]["i_CalledChangePosition"]!=null && dt.Rows[n]["i_CalledChangePosition"].ToString()!="") { model.i_CalledChangePosition=int.Parse(dt.Rows[n]["i_CalledChangePosition"].ToString()); } if(dt.Rows[n]["i_CalledChangeLength"]!=null && dt.Rows[n]["i_CalledChangeLength"].ToString()!="") { model.i_CalledChangeLength=int.Parse(dt.Rows[n]["i_CalledChangeLength"].ToString()); } if(dt.Rows[n]["vc_CalledChangeTarget"]!=null && dt.Rows[n]["vc_CalledChangeTarget"].ToString()!="") { model.vc_CalledChangeTarget= dt.Rows[n]["vc_CalledChangeTarget"].ToString(); } if(dt.Rows[n]["vc_Memo"]!=null && dt.Rows[n]["vc_Memo"].ToString()!="") { model.vc_Memo= dt.Rows[n]["vc_Memo"].ToString(); } if(dt.Rows[n]["i_SIPID"]!=null && dt.Rows[n]["i_SIPID"].ToString()!="") { model.i_SIPID=int.Parse(dt.Rows[n]["i_SIPID"].ToString()); } if(dt.Rows[n]["i_PRIID"]!=null && dt.Rows[n]["i_PRIID"].ToString()!="") { model.i_PRIID=int.Parse(dt.Rows[n]["i_PRIID"].ToString()); } if(dt.Rows[n]["i_Flag"]!=null && dt.Rows[n]["i_Flag"].ToString()!="") { model.i_Flag=int.Parse(dt.Rows[n]["i_Flag"].ToString()); } modelList.Add(model); } } return modelList; }
/// <summary> /// 根据条件得到一个对象实体 /// </summary> public DB_Talk.Model.m_CalledRule GetModel(string strWhere) { StringBuilder strSql=new StringBuilder(); strSql.Append(" select top 1 "); strSql.Append(" ID, CalledID, BoxID, vc_Code, vc_Name, CallingOriID, vc_CalledNumber, i_CalledType, i_CalledSubType, DestRouteID, i_CalledChangeType, i_CalledChangePosition, i_CalledChangeLength, vc_CalledChangeTarget, vc_Memo, i_SIPID, i_PRIID, i_Flag "); strSql.Append(" from m_CalledRule "); if(strWhere.Trim()!="") { strSql.Append(" where "+strWhere); } DB_Talk.Model.m_CalledRule model=new DB_Talk.Model.m_CalledRule(); DataSet ds=GetDataSet(strSql.ToString()); if(ds!=null && ds.Tables[0].Rows.Count>0) { model=DataTableToList(ds)[0]; return model; } else { return null; } }
//获取呼叫规则 private void GetCalledRule(int SIPID,int PRIID, string strNewOutNumber, string strOldOutNumber, ref List<DB_Talk.Model.m_CalledRule> lstAdd, ref List<DB_Talk.Model.m_CalledRule> lstDelete,MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE CalledSubType) { //出局号码被叫规则 string mes = ""; string[] strArrayAdd = strNewOutNumber.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); //lstAdd = new List<DB_Talk.Model.m_CalledRule>(); //lstDelete = new List<DB_Talk.Model.m_CalledRule>(); foreach (string str in strArrayAdd) //出局规则 { strOldOutNumber=strOldOutNumber.Replace(str, ""); //从旧的引导码中除去新的引导码 DB_Talk.Model.m_CalledRule m = new DB_Talk.Model.m_CalledRule(); m.CalledID = 1; m.CallingOriID = 1; m.vc_CalledNumber = (str); int num = 0; if (!int.TryParse(str, out num) || num<0 || num > 99999) { throw new Exception("号码前缀必须是0~99999之间的数字"); } m.i_CalledType = MBoxSDK.ConfigSDK.CALLED_RULE_TYPE.出局.GetHashCode(); //service m.i_CalledSubType = CalledSubType.GetHashCode();// MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.长途.GetHashCode(); m.DestRouteID = 0; m.i_CalledChangeType = MBoxSDK.ConfigSDK.CALLED_RULE_TransAct.DELETE.GetHashCode(); m.i_CalledChangePosition = 0; m.i_CalledChangeLength = str.Length; m.vc_CalledChangeTarget = ""; m.i_SIPID = SIPID; m.i_PRIID = PRIID; m.BoxID = Global.Params.BoxID; //if (!new Tools.MBoxOperate().IsExitCalledRule(m)) lst.Add(m); //if (new Tools.MBoxOperate().IsExitCalledRule(m, out mes) && mes != "") //{ // throw (new Exception("已经存在被叫号码为【" + mes + "】的呼叫规则!")); //} List<DB_Talk.Model.m_CalledRule> lstTemp = new DB_Talk.BLL.m_CalledRule().GetModelList( string.Format(" i_Flag=0 and vc_CalledNumber='{0}' and BoxID='{1}'", m.vc_CalledNumber, Global.Params.BoxID)); if (lstTemp.Count > 0) { if(m.Equals(lstTemp[0])) //完全相同 { } else if (m.vc_CalledNumber == lstTemp[0].vc_CalledNumber) //引导码相同 { throw (new Exception("已经存在被叫号码为【" + m.vc_CalledNumber + "】的呼叫规则!")); } } else lstAdd.Add(m); } string[] strArrayDelete = strOldOutNumber.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string str in strArrayDelete) //出局规则 { DB_Talk.Model.m_CalledRule m = new DB_Talk.Model.m_CalledRule(); m.CalledID = 1; m.CallingOriID = 1; m.vc_CalledNumber = (str); m.i_CalledType = MBoxSDK.ConfigSDK.CALLED_RULE_TYPE.出局.GetHashCode(); //service m.i_CalledSubType = CalledSubType.GetHashCode();// MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.长途.GetHashCode(); m.DestRouteID = 0; m.i_CalledChangeType = MBoxSDK.ConfigSDK.CALLED_RULE_TransAct.DELETE.GetHashCode(); m.i_CalledChangePosition = 0; m.i_CalledChangeLength = str.Length; m.vc_CalledChangeTarget = ""; m.BoxID = Global.Params.BoxID; lstDelete.Add(m); } }
//创建基础的 呼叫源,路由规则,呼叫源规则,*000的被叫规则 public static bool CreateCalinglSourceRule() { //创建呼叫源,1,任何类型,任何类型 DB_Talk.Model.m_CallingSource modelCs = new DB_Talk.Model.m_CallingSource(); modelCs.ID = 1; modelCs.i_MainType = 6; //任何类型 modelCs.i_SubType = 1; //任何类型 modelCs.BoxID=Global.Params.BoxID; List<DB_Talk.Model.m_CallingSource> list = new DB_Talk.BLL.m_CallingSource().GetModelList( string.Format(" i_Flag=0 and ID='{0}' and i_MainType='{1}' and i_SubType='{2}' and BoxID='{3}'", modelCs.ID, modelCs.i_MainType, modelCs.i_SubType, modelCs.BoxID)); if (list.Count == 0) //不存在才创建 { if (!CreateCallSource(modelCs)) return false; } //创建路由规则0,0,0 DB_Talk.Model.m_RouteRule modelRRule = new DB_Talk.Model.m_RouteRule(); modelRRule.ID = 0; modelRRule.OriRouteID = 0; modelRRule.DestRouteID = 0; modelRRule.BoxID = Global.Params.BoxID; List<DB_Talk.Model.m_RouteRule> listModelRRule = new DB_Talk.BLL.m_RouteRule().GetModelList( string.Format(" i_Flag=0 and ID='{0}' and OriRouteID='{1}' and DestRouteID='{2}' and BoxID='{3}'", modelRRule.ID, modelRRule.OriRouteID, modelRRule.DestRouteID, modelRRule.BoxID)); if (listModelRRule.Count == 0) { if (!CreateRoutingRule(modelRRule)) return false; } //创建呼叫源规则,1,不限,0,1,0 DB_Talk.Model.m_CalinglSourceRule CalinglSourceRule = new DB_Talk.Model.m_CalinglSourceRule(); CalinglSourceRule.CallingOrigID = 1; //呼叫源索引1 CalinglSourceRule.i_ServerType = 1; //服务类型不限 CalinglSourceRule.i_MinReLength = 0; //最小收号长度0 CalinglSourceRule.CalledRuleID = 1; //被叫分析规则索引1 CalinglSourceRule.OriRouteID = 0; //目的路由索引 CalinglSourceRule.BoxID = Global.Params.BoxID; List<DB_Talk.Model.m_CalinglSourceRule> listCallingSource = new DB_Talk.BLL.m_CalinglSourceRule().GetModelList( string.Format(" i_Flag=0 and CallingOrigID='{0}' and CalledRuleID='{1}' and i_ServerType='{2}' and OriRouteID='{3}' and BoxID='{4}'", CalinglSourceRule.CallingOrigID, CalinglSourceRule.CalledRuleID,CalinglSourceRule.i_ServerType, CalinglSourceRule.OriRouteID, CalinglSourceRule.BoxID)); if (listCallingSource.Count == 0) { if (!CreateCallSourceRule(CalinglSourceRule)) return false; } //设置默认的被叫规则 DB_Talk.Model.m_CalledRule CalledRule = new DB_Talk.Model.m_CalledRule(); CalledRule.BoxID = Global.Params.BoxID; CalledRule.CalledID = 1; CalledRule.CallingOriID = 1; CalledRule.DestRouteID = 0; CalledRule.vc_CalledNumber = "*000"; CalledRule.i_CalledType = MBoxSDK.ConfigSDK.CALLED_RULE_TYPE.SERVICE.GetHashCode(); CalledRule.i_CalledSubType = MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.话务员.GetHashCode(); List<DB_Talk.Model.m_CalledRule> listCall = new DB_Talk.BLL.m_CalledRule().GetModelList( string.Format(" i_Flag=0 and vc_CalledNumber='{0}' and BoxID='{1}'", CalledRule.vc_CalledNumber, CalledRule.BoxID)); if (listCall.Count == 0) { if (CreateCalledRule(CalledRule)) new DB_Talk.BLL.m_CalledRule().Add(CalledRule); else return false; } //默认400的规则 DB_Talk.Model.m_CalledRule CalledRule400 = new DB_Talk.Model.m_CalledRule(); CalledRule400.BoxID = Global.Params.BoxID; CalledRule400.CalledID = 1; CalledRule400.CallingOriID = 1; CalledRule400.DestRouteID = 0; CalledRule400.vc_CalledNumber = "400"; CalledRule400.i_CalledType = MBoxSDK.ConfigSDK.CALLED_RULE_TYPE.SERVICE.GetHashCode(); CalledRule400.i_CalledSubType = MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.FD.GetHashCode(); CalledRule400.i_CalledChangeType = 2; CalledRule400.i_CalledChangeLength = 3; List<DB_Talk.Model.m_CalledRule> listCall400 = new DB_Talk.BLL.m_CalledRule().GetModelList( string.Format(" i_Flag=0 and vc_CalledNumber='{0}' and BoxID='{1}'", CalledRule400.vc_CalledNumber, CalledRule400.BoxID)); if (listCall400.Count == 0) { if (CreateCalledRule(CalledRule400)) new DB_Talk.BLL.m_CalledRule().Add(CalledRule400); else return false; } return true; }
//查询被叫分析规则 private static bool QueryCalledRule(out List<DB_Talk.Model.m_CalledRule> lst) { lst = new List<DB_Talk.Model.m_CalledRule>(); try { bool b = false; byte[] byteArray = new byte[ArraySizeBig]; int len = ArraySizeBig; b = MBoxSDK.ConfigSDK.MBOX_GetCalledNumAnalysisRule(Global.Params.BoxHandle, byteArray, (uint)byteArray.Length, ref len); //if (b) { string strR = System.Text.Encoding.Default.GetString(byteArray); strR = strR.Replace("\0", ""); string[] strArrayS = strR.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < strArrayS.Length; i++) { DB_Talk.Model.m_CalledRule m = new DB_Talk.Model.m_CalledRule(); //string[] strArrayS2 = strArrayS[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); string[] strArrayS2 = strArrayS[i].Split(','); //目标字符串是空的,所有不能去掉空串 m.CalledID = (int.Parse(strArrayS2[0])); m.CallingOriID = (int.Parse(strArrayS2[1])); m.vc_CalledNumber = ((strArrayS2[2])); m.i_CalledType = (int.Parse(strArrayS2[3])); m.i_CalledSubType = (int.Parse(strArrayS2[4])); m.DestRouteID = (int.Parse(strArrayS2[5])); m.i_CalledChangeType = (int.Parse(strArrayS2[6])); m.i_CalledChangePosition = (int.Parse(strArrayS2[7])); m.i_CalledChangeLength = (int.Parse(strArrayS2[8])); m.vc_CalledChangeTarget = strArrayS2[9]; m.BoxID = Global.Params.BoxID; lst.Add(m); } } return b; } catch(Exception ex) { CommControl.Tools.WriteLog.AppendErrorLog(ex); return false; } }
public List<DB_Talk.Model.m_CalledRule> getLstCalledRule() { List<DB_Talk.Model.m_CalledRule> lst = new List<DB_Talk.Model.m_CalledRule>(); DB_Talk.Model.m_CalledRule model = new DB_Talk.Model.m_CalledRule(); //调度呼叫规则 model.CalledID = 1; model.CallingOriID = 1; model.vc_CalledNumber = (txtDispatchCenter.Text.Trim()); model.i_CalledType = MBoxSDK.ConfigSDK.CALLED_RULE_TYPE.SERVICE.GetHashCode(); //service model.i_CalledSubType = MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.话务员.GetHashCode(); model.DestRouteID = 0; model.i_CalledChangeType = MBoxSDK.ConfigSDK.CALLED_RULE_TransAct.NONE.GetHashCode(); model.i_CalledChangePosition = 0; model.i_CalledChangeLength = 0; model.vc_CalledChangeTarget = ""; model.BoxID = Global.Params.BoxID; string mes = ""; if (new Tools.MBoxOperate().IsExitCalledRule(model, out mes)) { if (mes != "") throw (new Exception("已经存在被叫号码为【" + mes + "】的呼叫规则!")); else OldlstCalledRule.Remove(model); } else lst.Add(model); DB_Talk.Model.m_CalledRule mEm = new DB_Talk.Model.m_CalledRule(); //紧急呼叫规则 mEm.CalledID = 1; mEm.CallingOriID = 1; mEm.vc_CalledNumber = (TxtEmergencyNumber.Text.Trim());//int.Parse(EmergencyNumber);// mEm.i_CalledType = MBoxSDK.ConfigSDK.CALLED_RULE_TYPE.SERVICE.GetHashCode(); //service mEm.i_CalledSubType = MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.紧急呼叫.GetHashCode(); mEm.DestRouteID = 0; mEm.i_CalledChangeType = MBoxSDK.ConfigSDK.CALLED_RULE_TransAct.NONE.GetHashCode(); mEm.i_CalledChangePosition = 0; mEm.i_CalledChangeLength = 0; mEm.vc_CalledChangeTarget = ""; mEm.BoxID = Global.Params.BoxID; //if (!new Tools.MBoxOperate().IsExitCalledRule(mEm)) lst.Add(mEm); if (new Tools.MBoxOperate().IsExitCalledRule(mEm, out mes) ) { if (mes != "") throw (new Exception("已经存在被叫号码为【" + mes + "】的呼叫规则!")); else OldlstCalledRule.Remove(mEm); } else lst.Add(mEm); //入局号码被叫规则 string strNums = chkNumHead.EditValue.ToString().Trim().Replace(" ",""); string[] strArray = strNums.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (string str in strArray) //入局规则 { DB_Talk.Model.m_CalledRule m = new DB_Talk.Model.m_CalledRule(); m.CalledID = 1; m.CallingOriID = 1; m.vc_CalledNumber = str.Trim(); m.i_CalledType = MBoxSDK.ConfigSDK.CALLED_RULE_TYPE.入局.GetHashCode(); //service m.i_CalledSubType = MBoxSDK.ConfigSDK.CALLED_SUB_RULE_TYPE.SUB.GetHashCode(); m.DestRouteID = 0; m.i_CalledChangeType = MBoxSDK.ConfigSDK.CALLED_RULE_TransAct.NONE.GetHashCode(); m.i_CalledChangePosition = 0; m.i_CalledChangeLength = 0; m.vc_CalledChangeTarget = ""; m.BoxID = Global.Params.BoxID; //if (!new Tools.MBoxOperate().IsExitCalledRule(m)) lst.Add(m); if (new Tools.MBoxOperate().IsExitCalledRule(m, out mes)) { if (mes != "") throw (new Exception("已经存在被叫号码为【" + mes + "】的呼叫规则!")); else OldlstCalledRule.Remove(m); } else lst.Add(m); } return lst; }