using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using YTSoft.BaseCallCenter.Model;
using YTSoft.BaseCallCenter.MVCWeb.Commons;
using YTSoft.BaseCallCenter.MVCWeb.Models;
using YTSoft.Common;
namespace YTSoft.BaseCallCenter.MVCWeb.Controllers
{
public class ReportOtherController : BaseController
{
BLL.ReportBLL busReport = new BLL.ReportBLL();
#region 其他指标
public ActionResult GetindexView()
{
WorkOrderMyModel model = new WorkOrderMyModel();
return View(model);
}
///
/// 获取工单信息
///
/// 当前页码
/// 每页数据量
/// 查询条件
///
[ActionName("GetindexData")]
[HttpGet]
public string GetindexData(DateTime? NowDateTime, string dateParty)
{
//数据结果集
ResponseData dataModel = new ResponseData();
try
{
string startDate = "";
string endDate = "";
if (!string.IsNullOrEmpty(dateParty))
{
startDate = dateParty.Substring(0, 10);
endDate = dateParty.Substring(12);
}
else
{
startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
}
DataTable datas = null;
DataTable newTable = new DataTable();
//newTable.Columns.Add("ID");
newTable.Columns.Add("指标名称");
newTable.Columns.Add("指标值");
DataRow dataRow;
int OvertimeCount = 0;
#region 接通率
dataRow = newTable.NewRow();
datas = busReport.GetOtherData1(startDate, endDate);
if (datas != null && datas.Rows.Count > 0)
{
string data1 = "-";
int tempTotal = 0;
int tempint = 0;
foreach (DataRow thisRow in datas.Rows)
{
if (thisRow["CallState"].ToInt32() == 1)
{
tempint = thisRow["num"].ToInt32();
}
tempTotal += thisRow["num"].ToInt32();
}
if (tempTotal != 0)
{
data1 = (tempint / (double)tempTotal).ToString("0.00%");
}
dataRow["指标名称"] = "接通率";
dataRow["指标值"] = data1;
}
else
{
dataRow["指标名称"] = "接通率";
dataRow["指标值"] = "-";
}
newTable.Rows.Add(dataRow);
#endregion
#region 流失率
datas = busReport.GetOtherData2(startDate, endDate);
dataRow = newTable.NewRow();
if (datas != null && datas.Rows.Count > 0)
{
string data1 = "-";
int tempTotal = 0;
int tempint = 0;
foreach (DataRow thisRow in datas.Rows)
{
if (thisRow["CallState"].ToInt32() == 0)
{
tempint = thisRow["num"].ToInt32();
}
tempTotal += thisRow["num"].ToInt32();
}
if (tempTotal != 0)
{
data1 = (tempint / (double)tempTotal).ToString("0.00%");
}
dataRow["指标名称"] = "流失率";
dataRow["指标值"] = data1;
}
else
{
dataRow["指标名称"] = "流失率";
dataRow["指标值"] = "-";
}
newTable.Rows.Add(dataRow);
#endregion
#region 按时转出率
datas = busReport.GetOtherData3(startDate, endDate);
if (datas != null && datas.Rows.Count > 0)
{
string data1 = "-";
int tempTotal = 0;
int tempint = 0;
foreach (DataRow thisRow in datas.Rows)
{
if (thisRow["CallState"].ToInt32() == 1)
{
tempint = thisRow["num"].ToInt32();
}
tempTotal += thisRow["num"].ToInt32();
}
if (tempTotal != 0)
{
data1 = (tempint / (double)tempTotal).ToString("0.00%");
}
dataRow = newTable.NewRow();
dataRow["指标名称"] = "按时转出率";
dataRow["指标值"] = data1;
newTable.Rows.Add(dataRow);
}
#endregion
#region 首呼解决率
datas = busReport.GetOtherData10(startDate, endDate);
if (datas != null && datas.Rows.Count > 0)
{
string data1 = "100.00%";
string data2 = "-";
string data3 = "-";
int tempTotal = 0;
int tempint = 0;
int tempTotal1 = 0;
int tempint1 = 0;
int tempTotal2 = 0;
int tempint2 = 0;
foreach (DataRow thisRow in datas.Rows)
{
//if (thisRow["F_HOUSING"].ToMyString() == "咨询")
//{
// if (thisRow["CallState"].ToInt32() == 1)
// {
// tempint = thisRow["num"].ToInt32();
// }
// tempTotal += thisRow["num"].ToInt32();
//}
if (thisRow["F_HOUSING"].ToMyString() == "建议")
{
if (thisRow["CallState"].ToInt32() == 1)
{
tempint1 = thisRow["num"].ToInt32();
}
tempTotal1 += thisRow["num"].ToInt32();
}
if (thisRow["F_HOUSING"].ToMyString() == "投诉")
{
if (thisRow["CallState"].ToInt32() == 1)
{
tempint2 = thisRow["num"].ToInt32();
}
tempTotal2 += thisRow["num"].ToInt32();
}
}
//if (tempTotal != 0)
//{
// data1 = (tempint / (double)tempTotal).ToString("0.00%");
//}
if (tempTotal1 != 0)
{
data2 = (tempint1 / (double)tempTotal1).ToString("0.00%");
}
if (tempTotal2 != 0)
{
data3 = (tempint2 / (double)tempTotal2).ToString("0.00%");
}
dataRow = newTable.NewRow();
dataRow["指标名称"] = "咨询客服化解率";
dataRow["指标值"] = data1;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "建议客服化解率";
dataRow["指标值"] = data2;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "投诉客服化解率";
dataRow["指标值"] = data3;
newTable.Rows.Add(dataRow);
}
#endregion
#region 按时办结率
datas = busReport.GetOtherData4(startDate, endDate);
if (datas != null && datas.Rows.Count > 0)
{
string data1 = "-";
string data2 = "-";
string data3 = "-";
int tempTotal = 0;
int tempint = 0;
int tempTotal1 = 0;
int tempint1 = 0;
int tempTotal2 = 0;
int tempint2 = 0;
foreach (DataRow thisRow in datas.Rows)
{
if (thisRow["CallState"].ToInt32() == 0)
{
OvertimeCount += thisRow["num"].ToInt32();
}
if (thisRow["F_HOUSING"].ToMyString() == "咨询")
{
if (thisRow["CallState"].ToInt32() == 1)
{
tempint = thisRow["num"].ToInt32();
}
tempTotal += thisRow["num"].ToInt32();
}
if (thisRow["F_HOUSING"].ToMyString() == "建议")
{
if (thisRow["CallState"].ToInt32() == 1)
{
tempint1 = thisRow["num"].ToInt32();
}
tempTotal1 += thisRow["num"].ToInt32();
}
if (thisRow["F_HOUSING"].ToMyString() == "投诉")
{
if (thisRow["CallState"].ToInt32() == 1)
{
tempint2 = thisRow["num"].ToInt32();
}
tempTotal2 += thisRow["num"].ToInt32();
}
}
if (tempTotal != 0)
{
data1 = (tempint / (double)tempTotal).ToString("0.00%");
}
if (tempTotal1 != 0)
{
data2 = (tempint1 / (double)tempTotal1).ToString("0.00%");
}
if (tempTotal2 != 0)
{
data3 = (tempint2 / (double)tempTotal2).ToString("0.00%");
}
dataRow = newTable.NewRow();
dataRow["指标名称"] = "咨询按时办结率";
dataRow["指标值"] = data1;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "建议按时办结率";
dataRow["指标值"] = data2;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "投诉按时办结率";
dataRow["指标值"] = data3;
newTable.Rows.Add(dataRow);
}
#endregion
#region 按时答复率
datas = busReport.GetOtherData5(startDate, endDate);
if (datas != null && datas.Rows.Count > 0)
{
string data1 = "-";
int tempTotal = 0;
int tempint = 0;
foreach (DataRow thisRow in datas.Rows)
{
if (thisRow["CallState"].ToInt32() == 1)
{
tempint = thisRow["num"].ToInt32();
}
tempTotal += thisRow["num"].ToInt32();
}
if (tempTotal != 0)
{
data1 = (tempint / (double)tempTotal).ToString("0.00%");
}
dataRow = newTable.NewRow();
dataRow["指标名称"] = "按时答复率";
dataRow["指标值"] = data1;
newTable.Rows.Add(dataRow);
}
#endregion
#region 超时工单数
dataRow = newTable.NewRow();
dataRow["指标名称"] = "超时工单数";
dataRow["指标值"] = OvertimeCount;
newTable.Rows.Add(dataRow);
#endregion
#region 定责指标
datas = busReport.GetOtherData6(startDate, endDate);
if (true)
{
string data1 = "-";
string data2 = "-";
string data3 = "-";
string data4 = "-";
int tempTotal1 = 0;
int tempint1 = 0;
int tempTotal2 = 0;
int tempint2 = 0;
int tempTotal3 = 0;
int tempint3 = 0;
int tempTotal4 = 0;
int tempint4 = 0;
if (datas != null && datas.Rows.Count > 0)
{
foreach (DataRow thisRow in datas.Rows)
{
// 根据事件概况,初步定性为无效投诉
// 根据事件概况,初步定性为有效无责投诉
// 根据事件概况,初步定性为一级有责投诉
// 根据事件概况,初步定性为二级有责投诉
// 根据事件概况,初步定性为三级有责投诉
if (thisRow["F_SERVICENATURE"].ToMyString().Contains("无效投诉"))
{
tempint1 += thisRow["num"].ToInt32();
tempTotal1 += thisRow["num"].ToInt32();
}
else if (thisRow["F_SERVICENATURE"].ToMyString().Contains("责投诉"))
{
tempint2 += thisRow["num"].ToInt32();
tempTotal1 += thisRow["num"].ToInt32();
}
if (thisRow["F_SERVICENATURE"].ToMyString().Contains("有责投诉"))
{
tempint3 += thisRow["num"].ToInt32();
}
else if (thisRow["F_SERVICENATURE"].ToMyString().Contains("有效无责投诉"))
{
tempint4 += thisRow["num"].ToInt32();
}
}
}
if (tempTotal1 != 0)
{
data1 = (tempint1 / (double)tempTotal1).ToString("0.00%");
data2 = (tempint2 / (double)tempTotal1).ToString("0.00%");
data3 = (tempint3 / (double)tempTotal1).ToString("0.00%");
data4 = (tempint4 / (double)tempTotal1).ToString("0.00%");
}
#region 指标赋值
dataRow = newTable.NewRow();
dataRow["指标名称"] = "无效投诉数量";
dataRow["指标值"] = tempint1;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "无效投诉占比";
dataRow["指标值"] = data1;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "有效投诉数量";
dataRow["指标值"] = tempint2;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "有效投诉占比";
dataRow["指标值"] = data2;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "有责投诉数量";
dataRow["指标值"] = tempint3;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "有责投诉占比";
dataRow["指标值"] = data3;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "有效无责数量";
dataRow["指标值"] = tempint4;
newTable.Rows.Add(dataRow);
dataRow = newTable.NewRow();
dataRow["指标名称"] = "有效无责占比";
dataRow["指标值"] = data4;
newTable.Rows.Add(dataRow);
#endregion
}
#endregion
dataModel.code = 0;
dataModel.data = newTable;
}
catch (Exception ex)
{
dataModel.code = 200;
dataModel.msg = ex.Message;
}
return JsonConvert.SerializeObject(dataModel);
}
#endregion
#region 定责指标
public ActionResult GetDZView()
{
WorkOrderMyModel model = new WorkOrderMyModel();
return View(model);
}
///
/// 获取工单信息
///
/// 当前页码
/// 每页数据量
/// 查询条件
///
[ActionName("GetDZData")]
[HttpGet]
public string GetDZData(DateTime? NowDateTime, string dateParty)
{
//数据结果集
ResponseData dataModel = new ResponseData();
try
{
string startDate = "";
string endDate = "";
if (!string.IsNullOrEmpty(dateParty))
{
startDate = dateParty.Substring(0, 10);
endDate = dateParty.Substring(12);
}
else
{
startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
}
DataTable newTable = new DataTable();
newTable.Columns.Add("一级分类");
newTable.Columns.Add("一级数量");
newTable.Columns.Add("一级占比");
newTable.Columns.Add("二级分类");
newTable.Columns.Add("二级数量");
newTable.Columns.Add("二级占比");
newTable.Columns.Add("三级分类");
newTable.Columns.Add("三级数量");
newTable.Columns.Add("三级占比");
DataRow dataRow;
#region 统计
DataTable datas7 = busReport.GetOtherData7(startDate, endDate);
DataTable datas8 = busReport.GetOtherData8(startDate, endDate);
DataTable datas9 = busReport.GetOtherData9(startDate, endDate);
int totle7 = 0;
int totle8 = 0;
int totle9 = 0;
#region 计算总数 百分比
if (datas7 != null && datas7.Rows.Count > 0)
{
foreach (DataRow dr in datas7.Rows)
{
totle7 += dr["num"].ToInt32();
}
}
if (datas8 != null && datas8.Rows.Count > 0)
{
foreach (DataRow dr in datas8.Rows)
{
totle8 += dr["num"].ToInt32();
}
}
if (datas9 != null && datas9.Rows.Count > 0)
{
foreach (DataRow dr in datas9.Rows)
{
totle9 += dr["num"].ToInt32();
}
}
#endregion
for (int i = 0; i < 10; i++)
{
dataRow = newTable.NewRow();
#region 一级分类
if (totle7 > 0&&datas7.Rows.Count>i)
{
dataRow["一级分类"] = datas7.Rows[i]["name"];
int tempn = datas7.Rows[i]["num"].ToInt32();
dataRow["一级数量"] = tempn;
dataRow["一级占比"] = (tempn/ (double)totle7).ToString("0.00%");
}
else
{
dataRow["一级分类"] = "-";
dataRow["一级数量"] = "-";
dataRow["一级占比"] = "-";
}
#endregion
#region 二级分类
if (totle8 > 0 && datas8.Rows.Count > i)
{
dataRow["二级分类"] = datas8.Rows[i]["name"];
int tempn = datas8.Rows[i]["num"].ToInt32();
dataRow["二级数量"] = tempn;
dataRow["二级占比"] = (tempn / (double)totle8).ToString("0.00%");
}
else
{
dataRow["二级分类"] = "-";
dataRow["二级数量"] = "-";
dataRow["二级占比"] = "-";
}
#endregion
#region 三级分类
if (totle9 > 0 && datas9.Rows.Count > i)
{
dataRow["三级分类"] = datas9.Rows[i]["name"];
int tempn = datas9.Rows[i]["num"].ToInt32();
dataRow["三级数量"] = tempn;
dataRow["三级占比"] = (tempn / (double)totle9).ToString("0.00%");
}
else
{
dataRow["三级分类"] = "-";
dataRow["三级数量"] = "-";
dataRow["三级占比"] = "-";
}
#endregion
newTable.Rows.Add(dataRow);
}
#endregion
dataModel.code = 0;
dataModel.data = newTable;
}
catch (Exception ex)
{
dataModel.code = 200;
dataModel.msg = ex.Message;
}
return JsonConvert.SerializeObject(dataModel);
}
[AcceptVerbs(HttpVerbs.Post)]
public string GetDZDataExcel(DateTime? NowDateTime, string dateParty)
{
//数据结果集
ResponseData dataModel = new ResponseData();
try
{
string startDate = "";
string endDate = "";
if (!string.IsNullOrEmpty(dateParty))
{
startDate = dateParty.Substring(0, 10);
endDate = dateParty.Substring(12);
}
else
{
startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
}
DataTable newTable = new DataTable();
newTable.Columns.Add("一级分类");
newTable.Columns.Add("一级数量");
newTable.Columns.Add("一级占比");
newTable.Columns.Add("二级分类");
newTable.Columns.Add("二级数量");
newTable.Columns.Add("二级占比");
newTable.Columns.Add("三级分类");
newTable.Columns.Add("三级数量");
newTable.Columns.Add("三级占比");
DataRow dataRow;
#region 统计
DataTable datas7 = busReport.GetOtherData7(startDate, endDate);
DataTable datas8 = busReport.GetOtherData8(startDate, endDate);
DataTable datas9 = busReport.GetOtherData9(startDate, endDate);
int totle7 = 0;
int totle8 = 0;
int totle9 = 0;
#region 计算总数 百分比
if (datas7 != null && datas7.Rows.Count > 0)
{
foreach (DataRow dr in datas7.Rows)
{
totle7 += dr["num"].ToInt32();
}
}
if (datas8 != null && datas8.Rows.Count > 0)
{
foreach (DataRow dr in datas8.Rows)
{
totle8 += dr["num"].ToInt32();
}
}
if (datas9 != null && datas9.Rows.Count > 0)
{
foreach (DataRow dr in datas9.Rows)
{
totle9 += dr["num"].ToInt32();
}
}
#endregion
for (int i = 0; i < 10; i++)
{
dataRow = newTable.NewRow();
#region 一级分类
if (totle7 > 0 && datas7.Rows.Count > i)
{
dataRow["一级分类"] = datas7.Rows[i]["name"];
int tempn = datas7.Rows[i]["num"].ToInt32();
dataRow["一级数量"] = tempn;
dataRow["一级占比"] = (tempn / (double)totle7).ToString("0.00%");
}
else
{
dataRow["一级分类"] = "-";
dataRow["一级数量"] = "-";
dataRow["一级占比"] = "-";
}
#endregion
#region 二级分类
if (totle8 > 0 && datas8.Rows.Count > i)
{
dataRow["二级分类"] = datas8.Rows[i]["name"];
int tempn = datas8.Rows[i]["num"].ToInt32();
dataRow["二级数量"] = tempn;
dataRow["二级占比"] = (tempn / (double)totle8).ToString("0.00%");
}
else
{
dataRow["二级分类"] = "-";
dataRow["二级数量"] = "-";
dataRow["二级占比"] = "-";
}
#endregion
#region 三级分类
if (totle9 > 0 && datas9.Rows.Count > i)
{
dataRow["三级分类"] = datas9.Rows[i]["name"];
int tempn = datas9.Rows[i]["num"].ToInt32();
dataRow["三级数量"] = tempn;
dataRow["三级占比"] = (tempn / (double)totle9).ToString("0.00%");
}
else
{
dataRow["三级分类"] = "-";
dataRow["三级数量"] = "-";
dataRow["三级占比"] = "-";
}
#endregion
newTable.Rows.Add(dataRow);
}
#endregion
dataModel.code = 0;
dataModel.data = newTable;
}
catch (Exception ex)
{
dataModel.code = 200;
dataModel.msg = ex.Message;
}
ResponseDataModel NewData = new ResponseDataModel();
ExcelReadWrite erw = new ExcelReadWrite();
byte[] Filebyte = erw.GetExcelByte(dataModel.data, "sheet1", true);
int officeVersion = erw.OfficeType();
if (officeVersion == 1 || officeVersion == 2)
{
NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "定责分类统计汇总表.xls";
}
else
{
NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "定责分类统计汇总表.xlsx";
}
NewData.Code = "0";
NewData.Data = JsonConvert.SerializeObject(Filebyte);
return JsonConvert.SerializeObject(NewData);
}
#endregion
}
}