using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Data;
namespace HySoft.BaseCallCenter.Web.reportmanage.dataanalysis
{
public partial class CallInDept : System.Web.UI.Page
{
protected string TableHtml = null;
protected void Page_Load(object sender, EventArgs e)
{
OutputTable();
}
protected void btnConfirm_Click(object sender, EventArgs e)
{
OutputTable();
}
protected void btnExport_Click(object sender, EventArgs e)
{
string fileName = "客服部来电分布情况报表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName));
Response.ContentType = "application/ms-excel";
Response.Write(TableHtml);
Response.End();
}
private void OutputTable()
{
//查询条件
string starttime = txtStartTime.Text.Trim();
if (string.IsNullOrWhiteSpace(starttime))
{ starttime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy-MM-dd"); txtStartTime.Text = starttime; }
string endtime = txtEndTime.Text.Trim();
if (string.IsNullOrWhiteSpace(endtime)) { endtime = DateTime.Today.ToString("yyyy-MM-dd"); txtEndTime.Text = endtime; }
string[] head = { "客服部", "来电请求量", "占比" };
TableHtml = createTable("客服部来电分布", head, starttime, endtime);
}
private string createTable(string title, string[] head, string starttime, string endtime)
{
StringBuilder sb = new StringBuilder();
sb.Append(createTableTitle(title));
sb.Append("
");
sb.Append(createTableHead(head));
sb.Append(createTableBody(starttime, endtime));
sb.Append("
");
return sb.ToString();
}
///
/// 表名称
///
/// 表名
///
protected string createTableTitle(string title)
{
StringBuilder sb = new StringBuilder();
sb.Append("" + title + "
");
return sb.ToString();
}
private string createTableHead(string[] head)
{
StringBuilder sb = new StringBuilder();
sb.Append("");
for (int i = 0; i < head.Length; i++)
{
sb.Append("| " + head[i] + " | ");
}
sb.Append("
");
return sb.ToString();
}
private string createTableBody(string starttime, string endtime)
{
string sql = "";
if (starttime != null && starttime.Trim() != "")
{
sql += " and CONVERT(varchar , F_CREATEDATE, 120)>=CONVERT(varchar , '" + starttime.Trim() + " 00:00:01', 120) ";
}
if (endtime != null && endtime.Trim() != "")
{
sql += " and CONVERT(varchar , F_CREATEDATE, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
}
//存储数据
Dictionary> body = new Dictionary>();
//总数量
int allcount = 0;
var deptlist = new BLL.T_Sys_Department().GetModelList("");
if (deptlist.Count > 0)
{
foreach (var deptname in deptlist)
{
string sqlcount = "SELECT COUNT(*) FROM [T_Wo_WorkOrderBase] WHERE [F_STANDARDADDRESS]='一线技术员' AND F_WORKORDERSTATEID=0 AND F_WORKORDERTYPEID=16 AND F_CUSTOMERNAME IN (SELECT [F_CustomerName] FROM [T_Cus_CustomerBase] WHERE F_ServiceDept='" + deptname.F_DeptName + "')" + sql + "";
DataTable dt = DBUtility.DbHelperSQL.Query(sqlcount).Tables[0];
if (dt != null)
{
int count = 0;
int.TryParse(dt.Rows[0][0].ToString(), out count);
if (count > 0)
{
allcount = allcount + count;
body.Add(deptname.F_DeptName, new List() { count.ToString(), "" });
dt.Dispose();
}
}
}
}
//打印表格
StringBuilder sb = new StringBuilder();
var dicSort = from objDic in body orderby int.Parse(objDic.Value[0]) descending select objDic;
foreach (var kv in dicSort)
{
sb.Append("");
sb.Append("| " + kv.Key + " | ");
List bodyitem = kv.Value;
bodyitem[1] = "0.00%";
if (allcount > 0) bodyitem[1] = (int.Parse(bodyitem[0]) * 100.0 / allcount).ToString("0.00") + "%";
foreach (var v in bodyitem)
{
sb.Append("" + v + " | ");
}
sb.Append("
");
}
//打印合计数据
List sum = new List() { "合计:", allcount.ToString(), "100%" };
sb.Append("");
for (int j = 0; j < sum.Count; j++)
{
sb.Append("| " + sum[j] + " | ");
}
sb.Append("
");
return sb.ToString();
}
}
}