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 KnowledgeSediment : System.Web.UI.Page { protected string TableHtml = null; protected void Page_Load(object sender, EventArgs e) { OutputTable(); } private void OutputTable() { //查询条件 string starttime = txtStartTime.Text.Trim(); string endtime = txtEndTime.Text.Trim(); if (string.IsNullOrWhiteSpace(starttime)) { starttime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).ToString("yyyy-MM-dd"); txtStartTime.Text = starttime; } if (string.IsNullOrWhiteSpace(endtime)) { endtime = DateTime.Today.ToString("yyyy-MM-dd"); txtEndTime.Text = endtime; } string tabletitle = "知识沉淀情况"; string[] tablehead = new string[] { "工程师姓名", "需要形成的数量", "完成的数量", "完成率" }; string[,] tablebody = new string[,] { { "工程师姓名", "需要形成的数量", "完成的数量", "完成率" }, { "工程师姓名", "需要形成的数量", "完成的数量", "完成率" }, { "工程师姓名", "需要形成的数量", "完成的数量", "完成率" }, { "工程师姓名", "需要形成的数量", "完成的数量", "完成率" }, { "工程师姓名", "需要形成的数量", "完成的数量", "完成率" }, { "合计:", "需要形成的总数量", "完成的总数量数量", "合计完成率" }}; TableHtml = createTable(tabletitle, tablehead, 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(); } /// /// 表头(表列名) /// /// /// protected 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) { //存储数据的数据字典 Dictionary> body = new Dictionary>(); //这段时间已经结束的报修工单 string sql = string.Format("F_WORKORDERSTATEID=0 and F_WORKORDERTYPEID={0}", 16);//16为报修 if (starttime != "") { sql += " AND F_STARTTIME>='" + starttime + " 00:00:00'"; } if (endtime != "") { sql += " AND F_ENDTIME<='" + endtime + " 23:59:59'"; } DataTable dtable = new BLL.T_Wo_WorkOrderBase().GetList(sql).Tables[0]; //这段时间工单总数 int allcount = dtable.Rows.Count; //循环这段时间的工单,筛选出需要形成知识的工单 #region 统计需要形成知识的数量 for (int i = 0; i < allcount; i++) { string knowsql = "F_KNOWLEDGE is not null order by ID desc"; var hisinfomodel1 = new BLL.T_Wo_WorkOrderHistoryInfo().GetModelList("F_INSTANCEID='" + dtable.Rows[i]["F_INSTANCEID"] + "' AND " + knowsql).FirstOrDefault(); if (hisinfomodel1 != null) { //如果形成知识 if (hisinfomodel1.F_KNOWLEDGE == 0) { //处理这个工单工程师 DataTable workorderbase = new BLL.T_Wo_WorkOrderBase().GetList("F_INSTANCEID=" + dtable.Rows[i]["F_INSTANCEID"]).Tables[0]; if (workorderbase.Rows.Count > 0) { List constructorlist = new BLL.T_Wo_WorkOrderConstructor().GetModelList("F_WORKORDERID=" + workorderbase.Rows[0]["F_WORKORDERID"]); if (constructorlist.Count > 0) { foreach (Model.T_Wo_WorkOrderConstructor constructor in constructorlist) { int id = Convert.ToInt32(constructor.F_USERID); Model.T_Sys_UserAccount user = new BLL.T_Sys_UserAccount().GetModel(id); if (user != null) { if (constructor.F_ISMAIN == 1) { //这个工单是某个工程师处理的就存储起来,如果还有其他工单也是他处理的就增加1 if (body.ContainsKey(user.F_UserName)) { body[user.F_UserName][0] = (Convert.ToInt32(body[user.F_UserName][0]) + 1).ToString(); } else { body.Add(user.F_UserName, new List() { "1", "0", "0" }); } } } } } } } } } #endregion //循环这段时间的工单,筛选出已经形成知识的工单 #region 统计已经形成知识的数量 for (int i = 0; i < allcount; i++) { //是否已经形成知识 string alreadyknowsql = "F_ALREADYKNOWLEDGE is not null order by ID desc"; var hisinfomodel2 = new BLL.T_Wo_WorkOrderHistoryInfo().GetModelList("F_INSTANCEID='" + dtable.Rows[i]["F_INSTANCEID"] + "' and " + alreadyknowsql).FirstOrDefault(); if (hisinfomodel2 != null) { if (hisinfomodel2.F_ALREADYKNOWLEDGE == 0) { //处理这个工单工程师 DataTable workorderbase = new BLL.T_Wo_WorkOrderBase().GetList("F_INSTANCEID=" + dtable.Rows[i]["F_INSTANCEID"]).Tables[0]; if (workorderbase.Rows.Count > 0) { List constructorlist = new BLL.T_Wo_WorkOrderConstructor().GetModelList("F_WORKORDERID=" + workorderbase.Rows[0]["F_WORKORDERID"]); if (constructorlist.Count > 0) { foreach (Model.T_Wo_WorkOrderConstructor constructor in constructorlist) { int id = Convert.ToInt32(constructor.F_USERID); Model.T_Sys_UserAccount user = new BLL.T_Sys_UserAccount().GetModel(id); if (user != null) { if (constructor.F_ISMAIN == 1) { //这个工单是某个工程师处理的就存储起来,如果还有其他工单也是他处理的就增加1 if (body.ContainsKey(user.F_UserName)) { body[user.F_UserName][1] = (Convert.ToInt32(body[user.F_UserName][1]) + 1).ToString(); } else { body.Add(user.F_UserName, new List() { "0", "1", "0" }); } } } } } } } } } #endregion //打印表格 StringBuilder sb = new StringBuilder(); var dicSort = from objDic in body orderby int.Parse(objDic.Value[0]) descending select objDic; foreach (var kvp in dicSort) { List Values = kvp.Value; string tdcolor = "#fff"; if (kvp.Key == "合计:") tdcolor = "#D5EDFE"; sb.Append(""); sb.Append("" + kvp.Key + ""); foreach (var value in Values) { sb.Append("" + value + ""); } sb.Append(""); } #region 合计 //合计 List sum = new List(); int knowsum = 0; int alreadyknowsum = 0; string p = "0.00%"; foreach (string key in body.Keys) { knowsum += Convert.ToInt32(body[key][0]); alreadyknowsum += Convert.ToInt32(body[key][1]); if (body[key][0] == "0") body[key][2] = "0.00%"; body[key][2] = (Convert.ToInt32(body[key][1]) * 1.0 / Convert.ToInt32(body[key][0])).ToString("0.00") + "%"; } if (knowsum > 0) p = (alreadyknowsum * 1.0 / knowsum).ToString("0.00") + "%"; sum.Add(knowsum.ToString()); sum.Add(alreadyknowsum.ToString()); sum.Add(p); body.Clear(); body.Add("合计:", sum); foreach (var key in body.Keys) { List Values = body[key]; string tdcolor = "#fff"; if (key == "合计:") tdcolor = "#D5EDFE"; sb.Append(""); sb.Append("" + key + ""); foreach (var value in Values) { sb.Append("" + value + ""); } sb.Append(""); } #endregion return sb.ToString(); } 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(); } } }