public bool UpdateAutoDialerTask(AutoDialerTaskInfoModel taskInfo, out string message) { message = "操作失败,请与管理员联系"; bool result = false; if (taskInfo.Status == 1 || taskInfo.Status == 2) { message = "请将当前任务置为停止状态后再修改信息"; return(false); } try { DbUtil.IVRDBManager.BeginTransaction(); string updateSql = @" UPDATE [Dialer_Info_Project] SET [ProjectName] = $projectName$, [ProjectCmt] = $description$, [CampaignID] = 1, [Start_Date] = $beginTime$, [End_Date] = $endTime$, [Start_Time1] = $startTime1$, [End_Time1] = $stopTime1$, [Start_Time2] = $startTime2$, [End_Time2] = $stopTime2$, [Start_Time3] = $startTime3$, [End_Time3] = $stopTime3$, [Start_Time4] = $startTime4$, [End_Time4] = $stopTime4$, [Modify_Time] = GETDATE(), [Modify_IP] = $modified_ip$ WHERE [Modifier] = $modifier$ AND ProjectID = $projectId$ "; ParameterCollection pc = new ParameterCollection(); pc.Add("projectId", taskInfo.IvrDialerProjectId); pc.Add("projectName", taskInfo.AutoDialerTaskName); pc.Add("description", taskInfo.Description); pc.Add("beginTime", taskInfo.BeginTime); pc.Add("endTime", taskInfo.EndTime); pc.Add("startTime1", taskInfo.StartTime1); pc.Add("startTime2", taskInfo.StartTime2); pc.Add("startTime3", taskInfo.StartTime3); pc.Add("startTime4", taskInfo.StartTime4); pc.Add("stopTime1", taskInfo.StopTime1); pc.Add("stopTime2", taskInfo.StopTime2); pc.Add("stopTime3", taskInfo.StopTime3); pc.Add("stopTime4", taskInfo.StopTime4); pc.Add("modifier", taskInfo.AutoDialerTaskId); pc.Add("modified_ip", SessionUtil.GetClientIPAddress()); if (DbUtil.IVRDBManager.IData.ExecuteNonQuery(updateSql, pc) == 1) { if (Update(taskInfo) == 1) { DbUtil.IVRDBManager.CommitTransaction(); message = "更新自动外呼任务基本信息成功"; result = true; } else { DbUtil.IVRDBManager.RollbackTransaction(); message = "更新IBP系统自动外呼任务基本信息失败,请与管理员联系"; result = false; } } else { DbUtil.IVRDBManager.RollbackTransaction(); message = "更新IVR系统自动外呼任务信息失败,请与管理员联系"; result = false; } } catch (Exception ex) { DbUtil.IVRDBManager.RollbackTransaction(); LogUtil.Error("更新自动外呼任务信息异常", ex); throw ex; } return(result); }
/// <summary> /// 执行自动外呼任务。 /// </summary> /// <param name="taskId"></param> /// <param name="message"></param> /// <returns></returns> // public bool RunAutoDialerTask(string taskId, out string message) // { // bool result = false; // message = "操作失败,请与管理员联系"; // AutoDialerTaskInfoModel taskInfo = Retrieve(taskId); // if (taskInfo == null) // { // message = "操作失败,当前任务ID不存在"; // return false; // } // if (taskInfo.Status != 0) // { // message = "操作失败,当前任务已经执行或完成"; // return false; // } // if (taskInfo.DialerNumberTotal == 0) // { // message = "操作失败,当前任务外呼号码未添加"; // return false; // } // #region 往TF_CMS数据库中插入数据 // List<AutoDialerTaskNumberInfoModel> numberList = GetAutoDialerTaskNumberList(taskInfo.AutoDialerTaskId); // if (numberList != null && numberList.Count > 0) // { // string insertSql = @" //INSERT INTO [DIALER_INFO] // ([DIALER_ID] // ,[PHONE] // ,[DIALER_TYPE] // ,[BEGIN_TIME] // ,[INTERVAL] // ,[TIMES] // ,[GENERATE_TIME] // ,[AGENT_ID] // ,[PRIORITY] // ,[LOCK_ID] // ,[LOCK_TIME] // ,[LOCK_PORT] // ,[FREE_ID] // ,[TRANSFER_AGENT] // ,[FILE_NAME] // ,[TTS_TEXT] // ,[CONTENT] // ,[EVENT_ID] // ,[MONEY_DATE] // ,[TOTAL_MONEY] // ,[NBH]) // VALUES // ($numberId$, -- 外拨任务编号 // $number$, -- 外拨号码 // '', -- 1, -- 外拨类型 // $begintime$, -- 外拨开始时间 // $interval$, -- 外拨时间间隔 // $trycount$, -- 外拨失败重试次数 // GETDATE(), -- 外拨任务添加时间,可默认为记录添加当前的系统时间 // '', -- null, -- 座席ID(预留字段) // $priority$, -- 优先级(需赋初值,1即可) // 0, -- 是否锁定(需赋初值,0即可) // '1900-1-1', -- 任务锁定时间(需赋初值,1900-1-1即可) // -1, -- null, -- 锁定端口 // 1, -- $taskId$, -- 对应的外拨任务ProjectID // '0', -- 是否转接座席 // null, -- 任务关联文件(预留字段) // null, -- 外拨成功播放的TTS内容(预留字段) // null, -- 任务关联文字内容 // null, -- 事件编号(预留字段) // null, -- 计费日期(预留字段) // null, -- 总费用(预留字段) // 0) -- 每小时费用(预留字段,需赋初值,0即可) // //"; // try // { // DbUtil.IVRDBManager.BeginTransaction(); // ParameterCollection ivrpc = new ParameterCollection(); // foreach (AutoDialerTaskNumberInfoModel numberInfo in numberList) // { // ivrpc.Clear(); // ivrpc.Add("numberId", numberInfo.AutoDialerNumberId); // ivrpc.Add("number", "9" + numberInfo.DialerNumber); // ivrpc.Add("begintime", taskInfo.BeginTime); // ivrpc.Add("interval", taskInfo.Interval); // ivrpc.Add("trycount", taskInfo.RetryCount); // ivrpc.Add("priority", taskInfo.Priority); // ivrpc.Add("taskId", taskInfo.AutoDialerTaskId); // if (DbUtil.IVRDBManager.IData.ExecuteNonQuery(insertSql, ivrpc) != 1) // { // RollbackTransaction(); // message = "操作失败,往IVR系统数据库传递自动外呼号码失败"; // return false; // } // } // taskInfo.Status = 1; // if (Update(taskInfo) == 1) // { // DbUtil.IVRDBManager.CommitTransaction(); // message = "成功启动该自动外呼任务"; // result = true; // } // } // catch (Exception ex) // { // DbUtil.IVRDBManager.RollbackTransaction(); // message = "操作失败,往IVR系统数据库传递自动外呼号码异常"; // LogUtil.Error("往IVR系统数据库传递自动外呼号码异常", ex); // return false; // } // } // #endregion // return result; // } /// <summary> /// 创建自动外呼任务。 /// </summary> /// <param name="taskInfo"></param> /// <returns></returns> public bool CreateNewAutoDialerTask(AutoDialerTaskInfoModel taskInfo, out string message) { bool result = false; message = "操作失败,请与管理员联系"; taskInfo.AutoDialerTaskId = Guid.NewGuid().ToString(); taskInfo.AutoDialerTaskCode = "ADT-" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); taskInfo.DialerNumberTotal = 0; taskInfo.Status = 0; //if (taskInfo.BeginTime < DateTime.Now) //{ // message = "操作失败,开始外呼时间不得早于当前时间"; // return false; //} if (taskInfo.Interval < 1) { taskInfo.Interval = 1; } string insSql = @" INSERT INTO [Dialer_Info_Project] ([ProjectName],[ProjectCmt],[CampaignID],[Status],[Start_Date],[End_Date],[Start_Time1],[End_Time1],[Start_Time2],[End_Time2],[Start_Time3],[End_Time3],[Start_Time4],[End_Time4],[Creator],[Modifier],[Create_Time],[Modify_Time],[Create_IP],[Modify_IP]) VALUES ($projectName$, -- <ProjectName, nvarchar(50),> $description$, -- <ProjectCmt, nvarchar(50),> 1, -- <CampaignID, int,> 'PAUSE', -- <Status, nvarchar(50),> CONVERT(varchar(100), $beginTime$, 20), -- <Start_Date, nvarchar(50),> CONVERT(varchar(100), $endTime$, 20), -- <End_Date, nvarchar(50),> $startTime1$, -- <Start_Time1, nvarchar(50),> $stopTime1$, -- <End_Time1, nvarchar(50),> $startTime2$, -- <Start_Time2, nvarchar(50),> $stopTime2$, -- <End_Time2, nvarchar(50),> $startTime3$, -- <Start_Time3, nvarchar(50),> $stopTime3$, -- <End_Time3, nvarchar(50),> $startTime4$, -- <Start_Time4, nvarchar(50),> $stopTime4$, -- <End_Time4, nvarchar(50),> $creator$, -- <Creator, nvarchar(50),> $modifier$, -- <Modifier, nvarchar(50),> $createdOn$, -- <Create_Time, nvarchar(50),> $modifiedOn$, -- <Modify_Time, nvarchar(50),> $create_ip$, -- <Create_IP, nvarchar(50),> $modified_ip$ -- <Modify_IP, nvarchar(50),> )"; ParameterCollection pc = new ParameterCollection(); pc.Add("projectName", taskInfo.AutoDialerTaskName); pc.Add("description", taskInfo.Description); pc.Add("beginTime", Convert.ToDateTime(taskInfo.BeginTime)); pc.Add("endTime", Convert.ToDateTime(taskInfo.EndTime)); pc.Add("startTime1", taskInfo.StartTime1); pc.Add("startTime2", taskInfo.StartTime2); pc.Add("startTime3", taskInfo.StartTime3); pc.Add("startTime4", taskInfo.StartTime4); pc.Add("stopTime1", taskInfo.StopTime1); pc.Add("stopTime2", taskInfo.StopTime2); pc.Add("stopTime3", taskInfo.StopTime3); pc.Add("stopTime4", taskInfo.StopTime4); pc.Add("creator", SessionUtil.Current.UserId); pc.Add("modifier", taskInfo.AutoDialerTaskId); pc.Add("createdOn", DateTime.Now); pc.Add("modifiedOn", DateTime.Now); pc.Add("create_ip", SessionUtil.GetClientIPAddress()); pc.Add("modified_ip", SessionUtil.GetClientIPAddress()); try { DbUtil.IVRDBManager.BeginTransaction(); if (DbUtil.IVRDBManager.IData.ExecuteNonQuery(insSql, pc) > 0) { string getIdSql = @"SELECT ProjectID FROM Dialer_Info_Project WHERE Modifier = $modifier$"; pc.Clear(); pc.Add("modifier", taskInfo.AutoDialerTaskId); object ivrProjectId = DbUtil.IVRDBManager.IData.ExecuteScalar(getIdSql, pc); if (ivrProjectId == null) { DbUtil.IVRDBManager.RollbackTransaction(); message = "获取IVR系统自动外呼任务ID失败,请与管理员联系"; return(false); } taskInfo.IvrDialerProjectId = Convert.ToInt32(ivrProjectId); if (Create(taskInfo) == 1) { DbUtil.IVRDBManager.CommitTransaction(); result = true; message = "成功报建自动外呼任务"; } else { DbUtil.IVRDBManager.RollbackTransaction(); result = false; message = "报建IBP系统自动外呼任务失败,请与管理员联系"; } } else { DbUtil.IVRDBManager.RollbackTransaction(); result = false; message = "创建IVR系统自动外呼任务失败,请与管理员联系"; } } catch (Exception ex) { DbUtil.IVRDBManager.RollbackTransaction(); LogUtil.Error("创建自动外呼任务异常", ex); throw ex; } return(result); }