using CallCenterApi.Common; using CallCenterApi.DB; using CallCenterApi.Interface.Controllers.Base; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Globalization; using System.Linq; using System.Web; using System.Web.Mvc; namespace CallCenterApi.Interface.Controllers.County { [Authority] public class CountyTelController : BaseController { // GET: CountyTel /// /// 平台展示 /// /// /// /// public ActionResult GetAreaTodayTelShowReport(string branchcode,DateTime? date) { if (date == null) { date = DateTime.Now; } string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } ArrayList result = new ArrayList(); var list = new BLL.T_Branch_List().GetModelList(sqlwhere); string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); foreach (var l in list) { if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url)) { string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign); string strparams = "?date=" + date.Value.ToString("yyyy-MM-dd") + "&signcode=" + signcode; AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject(); if (ar.state.ToString() == ResultTypes.success.ToString()) { var rtlist = ar.data.ToJson().ToList>(); result.AddRange(rtlist); } } } return Success("成功", result); } /// /// 获取通话记录列表 /// /// /// /// public ActionResult GetAreaTelList(string branchcode, int isdc = 0) { string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } else { return Error("请选择区县"); } //ArrayList result = new ArrayList(); var list = new BLL.T_Branch_List().GetModelList(sqlwhere); if (list.Count == 0) { return Error("查询失败"); } string phone = HttpUtility.UrlDecode(RequestString.GetQueryString("phone")); string usercode = HttpUtility.UrlDecode(RequestString.GetQueryString("usercode")); string callstate = HttpUtility.UrlDecode(RequestString.GetQueryString("callstate")); string calltype = HttpUtility.UrlDecode(RequestString.GetQueryString("calltype")); string starttime = HttpUtility.UrlDecode(RequestString.GetQueryString("starttime")); string endtime = HttpUtility.UrlDecode(RequestString.GetQueryString("endtime")); int type = RequestString.GetInt("type", 0); string strpageindex = RequestString.GetQueryString("page"); int pageindex = 1; string strpagesize = RequestString.GetQueryString("pagesize"); int pagesize = 10; if (!string.IsNullOrEmpty(strpageindex) && strpageindex.Trim() != "") { pageindex = Convert.ToInt32(strpageindex); } if (!string.IsNullOrEmpty(strpagesize) && strpagesize.Trim() != "") { pagesize = Convert.ToInt32(strpagesize); } string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); //foreach (var l in list) //{ // if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url)) // { // string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign); // string strparams = "?phone=" + phone + "&usercode=" + usercode + "&callstate=" + callstate + "&calltype=" + calltype // + "&starttime=" + starttime + "&endtime=" + endtime + "&pageindex=" + pageindex + "&pagesize=" + pagesize + "&signcode=" + signcode; // AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject(); // if (ar.state.ToString() == ResultTypes.success.ToString()) // { // var rtlist = ar.data.ToJson().ToList>(); // result.AddRange(rtlist); // } // } //} //var obj = new //{ // state = "success", // message = "成功", // rows = result, // total = 0 //}; if (!string.IsNullOrEmpty(list[0].F_Url)) { string signcode = CommonHelper.getsigncode(controllername, actionname, list[0].F_Sign); string strparams = "?phone=" + phone + "&usercode=" + usercode + "&callstate=" + callstate + "&calltype=" + calltype + "&starttime=" + starttime + "&endtime=" + endtime + "&page=" + pageindex + "&pagesize=" + pagesize + "&signcode=" + signcode; if (isdc > 0) { ArrayList result = new ArrayList(); string strresult = HttpMethods.HttpGet(list[0].F_Url + "/" + controllername + "/" + actionname + strparams + "&isall=1"); result.AddRange(strresult.ToList>()); string[] cols = new string[] { "电话号码", "呼叫方向", "呼叫状态", "通话类型", "坐席工号","坐席姓名", "开始时间", "通话开始时间", "通话结束时间", "通话时长", "振铃时长", "总时长" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("通话记录", result, cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } else { string result = HttpMethods.HttpGet(list[0].F_Url + "/" + controllername + "/" + actionname + strparams); return Content(result); } } else { var obj = new { state = "success", message = "成功", rows = new DataTable(), total = 0 }; return Content(obj.ToJson()); } } /// /// 座席话务量 /// /// /// /// public ActionResult GetAreaSeatTel(string branchcode, DateTime? start, DateTime? end, int isdc = 0) { if (start == null) { start = DateTime.Now; start = new DateTime(start.Value.Year, start.Value.Month, 1); } if (end == null) { end = DateTime.Now; } string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } ArrayList result = new ArrayList(); var list = new BLL.T_Branch_List().GetModelList(sqlwhere); string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); foreach (var l in list) { if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url)) { string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign); string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&signcode=" + signcode; AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject(); if (ar.state.ToString() == ResultTypes.success.ToString()) { var rtlist = ar.data.ToJson().ToList>(); result.AddRange(rtlist); } } } if (isdc > 0) { string[] cols = new string[] { "区县名称","姓名", "工号", "呼入量", "呼入接听量", "呼入接听率", "呼入接听时长", "平均呼入接听时长", "呼入呼损量", "呼入呼损率", "呼出量", "呼出接听量", "呼出接听率", "呼出接听时长", "平均呼出接听时长", "呼出呼损量", "呼出呼损率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("座席话务量报表", result, cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", result); } /// /// 话务时日周月报 /// /// public ActionResult GetAreaHDWMTelReport(string branchcode, string start, string end, int dateType = 1, int isdc = 0) { if (string.IsNullOrEmpty(start)) { switch (dateType) { case 1: start = DateTime.Now.ToString("yyyy-MM"); break; case 2: GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); start = DateTime.Now.ToString("yyyy") + "-w" + (weeks < 10 ? "0" + weeks.ToString() : weeks.ToString()); break; case 3: start = DateTime.Now.ToString("yyyy-MM-dd"); break; case 4: start = DateTime.Now.ToString("yyyy-MM-dd") + " 00"; break; } } if (string.IsNullOrEmpty(end)) { switch (dateType) { case 1: end = DateTime.Now.ToString("yyyy-MM"); break; case 2: GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); end = DateTime.Now.ToString("yyyy") + "-w" + (weeks < 10 ? "0" + weeks.ToString() : weeks.ToString()); break; case 3: end = DateTime.Now.ToString("yyyy-MM-dd"); break; case 4: end = DateTime.Now.ToString("yyyy-MM-dd HH"); break; } } string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } ArrayList result = new ArrayList(); var list = new BLL.T_Branch_List().GetModelList(sqlwhere); string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); foreach (var l in list) { if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url)) { string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign); string strparams = "?start=" + start + "&end=" + end + "&dateType=" + dateType + "&signcode=" + signcode; AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject(); if (ar.state.ToString() == ResultTypes.success.ToString()) { var rtlist = ar.data.ToJson().ToList>(); result.AddRange(rtlist); } } } if (isdc > 0) { string[] cols = new string[] { "区县名称", "时间", "呼入量", "呼入接听量", "呼入接听率","呼入通话时长", "平均呼入通话时长", "呼入呼损量", "呼入呼损率", "呼出量", "呼出接听量", "呼出接听率", "呼出通话时长", "平均呼出通话时长","呼出呼损量", "呼出呼损率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("话务量报表", result, cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", result); } /// /// 运营指标时日周月报 /// /// public ActionResult GetAreaHDWMOpeTelReport(string branchcode, string start, string end, int dateType = 1, int isdc = 0) { if (string.IsNullOrEmpty(start)) { switch (dateType) { case 1: start = DateTime.Now.ToString("yyyy-MM"); break; case 2: GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); start = DateTime.Now.Date.ToString("yyyy") + "-w" + (weeks < 10 ? "0" + weeks.ToString() : weeks.ToString()); break; case 3: start = DateTime.Now.ToString("yyyy-MM-dd"); break; case 4: start = DateTime.Now.ToString("yyyy-MM-dd") + " 00"; break; } } if (string.IsNullOrEmpty(end)) { switch (dateType) { case 1: end = DateTime.Now.ToString("yyyy-MM"); break; case 2: GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); end = DateTime.Now.Date.ToString("yyyy") + "-w" + (weeks < 10 ? "0" + weeks.ToString() : weeks.ToString()); break; case 3: end = DateTime.Now.ToString("yyyy-MM-dd"); break; case 4: end = DateTime.Now.ToString("yyyy-MM-dd HH"); break; } } string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } ArrayList result = new ArrayList(); var list = new BLL.T_Branch_List().GetModelList(sqlwhere); string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); foreach (var l in list) { if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url)) { string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign); string strparams = "?start=" + start + "&end=" + end + "&dateType=" + dateType + "&signcode=" + signcode; AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject(); if (ar.state.ToString() == ResultTypes.success.ToString()) { var rtlist = ar.data.ToJson().ToList>(); result.AddRange(rtlist); } } } if (isdc > 0) { string[] cols = new string[] { "区县名称", "时间", "呼入量", "呼入接听量", "呼入接听率", "20s接听量", "20s接听率", "呼入通话时长", "平均呼入通话时长", "呼入振铃时长", "平均呼入振铃时长", "呼入呼损量", "呼入呼损率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("运营话务量报表", result, cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", result); } /// /// 队列统计报表时日周月报 /// /// public ActionResult GetAreaHDWMQueueTelReport(string branchcode, string start, string end, int dateType = 1, int isdc = 0) { if (string.IsNullOrEmpty(start)) { switch (dateType) { case 1: start = DateTime.Now.ToString("yyyy-MM"); break; case 2: GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); start = DateTime.Now.Date.ToString("yyyy") + "-w" + (weeks < 10 ? "0" + weeks.ToString() : weeks.ToString()); break; case 3: start = DateTime.Now.ToString("yyyy-MM-dd"); break; case 4: start = DateTime.Now.ToString("yyyy-MM-dd") + " 00"; break; } } if (string.IsNullOrEmpty(end)) { switch (dateType) { case 1: end = DateTime.Now.ToString("yyyy-MM"); break; case 2: GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); end = DateTime.Now.Date.ToString("yyyy") + "-w" + (weeks < 10 ? "0" + weeks.ToString() : weeks.ToString()); break; case 3: end = DateTime.Now.ToString("yyyy-MM-dd"); break; case 4: end = DateTime.Now.ToString("yyyy-MM-dd HH"); break; } } string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } ArrayList result = new ArrayList(); var list = new BLL.T_Branch_List().GetModelList(sqlwhere); string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); foreach (var l in list) { if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url)) { string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign); string strparams = "?start=" + start + "&end=" + end + "&dateType=" + dateType + "&signcode=" + signcode; AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject(); if (ar.state.ToString() == ResultTypes.success.ToString()) { var rtlist = ar.data.ToJson().ToList>(); result.AddRange(rtlist); } } } if (isdc > 0) { string[] cols = new string[] { "区县名称", "时间", "呼入量", "呼入接听量", "呼入接听率", "呼入通话时长", "平均呼入通话时长","最长通话时长", "最短呼入通话时长", "呼入振铃时长", "平均呼入振铃时长", "呼入呼损量", "呼入呼损率" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("队列统计报表", result, cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", result); } /// /// 队列排队等待时长报表时日周月报 /// /// public ActionResult GetAreaHDWMQueueWaitReport(string branchcode, string start, string end, int dateType = 1, int isdc = 0) { if (string.IsNullOrEmpty(start)) { switch (dateType) { case 1: start = DateTime.Now.ToString("yyyy-MM"); break; case 2: GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); start = DateTime.Now.Date.ToString("yyyy") + "-w" + (weeks < 10 ? "0" + weeks.ToString() : weeks.ToString()); break; case 3: start = DateTime.Now.ToString("yyyy-MM-dd"); break; case 4: start = DateTime.Now.ToString("yyyy-MM-dd") + " 00"; break; } } if (string.IsNullOrEmpty(end)) { switch (dateType) { case 1: end = DateTime.Now.ToString("yyyy-MM"); break; case 2: GregorianCalendar gc = new GregorianCalendar(); int weeks = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); end = DateTime.Now.Date.ToString("yyyy") + "-w" + (weeks < 10 ? "0" + weeks.ToString() : weeks.ToString()); break; case 3: end = DateTime.Now.ToString("yyyy-MM-dd"); break; case 4: end = DateTime.Now.ToString("yyyy-MM-dd HH"); break; } } string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } ArrayList result = new ArrayList(); var list = new BLL.T_Branch_List().GetModelList(sqlwhere); string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); foreach (var l in list) { if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url)) { string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign); string strparams = "?start=" + start + "&end=" + end + "&dateType=" + dateType + "&signcode=" + signcode; AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject(); if (ar.state.ToString() == ResultTypes.success.ToString()) { var rtlist = ar.data.ToJson().ToList>(); result.AddRange(rtlist); } } } if (isdc > 0) { string[] cols = new string[] { "区县名称", "时间", "0-5秒", "6-10秒", "11-15秒", "16-20秒", "21-25秒","26-30秒", "31-50秒","50秒以上" }; NPOIHelper npoi = new NPOIHelper(); if (npoi.ExportToExcel("队列排队等待时长报表", result, cols) == "") { return Success("导出成功"); } else { return Error("导出失败"); } } return Success("成功", result); } /// /// 网点今日话务量数据收集 /// /// /// /// public ActionResult GetAreaTodayTelReport(string branchcode, DateTime? date) { if (date == null) { date = DateTime.Now; } string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } ArrayList result = new ArrayList(); var list = new BLL.T_Branch_List().GetModelList(sqlwhere); string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); foreach (var l in list) { if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url)) { string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign); string strparams = "?date=" + date.Value.ToString("yyyy-MM-dd") + "&signcode=" + signcode; AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject(); if (ar.state.ToString() == ResultTypes.success.ToString()) { var rtlist = ar.data.ToJson().ToList>(); result.AddRange(rtlist); } } } return Success("成功", result); } /// /// 座席列表 /// /// /// /// public ActionResult GetAreaSeatList(string branchcode) { string sqlwhere = " F_IsDelete=0 "; if (!string.IsNullOrEmpty(branchcode)) { sqlwhere += " and F_Code='" + branchcode + "'"; } else { return Error("请选择区县"); } var list = new BLL.T_Branch_List().GetModelList(sqlwhere); if (list.Count == 0) { return Error("查询失败"); } string controllername = RouteData.Values["controller"].ToString(); string actionname = RouteData.Values["action"].ToString(); string signcode = CommonHelper.getsigncode(controllername, actionname, list[0].F_Sign); string strparams = "?signcode=" + signcode; string result = HttpMethods.HttpGet(list[0].F_Url + "/" + controllername + "/" + actionname + strparams); return Content(result); } } }