using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.Services.Description; using BLL; using NPOI.SS.Formula.Functions; namespace FineUIPro.Web.Transfer.Chart { public partial class SystemstatusChart : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { var systemCode = Funs.DB.Transfer_LHCSystemList .Where(x => x.ProjectId == CurrUser.LoginProjectId) .GroupBy(p => new { p.SystemNo }) .Select(p => new { SystemNo = p.Key.SystemNo }).ToList(); int indexRow = 1; ddlSystemNo.Items.Insert(0, new FineUIPro.ListItem("ALL", "")); foreach (var t in systemCode) { ddlSystemNo.Items.Insert(indexRow, new FineUIPro.ListItem(t.SystemNo, t.SystemNo)); indexRow++; } AnalyseData(); } } public string AllSystemNo; public string completed; public string Inprogress; public string NotStart; public void AnalyseData() { var pid = CurrUser.LoginProjectId; #region 统计所有 var systemCode = Funs.DB.Transfer_LHCSystemList .Where(x => x.ProjectId == CurrUser.LoginProjectId) .GroupBy(p => new { p.SystemNo }) .Select(p => new { SystemNo = p.Key.SystemNo }).ToList(); if (!string.IsNullOrEmpty(ddlSystemNo.SelectedValue)) { systemCode= Funs.DB.Transfer_LHCSystemList .Where(x => x.ProjectId == CurrUser.LoginProjectId && x.SystemNo == ddlSystemNo.SelectedValue) .GroupBy(p => new { p.SystemNo }) .Select(p => new { SystemNo = p.Key.SystemNo }).ToList(); } #region 九个表的数据 var list1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == pid).ToList(); var list2= Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == pid).ToList(); var list3= Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == pid).ToList(); var list4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == pid).ToList(); var list5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == pid).ToList(); var list6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == pid).ToList(); var list7 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == pid).ToList(); var list8 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == pid).ToList(); var list9 = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == pid).ToList(); #endregion DataTable dt = new DataTable(); dt.Columns.Add("系统编号", typeof(string)); dt.Columns.Add("完成数量", typeof(string)); dt.Columns.Add("进行中数量", typeof(string)); dt.Columns.Add("未完成数量", typeof(string)); foreach (var t in systemCode) { var scode = t.SystemNo; AllSystemNo += "'" + scode + "',"; DataRow dr = dt.NewRow(); dr["系统编号"] = scode; #region 根据系统编号获取完成的数量 var completedCount = list1.Where(x => x.SYSTEM == scode && x.FINALStatus == "Completed").ToList().Count() + list2.Where(x => x.SYSTEM == scode && x.MechanicalFINALStatus == "Completed").ToList().Count() + list3.Where(x => x.SYSTEM == scode && x.MechanicalFINALStatus == "Completed").ToList().Count() + list4.Where(x => x.SystemName == scode && x.FINAL_Status == "Completed").ToList().Count() + list5.Where(x => x.SystemName == scode && x.FINAL_Status == "Completed").ToList().Count() + list6.Where(x => x.SystemName == scode && x.FINAL_Status == "Completed").ToList().Count() + list7.Where(x => x.SystemName == scode && x.FINAL_Status == "Completed").ToList().Count() + list8.Where(x => x.SystemName == scode && x.FINAL_Status == "Completed").ToList().Count() + list9.Where(x => x.SystemName == scode && x.Status == "Completed").ToList().Count(); #endregion dr["完成数量"] = completedCount; completed+= "'" + completedCount.ToString() + "',"; #region 根据系统编号获取进行中数量 var InprogressCount = list1.Where(x => x.SYSTEM == scode && x.FINALStatus == "In progress").ToList().Count() + list2.Where(x => x.SYSTEM == scode && x.MechanicalFINALStatus == "In progress").ToList().Count() + list3.Where(x => x.SYSTEM == scode && x.MechanicalFINALStatus == "In progress").ToList().Count() + list4.Where(x => x.SystemName == scode && x.FINAL_Status == "In progress").ToList().Count() + list5.Where(x => x.SystemName == scode && x.FINAL_Status == "In progress").ToList().Count() + list6.Where(x => x.SystemName == scode && x.FINAL_Status == "In progress").ToList().Count() + list7.Where(x => x.SystemName == scode && x.FINAL_Status == "In progress").ToList().Count() + list8.Where(x => x.SystemName == scode && x.FINAL_Status == "In progress").ToList().Count() + list9.Where(x => x.SystemName == scode && x.Status == "In progress").ToList().Count(); #endregion dr["进行中数量"] = InprogressCount; Inprogress += "'" + InprogressCount.ToString() + "',"; #region 根据系统编号获取未完成数量 var NotStartCount = list1.Where(x => x.SYSTEM == scode && x.FINALStatus == "Not Start").ToList().Count() + list2.Where(x => x.SYSTEM == scode && x.MechanicalFINALStatus == "Not Start").ToList().Count() + list3.Where(x => x.SYSTEM == scode && x.MechanicalFINALStatus == "Not Start").ToList().Count() + list4.Where(x => x.SystemName == scode && x.FINAL_Status == "Not Start").ToList().Count() + list5.Where(x => x.SystemName == scode && x.FINAL_Status == "Not Start").ToList().Count() + list6.Where(x => x.SystemName == scode && x.FINAL_Status == "Not Start").ToList().Count() + list7.Where(x => x.SystemName == scode && x.FINAL_Status == "Not Start").ToList().Count() + list8.Where(x => x.SystemName == scode && x.FINAL_Status == "Not Start").ToList().Count() + list9.Where(x => x.SystemName == scode && x.Status == "Not Start").ToList().Count(); #endregion dr["未完成数量"] = NotStartCount; NotStart += "'" + NotStartCount.ToString() + "',"; dt.Rows.Add(dr); } //this.ChartAccidentTime.CreateChart(BLL.ChartControlService.GetDataSourceChart(dt, "移交状态统计", "Column", 1300, 550, false)); #endregion } protected void ddlSystemNo_SelectedIndexChanged(object sender, EventArgs e) { this.AnalyseData(); } } }