市长热线演示版

CallInDept.aspx.cs 7.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Text;
  8. using System.Data;
  9. namespace HySoft.BaseCallCenter.Web.reportmanage.dataanalysis
  10. {
  11. public partial class CallInDept : System.Web.UI.Page
  12. {
  13. protected string TableHtml = null;
  14. protected void Page_Load(object sender, EventArgs e)
  15. {
  16. OutputTable();
  17. }
  18. protected void btnConfirm_Click(object sender, EventArgs e)
  19. {
  20. OutputTable();
  21. }
  22. protected void btnExport_Click(object sender, EventArgs e)
  23. {
  24. string fileName = "客服部来电分布情况报表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
  25. Response.Clear();
  26. Response.Charset = "GB2312";
  27. Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
  28. Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName));
  29. Response.ContentType = "application/ms-excel";
  30. Response.Write(TableHtml);
  31. Response.End();
  32. }
  33. private void OutputTable()
  34. {
  35. //查询条件
  36. string starttime = txtStartTime.Text.Trim();
  37. if (string.IsNullOrWhiteSpace(starttime))
  38. { starttime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy-MM-dd"); txtStartTime.Text = starttime; }
  39. string endtime = txtEndTime.Text.Trim();
  40. if (string.IsNullOrWhiteSpace(endtime)) { endtime = DateTime.Today.ToString("yyyy-MM-dd"); txtEndTime.Text = endtime; }
  41. string[] head = { "客服部", "来电请求量", "占比" };
  42. TableHtml = createTable("客服部来电分布", head, starttime, endtime);
  43. }
  44. private string createTable(string title, string[] head, string starttime, string endtime)
  45. {
  46. StringBuilder sb = new StringBuilder();
  47. sb.Append(createTableTitle(title));
  48. sb.Append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" align='center'>");
  49. sb.Append(createTableHead(head));
  50. sb.Append(createTableBody(starttime, endtime));
  51. sb.Append("</table>");
  52. return sb.ToString();
  53. }
  54. /// <summary>
  55. /// 表名称
  56. /// </summary>
  57. /// <param name="title">表名</param>
  58. /// <returns></returns>
  59. protected string createTableTitle(string title)
  60. {
  61. StringBuilder sb = new StringBuilder();
  62. sb.Append("<h1 style='font-size: 18px; font-weight: bold; color: #333333; text-align: center;width: 100%;'><b>" + title + "</b></h1>");
  63. return sb.ToString();
  64. }
  65. private string createTableHead(string[] head)
  66. {
  67. StringBuilder sb = new StringBuilder();
  68. sb.Append("<tr style=\"text-align: center;\">");
  69. for (int i = 0; i < head.Length; i++)
  70. {
  71. sb.Append("<td class=\"formtabletitle1\"style=\"height: 25px;background-color: #D5EDFE;border-left: 1px solid #CCCCCC;border-right: 1px solid #CCCCCC;border-top: 1px solid #CCCCCC;border-bottom: 1px solid #CCCCCC;padding: 3px 3px 3px 3px;text-align:center;\">" + head[i] + "</td>");
  72. }
  73. sb.Append("</tr>");
  74. return sb.ToString();
  75. }
  76. private string createTableBody(string starttime, string endtime)
  77. {
  78. string sql = "";
  79. if (starttime != null && starttime.Trim() != "")
  80. {
  81. sql += " and CONVERT(varchar , F_CREATEDATE, 120)>=CONVERT(varchar , '" + starttime.Trim() + " 00:00:01', 120) ";
  82. }
  83. if (endtime != null && endtime.Trim() != "")
  84. {
  85. sql += " and CONVERT(varchar , F_CREATEDATE, 120)<=CONVERT(varchar , '" + endtime.Trim() + " 23:59:59', 120) ";
  86. }
  87. //存储数据
  88. Dictionary<string, List<string>> body = new Dictionary<string, List<string>>();
  89. //总数量
  90. int allcount = 0;
  91. var deptlist = new BLL.T_Sys_Department().GetModelList("");
  92. if (deptlist.Count > 0)
  93. {
  94. foreach (var deptname in deptlist)
  95. {
  96. 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 + "";
  97. DataTable dt = DBUtility.DbHelperSQL.Query(sqlcount).Tables[0];
  98. if (dt != null)
  99. {
  100. int count = 0;
  101. int.TryParse(dt.Rows[0][0].ToString(), out count);
  102. if (count > 0)
  103. {
  104. allcount = allcount + count;
  105. body.Add(deptname.F_DeptName, new List<string>() { count.ToString(), "" });
  106. dt.Dispose();
  107. }
  108. }
  109. }
  110. }
  111. //打印表格
  112. StringBuilder sb = new StringBuilder();
  113. var dicSort = from objDic in body orderby int.Parse(objDic.Value[0]) descending select objDic;
  114. foreach (var kv in dicSort)
  115. {
  116. sb.Append("<tr style=\"text-align: center;\" onmouseover=\"this.style.backgroundColor='#F6F6F6'\" onmouseout=\"this.style.backgroundColor='#ffffff'\">");
  117. sb.Append("<td class=\"formtabletitle1\" style=\"height: 25px;background-color: #fff;border-left: 1px solid #CCCCCC;border-right: 1px solid #CCCCCC;border-top: 1px solid #CCCCCC;border-bottom: 1px solid #CCCCCC;padding: 3px 3px 3px 3px;text-align:center;\">" + kv.Key + "</td>");
  118. List<string> bodyitem = kv.Value;
  119. bodyitem[1] = "0.00%";
  120. if (allcount > 0) bodyitem[1] = (int.Parse(bodyitem[0]) * 100.0 / allcount).ToString("0.00") + "%";
  121. foreach (var v in bodyitem)
  122. {
  123. sb.Append("<td class=\"formtabletitle1\"style=\"height: 25px;background-color: #fff;border-left: 1px solid #CCCCCC;border-right: 1px solid #CCCCCC;border-top: 1px solid #CCCCCC;border-bottom: 1px solid #CCCCCC;padding: 3px 3px 3px 3px;text-align:center;\">" + v + "</td>");
  124. }
  125. sb.Append("</tr>");
  126. }
  127. //打印合计数据
  128. List<string> sum = new List<string>() { "合计:", allcount.ToString(), "100%" };
  129. sb.Append("<tr style=\"text-align: center;\" onmouseover=\"this.style.backgroundColor='#F6F6F6'\" onmouseout=\"this.style.backgroundColor='#ffffff'\">");
  130. for (int j = 0; j < sum.Count; j++)
  131. {
  132. sb.Append("<td class=\"formtabletitle1\" style=\"height: 25px;background-color: #D5EDFE;border-left: 1px solid #CCCCCC;border-right: 1px solid #CCCCCC;border-top: 1px solid #CCCCCC;border-bottom: 1px solid #CCCCCC;padding: 3px 3px 3px 3px;text-align:center;\">" + sum[j] + "</td>");
  133. }
  134. sb.Append("</tr>");
  135. return sb.ToString();
  136. }
  137. }
  138. }