コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }