2024-01-29 10:02:33 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2024-01-29 17:56:17 +08:00
|
|
|
|
using System.Data;
|
2024-01-29 10:02:33 +08:00
|
|
|
|
using System.Linq;
|
2024-01-29 17:56:17 +08:00
|
|
|
|
using BLL;
|
2024-01-29 10:02:33 +08:00
|
|
|
|
|
|
|
|
|
namespace FineUIPro.Web.Transfer.Chart
|
|
|
|
|
{
|
2024-01-29 17:56:17 +08:00
|
|
|
|
public partial class Instrumentation : PageBase
|
2024-01-29 10:02:33 +08:00
|
|
|
|
{
|
2024-01-29 17:56:17 +08:00
|
|
|
|
#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>
|
2024-01-29 10:02:33 +08:00
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
|
|
|
{
|
2024-01-29 17:56:17 +08:00
|
|
|
|
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
|
2024-01-29 10:02:33 +08:00
|
|
|
|
|
2024-01-29 17:56:17 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 统计分析
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
protected void BtnAnalyse_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.AnalyseData();
|
2024-01-29 10:02:33 +08:00
|
|
|
|
}
|
2024-01-29 17:56:17 +08:00
|
|
|
|
|
|
|
|
|
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
|
2024-01-29 10:02:33 +08:00
|
|
|
|
}
|
|
|
|
|
}
|