This commit is contained in:
2026-11-06 11:07:36 +08:00
parent 0b549c49ec
commit 5696ee0cd2
+46 -46
View File
@@ -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<int> checkAccepts = new List<int>();
@@ -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