diff --git a/SUBQHSE/FineUIPro.Web/common/main.aspx.cs b/SUBQHSE/FineUIPro.Web/common/main.aspx.cs index 4b54b55..e712f0d 100644 --- a/SUBQHSE/FineUIPro.Web/common/main.aspx.cs +++ b/SUBQHSE/FineUIPro.Web/common/main.aspx.cs @@ -62,7 +62,7 @@ namespace FineUIPro.Web.common string hsseZGRate = "0"; double generalRectificationRate = 0; - if (hsseData.GeneralClosedNum.HasValue && hsseData.GeneralNotClosedNum.HasValue) + if (hsseData.GeneralClosedNum.HasValue && hsseData.GeneralClosedNum > 0 && hsseData.GeneralNotClosedNum.HasValue) { double total = hsseData.GeneralClosedNum.Value + hsseData.GeneralNotClosedNum.Value; if (total > 0) @@ -130,12 +130,12 @@ namespace FineUIPro.Web.common int inspectionPersonIsCheckOk = inspectionPersonList.Where(x => x.IsOnSite.HasValue && x.IsOnSite == true).Count(); int inspectionMachineIsCheckOk = inspectionMachineList.Where(x => x.IsCheckOK.HasValue && x.IsCheckOK == true).Count(); - double inspectionEquipmentRate = inspectionEquipmentIsCheckOk > 0 ? Math.Round((100 * (double)(inspectionEquipmentIsCheckOk / inspectionEquipment)), 2) : 0; - double inspectionPersonRate = inspectionPersonIsCheckOk > 0 ? Math.Round((100 * (double)(inspectionPersonIsCheckOk / inspectionPerson)), 2) : 0; - double inspectionMachineRate = inspectionMachineIsCheckOk > 0 ? Math.Round((100 * (double)(inspectionMachineIsCheckOk / inspectionMachine)), 2) : 0; + double inspectionEquipmentRate = inspectionEquipmentIsCheckOk > 0 && inspectionEquipment > 0 ? Math.Round((100 * (double)(inspectionEquipmentIsCheckOk / inspectionEquipment)), 2) : 0; + double inspectionPersonRate = inspectionPersonIsCheckOk > 0 && inspectionPerson > 0 ? Math.Round((100 * (double)(inspectionPersonIsCheckOk / inspectionPerson)), 2) : 0; + double inspectionMachineRate = inspectionMachineIsCheckOk > 0 && inspectionMachine > 0 ? Math.Round((100 * (double)(inspectionMachineIsCheckOk / inspectionMachine)), 2) : 0; string cqmsZGRate = "0"; - if (cqmsData.ProblemNum.HasValue && cqmsData.ProblemCompletedNum.HasValue) + if (cqmsData.ProblemNum.HasValue && cqmsData.ProblemNum > 0 && cqmsData.ProblemCompletedNum.HasValue && cqmsData.ProblemCompletedNum > 0) { cqmsZGRate = String.Format("{0:N2}", 100 * cqmsData.ProblemCompletedNum.Value / cqmsData.ProblemNum.Value); } @@ -147,18 +147,18 @@ namespace FineUIPro.Web.common #region 质量验收数据 //关键工序合格率 - double keyProcessRate = cqmsData.KeyProcessOKNum > 0 ? Math.Round(100 * ((double)cqmsData.KeyProcessOKNum / (double)cqmsData.KeyProcessNum), 2) : 0; + double keyProcessRate = cqmsData.KeyProcessOKNum > 0 && cqmsData.KeyProcessNum > 0 ? Math.Round(100 * ((double)cqmsData.KeyProcessOKNum / (double)cqmsData.KeyProcessNum), 2) : 0; //特殊工程合格率 - double specialProcessRate = cqmsData.SpecialProcessOKNum > 0 ? Math.Round(100 * ((double)cqmsData.SpecialProcessOKNum / (double)cqmsData.SpecialProcessNum), 2) : 0; + double specialProcessRate = cqmsData.SpecialProcessOKNum > 0 && cqmsData.SpecialProcessNum > 0 ? Math.Round(100 * ((double)cqmsData.SpecialProcessOKNum / (double)cqmsData.SpecialProcessNum), 2) : 0; //隐蔽工程合格率 - double concealedWorksRate = cqmsData.ConcealedWorksOKNum > 0 ? Math.Round(100 * ((double)cqmsData.ConcealedWorksOKNum / (double)cqmsData.ConcealedWorksNum), 2) : 0; + double concealedWorksRate = cqmsData.ConcealedWorksOKNum > 0 && cqmsData.ConcealedWorksNum > 0 ? Math.Round(100 * ((double)cqmsData.ConcealedWorksOKNum / (double)cqmsData.ConcealedWorksNum), 2) : 0; //单位工程合格率 - double unitProjecProcessRate = cqmsData.UnitProjectAcceptNum > 0 ? Math.Round(100 * ((double)cqmsData.UnitProjectAcceptOKNum / (double)cqmsData.UnitProjectAcceptNum), 2) : 0; + double unitProjecProcessRate = cqmsData.UnitProjectAcceptNum > 0 && cqmsData.UnitProjectAcceptNum > 0 ? Math.Round(100 * ((double)cqmsData.UnitProjectAcceptOKNum / (double)cqmsData.UnitProjectAcceptNum), 2) : 0; //分部工程合格率 - double subProjectProcessRate = cqmsData.SubProjectAcceptOKNum > 0 ? Math.Round(100 * ((double)cqmsData.SubProjectAcceptOKNum / (double)cqmsData.SubProjectAcceptNum), 2) : 0; + double subProjectProcessRate = cqmsData.SubProjectAcceptOKNum > 0 && cqmsData.SubProjectAcceptNum > 0 ? Math.Round(100 * ((double)cqmsData.SubProjectAcceptOKNum / (double)cqmsData.SubProjectAcceptNum), 2) : 0; //分项工程合格率 - double subdivisionalWorksRate = cqmsData.SubdivisionalWorksAcceptOKNum > 0 ? Math.Round(100 * ((double)cqmsData.SubdivisionalWorksAcceptOKNum / (double)cqmsData.SubdivisionalWorksAcceptNum), 2) : 0; + double subdivisionalWorksRate = cqmsData.SubdivisionalWorksAcceptOKNum > 0 && cqmsData.SubdivisionalWorksAcceptNum > 0 ? Math.Round(100 * ((double)cqmsData.SubdivisionalWorksAcceptOKNum / (double)cqmsData.SubdivisionalWorksAcceptNum), 2) : 0; //验收数 List checkAccepts = new List(); @@ -206,43 +206,43 @@ namespace FineUIPro.Web.common #region 累计人工时 //累计人工时 var allProjectsDetails = (from detail in db.SitePerson_DayReportDetail - join report in db.SitePerson_DayReport - on detail.DayReportId equals report.DayReportId - join unit in db.Base_Unit - on detail.UnitId equals unit.UnitId - join project in db.Base_Project - on report.ProjectId equals project.ProjectId - where BaseDataService.BeUnderConstructionList.Contains(report.ProjectId) && - report.CompileDate == (from r in db.SitePerson_DayReport - where r.ProjectId == report.ProjectId - select r.CompileDate).Max() - orderby project.ShortName, unit.UnitCode - select new - { - detail.DayReportDetailId, - report.ProjectId, - ProjectName = project.ShortName, - unit.UnitName, - detail.PersonWorkTime, - // 当年累计 - YearPersonWorkTime = (from d in db.SitePerson_DayReportDetail - join r in db.SitePerson_DayReport on d.DayReportId equals r.DayReportId - where r.ProjectId == report.ProjectId - && d.UnitId == detail.UnitId - && r.CompileDate <= report.CompileDate - && r.CompileDate.Value.Year == report.CompileDate.Value.Year - select d.PersonWorkTime ?? 0).Sum(), - // 总累计 - TotalPersonWorkTime = (from d in db.SitePerson_DayReportDetail - join r in db.SitePerson_DayReport on d.DayReportId equals r.DayReportId - where r.ProjectId == report.ProjectId - && d.UnitId == detail.UnitId - && r.CompileDate <= report.CompileDate - select d.PersonWorkTime ?? 0).Sum() - }).ToList(); + join report in db.SitePerson_DayReport + on detail.DayReportId equals report.DayReportId + join unit in db.Base_Unit + on detail.UnitId equals unit.UnitId + join project in db.Base_Project + on report.ProjectId equals project.ProjectId + where BaseDataService.BeUnderConstructionList.Contains(report.ProjectId) && + report.CompileDate == (from r in db.SitePerson_DayReport + where r.ProjectId == report.ProjectId + select r.CompileDate).Max() + orderby project.ShortName, unit.UnitCode + select new + { + detail.DayReportDetailId, + report.ProjectId, + ProjectName = project.ShortName, + unit.UnitName, + detail.PersonWorkTime, + // 当年累计 + YearPersonWorkTime = (from d in db.SitePerson_DayReportDetail + join r in db.SitePerson_DayReport on d.DayReportId equals r.DayReportId + where r.ProjectId == report.ProjectId + && d.UnitId == detail.UnitId + && r.CompileDate <= report.CompileDate + && r.CompileDate.Value.Year == report.CompileDate.Value.Year + select d.PersonWorkTime ?? 0).Sum(), + // 总累计 + TotalPersonWorkTime = (from d in db.SitePerson_DayReportDetail + join r in db.SitePerson_DayReport on d.DayReportId equals r.DayReportId + where r.ProjectId == report.ProjectId + && d.UnitId == detail.UnitId + && r.CompileDate <= report.CompileDate + select d.PersonWorkTime ?? 0).Sum() + }).ToList(); // 计算所有项目累计人工时总和 var totalManHour = allProjectsDetails.Sum(x => x.TotalPersonWorkTime); - + #endregion // 构造返回数据 var returnData = new