using FineUIPro; using System; using System.Collections; using System.Linq; namespace BLL { /// /// 进度数据仓库 /// public static class JDGLDataDWService { #region 进度数据仓库 /// /// 记录数 /// public static int count { get; set; } /// /// 定义变量 /// private static IQueryable getDataLists = from x in Funs.DB.Base_Project select x; /// /// 进度数据仓库 /// /// /// /// /// /// public static IEnumerable getDataDWList(string projectId, DateTime? startTime, DateTime? endTime, Grid Grid1) { var getDataList = from x in Funs.DB.Base_Project select x; if (!string.IsNullOrEmpty(projectId) && projectId != Const._Null) { getDataList = getDataList.Where(x => x.ProjectId == projectId); } count = getDataList.Count(); if (count == 0) { return null; } getDataList = SortConditionHelper.SortingAndPaging(getDataList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize); return from x in getDataList select new { x.ProjectId, x.ProjectName, x.ProjectCode, JDRate = getJDRate(x.ProjectId, startTime, endTime), //项目进度完成百分比 }; } #endregion /// /// 进度百分比 /// /// public static string getJDRate(string projectId, DateTime? startTime, DateTime? endTime) { double totalSJCost = 0; ////累计实际费用 decimal totalPlanCost = 0; ////计划费用 var getViewWorkPackageParentDetail = from x in Funs.DB.View_WBS_WorkPackageParentDetail where (x.ProjectId == projectId || projectId == null) && (x.ParentId == "1" || x.ParentId == "2") select x; if (startTime.HasValue) { getViewWorkPackageParentDetail = getViewWorkPackageParentDetail.Where(x => x.Months >= startTime); } if (endTime.HasValue) { getViewWorkPackageParentDetail = getViewWorkPackageParentDetail.Where(x => x.Months <= endTime); } if (getViewWorkPackageParentDetail.Count() > 0) { totalSJCost = getViewWorkPackageParentDetail.Sum(x => x.TotalThisValue ?? 0); } var getUnitWork = from x in Funs.DB.WBS_UnitWork where x.ProjectId == projectId select x; if (getUnitWork.Count() > 0) { totalPlanCost = getUnitWork.Sum(x => x.PlanCost ?? 0); } ///项目进度完成百分比 decimal s = Convert.ToDecimal(totalSJCost); return totalPlanCost > 0 ? Math.Round(s / totalPlanCost).ToString() + "%" : "0%"; } } }