using System; using System.Collections.Generic; using System.Data; using System.Linq; using BLL; namespace FineUIPro.Web.Transfer.Chart { public partial class Instrumentation : PageBase { #region 定义项 /// /// 项目主键 /// public string ProjectId { get { return (string)ViewState["ProjectId"]; } set { ViewState["ProjectId"] = value; } } #endregion #region 加载页面 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.ProjectId = this.CurrUser.LoginProjectId; if (!string.IsNullOrEmpty(Request.Params["projectId"])) { this.ProjectId = Request.Params["projectId"]; } this.AnalyseData(); } } #endregion #region 统计 /// /// 统计方法 /// private void AnalyseData() { var sTime = DateTime.Now.AddDays(-7); var eTime = DateTime.Now; ; //如果没有填写日期,则是七天内的 if (!string.IsNullOrEmpty(txtStarTime.Text) && !string.IsNullOrEmpty(txtEndTime.Text)) { sTime = Convert.ToDateTime(txtStarTime.Text); eTime = Convert.ToDateTime(txtEndTime.Text); } //查询当前日期中的system的具体数目,去除重复 var list = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH <= eTime).ToList(); var SystemList = (from x in list select x.SystemName).Distinct(); //先加载左侧system 树菜单 LoadData(SystemList); DataTable dtTime = new DataTable(); dtTime.Columns.Add("日期", typeof(string)); dtTime.Columns.Add("Finished", typeof(string)); dtTime.Columns.Add("In Progress", typeof(string)); dtTime.Columns.Add("Not Start", typeof(string)); var systemBol = false; for (var i = sTime; i <= eTime; i=i.AddDays(1)) { var finishedCount = 0; var inProgress = 0; var notStart = 0; DataRow rowTime = dtTime.NewRow(); Model.SpTDesktopItem newspItem = new Model.SpTDesktopItem(); rowTime["日期"] = string.Format("{0:yyyy-MM-dd}", i); ; //根据日期查询当前system的数量 var systemListbyDate = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= Convert.ToDateTime(rowTime["日期"]) && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddDays(1)).ToList(); //具体的system 去重 var systemList = (from x in systemListbyDate select x.SystemName).Distinct(); if (systemList.ToList().Count>0) { systemBol = true; } foreach (var item in systemList) { //查询当前日期每个system的数量 var systemSumCount = systemListbyDate.Where(x => x.SystemName == item).ToList().Count; //子系统中完成的数量 var subSystemSumCount = systemListbyDate.Where(x => x.SystemName == item && x.FINAL_Status.ToLower() == "finished").ToList().Count; //子系统中没完成的情况 var subSystemSumNotStartCount = systemListbyDate.Where(x => x.SystemName == item && x.FINAL_Status.ToLower() == "not start").ToList().Count; if (systemSumCount == subSystemSumCount) { finishedCount += 1; } else if (systemSumCount== subSystemSumNotStartCount) { notStart += 1; } else { inProgress += 1; } } rowTime["Finished"] = finishedCount; rowTime["In Progress"] = inProgress; rowTime["Not Start"] = notStart; dtTime.Rows.Add(rowTime); } if (systemBol) { this.ChartUc.CreateChart(BLL.ChartControlService.GetDataSourceChart(dtTime, "Instrumentation PROGRESS", this.drpChartType.SelectedValue, 1100, 600, false)); } } public class CheckAnalysisModel { public string itemType { get; set; } public int count { get; set; } } #endregion /// /// 统计分析 /// /// /// protected void BtnAnalyse_Click(object sender, EventArgs e) { this.AnalyseData(); } protected void drpChartType_SelectedIndexChanged(object sender, EventArgs e) { this.AnalyseData(); } private void LoadData(IEnumerable list) { Tree1.Nodes.Clear(); // 模拟从数据库返回数据表 DataTable table = CreateDataTable(list); DataSet ds = new DataSet(); ds.Tables.Add(table); ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["Id"], ds.Tables[0].Columns["ParentId"]); foreach (DataRow row in ds.Tables[0].Rows) { if (row.IsNull("ParentId")) { TreeNode node = new TreeNode(); node.Text = row["Text"].ToString(); Tree1.Nodes.Add(node); ResolveSubTree(row, node); } } } private void ResolveSubTree(DataRow dataRow, TreeNode treeNode) { DataRow[] rows = dataRow.GetChildRows("TreeRelation"); if (rows.Length > 0) { // 如果是目录,则默认展开 treeNode.Expanded = true; foreach (DataRow row in rows) { TreeNode node = new TreeNode(); node.Text = row["Text"].ToString(); treeNode.Nodes.Add(node); ResolveSubTree(row, node); } } } #region CreateDataTable private DataTable CreateDataTable(IEnumerable list) { DataTable table = new DataTable(); DataColumn column1 = new DataColumn("Id", typeof(string)); DataColumn column2 = new DataColumn("Text", typeof(String)); DataColumn column3 = new DataColumn("ParentId", typeof(string)); table.Columns.Add(column1); table.Columns.Add(column2); table.Columns.Add(column3); DataRow row = table.NewRow(); row[0] = "ALL"; row[1] = "全部"; row[2] = DBNull.Value; table.Rows.Add(row); foreach (var item in list) { row = table.NewRow(); row[0] = item.ToString(); row[1] = item.ToString(); row[2] = "ALL"; table.Rows.Add(row); } return table; } #endregion } }