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);
}
}
}