using System; using System.Collections.Generic; using System.Data; using System.Linq; using BLL; namespace FineUIPro.Web.Transfer.Chart { public partial class TransferChart : 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 /// /// 统计分析 /// /// /// protected void BtnAnalyse_Click(object sender, EventArgs e) { this.AnalyseData(); } #region 统计 private void AnalyseData() { if (string.IsNullOrEmpty(ProjectId)) { Alert.ShowInTop("项目未获取到,请刷新页面。", MessageBoxIcon.Warning); return; } var sTime = DateTime.Now.AddDays(-7); var eTime = DateTime.Now; if (string.IsNullOrEmpty(txtStarTime.Text) || string.IsNullOrEmpty(txtEndTime.Text)) { Alert.ShowInTop("请选择日期。", MessageBoxIcon.Warning); return; } else { sTime = Convert.ToDateTime(txtStarTime.Text); eTime = Convert.ToDateTime(txtEndTime.Text).AddMonths(1).AddDays(-1); } var AfinishedCountSum = 0;//总的实际完成数量 var PfinishedCountSum = 0;//总的计划完成数量 //获取总的实际完成数量和总的计划完成数量 switch (drpType.SelectedValue) { #region 全部 case "": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate = Funs.DB.View_TransferDetail.Where(x => x.Projectid == ProjectId && x.FDate >= sTime && x.FDate <= eTime && x.Status.ToLower() == "finished").ToList(); //查询TestPackage 去重 var testpackageList = (from x in systemListbyDate select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate = Funs.DB.View_TransferDetail.Where(x => x.Projectid == ProjectId && x.ADate >= sTime && x.ADate <= eTime && x.Status.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Piping case "Piping": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == ProjectId && x.TestPackageFINISH >= sTime && x.TestPackageFINISH <= eTime && x.FINALStatus.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate1 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.FINALStatus.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate1 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Static Equipment case "Static Equipment": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate2 = Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == ProjectId && x.TestPackageFINISH >= sTime && x.TestPackageFINISH <= eTime && x.MechanicalFINALStatus.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate2 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate2=Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.MechanicalFINALStatus.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate2 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Rotating Equipment case "Rotating Equipment": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate3 = Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == ProjectId && x.TestPackageFINISH >= sTime && x.TestPackageFINISH <= eTime && x.MechanicalFINALStatus.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate3 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate3 = Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.MechanicalFINALStatus.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate3 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Instrumentation case "Instrumentation": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate4 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate4 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Electrical case "Electrical": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate5 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate5 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Civil Structure case "Civil Structure": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate6 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate6 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Firefighting case "Firefighting": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate7 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate7 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate7 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate7 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Telecom case "Telecom": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate8 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate8 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate8 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate8 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region Plumbing case "Plumbing": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate9 = Funs.DB.Transfer_Plumbing.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate9 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate9 = Funs.DB.Transfer_Plumbing.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate9 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion #region HVAC case "HVAC": //根据当前计划完成日期 查询总的计划完成的数量 var systemListbyDate10 = Funs.DB.Transfer_HVAC.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage 去重 testpackageList = (from x in systemListbyDate10 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCountSum += 1; } } else { PfinishedCountSum += 1; } } //获取当前日期内实际完成的数量 systemListbyDate10 = Funs.DB.Transfer_HVAC.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime <= eTime && x.FINAL_Status.ToLower() == "finished").ToList(); testpackageList = (from x in systemListbyDate10 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCountSum += 1; } } else { AfinishedCountSum += 1; } } break; #endregion } DataTable dtTime = new DataTable(); dtTime.Columns.Add("日期", typeof(string)); dtTime.Columns.Add("Actual Finished(%)", typeof(string)); dtTime.Columns.Add("Plan Finished(%)", typeof(string)); for (var i = sTime; i <= eTime; i = i.AddMonths(1)) { var AfinishedCount = 0;//实际完成数量 var PfinishedCount = 0;//计划完成数量 DataRow rowTime = dtTime.NewRow(); rowTime["日期"] = string.Format("{0:yyyy-MM}", i); switch (drpType.SelectedValue) { #region 全部 case "": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate = Funs.DB.View_TransferDetail.Where(x => x.Projectid == ProjectId && x.FDate >= sTime && x.FDate < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.Status.ToLower()== "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 var testpackageList = (from x in systemListbyDate select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 var Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount==0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate = Funs.DB.View_TransferDetail.Where(x => x.Projectid == ProjectId && x.ADate >= sTime && x.ADate < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 var Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); if (AfinishedCount==0) { Acount = 0; } rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); continue; #endregion #region Piping case "Piping": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == ProjectId && x.TestPackageFINISH >= sTime && x.TestPackageFINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINALStatus.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate1 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate1 = Funs.DB.Transfer_Piping.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINALStatus.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate1 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region Static Equipment case "Static Equipment": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate2 = Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == ProjectId && x.TestPackageFINISH >= sTime && x.TestPackageFINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.MechanicalFINALStatus.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate2 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate2 = Funs.DB.Transfer_StaticEquipment.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.MechanicalFINALStatus.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate2 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region Rotating Equipment case "Rotating Equipment": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate3 = Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == ProjectId && x.TestPackageFINISH >= sTime && x.TestPackageFINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.MechanicalFINALStatus.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate3 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate3 = Funs.DB.Transfer_RotatingEquipment.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.MechanicalFINALStatus.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate3 select x.TestPackage).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region Instrumentation case "Transfer_Instrumentation": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate4 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate4 = Funs.DB.Transfer_Instrumentation.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate4 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region Electrical case "Electrical": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate5 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate5 = Funs.DB.Transfer_Electrical.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate5 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region Civil Structure case "Civil Structure": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate6 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate6 = Funs.DB.Transfer_Civil_Structure.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate6 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region Firefighting case "Firefighting": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate8 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate8 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate8 = Funs.DB.Transfer_Firefighting.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate8 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region Telecom case "Telecom": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate9 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate9 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate9 = Funs.DB.Transfer_Telecom.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate9 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region Plumbing case "Plumbing": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate10 = Funs.DB.Transfer_Plumbing.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate10 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate10 = Funs.DB.Transfer_Plumbing.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate10 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion #region HVAC case "HVAC": //递增形式,开始日期就是选中的开始日期 //根据当前计划完成日期 查询完成的数量 var systemListbyDate11 = Funs.DB.Transfer_HVAC.Where(x => x.ProjectId == ProjectId && x.Test_Package_FINISH >= sTime && x.Test_Package_FINISH < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate11 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { PfinishedCount += 1; } } else { PfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 Pcount = ((Convert.ToDouble(PfinishedCount) / Convert.ToDouble(PfinishedCountSum))); if (PfinishedCount == 0) { Pcount = 0; } rowTime["Plan Finished(%)"] = Pcount; //实际的完成数量 systemListbyDate11 = Funs.DB.Transfer_HVAC.Where(x => x.ProjectId == ProjectId && x.CompleteTime >= sTime && x.CompleteTime < Convert.ToDateTime(rowTime["日期"]).AddMonths(1) && x.FINAL_Status.ToLower() == "finished").ToList(); //查询TestPackage的总数量,状态是完成的。 testpackageList = (from x in systemListbyDate11 select x.Test_Package).Distinct(); foreach (var item in testpackageList) { //查询第12个表的数量 var punchlistFromList = Funs.DB.Transfer_PunchlistFrom.Where(x => x.ProjectId == ProjectId && x.Test_Package == item ).ToList(); //如果查到 if (punchlistFromList.Count > 0) { //12表当前日期完成的数量 var punchlistFromFinshCount = punchlistFromList.Where(x => x.PUNCH_ITEM_STATUS.ToLower() == "finished").ToList().Count(); //如果完成的数量等于总得数量,则是完成 if (punchlistFromFinshCount == punchlistFromList.Count) { AfinishedCount += 1; } } else { AfinishedCount += 1; } } //完成的数量:xx完成/总的完成 *100 if (AfinishedCount == 0) { Acount = 0; rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } else { Acount = ((Convert.ToDouble(AfinishedCount) / Convert.ToDouble(AfinishedCountSum))); rowTime["Actual Finished(%)"] = Acount; dtTime.Rows.Add(rowTime); } continue; #endregion } } this.ChartUc.CreateChartBaifenbi(BLL.ChartControlService.GetDataSourceChartByYijiao(dtTime, "PROGRESS REPORT", "Line", 1300, 600, false)); } #endregion } }