diff --git a/SGGL/BLL/DigData/CQMSDataDWService .cs b/SGGL/BLL/DigData/CQMSDataDWService .cs index 1c2127c5..074789db 100644 --- a/SGGL/BLL/DigData/CQMSDataDWService .cs +++ b/SGGL/BLL/DigData/CQMSDataDWService .cs @@ -26,7 +26,8 @@ namespace BLL /// 定义变量 /// private static IQueryable getDataLists = from x in db.Base_Project - select x; + where x.ProjectState == Const.ProjectState_1 + select x; /// /// 质量数据仓库 @@ -38,7 +39,7 @@ namespace BLL /// public static IEnumerable getDataDWList( string projectId, DateTime? startTime, DateTime? endTime, Grid Grid1) { - var getDataList = from x in Funs.DB.Base_Project select x; + IQueryable getDataList = getDataLists; if (!string.IsNullOrEmpty(projectId) && projectId != Const._Null) { getDataList = getDataList.Where(x => x.ProjectId == projectId); @@ -56,13 +57,87 @@ namespace BLL x.ProjectId, x.ProjectName, x.ProjectCode, - Rate1 = "0%", //质量验收问题整改率 - Rate2 = "0%", //控制点完成率 - Rate3 = "0%", //质量检查问题整改率 - Rate4 = "0%", //管道焊接一次合格率 + Rate1 = getSpotCheckRate(x.ProjectId), //质量验收问题整改率 + Rate2 = getSpotCheckDataRate(x.ProjectId), //控制点完成率 + Rate3 = getCheckControlStates(x.ProjectId), //质量检查问题整改率 + Rate4 = getFirstPassRate(x.ProjectId), //管道焊接一次合格率 }; } #endregion + /// + /// 质量验收问题整改率 + /// + /// + /// + public static string getSpotCheckRate(string projectId) + { + + //// 实体验收 资料验收 + var getSpotCheckDetail = from x in Funs.DB.Check_SpotCheckDetail + join y in Funs.DB.Check_SpotCheck on x.SpotCheckCode equals y.SpotCheckCode + where (y.ProjectId == projectId || projectId == null) && y.State == "8" + select x; + int all = getSpotCheckDetail.Count(); + // this.lbSpotCheck1.Text = all.ToString(); + int onesOKCount = getSpotCheckDetail.Where(x => x.IsOnesOK == true).Count(); //一次合格 + // this.lbSpotCheck2.Text= okCount.ToString(); + + return all > 0 ? Math.Round(onesOKCount * 100.0 / (all * 1.0)).ToString() + "%" : "0%"; + } + + /// + /// 控制点完成率 + /// + /// + /// + public static string getSpotCheckDataRate(string projectId) + { + var getSpotCheckDetail = from x in Funs.DB.Check_SpotCheckDetail + join y in Funs.DB.Check_SpotCheck on x.SpotCheckCode equals y.SpotCheckCode + where (y.ProjectId == projectId || projectId == null) && y.State == "8" + select x; + /// 资料验收合格项目 + var getOKSpotCheckDetail = getSpotCheckDetail.Where(x => x.IsOK == true); + int okYSCount = getOKSpotCheckDetail.Count(); //验收合格 + int okDateCount = getSpotCheckDetail.Where(x => x.IsDataOK == "1").Count(); //资料合格 + return okYSCount > 0 ? Math.Round(okDateCount * 100.0 / (okYSCount * 1.0)).ToString() + "%" : "0%"; + } + + /// + /// 质量检查问题整改率 + /// + /// + /// + public static string getCheckControlStates(string projectId) + { + var getCheck_CheckControl = from x in Funs.DB.Check_CheckControl + where (x.ProjectId == projectId || projectId == null) + select x; + int allCheckControlCount = getCheck_CheckControl.Count(); + int okCheckControlCount = getCheck_CheckControl.Where(x => x.State == "7").Count(); ///已整改 + return allCheckControlCount > 0 ? Math.Round(okCheckControlCount * 100.0 / (allCheckControlCount * 1.0)).ToString() + "%" : "0%"; + + } + + /// + /// 管道焊接一次合格率 + /// + /// + /// + public static string getFirstPassRate(string projectId) + { + var getJots = from x in Funs.DB.HJGL_Batch_NDEItem + join y in Funs.DB.HJGL_Batch_BatchTrustItem on x.TrustBatchItemId equals y.TrustBatchItemId + join z in Funs.DB.HJGL_Batch_PointBatchItem on y.PointBatchItemId equals z.PointBatchItemId + join a in Funs.DB.HJGL_Batch_NDE on x.NDEID equals a.NDEID + where z.PointDate != null && z.PointState == "1" && y.RepairRecordId == null + && (a.ProjectId == projectId || projectId == null) + select x; + int allHJCount = getJots.Count(); + var getOk = getJots.Where(x => x.CheckResult == "1"); + int okHJCount = getOk.Count(); + return allHJCount > 0 ? Math.Round(okHJCount * 100.0 / (allHJCount * 1.0)).ToString() + "%" : "0%"; + } } } \ No newline at end of file diff --git a/SGGL/BLL/DigData/HSEDataDWService.cs b/SGGL/BLL/DigData/HSEDataDWService.cs index 3805288c..0e5d0ebf 100644 --- a/SGGL/BLL/DigData/HSEDataDWService.cs +++ b/SGGL/BLL/DigData/HSEDataDWService.cs @@ -26,7 +26,8 @@ namespace BLL /// 定义变量 /// private static IQueryable getDataLists = from x in db.Base_Project - select x; + where x.ProjectState == Const.ProjectState_1 + select x; /// /// 安全数据仓库 @@ -38,7 +39,7 @@ namespace BLL /// public static IEnumerable getDataDWList( string projectId, DateTime? startTime, DateTime? endTime, Grid Grid1) { - var getDataList = from x in Funs.DB.Base_Project select x; + IQueryable getDataList = getDataLists; if (!string.IsNullOrEmpty(projectId) && projectId != Const._Null) { getDataList = getDataList.Where(x => x.ProjectId == projectId); @@ -56,13 +57,48 @@ namespace BLL x.ProjectId, x.ProjectName, x.ProjectCode, - Count1=0, //人员数量 - Count2 =0, //安全人工时 - Count3 =0, //安全培训次数 - ProblemRate = "0%", //安全巡检整改率 + Count1=db.SitePerson_Person.Where(p=>p.ProjectId == x.ProjectId && p.States == Const.ProjectPersonStates_1).Count(), //人员数量 + Count2 = getProjecctSafeHours(x.ProjectId), //安全人工时 + Count3 =db.EduTrain_TrainRecord.Where(p => p.ProjectId == x.ProjectId && p.States == BLL.Const.State_2).Count(), //安全培训次数 + ProblemRate = getProblemRate(x.ProjectId), //安全巡检整改率 }; } #endregion + /// + /// 安全人工时 + /// + /// + /// + public static int getProjecctSafeHours(string projectId) + { + int count = 0; + var getPersonInOutNumber = (from x in Funs.DB.SitePerson_PersonInOutNumber + where (x.ProjectId == projectId || projectId == null) + select x).OrderByDescending(x => x.InOutDate).FirstOrDefault(); + if (getPersonInOutNumber != null) + { + count = getPersonInOutNumber.WorkHours ?? 0; + } + + return count; + } + + /// + /// 安全问题整改率 + /// + /// + /// + public static string getProblemRate(string projectId) + { + var getAllHazardRegister = from x in Funs.DB.HSSE_Hazard_HazardRegister + where (x.ProjectId == projectId || projectId == null) + && x.States != null && x.States != "4" && x.States != "0" + select x; + int allHazardCount = getAllHazardRegister.Count(); + int cHazardCount = getAllHazardRegister.Where(x => x.States == "3").Count(); + return allHazardCount > 0 ? Math.Round(cHazardCount * 100.0 / (allHazardCount * 1.0)).ToString() + "%" : "0%"; + } + } } \ No newline at end of file diff --git a/SGGL/BLL/DigData/JDGLDataDWService.cs b/SGGL/BLL/DigData/JDGLDataDWService.cs index be372d94..c993cc47 100644 --- a/SGGL/BLL/DigData/JDGLDataDWService.cs +++ b/SGGL/BLL/DigData/JDGLDataDWService.cs @@ -26,7 +26,7 @@ namespace BLL /// 定义变量 /// private static IQueryable getDataLists = from x in db.Base_Project - select x; + select x; /// /// 进度数据仓库 @@ -36,7 +36,7 @@ namespace BLL /// /// /// - public static IEnumerable getDataDWList( string projectId, DateTime? startTime, DateTime? endTime, Grid Grid1) + 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) @@ -56,10 +56,44 @@ namespace BLL x.ProjectId, x.ProjectName, x.ProjectCode, - JDRate = "0%", //项目进度完成百分比 + 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%"; + } } } \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/DigData/CQMSDataDW.aspx b/SGGL/FineUIPro.Web/DigData/CQMSDataDW.aspx index 2450ad19..ade89749 100644 --- a/SGGL/FineUIPro.Web/DigData/CQMSDataDW.aspx +++ b/SGGL/FineUIPro.Web/DigData/CQMSDataDW.aspx @@ -21,10 +21,10 @@ EmptyText="请选择项目" EnableEdit="true"> + ID="txtStartTime" EnableEdit="false" Hidden="true"> + ID="txtEndTime" EnableEdit="false" Hidden="true"> @@ -50,7 +50,7 @@ - + ID="txtStartTime" EnableEdit="false" Hidden="true"> + ID="txtEndTime" EnableEdit="false" Hidden="true"> diff --git a/SGGL/FineUIPro.Web/DigData/HTGLDataDW.aspx b/SGGL/FineUIPro.Web/DigData/HTGLDataDW.aspx index a4da4bcc..ef607b73 100644 --- a/SGGL/FineUIPro.Web/DigData/HTGLDataDW.aspx +++ b/SGGL/FineUIPro.Web/DigData/HTGLDataDW.aspx @@ -21,10 +21,10 @@ EmptyText="请选择项目" EnableEdit="true"> + ID="txtStartTime" EnableEdit="false" Hidden="true"> + ID="txtEndTime" EnableEdit="false" Hidden="true"> diff --git a/SGGL/FineUIPro.Web/DigData/JDGLDataDW.aspx b/SGGL/FineUIPro.Web/DigData/JDGLDataDW.aspx index 5c77240f..f0258bbb 100644 --- a/SGGL/FineUIPro.Web/DigData/JDGLDataDW.aspx +++ b/SGGL/FineUIPro.Web/DigData/JDGLDataDW.aspx @@ -21,10 +21,10 @@ EmptyText="请选择项目" EnableEdit="true"> + ID="txtStartTime" EnableEdit="false" Hidden="true"> + ID="txtEndTime" EnableEdit="false" Hidden="true"> diff --git a/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx b/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx index 1e23034d..24f0e66e 100644 --- a/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx +++ b/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx @@ -76,9 +76,9 @@ - + - + diff --git a/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx.cs b/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx.cs index 137ce1f2..76ab76ec 100644 --- a/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx.cs +++ b/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx.cs @@ -1,4 +1,6 @@ using BLL; +using FineUIPro.Web.HJGL.WeldingReport; +using Model; using System; using System.Data; using System.Data.SqlTypes; @@ -67,27 +69,14 @@ namespace FineUIPro.Web.DigData this.lbSitePersons.Text = (from x in Funs.DB.SitePerson_Person where x.ProjectId == this.ProjectId //&& y.States == Const.State_1 select x).Count().ToString(); - var getPersonInOutNumber = (from x in Funs.DB.SitePerson_PersonInOutNumber - where x.ProjectId == this.ProjectId - select x).OrderByDescending(x => x.InOutDate).FirstOrDefault(); - if (getPersonInOutNumber != null) - { - this.lbWorkHours.Text = (getPersonInOutNumber.WorkHours ?? 0).ToString(); - } - else - { - this.lbWorkHours.Text = "0"; - } + ///安全工时 + this.lbWorkHours.Text = HSEDataDWService.getProjecctSafeHours(this.ProjectId).ToString(); + ///安全教育 this.lbEduCount.Text = (from x in Funs.DB.EduTrain_TrainRecord where x.ProjectId == this.ProjectId && x.States == BLL.Const.State_2 select x).Count().ToString(); - - var getAllHazardRegister = from x in Funs.DB.HSSE_Hazard_HazardRegister - where x.ProjectId == this.ProjectId && x.States != null && x.States != "4" && x.States != "0" - select x; - int allHazardCount = getAllHazardRegister.Count(); - int cHazardCount = getAllHazardRegister.Where(x => x.States == "3").Count(); - this.lbRectifyRate.Text = allHazardCount > 0 ? Math.Round(cHazardCount * 100.0 / (allHazardCount * 1.0)).ToString() + "%" : "0%"; + ///问题整改 + this.lbRectifyRate.Text = HSEDataDWService.getProblemRate(this.ProjectId); this.lbMeetingCount.Text = (Funs.DB.Meeting_AttendMeeting.Where(x => x.ProjectId == this.ProjectId && x.States == BLL.Const.State_2).Count() + Funs.DB.Meeting_ClassMeeting.Where(x => x.ProjectId == this.ProjectId && x.States == BLL.Const.State_2).Count() @@ -108,74 +97,21 @@ namespace FineUIPro.Web.DigData if (item == "CQMS") { this.gpCQMS.Hidden = false; - //// 实体验收 资料验收 - var getSpotCheckDetail = from x in Funs.DB.Check_SpotCheckDetail - join y in Funs.DB.Check_SpotCheck on x.SpotCheckCode equals y.SpotCheckCode - where y.ProjectId == this.ProjectId && y.State == "8" - select x; - int all = getSpotCheckDetail.Count(); - // this.lbSpotCheck1.Text = all.ToString(); - int onesOKCount = getSpotCheckDetail.Where(x => x.IsOnesOK == true).Count(); //一次合格 - // this.lbSpotCheck2.Text= okCount.ToString(); + ///质量验收问题整改率 + this.lbSpotCheckRate.Text = CQMSDataDWService.getSpotCheckRate(this.ProjectId); + ///控制点完成率 + this.lbSpotCheckDataRate.Text = CQMSDataDWService.getSpotCheckDataRate(this.ProjectId); - this.lbSpotCheckRate.Text = all > 0 ? Math.Round(onesOKCount * 100.0 / (all * 1.0)).ToString() + "%" : "0%"; + //// 质量检查问题整改率 + this.lbCheckControlStates.Text = CQMSDataDWService.getCheckControlStates(this.ProjectId); - /// 资料验收合格项目 - var getOKSpotCheckDetail = getSpotCheckDetail.Where(x => x.IsOK == true); - int okYSCount = getOKSpotCheckDetail.Count(); //验收合格 - int okDateCount = getSpotCheckDetail.Where(x => x.IsDataOK == "1").Count(); //资料合格 - this.lbSpotCheckDataRate.Text = okYSCount > 0 ? Math.Round(okDateCount * 100.0 / (okYSCount * 1.0)).ToString() + "%" : "0%"; - - ///实体质量问题整改率 - //int allNoOk = all - onesOKCount; ///问题数 - //int oKCount = getSpotCheckDetail.Where(x => x.IsOK == true).Count(); //合格数 - //int zgCount = oKCount - onesOKCount; ///整改数 - //this.lbSpotCheckOkRate.Text = allNoOk > 0 ? Math.Round(zgCount * 100.0 / (allNoOk * 1.0)).ToString() + "%" : "0%"; - - ////控制点 - //var getControlItemAndCycle=from x in Funs.DB.WBS_ControlItemAndCycle - // where x.ProjectId == this.ProjectId && x.WorkPackageId.Contains(workPackageId) - // && (controlItemAndCycleId == null || x.WorkPackageId.Contains(controlItemAndCycleId)) - // && x.ControlPoint.Contains("A") && x.CheckNum >0 - // select x; - /////A级控制点总量 - //int allControlItemCount = getControlItemAndCycle.Count(); - /////已完成A级控制点数 - //var getOKSpotCheckDetailCheckNum = from x in getOKSpotCheckDetail - // group x by x.ControlItemAndCycleId - // into g select new { g.First().ControlItemAndCycleId, num = g.Count() }; - - //var getOKControlItemAndCycle = from x in getControlItemAndCycle - // join y in getOKSpotCheckDetailCheckNum on x.ControlItemAndCycleId equals y.ControlItemAndCycleId - // where x.CheckNum == y.num - // select x; - //int okControlItemCount= getOKControlItemAndCycle.Count(); - //this.lbControlItemRate.Text = allControlItemCount > 0 ? Math.Round(okControlItemCount * 100.0 / (allControlItemCount * 1.0)).ToString() + "%" : "0%"; + ///焊接一次合格率 + this.lbFirstPassRate.Text = CQMSDataDWService.getFirstPassRate(this.ProjectId); } if (item == "JDGL") { this.gpJDGL.Hidden = false; - - double totalSJCost = 0; ////累计实际费用 - decimal totalPlanCost = 0; ////计划费用 - var getViewWorkPackageParentDetail = from x in Funs.DB.View_WBS_WorkPackageParentDetail - where x.ProjectId == this.ProjectId && (x.ParentId == "1" || x.ParentId == "2") - select x; - if (getViewWorkPackageParentDetail.Count() > 0) - { - totalSJCost = getViewWorkPackageParentDetail.Sum(x => x.TotalThisValue ?? 0); - } - - var getUnitWork = from x in Funs.DB.WBS_UnitWork where x.ProjectId == this.ProjectId select x; - if (getUnitWork.Count() > 0) - { - totalPlanCost = getUnitWork.Sum(x => x.PlanCost ?? 0); - } - - ///项目进度完成百分比 - decimal s = Convert.ToDecimal(totalSJCost); - this.lbJDRate.Text = totalPlanCost > 0 ? Math.Round(s / totalPlanCost).ToString() + "%" : "0%"; - + this.lbJDRate.Text = JDGLDataDWService.getJDRate(this.ProjectId, null, null); } if (item == "HTGL") { diff --git a/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx.designer.cs b/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx.designer.cs index 894b8118..e6515584 100644 --- a/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/DigData/ProjectDataDW.aspx.designer.cs @@ -177,22 +177,22 @@ namespace FineUIPro.Web.DigData protected global::FineUIPro.Label lbSpotCheckDataRate; /// - /// Label2 控件。 + /// lbCheckControlStates 控件。 /// /// /// 自动生成的字段。 /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// - protected global::FineUIPro.Label Label2; + protected global::FineUIPro.Label lbCheckControlStates; /// - /// Label10 控件。 + /// lbFirstPassRate 控件。 /// /// /// 自动生成的字段。 /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 /// - protected global::FineUIPro.Label Label10; + protected global::FineUIPro.Label lbFirstPassRate; /// /// gpJDGL 控件。 diff --git a/SGGL/FineUIPro.Web/DigData/WBSDW.aspx b/SGGL/FineUIPro.Web/DigData/WBSDW.aspx index e6688443..23c50c2f 100644 --- a/SGGL/FineUIPro.Web/DigData/WBSDW.aspx +++ b/SGGL/FineUIPro.Web/DigData/WBSDW.aspx @@ -51,7 +51,7 @@