diff --git a/DataBase/版本日志/SGGLDB_V2021-09-15-001.sql b/DataBase/版本日志/已更新脚本/SGGLDB_V2021-09-15-001.sql similarity index 100% rename from DataBase/版本日志/SGGLDB_V2021-09-15-001.sql rename to DataBase/版本日志/已更新脚本/SGGLDB_V2021-09-15-001.sql diff --git a/DataBase/版本日志/已更新脚本/SGGLDB_V2021-09-22-001.sql b/DataBase/版本日志/已更新脚本/SGGLDB_V2021-09-22-001.sql new file mode 100644 index 00000000..5accf71a --- /dev/null +++ b/DataBase/版本日志/已更新脚本/SGGLDB_V2021-09-22-001.sql @@ -0,0 +1,118 @@ + +ALTER VIEW [dbo].[View_WBS_CostControlDetail] +AS +/********ϸ********/ +SELECT detail.CostControlDetailId, +detail.CostControlId, +detail.Months, +detail.StartDate, +detail.EndDate, +c.CostControlCode, +c.CostControlName, +c.WbsSetId, +c.ProjectId, +c.Unit, --λ +c.TotalNum, --ͬ +CONVERT(FLOAT,(select sum(ISNULL(PlanNum,0)) from WBS_CostControlDetail where CostControlId=detail.CostControlId and Months<=detail.Months and StartDate is null)) as TotalPlanNum, --ۼƼƻ +CONVERT(FLOAT,(select sum(ISNULL(PlanNum,0)) from WBS_CostControlDetail where CostControlId=detail.CostControlId and ((Months e.CostControlDetailId == costControlDetailId); } + /// + /// 根据项目Id获取有对应月份的周计划的费控项明细id + /// + /// 费控项明细Id + public static string GetHasWeekPlanCostControlIdByProjectIdAndMonth(string projectId, DateTime months) + { + Model.SGGLDB db = Funs.DB; + return (from x in db.WBS_CostControl + join y in db.Wbs_WbsSet + on x.WbsSetId equals y.WbsSetId + where y.ProjectId == projectId && y.IsApprove == true && + (from a in db.WBS_CostControlDetail where a.CostControlId == x.CostControlId && a.Months == months && a.StartDate != null select a).Count() > 0 + select x.CostControlId).FirstOrDefault(); + } + /// /// 根据CostControlId判断是否存在费控项明细信息 /// @@ -46,7 +61,7 @@ namespace BLL /// 对应标志 /// 年 /// 月 - public static Model.WBS_CostControlDetail GetCostControlDetailByCostControlIdAndMonthsWeek(string costControlId, DateTime months,DateTime startDate) + public static Model.WBS_CostControlDetail GetCostControlDetailByCostControlIdAndMonthsWeek(string costControlId, DateTime months, DateTime startDate) { return (from x in Funs.DB.WBS_CostControlDetail where x.CostControlId == costControlId && x.Months == months && x.StartDate == startDate select x).FirstOrDefault(); } diff --git a/SGGL/BLL/JDGL/WBS/WbsSetService.cs b/SGGL/BLL/JDGL/WBS/WbsSetService.cs index e449f015..0f4bb334 100644 --- a/SGGL/BLL/JDGL/WBS/WbsSetService.cs +++ b/SGGL/BLL/JDGL/WBS/WbsSetService.cs @@ -160,6 +160,16 @@ namespace BLL return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsApprove == true orderby x.WbsSetCode select x).ToList(); } + /// + /// 根据上级Id获取是否存在同级别的其他已勾选项 + /// + /// 上级Id + /// + public static bool IsExitOtherApproveWbsSetsBySuperWbsSetId(string superWbsSetId, string wbsSetId) + { + return (from x in Funs.DB.Wbs_WbsSet where x.SuperWbsSetId == superWbsSetId && x.IsApprove == true && x.WbsSetId != wbsSetId orderby x.WbsSetCode select x).FirstOrDefault() != null; + } + /// /// 根据上级Id获取集合 /// @@ -337,9 +347,10 @@ namespace BLL } var cn = (from x in db.WBS_CnProfession where x.InstallationId == inId && x.OldId.ToString() == cnCode select x).FirstOrDefault(); var list = (from x in db.Wbs_WbsSet - join y in db.Wbs_UnitProject - on x.UnitProjectId equals y.UnitProjectId - where x.CnProfessionId == cn.CnProfessionId && y.UnitProjectCode == unitProjectCode && x.WbsSetCode==wbsSetCode select x.WbsSetId).ToList(); + join y in db.Wbs_UnitProject + on x.UnitProjectId equals y.UnitProjectId + where x.CnProfessionId == cn.CnProfessionId && y.UnitProjectCode == unitProjectCode && x.WbsSetCode == wbsSetCode + select x.WbsSetId).ToList(); return list; } diff --git a/SGGL/BLL/JDGL/WBS/WorkloadStatisticsService.cs b/SGGL/BLL/JDGL/WBS/WorkloadStatisticsService.cs index bfbf77b1..55d5be72 100644 --- a/SGGL/BLL/JDGL/WBS/WorkloadStatisticsService.cs +++ b/SGGL/BLL/JDGL/WBS/WorkloadStatisticsService.cs @@ -11,7 +11,7 @@ namespace BLL /// 获取模拟树表格 /// /// - public static DataTable GetTreeDataTable(string projectId, DateTime months, string cnProfessionId, string unitProjectCode, string wbsSetCode) + public static DataTable GetTreeDataTable(string projectId, DateTime months, string startDate, string cnProfessionId, string unitProjectCode, string wbsSetCode) { List CostControlDetailStatisticsList = new List(); DataTable table = new DataTable(); @@ -53,579 +53,107 @@ namespace BLL AddDetail(newList, CostControlDetailStatisticsList, item.Id); } DataRow row; DataRow parentRow; - #region 全部统计 - if (cnProfessionId == BLL.Const._Null) //全部统计 + #region 按月统计 + if (startDate == BLL.Const._Null) { - foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + #region 全部统计 + if (cnProfessionId == BLL.Const._Null) //全部统计 { - row = table.NewRow(); - row[0] = item.Id; - row[1] = item.SupId; - row[2] = item.Name; - row[3] = item.ProjectId; - Model.WBS_CostControl costControl = costControls.FirstOrDefault(x => x.CostControlId == item.Id); - if (costControl != null) + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) { - Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); - if (detail != null) + row = table.NewRow(); + row[0] = item.Id; + row[1] = item.SupId; + row[2] = item.Name; + row[3] = item.ProjectId; + Model.WBS_CostControl costControl = costControls.FirstOrDefault(x => x.CostControlId == item.Id); + if (costControl != null) { - row[4] = detail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 - row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 - row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); - if (lastDetail != null && lastDetail.Months <= months) + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); + if (detail != null) { - row[4] = lastDetail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 - row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + } } } - } - else - { - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - table.Rows.Add(row); - } - } - #endregion - else - { - decimal d10 = 0, d11 = 0, d12 = 0, d15 = 0, d16 = 0, d17 = 0; - #region 按专业 - if (unitProjectCode == BLL.Const._Null) - { - if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) - { - newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType != "Installation" && x.OldCnProfessionId.ToString() == cnProfessionId) select x).ToList(); - var cn = cnProfessionInits.FirstOrDefault(x => x.CnProfessionId.ToString() == cnProfessionId); - parentRow = table.NewRow(); - parentRow[0] = cn.CnProfessionId.ToString(); - parentRow[1] = "0"; - parentRow[2] = cn.CnProfessionName; - parentRow[3] = projectId; - var cnList = newList.Where(x => x.WBSType == "CnProfession"); - foreach (Model.View_WBS_CostControlDetailStatistics item in cnList) { Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); if (parentDetail != null) { - d10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); - d11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); - d12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); - d15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); - d16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); - d17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 } else { Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); if (parentLastDetail != null && parentLastDetail.Months <= months) { - d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 } } } - if (d10 != 0) - { - parentRow[10] = decimal.Round(d10, 2);//本月实际成本 - parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 - parentRow[12] = decimal.Round(d12, 2);//本月完成预算 - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 - } - else - { - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 - } - table.Rows.Add(parentRow); - foreach (Model.View_WBS_CostControlDetailStatistics item in newList) - { - row = table.NewRow(); - row[0] = item.Id; - row[2] = item.Name; - row[3] = item.ProjectId; - if (item.WBSType == "Installation") - { - if (item.SupId == "0") - { - row[1] = cn.CnProfessionId.ToString(); - } - else - { - row[1] = item.SupId; - } - string cnId = BLL.CnProfessionService.GetCnProfessionIdByInstallationIdAndOldId(item.Id, cnProfessionId); - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == cnId && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == cnId); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - else if (item.WBSType == "CnProfession") - { - row[1] = item.SupId; - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - else if (item.WBSType == "UnitProject") - { - row[1] = item.SupId; - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - else if (item.WBSType == "WbsSet") - { - row[1] = item.SupId; - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - else if (item.WBSType == "CostControl") - { - row[1] = item.SupId; - Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); - if (detail != null) - { - row[4] = detail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 - row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 - row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); - if (lastDetail != null && lastDetail.Months <= months) - { - row[4] = lastDetail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 - row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - table.Rows.Add(row); - } - } - else - { - Model.WBS_CnProfessionInit cnInit = BLL.CnProfessionInitService.GetCnProfessionInitByCnProfessionId(cnProfessionId); - newList = (from x in newList where (x.WBSType == "Installation" && x.Name == cnInit.CnProfessionName) || (x.WBSType != "Installation" && x.OldCnProfessionId.ToString() == cnProfessionId) select x).ToList(); - var cn = newList.FirstOrDefault(x => x.Name == cnInit.CnProfessionName); - parentRow = table.NewRow(); - parentRow[0] = cn.Id; - parentRow[1] = "0"; - parentRow[2] = cn.Name; - parentRow[3] = projectId; - Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == cn.Id && x.Months == months); - if (pparentDetail != null) - { - d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisRealCost), 2); - d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanValue), 2); - d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanCost), 2); - d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalRealCost), 2); - d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanValue), 2); - d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanCost), 2); - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == cn.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); - } - } - if (d10 != 0) - { - parentRow[10] = decimal.Round(d10, 2);//本月实际成本 - parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 - parentRow[12] = decimal.Round(d12, 2);//本月完成预算 - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 - } - else - { - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 - } - table.Rows.Add(parentRow); - foreach (Model.View_WBS_CostControlDetailStatistics item in newList) - { - row = table.NewRow(); - row[0] = item.Id; - row[2] = item.Name; - row[3] = item.ProjectId; - if (item.WBSType == "UnitProject") - { - row[1] = item.SupId; - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - else if (item.WBSType == "WbsSet") - { - row[1] = item.SupId; - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - else if (item.WBSType == "CostControl") - { - row[1] = item.SupId; - Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); - if (detail != null) - { - row[4] = detail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 - row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 - row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); - if (lastDetail != null && lastDetail.Months <= months) - { - row[4] = lastDetail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 - row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - table.Rows.Add(row); - } + table.Rows.Add(row); } } #endregion - #region 按分部工程 - else if (wbsSetCode == BLL.Const._Null) + else { - if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) + decimal d10 = 0, d11 = 0, d12 = 0, d15 = 0, d16 = 0, d17 = 0; + #region 按专业 + if (unitProjectCode == BLL.Const._Null) { - newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType == "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId) || (x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode) select x).ToList(); - var up = unitProjectInits.FirstOrDefault(x => x.UnitProjectCode == unitProjectCode); - parentRow = table.NewRow(); - parentRow[0] = up.UnitProjectCode; - parentRow[1] = "0"; - parentRow[2] = up.UnitProjectName; - parentRow[3] = projectId; - foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) { - row = table.NewRow(); - row[0] = item.Id; - row[2] = item.Name; - row[3] = item.ProjectId; - if (item.WBSType == "Installation") + newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType != "Installation" && x.OldCnProfessionId.ToString() == cnProfessionId) select x).ToList(); + var cn = cnProfessionInits.FirstOrDefault(x => x.CnProfessionId.ToString() == cnProfessionId); + parentRow = table.NewRow(); + parentRow[0] = cn.CnProfessionId.ToString(); + parentRow[1] = "0"; + parentRow[2] = cn.CnProfessionName; + parentRow[3] = projectId; + var cnList = newList.Where(x => x.WBSType == "CnProfession"); + foreach (Model.View_WBS_CostControlDetailStatistics item in cnList) { - decimal ind10 = 0, ind11 = 0, ind12 = 0, ind15 = 0, ind16 = 0, ind17 = 0; - if (item.SupId == "0") - { - row[1] = up.UnitProjectCode; - } - else - { - row[1] = item.SupId; - } - List unitProjectIds = BLL.UnitProjectService.GetUnitProjectIdByInstallationIdAndCNCodeAndUnitProjectCode(item.Id, cnProfessionId, unitProjectCode); - foreach (var upId in unitProjectIds) - { - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); - if (parentDetail != null) - { - ind10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); - ind11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); - ind12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); - ind15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); - ind16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); - ind17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - ind15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - ind16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - ind17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); - } - } - } - if (ind10 != 0) - { - row[10] = decimal.Round(ind10, 2);//本月实际成本 - row[11] = decimal.Round(ind11, 2);//本月计划完成预算 - row[12] = decimal.Round(ind12, 2);//本月完成预算 - row[15] = decimal.Round(ind15, 2);//累计完成成本 - row[16] = decimal.Round(ind16, 2);//累计计划完成预算 - row[17] = decimal.Round(ind17, 2);//累计完成预算 - } - else - { - if (ind15 > 0) - { - row[15] = decimal.Round(ind15, 2);//累计完成成本 - } - if (ind16 > 0) - { - row[16] = decimal.Round(ind16, 2);//累计计划完成预算 - } - if (ind17 > 0) - { - row[17] = decimal.Round(ind17, 2);//累计完成预算 - } - } - } - else if (item.WBSType == "CnProfession") - { - decimal cnd10 = 0, cnd11 = 0, cnd12 = 0, cnd15 = 0, cnd16 = 0, cnd17 = 0; - row[1] = item.SupId; - List unitProjectIds = BLL.UnitProjectService.GetUnitProjectIdByCnProfessionIdAndUnitProjectCode(item.Id, unitProjectCode); - foreach (var upId in unitProjectIds) - { - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); - if (parentDetail != null) - { - cnd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); - cnd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); - cnd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); - cnd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); - cnd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); - cnd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - cnd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - cnd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - cnd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); - } - } - } - if (cnd10 != 0) - { - row[10] = decimal.Round(cnd10, 2);//本月实际成本 - row[11] = decimal.Round(cnd11, 2);//本月计划完成预算 - row[12] = decimal.Round(cnd12, 2);//本月完成预算 - row[15] = decimal.Round(cnd15, 2);//累计完成成本 - row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 - row[17] = decimal.Round(cnd17, 2);//累计完成预算 - } - else - { - if (cnd15 > 0) - { - row[15] = decimal.Round(cnd15, 2);//累计完成成本 - } - if (cnd16 > 0) - { - row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 - } - if (cnd17 > 0) - { - row[17] = decimal.Round(cnd17, 2);//累计完成预算 - } - } - } - else if (item.WBSType == "UnitProject") - { - row[1] = item.SupId; Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); if (parentDetail != null) { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 d10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); d11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); d12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); @@ -638,417 +166,469 @@ namespace BLL Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); if (parentLastDetail != null && parentLastDetail.Months <= months) { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); } } } - else if (item.WBSType == "WbsSet") + if (d10 != 0) { - row[1] = item.SupId; - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) + parentRow[10] = decimal.Round(d10, 2);//本月实际成本 + parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本月完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "Installation") { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) + if (item.SupId == "0") { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + row[1] = cn.CnProfessionId.ToString(); + } + else + { + row[1] = item.SupId; + } + string cnId = BLL.CnProfessionService.GetCnProfessionIdByInstallationIdAndOldId(item.Id, cnProfessionId); + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == cnId && x.Months == months); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == cnId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + } } } - } - else if (item.WBSType == "CostControl") - { - row[1] = item.SupId; - Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); - if (detail != null) - { - row[4] = detail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 - row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 - row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); - if (lastDetail != null && lastDetail.Months <= months) - { - row[4] = lastDetail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 - row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - table.Rows.Add(row); - } - if (d10 != 0) - { - parentRow[10] = decimal.Round(d10, 2);//本月实际成本 - parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 - parentRow[12] = decimal.Round(d12, 2);//本月完成预算 - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 - } - else - { - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 - } - table.Rows.Add(parentRow); - } - else - { - newList = (from x in newList where x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode select x).ToList(); - var up = newList.FirstOrDefault(x => x.WBSType == "UnitProject" && x.OldUnitProjectCode == unitProjectCode); - parentRow = table.NewRow(); - parentRow[0] = up.Id; - parentRow[1] = "0"; - parentRow[2] = up.Name; - parentRow[3] = projectId; - Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == up.Id && x.Months == months); - if (pparentDetail != null) - { - d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisRealCost), 2); - d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanValue), 2); - d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanCost), 2); - d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalRealCost), 2); - d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanValue), 2); - d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanCost), 2); - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == up.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); - } - } - foreach (Model.View_WBS_CostControlDetailStatistics item in newList) - { - row = table.NewRow(); - row[0] = item.Id; - row[2] = item.Name; - row[3] = item.ProjectId; - if (item.WBSType == "WbsSet") - { - row[1] = item.SupId; - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) - { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - else if (item.WBSType == "CostControl") - { - row[1] = item.SupId; - Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); - if (detail != null) - { - row[4] = detail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 - row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 - row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); - if (lastDetail != null && lastDetail.Months <= months) - { - row[4] = lastDetail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 - row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 - } - } - } - table.Rows.Add(row); - } - if (d10 != 0) - { - parentRow[10] = decimal.Round(d10, 2);//本月实际成本 - parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 - parentRow[12] = decimal.Round(d12, 2);//本月完成预算 - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 - } - else - { - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 - } - table.Rows.Add(parentRow); - } - } - #endregion - #region 按工作包 - else - { - if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) - { - newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType == "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId) || (x.WBSType == "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode) || (x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.WBSType != "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode && x.OldWbsSetCode == wbsSetCode) select x).ToList(); - var wb = wbsSetInits.FirstOrDefault(x => x.WbsSetCode == wbsSetCode); - parentRow = table.NewRow(); - parentRow[0] = wb.WbsSetCode; - parentRow[1] = "0"; - parentRow[2] = wb.WbsSetName; - parentRow[3] = projectId; - foreach (Model.View_WBS_CostControlDetailStatistics item in newList) - { - row = table.NewRow(); - row[0] = item.Id; - row[2] = item.Name; - row[3] = item.ProjectId; - if (item.WBSType == "Installation") - { - decimal ind10 = 0, ind11 = 0, ind12 = 0, ind15 = 0, ind16 = 0, ind17 = 0; - if (item.SupId == "0") - { - row[1] = wb.WbsSetCode; - } - else + else if (item.WBSType == "CnProfession") { row[1] = item.SupId; - } - List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByInstallationIdAndCNCodeAndUnitProjectCodeAndWbsSetCode(item.Id, cnProfessionId, unitProjectCode, wbsSetCode); - foreach (var upId in wbsSetIds) - { - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); if (parentDetail != null) { - ind10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); - ind11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); - ind12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); - ind15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); - ind16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); - ind17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 } else { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); if (parentLastDetail != null && parentLastDetail.Months <= months) { - ind15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - ind16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - ind17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 } } } - if (ind10 != 0) + else if (item.WBSType == "UnitProject") { - row[10] = decimal.Round(ind10, 2);//本月实际成本 - row[11] = decimal.Round(ind11, 2);//本月计划完成预算 - row[12] = decimal.Round(ind12, 2);//本月完成预算 - row[15] = decimal.Round(ind15, 2);//累计完成成本 - row[16] = decimal.Round(ind16, 2);//累计计划完成预算 - row[17] = decimal.Round(ind17, 2);//累计完成预算 + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + } + } } - else + else if (item.WBSType == "WbsSet") { - if (ind15 > 0) + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + } + else + { + Model.WBS_CnProfessionInit cnInit = BLL.CnProfessionInitService.GetCnProfessionInitByCnProfessionId(cnProfessionId); + newList = (from x in newList where (x.WBSType == "Installation" && x.Name == cnInit.CnProfessionName) || (x.WBSType != "Installation" && x.OldCnProfessionId.ToString() == cnProfessionId) select x).ToList(); + var cn = newList.FirstOrDefault(x => x.Name == cnInit.CnProfessionName); + parentRow = table.NewRow(); + parentRow[0] = cn.Id; + parentRow[1] = "0"; + parentRow[2] = cn.Name; + parentRow[3] = projectId; + Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == cn.Id && x.Months == months); + if (pparentDetail != null) + { + d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == cn.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + } + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本月实际成本 + parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本月完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "UnitProject") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + } + } + #endregion + #region 按分部工程 + else if (wbsSetCode == BLL.Const._Null) + { + if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) + { + newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType == "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId) || (x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode) select x).ToList(); + var up = unitProjectInits.FirstOrDefault(x => x.UnitProjectCode == unitProjectCode); + parentRow = table.NewRow(); + parentRow[0] = up.UnitProjectCode; + parentRow[1] = "0"; + parentRow[2] = up.UnitProjectName; + parentRow[3] = projectId; + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "Installation") + { + decimal ind10 = 0, ind11 = 0, ind12 = 0, ind15 = 0, ind16 = 0, ind17 = 0; + if (item.SupId == "0") + { + row[1] = up.UnitProjectCode; + } + else + { + row[1] = item.SupId; + } + List unitProjectIds = BLL.UnitProjectService.GetUnitProjectIdByInstallationIdAndCNCodeAndUnitProjectCode(item.Id, cnProfessionId, unitProjectCode); + foreach (var upId in unitProjectIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); + if (parentDetail != null) + { + ind10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); + ind11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); + ind12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); + ind15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); + ind16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); + ind17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + ind15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + ind16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + ind17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + } + } + } + if (ind10 != 0) + { + row[10] = decimal.Round(ind10, 2);//本月实际成本 + row[11] = decimal.Round(ind11, 2);//本月计划完成预算 + row[12] = decimal.Round(ind12, 2);//本月完成预算 row[15] = decimal.Round(ind15, 2);//累计完成成本 - } - if (ind16 > 0) - { row[16] = decimal.Round(ind16, 2);//累计计划完成预算 - } - if (ind17 > 0) - { row[17] = decimal.Round(ind17, 2);//累计完成预算 } - } - } - else if (item.WBSType == "CnProfession") - { - decimal cnd10 = 0, cnd11 = 0, cnd12 = 0, cnd15 = 0, cnd16 = 0, cnd17 = 0; - row[1] = item.SupId; - List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByCnProfessionIdAndUnitProjectCodeAndWbsSetCode(item.Id, unitProjectCode, wbsSetCode); - foreach (var upId in wbsSetIds) - { - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); - if (parentDetail != null) - { - cnd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); - cnd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); - cnd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); - cnd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); - cnd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); - cnd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); - } else { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); - if (parentLastDetail != null && parentLastDetail.Months <= months) + if (ind15 > 0) { - cnd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - cnd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - cnd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + row[15] = decimal.Round(ind15, 2);//累计完成成本 + } + if (ind16 > 0) + { + row[16] = decimal.Round(ind16, 2);//累计计划完成预算 + } + if (ind17 > 0) + { + row[17] = decimal.Round(ind17, 2);//累计完成预算 } } } - if (cnd10 != 0) + else if (item.WBSType == "CnProfession") { - row[10] = decimal.Round(cnd10, 2);//本月实际成本 - row[11] = decimal.Round(cnd11, 2);//本月计划完成预算 - row[12] = decimal.Round(cnd12, 2);//本月完成预算 - row[15] = decimal.Round(cnd15, 2);//累计完成成本 - row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 - row[17] = decimal.Round(cnd17, 2);//累计完成预算 - } - else - { - if (cnd15 > 0) + decimal cnd10 = 0, cnd11 = 0, cnd12 = 0, cnd15 = 0, cnd16 = 0, cnd17 = 0; + row[1] = item.SupId; + List unitProjectIds = BLL.UnitProjectService.GetUnitProjectIdByCnProfessionIdAndUnitProjectCode(item.Id, unitProjectCode); + foreach (var upId in unitProjectIds) { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); + if (parentDetail != null) + { + cnd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); + cnd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); + cnd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); + cnd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); + cnd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); + cnd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + cnd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + cnd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + cnd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + } + } + } + if (cnd10 != 0) + { + row[10] = decimal.Round(cnd10, 2);//本月实际成本 + row[11] = decimal.Round(cnd11, 2);//本月计划完成预算 + row[12] = decimal.Round(cnd12, 2);//本月完成预算 row[15] = decimal.Round(cnd15, 2);//累计完成成本 - } - if (cnd16 > 0) - { row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 - } - if (cnd17 > 0) - { row[17] = decimal.Round(cnd17, 2);//累计完成预算 } - } - } - else if (item.WBSType == "UnitProject") - { - decimal upd10 = 0, upd11 = 0, upd12 = 0, upd15 = 0, upd16 = 0, upd17 = 0; - row[1] = item.SupId; - List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByUnitProjectIdAndWbsSetCode(item.Id, wbsSetCode); - foreach (var upId in wbsSetIds) - { - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); - if (parentDetail != null) - { - upd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); - upd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); - upd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); - upd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); - upd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); - upd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); - } else { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); - if (parentLastDetail != null && parentLastDetail.Months <= months) + if (cnd15 > 0) { - upd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - upd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - upd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + row[15] = decimal.Round(cnd15, 2);//累计完成成本 + } + if (cnd16 > 0) + { + row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 + } + if (cnd17 > 0) + { + row[17] = decimal.Round(cnd17, 2);//累计完成预算 } } } - if (upd10 != 0) + else if (item.WBSType == "UnitProject") { - row[10] = decimal.Round(upd10, 2);//本月实际成本 - row[11] = decimal.Round(upd11, 2);//本月计划完成预算 - row[12] = decimal.Round(upd12, 2);//本月完成预算 - row[15] = decimal.Round(upd15, 2);//累计完成成本 - row[16] = decimal.Round(upd16, 2);//累计计划完成预算 - row[17] = decimal.Round(upd17, 2);//累计完成预算 - } - else - { - if (upd15 > 0) - { - row[15] = decimal.Round(upd15, 2);//累计完成成本 - } - if (upd16 > 0) - { - row[16] = decimal.Round(upd16, 2);//累计计划完成预算 - } - if (upd17 > 0) - { - row[17] = decimal.Round(upd17, 2);//累计完成预算 - } - } - } - else if (item.WBSType == "WbsSet") - { - row[1] = item.SupId; - var wbsSet = wbsSets.FirstOrDefault(x => x.WbsSetId == item.Id); - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) - { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 - if (wbsSet.SuperWbsSetId == null) //工作包节点,累加数据 + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 d10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); d11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); d12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); @@ -1056,205 +636,1838 @@ namespace BLL d16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); d17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); } - } - else - { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) + else { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 - if (wbsSet.SuperWbsSetId == null) //工作包节点,累加数据 + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); } } } - } - else if (item.WBSType == "CostControl") - { - row[1] = item.SupId; - Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); - if (detail != null) + else if (item.WBSType == "WbsSet") { - row[4] = detail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 - row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 - row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); - if (lastDetail != null && lastDetail.Months <= months) + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) { - row[4] = lastDetail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 - row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + } } } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); } - table.Rows.Add(row); - } - if (d10 != 0) - { - parentRow[10] = decimal.Round(d10, 2);//本月实际成本 - parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 - parentRow[12] = decimal.Round(d12, 2);//本月完成预算 - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本月实际成本 + parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本月完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); } else { - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + newList = (from x in newList where x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode select x).ToList(); + var up = newList.FirstOrDefault(x => x.WBSType == "UnitProject" && x.OldUnitProjectCode == unitProjectCode); + parentRow = table.NewRow(); + parentRow[0] = up.Id; + parentRow[1] = "0"; + parentRow[2] = up.Name; + parentRow[3] = projectId; + Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == up.Id && x.Months == months); + if (pparentDetail != null) + { + d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == up.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + } + } + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本月实际成本 + parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本月完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); } - table.Rows.Add(parentRow); } + #endregion + #region 按工作包 else { - newList = (from x in newList where x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.WBSType != "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode && x.OldWbsSetCode == wbsSetCode select x).ToList(); - var wb = newList.FirstOrDefault(x => x.WBSType == "WbsSet" && x.OldWbsSetCode == wbsSetCode); - parentRow = table.NewRow(); - parentRow[0] = wb.Id; - parentRow[1] = "0"; - parentRow[2] = wb.Name; - parentRow[3] = projectId; - Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == wb.Id && x.Months == months); - if (pparentDetail != null) + if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) { - d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisRealCost), 2); - d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanValue), 2); - d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanCost), 2); - d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalRealCost), 2); - d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanValue), 2); - d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanCost), 2); + newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType == "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId) || (x.WBSType == "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode) || (x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.WBSType != "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode && x.OldWbsSetCode == wbsSetCode) select x).ToList(); + var wb = wbsSetInits.FirstOrDefault(x => x.WbsSetCode == wbsSetCode); + parentRow = table.NewRow(); + parentRow[0] = wb.WbsSetCode; + parentRow[1] = "0"; + parentRow[2] = wb.WbsSetName; + parentRow[3] = projectId; + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "Installation") + { + decimal ind10 = 0, ind11 = 0, ind12 = 0, ind15 = 0, ind16 = 0, ind17 = 0; + if (item.SupId == "0") + { + row[1] = wb.WbsSetCode; + } + else + { + row[1] = item.SupId; + } + List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByInstallationIdAndCNCodeAndUnitProjectCodeAndWbsSetCode(item.Id, cnProfessionId, unitProjectCode, wbsSetCode); + foreach (var upId in wbsSetIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); + if (parentDetail != null) + { + ind10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); + ind11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); + ind12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); + ind15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); + ind16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); + ind17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + ind15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + ind16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + ind17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + } + } + } + if (ind10 != 0) + { + row[10] = decimal.Round(ind10, 2);//本月实际成本 + row[11] = decimal.Round(ind11, 2);//本月计划完成预算 + row[12] = decimal.Round(ind12, 2);//本月完成预算 + row[15] = decimal.Round(ind15, 2);//累计完成成本 + row[16] = decimal.Round(ind16, 2);//累计计划完成预算 + row[17] = decimal.Round(ind17, 2);//累计完成预算 + } + else + { + if (ind15 > 0) + { + row[15] = decimal.Round(ind15, 2);//累计完成成本 + } + if (ind16 > 0) + { + row[16] = decimal.Round(ind16, 2);//累计计划完成预算 + } + if (ind17 > 0) + { + row[17] = decimal.Round(ind17, 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CnProfession") + { + decimal cnd10 = 0, cnd11 = 0, cnd12 = 0, cnd15 = 0, cnd16 = 0, cnd17 = 0; + row[1] = item.SupId; + List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByCnProfessionIdAndUnitProjectCodeAndWbsSetCode(item.Id, unitProjectCode, wbsSetCode); + foreach (var upId in wbsSetIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); + if (parentDetail != null) + { + cnd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); + cnd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); + cnd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); + cnd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); + cnd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); + cnd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + cnd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + cnd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + cnd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + } + } + } + if (cnd10 != 0) + { + row[10] = decimal.Round(cnd10, 2);//本月实际成本 + row[11] = decimal.Round(cnd11, 2);//本月计划完成预算 + row[12] = decimal.Round(cnd12, 2);//本月完成预算 + row[15] = decimal.Round(cnd15, 2);//累计完成成本 + row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 + row[17] = decimal.Round(cnd17, 2);//累计完成预算 + } + else + { + if (cnd15 > 0) + { + row[15] = decimal.Round(cnd15, 2);//累计完成成本 + } + if (cnd16 > 0) + { + row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 + } + if (cnd17 > 0) + { + row[17] = decimal.Round(cnd17, 2);//累计完成预算 + } + } + } + else if (item.WBSType == "UnitProject") + { + decimal upd10 = 0, upd11 = 0, upd12 = 0, upd15 = 0, upd16 = 0, upd17 = 0; + row[1] = item.SupId; + List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByUnitProjectIdAndWbsSetCode(item.Id, wbsSetCode); + foreach (var upId in wbsSetIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months); + if (parentDetail != null) + { + upd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); + upd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); + upd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); + upd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); + upd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); + upd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + upd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + upd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + upd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + } + } + } + if (upd10 != 0) + { + row[10] = decimal.Round(upd10, 2);//本月实际成本 + row[11] = decimal.Round(upd11, 2);//本月计划完成预算 + row[12] = decimal.Round(upd12, 2);//本月完成预算 + row[15] = decimal.Round(upd15, 2);//累计完成成本 + row[16] = decimal.Round(upd16, 2);//累计计划完成预算 + row[17] = decimal.Round(upd17, 2);//累计完成预算 + } + else + { + if (upd15 > 0) + { + row[15] = decimal.Round(upd15, 2);//累计完成成本 + } + if (upd16 > 0) + { + row[16] = decimal.Round(upd16, 2);//累计计划完成预算 + } + if (upd17 > 0) + { + row[17] = decimal.Round(upd17, 2);//累计完成预算 + } + } + } + else if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + var wbsSet = wbsSets.FirstOrDefault(x => x.WbsSetId == item.Id); + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + if (wbsSet.SuperWbsSetId == null) //工作包节点,累加数据 + { + d10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2); + } + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + if (wbsSet.SuperWbsSetId == null) //工作包节点,累加数据 + { + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + } + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本月实际成本 + parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本月完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); } else { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == wb.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) + newList = (from x in newList where x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.WBSType != "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode && x.OldWbsSetCode == wbsSetCode select x).ToList(); + var wb = newList.FirstOrDefault(x => x.WBSType == "WbsSet" && x.OldWbsSetCode == wbsSetCode); + parentRow = table.NewRow(); + parentRow[0] = wb.Id; + parentRow[1] = "0"; + parentRow[2] = wb.Name; + parentRow[3] = projectId; + Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == wb.Id && x.Months == months); + if (pparentDetail != null) { - d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); - d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); - d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); + d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalPlanCost), 2); } - } - foreach (Model.View_WBS_CostControlDetailStatistics item in newList) - { - row = table.NewRow(); - row[0] = item.Id; - row[2] = item.Name; - row[3] = item.ProjectId; - if (item.WBSType == "WbsSet") + else { - row[1] = item.SupId; - var wbsSet = wbsSets.FirstOrDefault(x => x.WbsSetId == item.Id); - Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); - if (parentDetail != null) + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == wb.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) { - row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 - row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2); } - else + } + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "WbsSet") { - Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); - if (parentLastDetail != null && parentLastDetail.Months <= months) + row[1] = item.SupId; + var wbsSet = wbsSets.FirstOrDefault(x => x.WbsSetId == item.Id); + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months); + if (parentDetail != null) { - row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisPlanCost), 2);//本月完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalPlanCost), 2);//累计完成预算 + } } } - } - else if (item.WBSType == "CostControl") - { - row[1] = item.SupId; - Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); - if (detail != null) + else if (item.WBSType == "CostControl") { - row[4] = detail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 - row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 - row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 - row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 - row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 - } - else - { - Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); - if (lastDetail != null && lastDetail.Months <= months) + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months); + if (detail != null) { - row[4] = lastDetail.Unit;//单位 - row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 - row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 - row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 - row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 - row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 - row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 - row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 - row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 - row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 - row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisRealCost), 2);//本月实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisPlanValue), 2);//本月计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisPlanCost), 2);//本月完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanNum), 2);//本月计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisNum), 2);//本月完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalPlanCost), 2);//累计完成预算 + } } } + table.Rows.Add(row); } - table.Rows.Add(row); + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本月实际成本 + parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本月完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); } - if (d10 != 0) + } + #endregion + } + } + #endregion + #region 按周统计 + else + { + DateTime start = Convert.ToDateTime(startDate.Split(',')[0]); + #region 全部统计 + if (cnProfessionId == BLL.Const._Null) //全部统计 + { + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[1] = item.SupId; + row[2] = item.Name; + row[3] = item.ProjectId; + Model.WBS_CostControl costControl = costControls.FirstOrDefault(x => x.CostControlId == item.Id); + if (costControl != null) { - parentRow[10] = decimal.Round(d10, 2);//本月实际成本 - parentRow[11] = decimal.Round(d11, 2);//本月计划完成预算 - parentRow[12] = decimal.Round(d12, 2);//本月完成预算 - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months && x.StartDate == start); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanCost), 2);//本周完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } } else { - parentRow[15] = decimal.Round(d15, 2);//累计完成成本 - parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 - parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } } - table.Rows.Add(parentRow); + table.Rows.Add(row); } } #endregion + else + { + decimal d10 = 0, d11 = 0, d12 = 0, d15 = 0, d16 = 0, d17 = 0; + #region 按专业 + if (unitProjectCode == BLL.Const._Null) + { + if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) + { + newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType != "Installation" && x.OldCnProfessionId.ToString() == cnProfessionId) select x).ToList(); + var cn = cnProfessionInits.FirstOrDefault(x => x.CnProfessionId.ToString() == cnProfessionId); + parentRow = table.NewRow(); + parentRow[0] = cn.CnProfessionId.ToString(); + parentRow[1] = "0"; + parentRow[2] = cn.CnProfessionName; + parentRow[3] = projectId; + var cnList = newList.Where(x => x.WBSType == "CnProfession"); + foreach (Model.View_WBS_CostControlDetailStatistics item in cnList) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + d10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本周实际成本 + parentRow[11] = decimal.Round(d11, 2);//本周计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本周完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "Installation") + { + if (item.SupId == "0") + { + row[1] = cn.CnProfessionId.ToString(); + } + else + { + row[1] = item.SupId; + } + string cnId = BLL.CnProfessionService.GetCnProfessionIdByInstallationIdAndOldId(item.Id, cnProfessionId); + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == cnId && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == cnId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CnProfession") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "UnitProject") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months && x.StartDate == start); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanCost), 2);//本周完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + } + else + { + Model.WBS_CnProfessionInit cnInit = BLL.CnProfessionInitService.GetCnProfessionInitByCnProfessionId(cnProfessionId); + newList = (from x in newList where (x.WBSType == "Installation" && x.Name == cnInit.CnProfessionName) || (x.WBSType != "Installation" && x.OldCnProfessionId.ToString() == cnProfessionId) select x).ToList(); + var cn = newList.FirstOrDefault(x => x.Name == cnInit.CnProfessionName); + parentRow = table.NewRow(); + parentRow[0] = cn.Id; + parentRow[1] = "0"; + parentRow[2] = cn.Name; + parentRow[3] = projectId; + Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == cn.Id && x.Months == months && x.StartDate == start); + if (pparentDetail != null) + { + d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == cn.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本周实际成本 + parentRow[11] = decimal.Round(d11, 2);//本周计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本周完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "UnitProject") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months && x.StartDate == start); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanCost), 2);//本周完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + } + } + #endregion + #region 按分部工程 + else if (wbsSetCode == BLL.Const._Null) + { + if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) + { + newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType == "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId) || (x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode) select x).ToList(); + var up = unitProjectInits.FirstOrDefault(x => x.UnitProjectCode == unitProjectCode); + parentRow = table.NewRow(); + parentRow[0] = up.UnitProjectCode; + parentRow[1] = "0"; + parentRow[2] = up.UnitProjectName; + parentRow[3] = projectId; + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "Installation") + { + decimal ind10 = 0, ind11 = 0, ind12 = 0, ind15 = 0, ind16 = 0, ind17 = 0; + if (item.SupId == "0") + { + row[1] = up.UnitProjectCode; + } + else + { + row[1] = item.SupId; + } + List unitProjectIds = BLL.UnitProjectService.GetUnitProjectIdByInstallationIdAndCNCodeAndUnitProjectCode(item.Id, cnProfessionId, unitProjectCode); + foreach (var upId in unitProjectIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + ind10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2); + ind11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2); + ind12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2); + ind15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2); + ind16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2); + ind17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + ind15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + ind16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + ind17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + } + if (ind10 != 0) + { + row[10] = decimal.Round(ind10, 2);//本周实际成本 + row[11] = decimal.Round(ind11, 2);//本周计划完成预算 + row[12] = decimal.Round(ind12, 2);//本周完成预算 + row[15] = decimal.Round(ind15, 2);//累计完成成本 + row[16] = decimal.Round(ind16, 2);//累计计划完成预算 + row[17] = decimal.Round(ind17, 2);//累计完成预算 + } + else + { + if (ind15 > 0) + { + row[15] = decimal.Round(ind15, 2);//累计完成成本 + } + if (ind16 > 0) + { + row[16] = decimal.Round(ind16, 2);//累计计划完成预算 + } + if (ind17 > 0) + { + row[17] = decimal.Round(ind17, 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CnProfession") + { + decimal cnd10 = 0, cnd11 = 0, cnd12 = 0, cnd15 = 0, cnd16 = 0, cnd17 = 0; + row[1] = item.SupId; + List unitProjectIds = BLL.UnitProjectService.GetUnitProjectIdByCnProfessionIdAndUnitProjectCode(item.Id, unitProjectCode); + foreach (var upId in unitProjectIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + cnd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2); + cnd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2); + cnd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2); + cnd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2); + cnd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2); + cnd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + cnd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + cnd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + cnd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + } + if (cnd10 != 0) + { + row[10] = decimal.Round(cnd10, 2);//本周实际成本 + row[11] = decimal.Round(cnd11, 2);//本周计划完成预算 + row[12] = decimal.Round(cnd12, 2);//本周完成预算 + row[15] = decimal.Round(cnd15, 2);//累计完成成本 + row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 + row[17] = decimal.Round(cnd17, 2);//累计完成预算 + } + else + { + if (cnd15 > 0) + { + row[15] = decimal.Round(cnd15, 2);//累计完成成本 + } + if (cnd16 > 0) + { + row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 + } + if (cnd17 > 0) + { + row[17] = decimal.Round(cnd17, 2);//累计完成预算 + } + } + } + else if (item.WBSType == "UnitProject") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + d10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + } + else if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months && x.StartDate == start); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanCost), 2);//本周完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本周实际成本 + parentRow[11] = decimal.Round(d11, 2);//本周计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本周完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); + } + else + { + newList = (from x in newList where x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode select x).ToList(); + var up = newList.FirstOrDefault(x => x.WBSType == "UnitProject" && x.OldUnitProjectCode == unitProjectCode); + parentRow = table.NewRow(); + parentRow[0] = up.Id; + parentRow[1] = "0"; + parentRow[2] = up.Name; + parentRow[3] = projectId; + Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == up.Id && x.Months == months && x.StartDate == start); + if (pparentDetail != null) + { + d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == up.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months && x.StartDate == start); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanCost), 2);//本周完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本周实际成本 + parentRow[11] = decimal.Round(d11, 2);//本周计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本周完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); + } + } + #endregion + #region 按工作包 + else + { + if (cnProfessionId != Const.ACCNProfessionalId.ToString() && cnProfessionId != Const.GECNProfessionalId.ToString() && cnProfessionId != Const.UPCNProfessionalId.ToString() && cnProfessionId != Const.TFCNProfessionalId.ToString() && cnProfessionId != Const.GLCNProfessionalId.ToString()) + { + newList = (from x in newList where (x.WBSType == "Installation" && x.Name != "防腐绝热" && x.Name != "地勘" && x.Name != "全厂地下主管网" && x.Name != "临时设施" && x.Name != "总图") || (x.WBSType == "CnProfession" && x.OldCnProfessionId.ToString() == cnProfessionId) || (x.WBSType == "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode) || (x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.WBSType != "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode && x.OldWbsSetCode == wbsSetCode) select x).ToList(); + var wb = wbsSetInits.FirstOrDefault(x => x.WbsSetCode == wbsSetCode); + parentRow = table.NewRow(); + parentRow[0] = wb.WbsSetCode; + parentRow[1] = "0"; + parentRow[2] = wb.WbsSetName; + parentRow[3] = projectId; + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "Installation") + { + decimal ind10 = 0, ind11 = 0, ind12 = 0, ind15 = 0, ind16 = 0, ind17 = 0; + if (item.SupId == "0") + { + row[1] = wb.WbsSetCode; + } + else + { + row[1] = item.SupId; + } + List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByInstallationIdAndCNCodeAndUnitProjectCodeAndWbsSetCode(item.Id, cnProfessionId, unitProjectCode, wbsSetCode); + foreach (var upId in wbsSetIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + ind10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2); + ind11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2); + ind12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2); + ind15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2); + ind16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2); + ind17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + ind15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + ind16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + ind17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + } + if (ind10 != 0) + { + row[10] = decimal.Round(ind10, 2);//本周实际成本 + row[11] = decimal.Round(ind11, 2);//本周计划完成预算 + row[12] = decimal.Round(ind12, 2);//本周完成预算 + row[15] = decimal.Round(ind15, 2);//累计完成成本 + row[16] = decimal.Round(ind16, 2);//累计计划完成预算 + row[17] = decimal.Round(ind17, 2);//累计完成预算 + } + else + { + if (ind15 > 0) + { + row[15] = decimal.Round(ind15, 2);//累计完成成本 + } + if (ind16 > 0) + { + row[16] = decimal.Round(ind16, 2);//累计计划完成预算 + } + if (ind17 > 0) + { + row[17] = decimal.Round(ind17, 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CnProfession") + { + decimal cnd10 = 0, cnd11 = 0, cnd12 = 0, cnd15 = 0, cnd16 = 0, cnd17 = 0; + row[1] = item.SupId; + List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByCnProfessionIdAndUnitProjectCodeAndWbsSetCode(item.Id, unitProjectCode, wbsSetCode); + foreach (var upId in wbsSetIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + cnd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2); + cnd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2); + cnd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2); + cnd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2); + cnd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2); + cnd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + cnd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + cnd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + cnd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + } + if (cnd10 != 0) + { + row[10] = decimal.Round(cnd10, 2);//本周实际成本 + row[11] = decimal.Round(cnd11, 2);//本周计划完成预算 + row[12] = decimal.Round(cnd12, 2);//本周完成预算 + row[15] = decimal.Round(cnd15, 2);//累计完成成本 + row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 + row[17] = decimal.Round(cnd17, 2);//累计完成预算 + } + else + { + if (cnd15 > 0) + { + row[15] = decimal.Round(cnd15, 2);//累计完成成本 + } + if (cnd16 > 0) + { + row[16] = decimal.Round(cnd16, 2);//累计计划完成预算 + } + if (cnd17 > 0) + { + row[17] = decimal.Round(cnd17, 2);//累计完成预算 + } + } + } + else if (item.WBSType == "UnitProject") + { + decimal upd10 = 0, upd11 = 0, upd12 = 0, upd15 = 0, upd16 = 0, upd17 = 0; + row[1] = item.SupId; + List wbsSetIds = BLL.WbsSetService.GetWbsSetIdByUnitProjectIdAndWbsSetCode(item.Id, wbsSetCode); + foreach (var upId in wbsSetIds) + { + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == upId && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + upd10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2); + upd11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2); + upd12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2); + upd15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2); + upd16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2); + upd17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == upId); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + upd15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + upd16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + upd17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + } + if (upd10 != 0) + { + row[10] = decimal.Round(upd10, 2);//本周实际成本 + row[11] = decimal.Round(upd11, 2);//本周计划完成预算 + row[12] = decimal.Round(upd12, 2);//本周完成预算 + row[15] = decimal.Round(upd15, 2);//累计完成成本 + row[16] = decimal.Round(upd16, 2);//累计计划完成预算 + row[17] = decimal.Round(upd17, 2);//累计完成预算 + } + else + { + if (upd15 > 0) + { + row[15] = decimal.Round(upd15, 2);//累计完成成本 + } + if (upd16 > 0) + { + row[16] = decimal.Round(upd16, 2);//累计计划完成预算 + } + if (upd17 > 0) + { + row[17] = decimal.Round(upd17, 2);//累计完成预算 + } + } + } + else if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + var wbsSet = wbsSets.FirstOrDefault(x => x.WbsSetId == item.Id); + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + if (wbsSet.SuperWbsSetId == null) //工作包节点,累加数据 + { + d10 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2); + } + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + if (wbsSet.SuperWbsSetId == null) //工作包节点,累加数据 + { + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months && x.StartDate == start); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanCost), 2);//本周完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本周实际成本 + parentRow[11] = decimal.Round(d11, 2);//本周计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本周完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); + } + else + { + newList = (from x in newList where x.WBSType != "Installation" && x.WBSType != "CnProfession" && x.WBSType != "UnitProject" && x.OldCnProfessionId.ToString() == cnProfessionId && x.OldUnitProjectCode == unitProjectCode && x.OldWbsSetCode == wbsSetCode select x).ToList(); + var wb = newList.FirstOrDefault(x => x.WBSType == "WbsSet" && x.OldWbsSetCode == wbsSetCode); + parentRow = table.NewRow(); + parentRow[0] = wb.Id; + parentRow[1] = "0"; + parentRow[2] = wb.Name; + parentRow[3] = projectId; + Model.View_WBS_CostControlParentDetail pparentDetail = parentDetails.FirstOrDefault(x => x.ParentId == wb.Id && x.Months == months && x.StartDate == start); + if (pparentDetail != null) + { + d10 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekRealCost), 2); + d11 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekPlanValue), 2); + d12 += decimal.Round(Convert.ToDecimal(pparentDetail.ThisWeekPlanCost), 2); + d15 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(pparentDetail.TotalWeekPlanCost), 2); + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == wb.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + d15 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2); + d16 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2); + d17 += decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2); + } + } + foreach (Model.View_WBS_CostControlDetailStatistics item in newList) + { + row = table.NewRow(); + row[0] = item.Id; + row[2] = item.Name; + row[3] = item.ProjectId; + if (item.WBSType == "WbsSet") + { + row[1] = item.SupId; + var wbsSet = wbsSets.FirstOrDefault(x => x.WbsSetId == item.Id); + Model.View_WBS_CostControlParentDetail parentDetail = parentDetails.FirstOrDefault(x => x.ParentId == item.Id && x.Months == months && x.StartDate == start); + if (parentDetail != null) + { + row[10] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(parentDetail.ThisWeekPlanCost), 2);//本周完成预算 + row[15] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlParentDetail parentLastDetail = parentDetails.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.ParentId == item.Id); + if (parentLastDetail != null && parentLastDetail.Months <= months) + { + row[15] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(parentLastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + else if (item.WBSType == "CostControl") + { + row[1] = item.SupId; + Model.View_WBS_CostControlDetail detail = details.FirstOrDefault(x => x.CostControlId == item.Id && x.Months == months && x.StartDate == start); + if (detail != null) + { + row[4] = detail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(detail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(detail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(detail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(detail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(detail.PlanPrice), 2);//控制预算单价 + row[10] = decimal.Round(Convert.ToDecimal(detail.ThisWeekRealCost), 2);//本周实际成本 + row[11] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanValue), 2);//本周计划完成预算 + row[12] = decimal.Round(Convert.ToDecimal(detail.ThisWeekPlanCost), 2);//本周完成预算 + row[13] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(detail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(detail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(detail.TotalWeekPlanCost), 2);//累计完成预算 + } + else + { + Model.View_WBS_CostControlDetail lastDetail = details.OrderByDescending(x => x.Months).OrderByDescending(x => x.StartDate).FirstOrDefault(x => x.CostControlId == item.Id); + if (lastDetail != null && lastDetail.Months <= months) + { + row[4] = lastDetail.Unit;//单位 + row[5] = decimal.Round(Convert.ToDecimal(lastDetail.TotalNum), 2);//合同工作量 + row[6] = decimal.Round(Convert.ToDecimal(lastDetail.RealPrice), 2);//成本单价 + row[7] = decimal.Round(Convert.ToDecimal(lastDetail.PlanWeekNum), 2);//本周计划完成量 + row[8] = decimal.Round(Convert.ToDecimal(lastDetail.ThisWeekNum), 2);//本周完成量 + row[9] = decimal.Round(Convert.ToDecimal(lastDetail.PlanPrice), 2);//控制预算单价 + row[13] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanNum), 2);//累计计划完成量 + row[14] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekThisNum), 2);//累计完成量 + row[15] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekRealCost), 2);//累计完成成本 + row[16] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanValue), 2);//累计计划完成预算 + row[17] = decimal.Round(Convert.ToDecimal(lastDetail.TotalWeekPlanCost), 2);//累计完成预算 + } + } + } + table.Rows.Add(row); + } + if (d10 != 0) + { + parentRow[10] = decimal.Round(d10, 2);//本周实际成本 + parentRow[11] = decimal.Round(d11, 2);//本周计划完成预算 + parentRow[12] = decimal.Round(d12, 2);//本周完成预算 + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + else + { + parentRow[15] = decimal.Round(d15, 2);//累计完成成本 + parentRow[16] = decimal.Round(d16, 2);//累计计划完成预算 + parentRow[17] = decimal.Round(d17, 2);//累计完成预算 + } + table.Rows.Add(parentRow); + } + } + #endregion + } } + #endregion return table; } diff --git a/SGGL/FineUIPro.Web/Controls/ChartControl.ascx.cs b/SGGL/FineUIPro.Web/Controls/ChartControl.ascx.cs index 3fac9b3c..17a07139 100644 --- a/SGGL/FineUIPro.Web/Controls/ChartControl.ascx.cs +++ b/SGGL/FineUIPro.Web/Controls/ChartControl.ascx.cs @@ -216,67 +216,67 @@ namespace Web.Controls chartArea.Area3DStyle.Enable3D = false; chart1.ChartAreas.Add(chartArea); - chart1.Series.Add("本月计划工作预算费用"); - chart1.Series.Add("本月已完工作预算费用"); - chart1.Series.Add("本月已完工作实际费用"); - chart1.Series.Add("累计计划工作预算费用"); - chart1.Series.Add("累计已完工作预算费用"); - chart1.Series.Add("累计已完工作实际费用"); + chart1.Series.Add("本月计划工作预算费用-BCWS"); + chart1.Series.Add("本月已完工作预算费用-BCWP"); + chart1.Series.Add("本月已完工作实际费用-ACWP"); + chart1.Series.Add("累计计划工作预算费用-BCWS"); + chart1.Series.Add("累计已完工作预算费用-BCWP"); + chart1.Series.Add("累计已完工作实际费用-ACWP"); DataView dv = dt.DefaultView; - chart1.Series["本月计划工作预算费用"].Points.DataBindXY(dv, "月份", dv, "本月计划工作预算费用"); - chart1.Series["本月计划工作预算费用"].ChartType = SeriesChartType.Column; + chart1.Series["本月计划工作预算费用-BCWS"].Points.DataBindXY(dv, "月份", dv, "本月计划工作预算费用-BCWS"); + chart1.Series["本月计划工作预算费用-BCWS"].ChartType = SeriesChartType.Column; - for (int i = 0; i < chart1.Series["本月计划工作预算费用"].Points.Count; i++) + for (int i = 0; i < chart1.Series["本月计划工作预算费用-BCWS"].Points.Count; i++) { - chart1.Series["本月计划工作预算费用"].Points[i].ToolTip = "#VALX,#VALY"; + chart1.Series["本月计划工作预算费用-BCWS"].Points[i].ToolTip = "#VALX,#VALY"; } - chart1.Series["本月已完工作预算费用"].Points.DataBindXY(dv, "月份", dv, "本月已完工作预算费用"); - chart1.Series["本月已完工作预算费用"].ChartType = SeriesChartType.Column; + chart1.Series["本月已完工作预算费用-BCWP"].Points.DataBindXY(dv, "月份", dv, "本月已完工作预算费用-BCWP"); + chart1.Series["本月已完工作预算费用-BCWP"].ChartType = SeriesChartType.Column; - for (int i = 0; i < chart1.Series["本月已完工作预算费用"].Points.Count; i++) + for (int i = 0; i < chart1.Series["本月已完工作预算费用-BCWP"].Points.Count; i++) { - chart1.Series["本月已完工作预算费用"].Points[i].ToolTip = "#VALX,#VALY"; + chart1.Series["本月已完工作预算费用-BCWP"].Points[i].ToolTip = "#VALX,#VALY"; } - chart1.Series["本月已完工作实际费用"].Points.DataBindXY(dv, "月份", dv, "本月已完工作实际费用"); - chart1.Series["本月已完工作实际费用"].ChartType = SeriesChartType.Column; + chart1.Series["本月已完工作实际费用-ACWP"].Points.DataBindXY(dv, "月份", dv, "本月已完工作实际费用-ACWP"); + chart1.Series["本月已完工作实际费用-ACWP"].ChartType = SeriesChartType.Column; - for (int i = 0; i < chart1.Series["本月已完工作实际费用"].Points.Count; i++) + for (int i = 0; i < chart1.Series["本月已完工作实际费用-ACWP"].Points.Count; i++) { - chart1.Series["本月已完工作实际费用"].Points[i].ToolTip = "#VALX,#VALY"; + chart1.Series["本月已完工作实际费用-ACWP"].Points[i].ToolTip = "#VALX,#VALY"; } - chart1.Series["累计计划工作预算费用"].Points.DataBindXY(dv, "月份", dv, "累计计划工作预算费用"); - chart1.Series["累计计划工作预算费用"].ChartType = SeriesChartType.Spline; - chart1.Series["累计计划工作预算费用"].Color = Color.Blue; - chart1.Series["累计计划工作预算费用"].BorderWidth = 2; + chart1.Series["累计计划工作预算费用-BCWS"].Points.DataBindXY(dv, "月份", dv, "累计计划工作预算费用-BCWS"); + chart1.Series["累计计划工作预算费用-BCWS"].ChartType = SeriesChartType.Spline; + chart1.Series["累计计划工作预算费用-BCWS"].Color = Color.Blue; + chart1.Series["累计计划工作预算费用-BCWS"].BorderWidth = 2; - for (int i = 0; i < chart1.Series["累计计划工作预算费用"].Points.Count; i++) + for (int i = 0; i < chart1.Series["累计计划工作预算费用-BCWS"].Points.Count; i++) { - chart1.Series["累计计划工作预算费用"].Points[i].ToolTip = "#VALX,#VALY"; + chart1.Series["累计计划工作预算费用-BCWS"].Points[i].ToolTip = "#VALX,#VALY"; } - chart1.Series["累计已完工作预算费用"].Points.DataBindXY(dv, "月份", dv, "累计已完工作预算费用"); - chart1.Series["累计已完工作预算费用"].ChartType = SeriesChartType.Spline; - chart1.Series["累计已完工作预算费用"].Color = Color.MediumSeaGreen; - chart1.Series["累计已完工作预算费用"].BorderWidth = 2; + chart1.Series["累计已完工作预算费用-BCWP"].Points.DataBindXY(dv, "月份", dv, "累计已完工作预算费用-BCWP"); + chart1.Series["累计已完工作预算费用-BCWP"].ChartType = SeriesChartType.Spline; + chart1.Series["累计已完工作预算费用-BCWP"].Color = Color.MediumSeaGreen; + chart1.Series["累计已完工作预算费用-BCWP"].BorderWidth = 2; - for (int i = 0; i < chart1.Series["累计已完工作预算费用"].Points.Count; i++) + for (int i = 0; i < chart1.Series["累计已完工作预算费用-BCWP"].Points.Count; i++) { - chart1.Series["累计已完工作预算费用"].Points[i].ToolTip = "#VALX,#VALY"; + chart1.Series["累计已完工作预算费用-BCWP"].Points[i].ToolTip = "#VALX,#VALY"; } - chart1.Series["累计已完工作实际费用"].Points.DataBindXY(dv, "月份", dv, "累计已完工作实际费用"); - chart1.Series["累计已完工作实际费用"].ChartType = SeriesChartType.Spline; - chart1.Series["累计已完工作实际费用"].Color = Color.Red; - chart1.Series["累计已完工作实际费用"].BorderWidth = 2; + chart1.Series["累计已完工作实际费用-ACWP"].Points.DataBindXY(dv, "月份", dv, "累计已完工作实际费用-ACWP"); + chart1.Series["累计已完工作实际费用-ACWP"].ChartType = SeriesChartType.Spline; + chart1.Series["累计已完工作实际费用-ACWP"].Color = Color.Red; + chart1.Series["累计已完工作实际费用-ACWP"].BorderWidth = 2; - for (int i = 0; i < chart1.Series["累计已完工作实际费用"].Points.Count; i++) + for (int i = 0; i < chart1.Series["累计已完工作实际费用-ACWP"].Points.Count; i++) { - chart1.Series["累计已完工作实际费用"].Points[i].ToolTip = "#VALX,#VALY"; + chart1.Series["累计已完工作实际费用-ACWP"].Points[i].ToolTip = "#VALX,#VALY"; } Controls.Add(chart1); diff --git a/SGGL/FineUIPro.Web/ErrLog.txt b/SGGL/FineUIPro.Web/ErrLog.txt index 8591e8d9..e305653b 100644 --- a/SGGL/FineUIPro.Web/ErrLog.txt +++ b/SGGL/FineUIPro.Web/ErrLog.txt @@ -1,33 +1,166 @@  错误信息开始=====> -错误类型:FormatException -错误信息:输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。 +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 错误堆栈: - 在 System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength) - 在 System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) - 在 System.Convert.FromBase64String(String s) - 在 System.Security.Cryptography.RSA.FromXmlString(String xmlString) - 在 FineUIPro.Web.Login.RSADecrypt(String privatekey, String content) 位置 D:\CWCEC\SGGL_CWCEC\SGGL\FineUIPro.Web\Login.aspx.cs:行号 161 - 在 FineUIPro.Web.Login.Page_Load(Object sender, EventArgs e) 位置 D:\CWCEC\SGGL_CWCEC\SGGL\FineUIPro.Web\Login.aspx.cs:行号 74 + 在 FineUIPro.Web.JDGL.WBS.WBSSetAudit.GetButtonPower() 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\FineUIPro.Web\JDGL\WBS\WBSSetAudit.aspx.cs:行号 2297 + 在 FineUIPro.Web.JDGL.WBS.WBSSetAudit.Page_Load(Object sender, EventArgs e) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\FineUIPro.Web\JDGL\WBS\WBSSetAudit.aspx.cs:行号 24 在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 在 System.EventHandler.Invoke(Object sender, EventArgs e) 在 System.Web.UI.Control.OnLoad(EventArgs e) 在 System.Web.UI.Control.LoadRecursive() 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) -出错时间:09/17/2021 14:54:20 -出错文件:http://localhost:8118/Login.aspx?data=****&database=userName=sysgly×pan=1256015312 +出错时间:09/23/2021 10:28:56 +出错文件:http://localhost:8118/JDGL/WBS/WBSSetAudit.aspx IP地址:::1 -出错时间:09/17/2021 14:54:20 +出错时间:09/23/2021 10:28:56 + 错误信息开始=====> -错误类型:FormatException -错误信息:该字符串未被识别为有效的 DateTime。 +错误类型:SqlException +错误信息:执行超时已过期。完成操作之前已超时或服务器未响应。 错误堆栈: - 在 System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) - 在 System.DateTime.Parse(String s) - 在 BLL.Funs.GetNewDateTime(String time) 位置 D:\CWCEC\SGGL_CWCEC\SGGL\BLL\Common\Funs.cs:行号 554 -出错时间:09/17/2021 14:56:12 -出错时间:09/17/2021 14:56:12 + 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) + 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) + 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) + 在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) + 在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() + 在 System.Data.SqlClient.SqlDataReader.get_MetaData() + 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) + 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) + 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) + 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) + 在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) + 在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) + 在 System.Data.Common.DbCommand.ExecuteReader() + 在 System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) + 在 System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) + 在 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) + 在 System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression) + 在 System.Linq.Queryable.Count[TSource](IQueryable`1 source) + 在 BLL.GetDataService.CorrectingPersonInOutNumber(String projectId) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\BLL\OpenService\GetDataService.cs:行号 139 + 在 BLL.MonitorService.DoSynchData() 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\BLL\OpenService\MonitorService.cs:行号 2180 + 在 BLL.MonitorService.ColligateFormConfirmProcessEve(Object sender, ElapsedEventArgs e) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\BLL\OpenService\MonitorService.cs:行号 112 +----错误类型:Win32Exception +----错误信息: +----等待的操作过时。 +----错误堆栈: + 出错时间:09/23/2021 11:18:10 +出错时间:09/23/2021 11:18:11 + + +错误信息开始=====> +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 +错误堆栈: + 在 FineUIPro.Web.JDGL.WBS.WBSSetAudit.trWBS_NodeCheck(Object sender, TreeCheckEventArgs e) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\FineUIPro.Web\JDGL\WBS\WBSSetAudit.aspx.cs:行号 332 + 在 FineUIPro.Tree.OnNodeCheck(TreeCheckEventArgs e) + 在 (Tree , TreeCheckEventArgs ) + 在 FineUIPro.Tree.RaisePostBackEvent(String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:09/23/2021 11:20:19 +出错文件:http://localhost:8118/JDGL/WBS/WBSSetAudit.aspx +IP地址:::1 +操作人员:JT + +出错时间:09/23/2021 11:20:19 + + +错误信息开始=====> +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 +错误堆栈: + 在 FineUIPro.Web.JDGL.WBS.WBSSetAudit.trWBS_NodeCheck(Object sender, TreeCheckEventArgs e) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\FineUIPro.Web\JDGL\WBS\WBSSetAudit.aspx.cs:行号 332 + 在 FineUIPro.Tree.OnNodeCheck(TreeCheckEventArgs e) + 在 (Tree , TreeCheckEventArgs ) + 在 FineUIPro.Tree.RaisePostBackEvent(String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:09/23/2021 11:21:00 +出错文件:http://localhost:8118/JDGL/WBS/WBSSetAudit.aspx +IP地址:::1 +操作人员:JT + +出错时间:09/23/2021 11:21:00 + + +错误信息开始=====> +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 +错误堆栈: + 在 FineUIPro.Web.JDGL.WBS.WBSSetAudit.trWBS_NodeCheck(Object sender, TreeCheckEventArgs e) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\FineUIPro.Web\JDGL\WBS\WBSSetAudit.aspx.cs:行号 332 + 在 FineUIPro.Tree.OnNodeCheck(TreeCheckEventArgs e) + 在 (Tree , TreeCheckEventArgs ) + 在 FineUIPro.Tree.RaisePostBackEvent(String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:09/23/2021 11:21:01 +出错文件:http://localhost:8118/JDGL/WBS/WBSSetAudit.aspx +IP地址:::1 +操作人员:JT + +出错时间:09/23/2021 11:21:01 + + +错误信息开始=====> +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 +错误堆栈: + 在 FineUIPro.Web.JDGL.WBS.WBSSetAudit.trWBS_NodeCheck(Object sender, TreeCheckEventArgs e) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\FineUIPro.Web\JDGL\WBS\WBSSetAudit.aspx.cs:行号 332 + 在 FineUIPro.Tree.OnNodeCheck(TreeCheckEventArgs e) + 在 (Tree , TreeCheckEventArgs ) + 在 FineUIPro.Tree.RaisePostBackEvent(String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:09/23/2021 11:21:02 +出错文件:http://localhost:8118/JDGL/WBS/WBSSetAudit.aspx +IP地址:::1 +操作人员:JT + +出错时间:09/23/2021 11:21:02 + + +错误信息开始=====> +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 +错误堆栈: + 在 FineUIPro.Web.JDGL.WBS.WBSSetAudit.trWBS_NodeCheck(Object sender, TreeCheckEventArgs e) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\FineUIPro.Web\JDGL\WBS\WBSSetAudit.aspx.cs:行号 334 + 在 FineUIPro.Tree.OnNodeCheck(TreeCheckEventArgs e) + 在 (Tree , TreeCheckEventArgs ) + 在 FineUIPro.Tree.RaisePostBackEvent(String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:09/23/2021 11:23:22 +出错文件:http://localhost:8118/JDGL/WBS/WBSSetAudit.aspx +IP地址:::1 +操作人员:JT + +出错时间:09/23/2021 11:23:22 + + +错误信息开始=====> +错误类型:NullReferenceException +错误信息:未将对象引用设置到对象的实例。 +错误堆栈: + 在 FineUIPro.Web.JDGL.WBS.WBSSetAudit.trWBS_NodeCheck(Object sender, TreeCheckEventArgs e) 位置 E:\工作\五环施工平台\SGGL_CWCEC\SGGL\FineUIPro.Web\JDGL\WBS\WBSSetAudit.aspx.cs:行号 334 + 在 FineUIPro.Tree.OnNodeCheck(TreeCheckEventArgs e) + 在 (Tree , TreeCheckEventArgs ) + 在 FineUIPro.Tree.RaisePostBackEvent(String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) + 在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) + 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +出错时间:09/23/2021 11:23:42 +出错文件:http://localhost:8118/JDGL/WBS/WBSSetAudit.aspx +IP地址:::1 +操作人员:JT + +出错时间:09/23/2021 11:23:42 diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index 0a96ca9d..36a8d229 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -248,6 +248,7 @@ + diff --git a/SGGL/FineUIPro.Web/JDGL/CostAnalysis/EarnedValueCurve.aspx b/SGGL/FineUIPro.Web/JDGL/CostAnalysis/EarnedValueCurve.aspx index 654553be..41455726 100644 --- a/SGGL/FineUIPro.Web/JDGL/CostAnalysis/EarnedValueCurve.aspx +++ b/SGGL/FineUIPro.Web/JDGL/CostAnalysis/EarnedValueCurve.aspx @@ -8,6 +8,17 @@ 赢得值曲线 +
@@ -32,23 +43,23 @@ - + - + - + - + - + - + diff --git a/SGGL/FineUIPro.Web/JDGL/CostAnalysis/EarnedValueCurve.aspx.cs b/SGGL/FineUIPro.Web/JDGL/CostAnalysis/EarnedValueCurve.aspx.cs index 1314d4ce..6040bb9e 100644 --- a/SGGL/FineUIPro.Web/JDGL/CostAnalysis/EarnedValueCurve.aspx.cs +++ b/SGGL/FineUIPro.Web/JDGL/CostAnalysis/EarnedValueCurve.aspx.cs @@ -305,7 +305,7 @@ namespace FineUIPro.Web.JDGL.CostAnalysis if (costControl != null) { string strSql = "select distinct (cast(YEAR(Months) as varchar(4))+'.'+cast(MONTH(Months) as varchar(2))) as 月份,t.Months," + - "ThisRealCost as 本月已完工作实际费用,ThisPlanCost as 本月已完工作预算费用,ThisPlanValue as 本月计划工作预算费用,TotalPlanValue as 累计计划工作预算费用,TotalRealCost as 累计已完工作实际费用,TotalPlanCost as 累计已完工作预算费用 " + + "ThisRealCost as '本月已完工作实际费用-ACWP',ThisPlanCost as '本月已完工作预算费用-BCWP',ThisPlanValue as '本月计划工作预算费用-BCWS',TotalPlanValue as '累计计划工作预算费用-BCWS',TotalRealCost as '累计已完工作实际费用-ACWP',TotalPlanCost as '累计已完工作预算费用-BCWP' " + "from dbo.View_WBS_CostControlDetail as t where CostControlId=@Id order by t.Months"; //string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01"; SqlParameter[] parameter = new SqlParameter[] @@ -321,7 +321,7 @@ namespace FineUIPro.Web.JDGL.CostAnalysis else { string strSql = "select distinct (cast(YEAR(Months) as varchar(4))+'.'+cast(MONTH(Months) as varchar(2))) as 月份,t.Months," + - "ThisRealCost as 本月已完工作实际费用,ThisPlanCost as 本月已完工作预算费用,ThisPlanValue as 本月计划工作预算费用,TotalPlanValue as 累计计划工作预算费用,TotalRealCost as 累计已完工作实际费用,TotalPlanCost as 累计已完工作预算费用 " + + "ThisRealCost as '本月已完工作实际费用-ACWP',ThisPlanCost as '本月已完工作预算费用-BCWP',ThisPlanValue as '本月计划工作预算费用-BCWS',TotalPlanValue as '累计计划工作预算费用-BCWS',TotalRealCost as '累计已完工作实际费用-ACWP',TotalPlanCost as '累计已完工作预算费用-BCWP' " + "from dbo.View_WBS_CostControlParentDetail as t where ParentId=@Id order by t.Months"; //string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01"; SqlParameter[] parameter = new SqlParameter[] diff --git a/SGGL/FineUIPro.Web/JDGL/WBS/WBSSetAudit.aspx b/SGGL/FineUIPro.Web/JDGL/WBS/WBSSetAudit.aspx index df8a08b3..8ddc905f 100644 --- a/SGGL/FineUIPro.Web/JDGL/WBS/WBSSetAudit.aspx +++ b/SGGL/FineUIPro.Web/JDGL/WBS/WBSSetAudit.aspx @@ -58,7 +58,7 @@ ShowHeader="true" BodyPadding="5px" IconFont="ArrowCircleLeft" Layout="Region"> diff --git a/SGGL/FineUIPro.Web/JDGL/WBS/WBSSetAudit.aspx.cs b/SGGL/FineUIPro.Web/JDGL/WBS/WBSSetAudit.aspx.cs index bf554103..1f302d64 100644 --- a/SGGL/FineUIPro.Web/JDGL/WBS/WBSSetAudit.aspx.cs +++ b/SGGL/FineUIPro.Web/JDGL/WBS/WBSSetAudit.aspx.cs @@ -45,6 +45,7 @@ namespace FineUIPro.Web.JDGL.WBS rootNode.NodeID = project.ProjectId; rootNode.CommandName = "project"; rootNode.EnableExpandEvent = true; + rootNode.EnableCheckBox = false; this.trWBS.Nodes.Add(rootNode); if (BLL.Project_InstallationService.IsExitProjectInstallation(project.ProjectId)) { @@ -81,6 +82,7 @@ namespace FineUIPro.Web.JDGL.WBS newNode.CommandName = "installation"; newNode.EnableExpandEvent = true; newNode.EnableClickEvent = true; + newNode.EnableCheckBox = false; e.Node.Nodes.Add(newNode); TreeNode emptyNode = new TreeNode(); @@ -105,6 +107,7 @@ namespace FineUIPro.Web.JDGL.WBS newNode.CommandName = "installation"; newNode.EnableExpandEvent = true; newNode.EnableClickEvent = true; + newNode.EnableCheckBox = false; e.Node.Nodes.Add(newNode); TreeNode emptyNode = new TreeNode(); @@ -126,6 +129,7 @@ namespace FineUIPro.Web.JDGL.WBS newNode.CommandName = "cnProfession"; newNode.EnableExpandEvent = true; newNode.EnableClickEvent = true; + newNode.EnableCheckBox = false; e.Node.Nodes.Add(newNode); TreeNode emptyNode = new TreeNode(); emptyNode.Text = ""; @@ -143,8 +147,7 @@ namespace FineUIPro.Web.JDGL.WBS newNode.NodeID = unitProject.UnitProjectId; newNode.CommandName = "unitProject"; newNode.EnableExpandEvent = true; - newNode.EnableCheckBox = true; - newNode.EnableCheckEvent = true; + newNode.EnableCheckBox = false; if (unitProject.IsSelected == true && unitProject.IsApprove == null) { unitProject.IsApprove = true; @@ -178,8 +181,7 @@ namespace FineUIPro.Web.JDGL.WBS newNode.NodeID = unitProject.UnitProjectId; newNode.CommandName = "unitProject"; newNode.EnableExpandEvent = true; - newNode.EnableCheckBox = true; - newNode.EnableCheckEvent = true; + newNode.EnableCheckBox = false; if (unitProject.IsSelected == true && unitProject.IsApprove == null) { unitProject.IsApprove = true; @@ -327,46 +329,83 @@ namespace FineUIPro.Web.JDGL.WBS /// protected void trWBS_NodeCheck(object sender, FineUIPro.TreeCheckEventArgs e) { + foreach (var node in e.Node.Nodes) + { + node.Checked = e.Checked; + Model.Wbs_WbsSet childWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(node.NodeID); + if (childWbsSet != null) + { + childWbsSet.IsSelected = e.Checked; + childWbsSet.IsApprove = e.Checked; + BLL.WbsSetService.UpdateWbsSet(childWbsSet); + } + } + bool b = true; //是否对父级节点执行选中状态的更新操作 Model.Wbs_WbsSet wbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(e.NodeID); if (wbsSet != null) { wbsSet.IsSelected = e.Checked; wbsSet.IsApprove = e.Checked; BLL.WbsSetService.UpdateWbsSet(wbsSet); - Model.Wbs_WbsSet pWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSet.SuperWbsSetId); - if (pWbsSet != null) + if (e.Checked == false) //当节点取消选中时,判断是否需要对父级节点执行选中状态的更新操作 { - pWbsSet.IsSelected = e.Checked; - pWbsSet.IsApprove = e.Checked; - BLL.WbsSetService.UpdateWbsSet(pWbsSet); - Model.Wbs_WbsSet ppWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(pWbsSet.SuperWbsSetId); - if (ppWbsSet != null) + if (BLL.WbsSetService.IsExitOtherApproveWbsSetsBySuperWbsSetId(wbsSet.SuperWbsSetId, wbsSet.WbsSetId)) { - ppWbsSet.IsSelected = e.Checked; - ppWbsSet.IsApprove = e.Checked; - BLL.WbsSetService.UpdateWbsSet(ppWbsSet); - Model.Wbs_WbsSet pppWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(ppWbsSet.SuperWbsSetId); - if (pppWbsSet != null) + b = false; + } + } + if (b) + { + Model.Wbs_WbsSet pWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(wbsSet.SuperWbsSetId); + if (pWbsSet != null) + { + if (e.Node.ParentNode.EnableCheckBox == true) { - pppWbsSet.IsSelected = e.Checked; - pppWbsSet.IsApprove = e.Checked; - BLL.WbsSetService.UpdateWbsSet(pppWbsSet); + e.Node.ParentNode.Checked = e.Checked; + } + pWbsSet.IsSelected = e.Checked; + pWbsSet.IsApprove = e.Checked; + BLL.WbsSetService.UpdateWbsSet(pWbsSet); + Model.Wbs_WbsSet ppWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(pWbsSet.SuperWbsSetId); + if (ppWbsSet != null) + { + if (e.Node.ParentNode.ParentNode.EnableCheckBox == true) + { + e.Node.ParentNode.ParentNode.Checked = e.Checked; + } + ppWbsSet.IsSelected = e.Checked; + ppWbsSet.IsApprove = e.Checked; + BLL.WbsSetService.UpdateWbsSet(ppWbsSet); + Model.Wbs_WbsSet pppWbsSet = BLL.WbsSetService.GetWbsSetByWbsSetId(ppWbsSet.SuperWbsSetId); + if (pppWbsSet != null) + { + if (e.Node.ParentNode.ParentNode.ParentNode.EnableCheckBox == true) + { + e.Node.ParentNode.ParentNode.ParentNode.Checked = e.Checked; + } + pppWbsSet.IsSelected = e.Checked; + pppWbsSet.IsApprove = e.Checked; + BLL.WbsSetService.UpdateWbsSet(pppWbsSet); + } } } } - Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId); - if (unitProject != null) + if (b) { - unitProject.IsSelected = e.Checked; - unitProject.IsApprove = e.Checked; - BLL.UnitProjectService.UpdateUnitProject(unitProject); - } - Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSet.CnProfessionId); - if (cnProfession != null) - { - cnProfession.IsSelected = e.Checked; - cnProfession.IsApprove = e.Checked; - BLL.CnProfessionService.UpdateCnProfession(cnProfession); + Model.Wbs_UnitProject unitProject = BLL.UnitProjectService.GetUnitProjectByUnitProjectId(wbsSet.UnitProjectId); + if (unitProject != null) + { + unitProject.IsSelected = e.Checked; + unitProject.IsApprove = e.Checked; + BLL.UnitProjectService.UpdateUnitProject(unitProject); + } + Model.WBS_CnProfession cnProfession = BLL.CnProfessionService.GetCnProfessionByCnProfessionId(wbsSet.CnProfessionId); + if (cnProfession != null) + { + cnProfession.IsSelected = e.Checked; + cnProfession.IsApprove = e.Checked; + BLL.CnProfessionService.UpdateCnProfession(cnProfession); + } } } @@ -1027,15 +1066,16 @@ namespace FineUIPro.Web.JDGL.WBS Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning); return; } - Model.WBS_CostControl costControl = BLL.CostControlService.GetCostControlByCostControlId(Grid1.SelectedRowID); - if (costControl != null) + foreach (var id in this.Grid1.SelectedRowIDArray) { + Model.WBS_CostControl costControl = BLL.CostControlService.GetCostControlByCostControlId(id); BLL.WbsSetMatchCostControlService.DeleteWbsSetMatchCostControlByWbsSetIdAndCostControlCode(this.trWBS.SelectedNodeID, costControl.CostControlCode); - BLL.LogService.AddSys_Log(this.CurrUser, Grid1.SelectedRowID, Grid1.SelectedRowID, BLL.Const.ProjectControlPointMenuId, "删除费用对应关系"); + BLL.CostControlService.DeleteCostControl(id); Grid1.DataBind(); BindGrid(); - Alert.ShowInTop("删除数据成功!", MessageBoxIcon.Success); } + BLL.LogService.AddSys_Log(this.CurrUser, Grid1.SelectedRowID, Grid1.SelectedRowID, BLL.Const.ProjectControlPointMenuId, "删除费用对应关系"); + Alert.ShowInTop("删除数据成功!", MessageBoxIcon.Success); } /// diff --git a/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx b/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx index a243018a..f416d1c4 100644 --- a/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx +++ b/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx @@ -29,8 +29,9 @@ + ShowRedStar="true" AutoPostBack="true" OnTextChanged="txtMonths_TextChanged"> + <%-- @@ -60,25 +61,25 @@ HeaderText="合同工作量" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="成本单价(A)" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="本月计划完成量(B)" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="本月完成量(C)" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="控制预算单价(D)" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="本月已完工作实际费用-ACWP(A*C)" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="本月计划工作预算费用-BCWS(B*D)" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="本月已完工作预算费用-BCWP(C*D)" HeaderTextAlign="Center" TextAlign="Center"> @@ -87,13 +88,13 @@ HeaderText="累计完成量" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="累计已完工作实际费用-ACWP" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="累计计划工作预算费用-BCWS" HeaderTextAlign="Center" TextAlign="Center"> + HeaderText="累计已完工作预算费用-BCWP" HeaderTextAlign="Center" TextAlign="Center"> diff --git a/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx.cs b/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx.cs index 278d81df..36b374b1 100644 --- a/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx.cs +++ b/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx.cs @@ -27,10 +27,48 @@ namespace FineUIPro.Web.JDGL.WBS Funs.FineUIPleaseSelect(drpUnitProject); Funs.FineUIPleaseSelect(drpWbsSet); this.txtMonths.Text = string.Format("{0:yyyy-MM}", DateTime.Now); + Funs.FineUIPleaseSelect(this.drpWeek); + InitWeek(); } } #endregion + private void InitWeek() + { + if (!string.IsNullOrEmpty(this.txtMonths.Text.Trim())) + { + this.Grid1.Columns[5].HeaderText = "本月计划完成量(B)"; + this.Grid1.Columns[6].HeaderText = "本月完成量(C)"; + this.Grid1.Columns[8].HeaderText = "本月已完工作实际费用-ACWP(A*C)"; + this.Grid1.Columns[9].HeaderText = "本月计划工作预算费用-BCWS(B*D)"; + this.Grid1.Columns[10].HeaderText = "本月已完工作预算费用-BCWP(C*D)"; + this.drpWeek.Items.Clear(); + DateTime months = Convert.ToDateTime(this.txtMonths.Text.Trim() + "-01"); + string costControlId = BLL.CostControlDetailService.GetHasWeekPlanCostControlIdByProjectIdAndMonth(this.CurrUser.LoginProjectId, months); + if (!string.IsNullOrEmpty(costControlId)) + { + BLL.CostControlDetailService.InitWeekPlanList(this.drpWeek, costControlId, months, true); + this.drpWeek.SelectedValue = BLL.Const._Null; + } + else + { + Funs.FineUIPleaseSelect(this.drpWeek); + } + } + } + + #region 月份选择事件 + /// + /// 月份选择事件 + /// + /// + /// + protected void txtMonths_TextChanged(object sender, EventArgs e) + { + InitWeek(); + } + #endregion + #region 查询 /// /// 查询按钮 @@ -44,7 +82,7 @@ namespace FineUIPro.Web.JDGL.WBS DateTime months = Convert.ToDateTime(this.txtMonths.Text.Trim()); //if (this.rblStatisticsType.SelectedValue == "1") //{ - DataTable table = BLL.WorkloadStatisticsService.GetTreeDataTable(this.CurrUser.LoginProjectId, months, this.drpCnProfession.SelectedValue, this.drpUnitProject.SelectedValue, this.drpWbsSet.SelectedValue); + DataTable table = BLL.WorkloadStatisticsService.GetTreeDataTable(this.CurrUser.LoginProjectId, months, this.drpWeek.SelectedValue, this.drpCnProfession.SelectedValue, this.drpUnitProject.SelectedValue, this.drpWbsSet.SelectedValue); Grid1.DataSource = table; Grid1.DataBind(); //} @@ -150,10 +188,30 @@ namespace FineUIPro.Web.JDGL.WBS Response.Write(GetGridTableHtml2(Grid1)); Response.End(); DateTime months = Convert.ToDateTime(this.txtMonths.Text.Trim()); - DataTable table = BLL.WorkloadStatisticsService.GetTreeDataTable(this.CurrUser.LoginProjectId, months, this.drpCnProfession.SelectedValue, this.drpUnitProject.SelectedValue, this.drpWbsSet.SelectedValue); + DataTable table = BLL.WorkloadStatisticsService.GetTreeDataTable(this.CurrUser.LoginProjectId, months, this.drpWeek.SelectedValue, this.drpCnProfession.SelectedValue, this.drpUnitProject.SelectedValue, this.drpWbsSet.SelectedValue); Grid1.DataSource = table; Grid1.DataBind(); } #endregion + + protected void drpWeek_SelectedIndexChanged(object sender, EventArgs e) + { + if (this.drpWeek.SelectedValue == BLL.Const._Null) + { + this.Grid1.Columns[5].HeaderText = "本月计划完成量(B)"; + this.Grid1.Columns[6].HeaderText = "本月完成量(C)"; + this.Grid1.Columns[8].HeaderText = "本月已完工作实际费用-ACWP(A*C)"; + this.Grid1.Columns[9].HeaderText = "本月计划工作预算费用-BCWS(B*D)"; + this.Grid1.Columns[10].HeaderText = "本月已完工作预算费用-BCWP(C*D)"; + } + else + { + this.Grid1.Columns[5].HeaderText = "本周计划完成量(B)"; + this.Grid1.Columns[6].HeaderText = "本周完成量(C)"; + this.Grid1.Columns[8].HeaderText = "本周已完工作实际费用-ACWP(A*C)"; + this.Grid1.Columns[9].HeaderText = "本周计划工作预算费用-BCWS(B*D)"; + this.Grid1.Columns[10].HeaderText = "本周已完工作预算费用-BCWP(C*D)"; + } + } } } \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx.designer.cs b/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx.designer.cs index a49a0ec7..48ed35cc 100644 --- a/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/JDGL/WBS/WorkloadStatistics.aspx.designer.cs @@ -57,6 +57,15 @@ namespace FineUIPro.Web.JDGL.WBS { /// protected global::FineUIPro.DatePicker txtMonths; + /// + /// drpWeek 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList drpWeek; + /// /// drpCnProfession 控件。 /// diff --git a/SGGL/Model/Model.cs b/SGGL/Model/Model.cs index ef99d532..fec1ad3c 100644 --- a/SGGL/Model/Model.cs +++ b/SGGL/Model/Model.cs @@ -244773,7 +244773,7 @@ namespace Model } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(2000)")] + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(200)")] public string Address { get @@ -244837,7 +244837,7 @@ namespace Model } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)] + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(200)")] public string WorkAreaName { get @@ -326436,7 +326436,7 @@ namespace Model } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(2000)")] + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(200)")] public string Address { get @@ -326452,7 +326452,7 @@ namespace Model } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(MAX)", UpdateCheck=UpdateCheck.Never)] + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkAreaName", DbType="NVarChar(200)")] public string WorkAreaName { get @@ -333293,28 +333293,48 @@ namespace Model private System.Nullable _TotalPlanNum; + private System.Nullable _TotalWeekPlanNum; + private System.Nullable _TotalThisNum; + private System.Nullable _TotalWeekThisNum; + private System.Nullable _PlanNum; + private System.Nullable _PlanWeekNum; + private System.Nullable _ThisNum; + private System.Nullable _ThisWeekNum; + private System.Nullable _RealPrice; private System.Nullable _PlanPrice; private System.Nullable _ThisPlanValue; + private System.Nullable _ThisWeekPlanValue; + private System.Nullable _ThisRealCost; + private System.Nullable _ThisWeekRealCost; + private System.Nullable _ThisPlanCost; + private System.Nullable _ThisWeekPlanCost; + private System.Nullable _TotalPlanValue; + private System.Nullable _TotalWeekPlanValue; + private System.Nullable _TotalRealCost; + private System.Nullable _TotalWeekRealCost; + private System.Nullable _TotalPlanCost; + private System.Nullable _TotalWeekPlanCost; + public View_WBS_CostControlDetail() { } @@ -333511,6 +333531,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWeekPlanNum", DbType="Float")] + public System.Nullable TotalWeekPlanNum + { + get + { + return this._TotalWeekPlanNum; + } + set + { + if ((this._TotalWeekPlanNum != value)) + { + this._TotalWeekPlanNum = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalThisNum", DbType="Float")] public System.Nullable TotalThisNum { @@ -333527,6 +333563,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWeekThisNum", DbType="Float")] + public System.Nullable TotalWeekThisNum + { + get + { + return this._TotalWeekThisNum; + } + set + { + if ((this._TotalWeekThisNum != value)) + { + this._TotalWeekThisNum = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PlanNum", DbType="Float")] public System.Nullable PlanNum { @@ -333543,6 +333595,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PlanWeekNum", DbType="Float")] + public System.Nullable PlanWeekNum + { + get + { + return this._PlanWeekNum; + } + set + { + if ((this._PlanWeekNum != value)) + { + this._PlanWeekNum = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisNum", DbType="Float")] public System.Nullable ThisNum { @@ -333559,6 +333627,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisWeekNum", DbType="Float")] + public System.Nullable ThisWeekNum + { + get + { + return this._ThisWeekNum; + } + set + { + if ((this._ThisWeekNum != value)) + { + this._ThisWeekNum = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RealPrice", DbType="Decimal(18,2)")] public System.Nullable RealPrice { @@ -333607,6 +333691,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisWeekPlanValue", DbType="Float")] + public System.Nullable ThisWeekPlanValue + { + get + { + return this._ThisWeekPlanValue; + } + set + { + if ((this._ThisWeekPlanValue != value)) + { + this._ThisWeekPlanValue = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisRealCost", DbType="Float")] public System.Nullable ThisRealCost { @@ -333623,6 +333723,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisWeekRealCost", DbType="Float")] + public System.Nullable ThisWeekRealCost + { + get + { + return this._ThisWeekRealCost; + } + set + { + if ((this._ThisWeekRealCost != value)) + { + this._ThisWeekRealCost = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisPlanCost", DbType="Float")] public System.Nullable ThisPlanCost { @@ -333639,6 +333755,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisWeekPlanCost", DbType="Float")] + public System.Nullable ThisWeekPlanCost + { + get + { + return this._ThisWeekPlanCost; + } + set + { + if ((this._ThisWeekPlanCost != value)) + { + this._ThisWeekPlanCost = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalPlanValue", DbType="Float")] public System.Nullable TotalPlanValue { @@ -333655,6 +333787,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWeekPlanValue", DbType="Float")] + public System.Nullable TotalWeekPlanValue + { + get + { + return this._TotalWeekPlanValue; + } + set + { + if ((this._TotalWeekPlanValue != value)) + { + this._TotalWeekPlanValue = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalRealCost", DbType="Float")] public System.Nullable TotalRealCost { @@ -333671,6 +333819,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWeekRealCost", DbType="Float")] + public System.Nullable TotalWeekRealCost + { + get + { + return this._TotalWeekRealCost; + } + set + { + if ((this._TotalWeekRealCost != value)) + { + this._TotalWeekRealCost = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalPlanCost", DbType="Float")] public System.Nullable TotalPlanCost { @@ -333686,6 +333850,22 @@ namespace Model } } } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWeekPlanCost", DbType="Float")] + public System.Nullable TotalWeekPlanCost + { + get + { + return this._TotalWeekPlanCost; + } + set + { + if ((this._TotalWeekPlanCost != value)) + { + this._TotalWeekPlanCost = value; + } + } + } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_WBS_CostControlDetailStatistics")] @@ -333857,16 +334037,28 @@ namespace Model private System.Nullable _ThisPlanValue; + private System.Nullable _ThisWeekPlanValue; + private System.Nullable _ThisRealCost; + private System.Nullable _ThisWeekRealCost; + private System.Nullable _ThisPlanCost; + private System.Nullable _ThisWeekPlanCost; + private System.Nullable _TotalPlanValue; + private System.Nullable _TotalWeekPlanValue; + private System.Nullable _TotalRealCost; + private System.Nullable _TotalWeekRealCost; + private System.Nullable _TotalPlanCost; + private System.Nullable _TotalWeekPlanCost; + public View_WBS_CostControlParentDetail() { } @@ -333967,6 +334159,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisWeekPlanValue", DbType="Float")] + public System.Nullable ThisWeekPlanValue + { + get + { + return this._ThisWeekPlanValue; + } + set + { + if ((this._ThisWeekPlanValue != value)) + { + this._ThisWeekPlanValue = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisRealCost", DbType="Float")] public System.Nullable ThisRealCost { @@ -333983,6 +334191,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisWeekRealCost", DbType="Float")] + public System.Nullable ThisWeekRealCost + { + get + { + return this._ThisWeekRealCost; + } + set + { + if ((this._ThisWeekRealCost != value)) + { + this._ThisWeekRealCost = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisPlanCost", DbType="Float")] public System.Nullable ThisPlanCost { @@ -333999,6 +334223,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThisWeekPlanCost", DbType="Float")] + public System.Nullable ThisWeekPlanCost + { + get + { + return this._ThisWeekPlanCost; + } + set + { + if ((this._ThisWeekPlanCost != value)) + { + this._ThisWeekPlanCost = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalPlanValue", DbType="Float")] public System.Nullable TotalPlanValue { @@ -334015,6 +334255,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWeekPlanValue", DbType="Float")] + public System.Nullable TotalWeekPlanValue + { + get + { + return this._TotalWeekPlanValue; + } + set + { + if ((this._TotalWeekPlanValue != value)) + { + this._TotalWeekPlanValue = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalRealCost", DbType="Float")] public System.Nullable TotalRealCost { @@ -334031,6 +334287,22 @@ namespace Model } } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWeekRealCost", DbType="Float")] + public System.Nullable TotalWeekRealCost + { + get + { + return this._TotalWeekRealCost; + } + set + { + if ((this._TotalWeekRealCost != value)) + { + this._TotalWeekRealCost = value; + } + } + } + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalPlanCost", DbType="Float")] public System.Nullable TotalPlanCost { @@ -334046,6 +334318,22 @@ namespace Model } } } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWeekPlanCost", DbType="Float")] + public System.Nullable TotalWeekPlanCost + { + get + { + return this._TotalWeekPlanCost; + } + set + { + if ((this._TotalWeekPlanCost != value)) + { + this._TotalWeekPlanCost = value; + } + } + } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.View_WBSReport")]