CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/Transfer/Chart/Instrumentation.aspx.cs

235 lines
7.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
/// <summary>
/// 项目主键
/// </summary>
public string ProjectId
{
get
{
return (string)ViewState["ProjectId"];
}
set
{
ViewState["ProjectId"] = value;
}
}
#endregion
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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
/// <summary>
/// 统计方法
/// </summary>
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
/// <summary>
/// 统计分析
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void BtnAnalyse_Click(object sender, EventArgs e)
{
this.AnalyseData();
}
protected void drpChartType_SelectedIndexChanged(object sender, EventArgs e)
{
this.AnalyseData();
}
private void LoadData(IEnumerable<String> 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<String> 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
}
}