using BLL; using FineUIPro.Web.HSSE.License; using Newtonsoft.Json; using System; using System.CodeDom; using System.Collections.Generic; using System.Linq; using System.Data; using System.Data.SqlClient; namespace FineUIPro.Web { public partial class mainMenu_HSSE : PageBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { getHazardRegisterLists = HSSE_Hazard_HazardRegisterService.GetHazardRegisterListByProjectId(this.CurrUser.LoginProjectId); ///当前现场总人数 getSitePerson(); var project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId); if (project != null && project.Telephone != null) { this.xmb.InnerHtml = project.Telephone; } getDayReportDetails = (from x in Funs.DB.SitePerson_DayReportDetail join y in Funs.DB.SitePerson_DayReport on x.DayReportId equals y.DayReportId where y.ProjectId == this.CurrUser.LoginProjectId select x).ToList(); getProjectUnits = (from x in Funs.DB.Project_ProjectUnit where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList(); } } private static List getDayReportDetails; private static List getProjectUnits; #region 当前现场总人数 /// /// 当前现场总人数 /// private void getSitePerson() { // int AllCount = 0; // //var getallin = APIPageDataService.getPersonInOutNum(this.ProjectId, DateTime.Now.AddDays(-1)); // DateTime dateValue = DateTime.Now.AddDays(-1); // List getallin = new List(); // var getInMaxs = from x in Funs.DB.SitePerson_Person // join y in Funs.DB.Base_WorkPost on x.WorkPostId equals y.WorkPostId // where x.ProjectId == this.CurrUser.LoginProjectId && x.IsUsed == true // select new Model.PageDataPersonInOutItem // { // PersonId = x.PersonId, // PostType = y.PostType, // WorkPostId = x.WorkPostId, // }; // if (getInMaxs.Count() > 0) // { // getallin = getInMaxs.Distinct().ToList(); // } // //AllCount = getallin.Count(); // var getEmployInOutRecords = (from x in Funs.DB.T_d_EmployInOutRecord // join y in Funs.DB.SitePerson_Person on new { ss1 = x.ProjectId, ss = x.IDCardNo } equals new { ss1 = y.ProjectId, ss = y.IdentityCard } // where y.ProjectId == this.CurrUser.LoginProjectId && y.IsUsed == true && x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date // select x.IDCardNo).Distinct(); // // //if (AllCount > 0) // //{ // // ////总人数 // // this.divperson.InnerHtml = ((AllCount % 10000) / 1000).ToString(); // // this.person00.InnerHtml = ((AllCount % 1000) / 100).ToString(); // // this.person01.InnerHtml = ((AllCount % 100) / 10).ToString(); // // this.person02.InnerHtml = (AllCount % 10).ToString(); // //} // // // AllCount = getEmployInOutRecords.Count(); // if (AllCount > 0) // { // ////总人数 // this.divperson.InnerHtml = ((AllCount % 10000) / 1000).ToString(); // this.person00.InnerHtml = ((AllCount % 1000) / 100).ToString(); // this.person01.InnerHtml = ((AllCount % 100) / 10).ToString(); // this.person02.InnerHtml = (AllCount % 10).ToString(); // } string strSql = @"SELECT DISTINCT ProjectUser.ProjectUserId,ProjectUser.ProjectId,ProjectUser.UserId,ProjectUser.WorkAreaId,Users.UserCode,Users.UserName,ProjectUser.UnitId,Unit.UnitCode,Unit.UnitName,ProjectUnit.UnitType,sysConst.ConstText AS UnitTypeName,ProjectUser.RoleId,ProjectUser.IsPost,(CASE WHEN ProjectUser.IsPost = 1 THEN '在岗' ELSE '离岗' END) AS IsPostName,WorkPost.WorkPostName,UnitCode" + @" ,RoleName= STUFF(( SELECT ',' + RoleName FROM dbo.Sys_Role where PATINDEX('%,' + RTRIM(RoleId) + ',%',',' +ProjectUser.RoleId + ',')>0 FOR XML PATH('')), 1, 1,'')" + @" FROM Project_ProjectUser AS ProjectUser " + @" LEFT JOIN Base_Project AS Project ON ProjectUser.ProjectId = Project.ProjectId " + @" LEFT JOIN Sys_User AS Users ON ProjectUser.UserId = Users.UserId " + @" LEFT JOIN Sys_Role AS Role ON ProjectUser.RoleId = Role.RoleId " + @" LEFT JOIN Project_ProjectUnit AS ProjectUnit ON ProjectUser.UnitId = ProjectUnit.UnitId AND ProjectUser.ProjectId= ProjectUnit.ProjectId " + @" LEFT JOIN Base_Unit AS Unit ON ProjectUser.UnitId = Unit.UnitId " + @" LEFT JOIN SitePerson_Person AS Person ON ProjectUser.ProjectId =Person.ProjectId AND Users.IdentityCard = Person.IdentityCard " + @" LEFT JOIN Base_WorkPost AS WorkPost ON Person.WorkPostId =WorkPost.WorkPostId " + @" LEFT JOIN Sys_Const AS sysConst ON sysConst.GroupId = '" + BLL.ConstValue.Group_ProjectUnitType + "' AND ProjectUnit.UnitType=sysConst.ConstValue " + @" WHERE 1=1 "; List listStr = new List(); strSql += " AND ProjectUser.ProjectId = @ProjectId"; listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); var projectPeople = tb.Rows.Count; //当前日 // 获取当前日期的00点 DateTime now = DateTime.Now; DateTime StartDate = DateTime.Now.Date; DateTime EndDate = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59); //当前月 // 获取当前年份和月份 int year = DateTime.Now.Year; int month = DateTime.Now.Month; // 获取当前月份的开始00点 DateTime startOfMonth = new DateTime(year, month, 1); DateTime startOfNextMonth = startOfMonth.AddMonths(1); // 如果你需要当前月份的最后一天的23:59:59 DateTime endOfMonth = startOfNextMonth.AddSeconds(-1); string strSql1 = "SELECT ClassMeeting.ClassMeetingId,ClassMeeting.ProjectId,CodeRecords.Code AS ClassMeetingCode,Unit.UnitId,Unit.UnitName,ClassMeeting.ClassMeetingName,ClassMeeting.ClassMeetingDate,ClassMeeting.CompileMan,ClassMeeting.ClassMeetingContents,ClassMeeting.CompileDate,ClassMeeting.States " + @" ,(CASE WHEN ClassMeeting.States = " + BLL.Const.State_0 + " OR ClassMeeting.States IS NULL THEN '待['+ISNULL(OperateUser.UserName,Users.UserName)+']提交' WHEN ClassMeeting.States = " + BLL.Const.State_2 + " THEN '审核/审批完成' ELSE '待['+OperateUser.UserName+']办理' END) AS FlowOperateName" + @" FROM Meeting_ClassMeeting AS ClassMeeting " + @" LEFT JOIN Sys_CodeRecords AS CodeRecords ON ClassMeeting.ClassMeetingId = CodeRecords.DataId " + @" LEFT JOIN Sys_FlowOperate AS FlowOperate ON ClassMeeting.ClassMeetingId = FlowOperate.DataId AND FlowOperate.IsClosed <> 1" + @" LEFT JOIN Sys_User AS OperateUser ON FlowOperate.OperaterId=OperateUser.UserId" + @" LEFT JOIN Sys_User AS Users ON ClassMeeting.CompileMan = Users.UserId" + @" LEFT JOIN Base_Unit AS Unit ON Unit.UnitId=Users.UnitId WHERE 1=1 "; List listStr1 = new List(); if (!string.IsNullOrEmpty(this.CurrUser.LoginProjectId)) { strSql1 += " AND ClassMeeting.ProjectId = @ProjectId"; listStr1.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); } strSql1 += " AND ClassMeeting.ClassMeetingDate BETWEEN @StartDate AND @EndDate"; listStr1.Add(new SqlParameter("@StartDate", StartDate)); listStr1.Add(new SqlParameter("@EndDate", EndDate)); SqlParameter[] parameter1 = listStr1.ToArray(); DataTable tb1 = SQLHelper.GetDataTableRunText(strSql1, parameter1); var dr = tb1.Rows.Count; string strSql2 = "SELECT ClassMeeting.ClassMeetingId,ClassMeeting.ProjectId,CodeRecords.Code AS ClassMeetingCode,Unit.UnitId,Unit.UnitName,ClassMeeting.ClassMeetingName,ClassMeeting.ClassMeetingDate,ClassMeeting.CompileMan,ClassMeeting.ClassMeetingContents,ClassMeeting.CompileDate,ClassMeeting.States " + @" ,(CASE WHEN ClassMeeting.States = " + BLL.Const.State_0 + " OR ClassMeeting.States IS NULL THEN '待['+ISNULL(OperateUser.UserName,Users.UserName)+']提交' WHEN ClassMeeting.States = " + BLL.Const.State_2 + " THEN '审核/审批完成' ELSE '待['+OperateUser.UserName+']办理' END) AS FlowOperateName" + @" FROM Meeting_ClassMeeting AS ClassMeeting " + @" LEFT JOIN Sys_CodeRecords AS CodeRecords ON ClassMeeting.ClassMeetingId = CodeRecords.DataId " + @" LEFT JOIN Sys_FlowOperate AS FlowOperate ON ClassMeeting.ClassMeetingId = FlowOperate.DataId AND FlowOperate.IsClosed <> 1" + @" LEFT JOIN Sys_User AS OperateUser ON FlowOperate.OperaterId=OperateUser.UserId" + @" LEFT JOIN Sys_User AS Users ON ClassMeeting.CompileMan = Users.UserId" + @" LEFT JOIN Base_Unit AS Unit ON Unit.UnitId=Users.UnitId WHERE 1=1 "; List listStr2 = new List(); if (!string.IsNullOrEmpty(this.CurrUser.LoginProjectId)) { strSql2 += " AND ClassMeeting.ProjectId = @ProjectId"; listStr2.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); } strSql2 += " AND ClassMeeting.ClassMeetingDate BETWEEN @StartDate AND @EndDate"; listStr2.Add(new SqlParameter("@StartDate", startOfMonth)); listStr2.Add(new SqlParameter("@EndDate", endOfMonth)); SqlParameter[] parameter2 = listStr2.ToArray(); DataTable tb2 = SQLHelper.GetDataTableRunText(strSql2, parameter2); var dy = tb2.Rows.Count; var count1 = projectPeople + dr; var count2 = projectPeople + dy; if (count1 > 0) { ////总人数 this.divperson.InnerHtml = ((count1 % 10000) / 1000).ToString(); this.person00.InnerHtml = ((count1 % 1000) / 100).ToString(); this.person01.InnerHtml = ((count1 % 100) / 10).ToString(); this.person02.InnerHtml = (count1 % 10).ToString(); } if (count2 > 0) { ////总人数 this.divperson1.InnerHtml = ((count2 % 10000) / 1000).ToString(); this.person001.InnerHtml = ((count2 % 1000) / 100).ToString(); this.person011.InnerHtml = ((count2 % 100) / 10).ToString(); this.person021.InnerHtml = (count2 % 10).ToString(); } } #endregion #region 项目安全人工时 /// /// 项目安全人工时 /// protected string Two { get { Model.SGGLDB db = Funs.DB; Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); List series = new List(); Model.SingleSerie s = new Model.SingleSerie(); List listdata = new List(); foreach (var item in getProjectUnits) { listCategories.Add(UnitService.GetShortUnitNameByUnitId(item.UnitId)); decimal total = getDayReportDetails.Where(x => x.UnitId == item.UnitId).Sum(x => x.PersonWorkTime ?? 0); listdata.Add(Convert.ToDouble(total)); } s.data = listdata; series.Add(s); businessColumn.categories = listCategories; businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); } } #endregion #region 作业许可数量统计 /// /// 作业许可数量统计 /// protected string Three { get { List series = new List(); Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); businessColumn.title = "作业许可数量统计"; Model.SingleSerie s = new Model.SingleSerie(); List listdata = new List(); var qLicenseManager = ( from x in Funs.DB.License_LicenseManager.Where(xx=>xx.ProjectId==CurrUser.LoginProjectId) join y in Funs.DB.Base_LicenseType on x.LicenseTypeId equals y.LicenseTypeId into z from zz in z select new { x.LicenseTypeId,zz.LicenseTypeCode }).ToList(); int FireWork = Funs.DB.License_FireWork.Where(x=>x.ProjectId==this.CurrUser.LoginProjectId && x.States== Const.State_3).Count(); int HeightWork = Funs.DB.License_HeightWork.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == Const.State_3).Count(); int LimitedSpace = Funs.DB.License_LimitedSpace.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == Const.State_3).Count(); int RadialWork = Funs.DB.License_RadialWork.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == Const.State_3).Count(); int OpenCircuit = Funs.DB.License_OpenCircuit.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == Const.State_3).Count(); int BreakGround = Funs.DB.License_BreakGround.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == Const.State_3).Count(); int NightWork = Funs.DB.License_NightWork.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == Const.State_3).Count(); int LiftingWork = Funs.DB.License_LiftingWork.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.States == Const.State_3).Count(); foreach(var item in qLicenseManager) { switch (item.LicenseTypeCode) { case "01": case "4"://动火 FireWork++; break; case "06": case "18": case "2"://高处 HeightWork++; break; case "03": case "7"://受限 LimitedSpace++; break; case "14": case "04"://射线 RadialWork++; break; case "09": case "5"://断路 OpenCircuit++; break; case "02": case "8"://动土 BreakGround++; break; case ""://夜间 NightWork++; break; case "19": case "05": case "3"://吊装 LiftingWork++; break; } } listCategories.Add("动火"); listdata.Add(FireWork); listCategories.Add("高处"); listdata.Add(HeightWork); listCategories.Add("受限"); listdata.Add(LimitedSpace); listCategories.Add("射线"); listdata.Add(RadialWork); listCategories.Add("断路"); listdata.Add(OpenCircuit); listCategories.Add("动土"); listdata.Add(BreakGround); listCategories.Add("夜间"); listdata.Add(NightWork); listCategories.Add("吊装"); listdata.Add(LiftingWork); s.data = listdata; series.Add(s); businessColumn.categories = listCategories; businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); } } #endregion #region 安全检查问题统计 /// /// /// public static List getHazardRegisterLists; /// /// 按单位统计 /// protected string Four1 { get { Model.SGGLDB db = Funs.DB; Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); List series = new List(); Model.SingleSerie s = new Model.SingleSerie(); List listdata = new List(); List listdata2 = new List(); var hazardRegisters = from x in db.View_Hazard_HazardRegister where x.ProjectId == this.CurrUser.LoginProjectId select x; if (hazardRegisters.Count() > 0) { var units = hazardRegisters.Select(x => x.ResponsibleUnit).Distinct().ToList(); foreach (var unit in units) { listCategories.Add(UnitService.GetShortUnitNameByUnitId(unit)); int state1 = hazardRegisters.Count(x => x.ResponsibleUnit == unit && x.States == "1"); int state2 = hazardRegisters.Count(x => x.ResponsibleUnit == unit); listdata.Add(Convert.ToDouble(state1)); listdata2.Add(Convert.ToDouble(state2)); } s.data = listdata; s.data2 = listdata2; series.Add(s); } businessColumn.categories = listCategories; businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); } } /// /// 按类型统计 /// protected string Four2 { get { Model.SGGLDB db = Funs.DB; Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); List series = new List(); Model.SingleSerie s = new Model.SingleSerie(); List listdata = new List(); List listdata2 = new List(); var hazardRegisters = from x in db.View_Hazard_HazardRegister where x.ProjectId == this.CurrUser.LoginProjectId select x; if (hazardRegisters.Count() > 0) { var types = hazardRegisters.Select(x => x.RegisterTypesName).Distinct().ToList(); foreach (var type in types) { listCategories.Add(type); int state1 = hazardRegisters.Count(x => x.RegisterTypesName == type && x.States == "1"); int state2 = hazardRegisters.Count(x => x.RegisterTypesName == type); listdata.Add(Convert.ToDouble(state1)); listdata2.Add(Convert.ToDouble(state2)); } s.data = listdata; s.data2 = listdata2; series.Add(s); } businessColumn.categories = listCategories; businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); } } #endregion #region 入场安全培训 /// /// 入场安全培训 /// protected string Five { get { List series = new List(); Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); businessColumn.title = "入场培训"; Model.SingleSerie s = new Model.SingleSerie(); Model.SingleSerie s2 = new Model.SingleSerie(); //// 每月培训数量 List listdata = new List(); List listdata2 = new List(); var getTrainRecord = from x in Funs.DB.EduTrain_TrainRecord where x.ProjectId == this.CurrUser.LoginProjectId && x.TrainTypeId == Const.EntryTrainTypeId select x; var getTrainRecordDetail = from x in Funs.DB.EduTrain_TrainRecordDetail join y in getTrainRecord on x.TrainingId equals y.TrainingId select x; DateTime startTime = DateTime.Now; DateTime endTime = DateTime.Now; var getProject = ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId); if (getProject != null && getProject.StartDate.HasValue) { startTime = getProject.StartDate.Value; if (getProject.EndDate.HasValue && getProject.EndDate < DateTime.Now) { endTime = getProject.EndDate.Value; } } int totalCout = 0; for (int i = 0; startTime.AddMonths(i) <= endTime; i++) { listCategories.Add(string.Format("{0:yyyy-MM}", startTime.AddMonths(i))); var getMontDetail = from x in getTrainRecordDetail join y in getTrainRecord on x.TrainingId equals y.TrainingId where y.TrainStartDate.Value.Year == startTime.AddMonths(i).Year && y.TrainStartDate.Value.Month == startTime.AddMonths(i).Month select x; listdata.Add(getMontDetail.Count()); totalCout = totalCout + getMontDetail.Count(); listdata2.Add(totalCout); } s.data = listdata; s2.data = listdata2; series.Add(s); series.Add(s2); businessColumn.categories = listCategories; businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); } } #endregion # region 事故统计 /// /// 事故统计 /// protected string Six { get { List series = new List(); Model.BusinessColumn businessColumn = new Model.BusinessColumn(); Model.SingleSerie s = new Model.SingleSerie(); List listdata = new List(); businessColumn.title = "事故统计"; var getAccident = from x in Funs.DB.Accident_AccidentReport where x.ProjectId == this.CurrUser.LoginProjectId select x; listdata.Add(getAccident.Where(x => x.AccidentTypeId == "1" || x.AccidentTypeId == "2" || x.AccidentTypeId == "3" || x.AccidentTypeId == "4").Count()); listdata.Add(getAccident.Where(x => x.AccidentTypeId == "5").Count()); listdata.Add(getAccident.Where(x => x.AccidentTypeId == "6" || x.AccidentTypeId == "7").Count()); listdata.Add(getAccident.Where(x => x.AccidentTypeId == "8" || x.AccidentTypeId == "9").Count()); listdata.Add(getAccident.Where(x => x.AccidentTypeId == "10").Count()); listdata.Add(getAccident.Where(x => x.AccidentTypeId == "11").Count()); s.data = listdata; series.Add(s); businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); } } #endregion } }