using BLL; using FineUIPro.Web.DataShow; using Model; using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.common { public partial class main_new : PageBase { List allProjects; public static List LargerHazard = new List(); public string[] pids { get; set; } protected async void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { InitializeProjectIds(); // 项目ID初始化封装 var projectTask = GetProjectAsync(); var project2Task = GetProject2Async(); var otherTasks = new List { BindSafetyStatisticsAsync(), // 安全统计模块 BindQualityStatisticsAsync(), // 质量统计模块 BindProjectStatisticsAsync(), // 项目统计模块 GetZlwtAsync(), // 质量问题 GetZlgjAsync(), // 质量共检 GetHjAsync(), // 焊接 GetGjsxAsync(), // 关键事项 GetSitePersonAsync(), // 人员信息 GetProjectSitePersonAsync(), // 项目人员图表 GetJdAsync(), // 进度 GetZgsjAsync(), // 整改数据 GetCldhAsync() // 材料到货表格 }; await Task.WhenAll(otherTasks.Concat(new[] { projectTask, project2Task })); // 设置项目信息 Project = await projectTask; Project2 = await project2Task; } } // 初始化项目ID集合 private void InitializeProjectIds() { var db = Funs.DB; pids = !string.IsNullOrEmpty(CurrUser.CompanyProjectId) ? CurrUser.CompanyProjectId.Split(',') : db.Base_Project .Where(x => x.ProjectState == "1") .Select(x => x.ProjectId) .ToArray(); //在建项目 if (pids == null) { allProjects = ProjectService.GetAllProjectDropDownList(); } else { allProjects = ProjectService.GetAllProjectDropDownList(pids); } } // 安全统计模块封装 private async Task BindSafetyStatisticsAsync() { await Task.Run(() => { var db = Funs.DB; // 未遂事故 divWS.InnerHtml = GetNearMissNum().ToString(); // 安全人工时(合并重复逻辑) var countAqrgsSum = pids?.Any() == true ? CountAqrgs(d1: null, d2: null, pids) : CountAqrgs(); if (countAqrgsSum > 10000) { countAqrgsSum = countAqrgsSum / Convert.ToDecimal(10000.00); this.divSafeWorkTime.InnerHtml = Math.Round(countAqrgsSum, 2).ToString() + "万"; } else { this.divSafeWorkTime.InnerHtml = countAqrgsSum.ToString().Split('.')[0]; } // 当月安全人工时 var countMonthAqrgs = pids?.Any() == true ? CountAqrgs(getStartMonth(), getEndMonth(), pids) : CountAqrgs(getStartMonth(), getEndMonth()); if (countMonthAqrgs > 10000) { countMonthAqrgs = countMonthAqrgs / Convert.ToDecimal(10000.00); this.divSafeWorkTimeMonth.InnerHtml = Math.Round(countMonthAqrgs, 2).ToString() + "万"; } else { this.divSafeWorkTimeMonth.InnerHtml = countMonthAqrgs.ToString().Split('.')[0]; } // 安全培训人员(合并数据库查询) var trainingQuery = db.EduTrain_TrainRecord .Where(x => pids.Contains(x.ProjectId)) .GroupBy(x => 1) .Select(g => new { TrainCount = g.Sum(x => x.TrainPersonNum) ?? 0, BoShengCount = db.Bo_Sheng_TrainPerson .Where(x => (x.DeleteTag == "False" || x.DeleteTag == null)) .Where(x => pids.Contains(x.ProjectId)) .Count() }).FirstOrDefault(); divSafePersonNum.InnerHtml = trainingQuery != null ? (trainingQuery.TrainCount + trainingQuery.BoShengCount).ToString() : "0"; // 安全管理人员(优化关联查询) var safetyStaffCount = db.SitePerson_Person .Where(x=> x.IsUsed == true && x.InTime < DateTime.Now && (x.OutTime == null || x.OutTime > DateTime.Now)) .Where(x => pids.Contains(x.ProjectId)) .Join(db.Base_WorkPost.Where(x => x.IsHsse==true), person => person.WorkPostId, post => post.WorkPostId, (person, post) => person) .Count(); divSafeManagePersonNum.InnerText = safetyStaffCount.ToString(); }); } // 质量统计模块封装 private async Task BindQualityStatisticsAsync() { var db = Funs.DB; // 质量管理人员(合并公司+项目级查询) var qualityQuery = db.Base_WorkPost .Where(x => x.IsCQMS == true) .GroupJoin(db.SitePerson_Person.Where(x=> x.IsUsed == true), post => post.WorkPostId, person => person.WorkPostId, (post, persons) => new { post, persons }) .SelectMany(x => x.persons.DefaultIfEmpty(), (x, person) => new { x.post, person }) .Where(x => pids.Contains(x.person.ProjectId)); divCqmsManageNum.InnerText = qualityQuery.Count().ToString(); // 质量培训人员 divCqmsPxNum.InnerText = db.Comprehensive_InspectionPerson .Where(x => pids.Contains(x.ProjectId)) .Count(x => x.IsTrain == true).ToString(); } // 项目统计优化 private async Task BindProjectStatisticsAsync() { var db = Funs.DB; int acount = allProjects.Count(); int pcount1 = 0; int pcount2 = 0; int pcount3 = 0; if (acount > 0) { pcount1 = allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null).Count(); var pidzjsg = string.Join(",", allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null).Select(x => x.ProjectId)).Split(','); if (pids == null) { pcount2 = (from x in Funs.DB.SitePerson_Person where x.IsUsed == true && pidzjsg.Contains(x.ProjectId) select x).Count(); } else { pidzjsg = pids; pcount2 = (from x in Funs.DB.SitePerson_Person where x.IsUsed == true && pids.Contains(x.ProjectId) select x).Count(); } pcount3 = Count3(pidzjsg); } div_zjxmCount.InnerHtml = pcount1.ToString() + "
"; div_cjrsCount.InnerHtml = pcount2.ToString() + "
"; div_wdgcCount.InnerHtml = pcount3.ToString() + "
"; } #region 当月人工时 /// /// 获取当前月的月末日期 /// /// public static DateTime getEndMonth() { int span = Convert.ToInt32(System.DateTime.Now.Day); System.DateTime dateEnd = System.DateTime.Now.AddMonths(1).AddDays(-span); return dateEnd; } /// /// 获取当前月初日期 /// /// public static DateTime getStartMonth() { int span = Convert.ToInt32(System.DateTime.Now.Day); span = span - 1; System.DateTime dateStart = System.DateTime.Now.AddDays(-span); return dateStart; } //安全人工时(穿透) /// /// 安全工时数 /// /// /// protected decimal CountAqrgs(DateTime? d1 = null, DateTime? d2 = null, string[] pids = null) { decimal cout1 = 0; var datetime1 = d1; var datetime2 = d2; var getAllPersonInOutList = from x in Funs.DB.SitePerson_PersonInOutNumber select x; if (pids != null) { getAllPersonInOutList = getAllPersonInOutList.Where(x => pids.Contains(x.ProjectId)); } if (datetime1.HasValue) { getAllPersonInOutList = getAllPersonInOutList.Where(x => x.InOutDate >= datetime1); } if (datetime2.HasValue) { getAllPersonInOutList = getAllPersonInOutList.Where(x => x.InOutDate <= datetime2); } var projects = getAllPersonInOutList .GroupBy(x => x.ProjectId) .Select(g => new { Project = g.Key, Items = g.OrderBy(x => x.InOutDate).ToList() }) .Where(g => g.Items.Any()); cout1 = projects.ToList().Sum(g => (g.Items.Last().WorkHours ?? 0) - (g.Items.First().WorkHours ?? 0)); var getD1 = from x in Funs.DB.Accident_AccidentHandle join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId where y.ProjectState == Const.ProjectState_1 select x; var getD2 = from x in Funs.DB.Accident_AccidentReport join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId where y.ProjectState == Const.ProjectState_1 select x; if (pids != null) { getD1 = getD1.Where(x => pids.Contains(x.ProjectId)); getD2 = getD2.Where(x => pids.Contains(x.ProjectId)); } if (datetime1.HasValue) { getD1 = getD1.Where(x => x.AccidentDate >= datetime1); getD2 = getD2.Where(x => x.CompileDate >= datetime1); } if (datetime2.HasValue) { getD1 = getD1.Where(x => x.AccidentDate <= datetime2); getD2 = getD2.Where(x => x.CompileDate <= datetime2); } if (getD1.Any()) { cout1 = cout1 - getD1.Sum(x => x.WorkHoursLoss ?? 0); } if (getD2.Any()) { cout1 = cout1 - getD2.Sum(x => x.WorkingHoursLoss ?? 0); } return cout1; } /// /// 获取出入记录人工时-月报(项目级别) /// /// public static List getMonthReportsByCompany(DateTime? sDate) { Model.SGGLDB db = Funs.DB; List reports = new List(); var getAllPersonInOutList = from x in db.SitePerson_PersonInOutNumber select x; if (getAllPersonInOutList.Count() > 0) { var getInMonths = (from x in getAllPersonInOutList select new { x.InOutDate.Year, x.InOutDate.Month }).Distinct(); if (sDate.HasValue) { getInMonths = getInMonths.Where(x => x.Year == sDate.Value.Year && x.Month == sDate.Value.Month); } foreach (var item in getInMonths) { DateTime compileDate = Funs.GetNewDateTimeOrNow(item.Year.ToString() + "-" + item.Month.ToString()); var getNow = getAllPersonInOutList.Where(x => x.InOutDate.Year == compileDate.Year && x.InOutDate.Month == compileDate.Month).Max(x => x.WorkHours); if (getNow.HasValue) { Model.SitePerson_MonthReport reportItem = new Model.SitePerson_MonthReport { MonthReportId = SQLHelper.GetNewID(), CompileDate = Funs.GetNewDateTime(item.Year.ToString() + "-" + item.Month.ToString()), TotalPersonWorkTime = getNow, }; DateTime upDate = compileDate.AddMonths(-1); var getMax = getAllPersonInOutList.Where(x => x.InOutDate.Year == upDate.Year && x.InOutDate.Month == upDate.Month).Max(x => x.WorkHours) ?? 0; reportItem.DayWorkTime = (getNow ?? 0) - getMax; reports.Add(reportItem); } } } return reports; } #endregion #region 项目信息 protected string Project { get; set; } protected async Task GetProjectAsync() { return await Task.Run(() => { Model.SingleSerie series = new Model.SingleSerie(); var project1s = allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null); var consts = Funs.DB.Sys_Const.Where(x => x.GroupId == ConstValue.GroupId_ProjectState); string name = string.Empty; if (project1s.Count() > 0) { foreach (var project1 in project1s) { string state = string.Empty; var c = consts.FirstOrDefault(x => x.ConstValue == project1.ProjectState2); if (c != null) { state = c.ConstText; } name += "
  • " + project1.ProjectName + "
    " + state + "
  • "; } } var provinceDic = from x in Funs.DB.RealName_City select x; List listdata = new List(); List jd = new List(); List sg = new List(); List time = new List(); List ht = new List(); List convert = new List(); List loc = new List(); listdata.Add(allProjects.Count()); jd.Add(""); sg.Add(""); time.Add(""); ht.Add(""); List provinces = new List(); provinces.Add("上海"); provinces.Add("河北"); provinces.Add("山西"); provinces.Add("内蒙古"); provinces.Add("辽宁"); provinces.Add("吉林"); provinces.Add("黑龙江"); provinces.Add("江苏"); provinces.Add("浙江"); provinces.Add("安徽"); provinces.Add("福建"); provinces.Add("江西"); provinces.Add("山东"); provinces.Add("河南"); provinces.Add("湖北"); provinces.Add("湖南"); provinces.Add("广东"); provinces.Add("广西"); provinces.Add("海南"); provinces.Add("四川"); provinces.Add("贵州"); provinces.Add("云南"); provinces.Add("西藏"); provinces.Add("陕西"); provinces.Add("甘肃"); provinces.Add("青海"); provinces.Add("宁夏"); provinces.Add("新疆"); provinces.Add("北京"); provinces.Add("天津"); provinces.Add("重庆"); provinces.Add("香港"); provinces.Add("澳门"); provinces.Add("台湾"); Model.SGGLDB db = Funs.DB; var accidentList1 = from x in db.Accident_AccidentPersonRecord join y in db.Base_AccidentType on x.AccidentTypeId equals y.AccidentTypeId where y.AccidentTypeName.Contains("未遂") select x; var accidentList2 = from x in db.Accident_AccidentReportOther join y in db.Sys_Const on x.AccidentTypeId equals y.ConstValue where y.ConstText.Contains("未遂") select x; foreach (var province in provinces) { int accidentNum = 0; DateTime date = DateTime.Now; decimal money1 = 0, money2 = 0; var projects = from x in allProjects join y in provinceDic on x.Province equals y.ProvinceCode where y.CnShortName == province select x; listdata.Add(projects.Count()); decimal progress = 0; if (projects.Count() > 0) { convert.Add(province); foreach (var item in projects) { //未遂事故 var accidentListProject1 = accidentList1.Where(x => x.ProjectId == item.ProjectId); var accidentListProject2 = accidentList2.Where(x => x.ProjectId == item.ProjectId); accidentNum = accidentListProject1.Count() + accidentListProject2.Count(); //时间 if (item.StartDate != null && item.StartDate < date) { date = Convert.ToDateTime(item.StartDate); } //合同额 if (item.ConstructionMoney != null) { money1 += item.ConstructionMoney.Value; } if (item.Progress != null) { progress = item.Progress.Value; } } jd.Add("进度:" + progress.ToString("0.##") + "%"); sg.Add("未遂事故:" + accidentNum.ToString()); time.Add("时间:" + string.Format("{0:yyyy-MM-dd}", date)); ht.Add("合同额(" + money1.ToString("0.##") + "W);收款额(" + money2 + "W)"); } else { jd.Add(""); sg.Add(""); time.Add(""); ht.Add(""); } } foreach (var item in allProjects) { decimal jdNum = 0; string mapStr = ""; int accidentNum = 0; DateTime date = DateTime.Now; decimal money1 = 0, money2 = 0; string endDate = string.Empty; int timeSpan = 0; if (!string.IsNullOrEmpty(item.MapCoordinates)) { mapStr = item.MapCoordinates + ","; //未遂事故 var accidentListProject1 = accidentList1.Where(x => x.ProjectId == item.ProjectId); var accidentListProject2 = accidentList2.Where(x => x.ProjectId == item.ProjectId); accidentNum = accidentListProject1.Count() + accidentListProject2.Count(); //时间 if (item.StartDate != null && item.StartDate < date) { date = Convert.ToDateTime(item.StartDate); } if (item.EndDate != null) { endDate = string.Format("{0:yyyy-MM-dd}", item.EndDate); } if (item.StartDate != null && item.EndDate != null) { TimeSpan t = (TimeSpan)(item.EndDate - item.StartDate); timeSpan = t.Days / 30; } //合同额 if (item.ConstructionMoney != null) { money1 += item.ConstructionMoney.Value; } if (item.Progress != null) { jdNum = item.Progress.Value; } mapStr += string.Format("{0:yyyy-MM-dd}", date) + "~" + endDate + ","; if (timeSpan > 0) { mapStr += timeSpan.ToString() + "个月,"; } else { mapStr += timeSpan.ToString() + ","; } //mapStr += accidentNum.ToString() + ","; mapStr += jdNum.ToString("0.##") + "%,"; mapStr += money1.ToString("0.##") + ","; mapStr += money2 + ","; mapStr += item.ShortName + ","; //修改日期 2023-10-30 10:43:57 //内容:项目名称、开工日期、完工日期、剩余天数、进度 mapStr += item.ProjectId + ","; mapStr += string.Format("{0:yyyy-MM-dd}", item.StartDate) + ","; if (string.IsNullOrEmpty(item.EndDate.ToString())) { mapStr += ","; } else { //获取剩余天数 var residueDay = DateDiff(DateTime.Now, Convert.ToDateTime(item.EndDate)).ToString(); mapStr += string.Format("{0:yyyy-MM-dd}", item.EndDate) + "," + residueDay; } loc.Add(mapStr); } } series.name = name; series.data = listdata; series.jd = jd; series.sg = sg; series.time = time; series.ht = ht; series.convert = convert; series.loc = loc; return JsonConvert.SerializeObject(series); }); } #endregion #region 项目信息 protected string Project2 { get; set; } protected async Task GetProject2Async() { return await Task.Run(() => { Model.SingleSerie series = new Model.SingleSerie(); var project1s = allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null); Model.SGGLDB db = Funs.DB; string str = string.Empty; foreach (var item in allProjects) { if (!string.IsNullOrEmpty(item.MapCoordinates)) { string startDate = string.Empty; string endDate = string.Empty; string residueDay = string.Empty; if (item.StartDate != null) { startDate = string.Format("{0:yyyy-MM-dd}", item.StartDate); } if (item.EndDate != null) { endDate = string.Format("{0:yyyy-MM-dd}", item.EndDate); residueDay = DateDiff(DateTime.Now, Convert.ToDateTime(item.EndDate)).ToString(); } decimal jdNum = 0; if (item.Progress != null) { jdNum = item.Progress.Value; } str += "{name: '" + item.ShortName + "', value: [" + item.MapCoordinates + ", { value:'" + item.ShortName + "',value2:'" + startDate + "',value3:'" + endDate + "',value4:'" + residueDay + "',value5:'" + jdNum.ToString("0.##") + "%'}]},"; } } if (!string.IsNullOrEmpty(str)) { str = str.Substring(0, str.Length - 1); } return str; }); } /// /// 计算时间的相差天数 /// /// /// /// private int DateDiff(DateTime dateStart, DateTime dateEnd) { DateTime start = Convert.ToDateTime(dateStart.ToShortDateString()); DateTime end = Convert.ToDateTime(dateEnd.ToShortDateString()); TimeSpan sp = end.Subtract(start); return sp.Days; } #endregion #region 在施危大工程数量 /// /// 在施危大工程数量 /// /// /// protected int Count3(string[] pids) { int cout1 = 0; cout1 = Funs.DB.Solution_LargerHazard.Where(x => x.States == Const.State_2 && pids.Contains(x.ProjectId)).Count(); return cout1; } #endregion #region 质量问题 //质量问题总计 protected string zlallNumber; //质量问题合格数量 protected string zlfinishNumber; //质量问题整改率 protected string zlzgl; protected string zgzglDataValue; private async Task GetZlwtAsync() { await Task.Run(() => { if (pids == null) { zlallNumber = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now select x).Count().ToString(); var num2 = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now && x.State == "7" select x).Count(); zlfinishNumber = num2.ToString(); var num3 = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now && x.State != "7" select x).Count(); var zgl = String.Format("{0:N2}", 100.0 * num2 / (num2 + num3)); zlzgl = zgl.ToString(); zgzglDataValue = (100 - (100.0 * num2 / (num2 + num3))).ToString(); } else { zlallNumber = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now && pids.Contains(x.ProjectId) select x).Count().ToString(); var num2 = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now && x.State == "7" && pids.Contains(x.ProjectId) select x).Count(); zlfinishNumber = num2.ToString(); var num3 = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now && x.State != "7" && pids.Contains(x.ProjectId) select x).Count(); var zgl = String.Format("{0:N2}", 100.0 * num2 / (num2 + num3)); zlzgl = zgl.ToString(); zgzglDataValue = (100 - (100.0 * num2 / (num2 + num3))).ToString(); } }); } #endregion #region 质量共检 protected string zlgjallNumber; protected string zlgjfinishNumber; protected string zlgjzgl; protected string zggjzglDataValue; private async Task GetZlgjAsync() { await Task.Run(() => { if (pids == null) { var num1 = (from x in Funs.DB.ProcessControl_InspectionManagement select x).Count(); zlgjallNumber = num1.ToString(); var num2 = (from x in Funs.DB.ProcessControl_InspectionManagement where x.IsOnceQualified == true select x).Count(); zlgjfinishNumber = num2.ToString(); var zgl = String.Format("{0:N2}", 100.0 * num2 / num1); zlgjzgl = zgl.ToString(); zggjzglDataValue = (100 - (100.0 * num2 / num1)).ToString(); } else { var num1 = (from x in Funs.DB.ProcessControl_InspectionManagement where pids.Contains(x.ProjectId) select x).Count(); zlgjallNumber = num1.ToString(); var num2 = (from x in Funs.DB.ProcessControl_InspectionManagement where x.IsOnceQualified == true && pids.Contains(x.ProjectId) select x).Count(); zlgjfinishNumber = num2.ToString(); var zgl = String.Format("{0:N2}", 100.0 * num2 / num1); zlgjzgl = zgl.ToString(); zggjzglDataValue = (100 - (100.0 * num2 / num1)).ToString(); } }); } #endregion #region 焊接 protected string hjallNumber = "0"; protected string hjfinishNumber = "0"; protected string hjzgl = "0"; protected string hjDataValue = "0"; private async Task GetHjAsync() { await Task.Run(() => { Model.SingleSerie series = new Model.SingleSerie(); Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listdata = new List(); double result = 0; Model.SGGLDB db = Funs.DB; var ndtLists = from x in db.ProcessControl_NondestructiveTest_New where x.ProfessionalName == "工艺管道" select x; if (pids != null) { ndtLists = ndtLists.Where(x=>pids.Contains(x.ProjectId)); } decimal a = 0, b = 0; var sumResult = ndtLists .GroupBy(x => x.ProjectId) .Select(g => new { TotalQ = g.OrderByDescending(x => x.CreateDate) .Select(x => x.TotalQuantity) .FirstOrDefault(), Rate = g.OrderByDescending(x => x.CreateDate) .Select(x => x.TotalRate) .FirstOrDefault() }) .Where(x => x.TotalQ.HasValue).ToList() .Select(x => new { A = Math.Floor(x.TotalQ.Value * (decimal.Parse(x.Rate)) / 100), B = x.TotalQ.Value }); a = sumResult.Sum(x=>x.A); b = sumResult.Sum(x => x.B); if (b > 0) { result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 2)); hjallNumber = b.ToString(); hjfinishNumber = a.ToString(); hjzgl = result.ToString(); hjDataValue = (100 - result).ToString(); } }); } #endregion #region 关键事项 //准点率 protected string gjsxZdl = "0"; private async Task GetGjsxAsync() { await Task.Run(() => { if (pids == null) { var znum = (from x in Funs.DB.GJSX select x).Count(); divGjsxzj.InnerHtml = znum.ToString(); var dqnum = (from x in Funs.DB.GJSX where x.CompleteDate <= DateTime.Now select x).Count().ToString(); divGjsxdq.InnerHtml = dqnum; var wzdnum = (from x in Funs.DB.GJSX where x.CompleteDate <= DateTime.Now && x.State != "0" select x).Count().ToString(); divGjsxwzd.InnerHtml = wzdnum; var ywcnum = (from x in Funs.DB.GJSX where x.CompleteDate <= DateTime.Now && x.State == "0" select x).Count(); gjsxZdl = Math.Round((100.0 * ywcnum / znum), 2).ToString(); } else { var znum = (from x in Funs.DB.GJSX where pids.Contains(x.ProjectId) select x).Count(); divGjsxzj.InnerHtml = znum.ToString(); var dqnum = (from x in Funs.DB.GJSX where x.CompleteDate <= DateTime.Now && pids.Contains(x.ProjectId) select x).Count().ToString(); divGjsxdq.InnerHtml = dqnum; var wzdnum = (from x in Funs.DB.GJSX where x.CompleteDate <= DateTime.Now && x.State != "0" && pids.Contains(x.ProjectId) select x).Count().ToString(); divGjsxwzd.InnerHtml = wzdnum; var ywcnum = (from x in Funs.DB.GJSX where x.CompleteDate <= DateTime.Now && x.State == "0" && pids.Contains(x.ProjectId) select x).Count(); gjsxZdl = Math.Round((100.0 * ywcnum / znum), 2).ToString(); } }); } #endregion #region 人员信息 private async Task GetSitePersonAsync() { await Task.Run(() => { int AllCount = 0; int MCount = 0; var getallin = new List(); if (pids == null) { getallin = APIPageDataService.getPersonNumByCompany(DateTime.Now); } else { getallin = APIPageDataService.getPersonNumByCompany(DateTime.Now, pids); } AllCount = getallin.Count(); if (AllCount > 0) { MCount = getallin.Where(x => x.PostType == Const.PostType_1).Count(); } div_xcrs.InnerHtml = AllCount.ToString(); div_zyxcrs.InnerHtml = (AllCount - MCount).ToString(); div_glxcrs.InnerHtml = MCount.ToString(); }); } #endregion #region 项目人员图表 protected string ProjectPersonCount; protected string ProjectPersonMc; private async Task GetProjectSitePersonAsync() { await Task.Run(() => { var list = new List(); if (pids == null) { list = Funs.DB.Base_Project.Where(x => (x.ProjectState == Const.ProjectState_1 || x.ProjectState == null)).ToList(); } else { list = Funs.DB.Base_Project.Where(x => pids.Contains(x.ProjectId)).ToList(); } foreach (var item in list) { ProjectPersonMc += "'" + item.ShortName + "',"; ProjectPersonCount += "'" + APIPageDataService.getPersonNum(item.ProjectId, DateTime.Now).Count() + "',"; } ProjectPersonMc = ProjectPersonMc.TrimEnd(','); ProjectPersonCount = ProjectPersonCount.TrimEnd(','); }); } #endregion #region 进度情况 protected string ProjectJd; protected string ProjectMc; protected async Task GetJdAsync() { var list = new List(); if (pids == null) { list = Funs.DB.Base_Project.Where(x => (x.ProjectState == Const.ProjectState_1 || x.ProjectState == null)).ToList(); } else { list = Funs.DB.Base_Project.Where(x => pids.Contains(x.ProjectId)).ToList(); } if (list.Count > 0) { var progressCompletions = from x in Funs.DB.JDGL_ProgressCompletion select x; foreach (var item in list) { var pCs = progressCompletions.Where(x => x.ProjectId == item.ProjectId).ToList(); ProjectJd += "'" + pCs.Sum(x => x.RealNum ?? 0).ToString("0.##") + "',"; ProjectMc += "'" + item.ShortName + "',"; } ProjectJd = ProjectJd.TrimEnd(','); ProjectMc = ProjectMc.TrimEnd(','); } } #endregion #region 整改数据 protected async Task GetZgsjAsync() { div_zgsj.InnerHtml = (GetGeneralClosedNum() + GetGeneralNotClosedNum()).ToString(); div_zgywc.InnerHtml = GetGeneralClosedNum().ToString(); div_zgwwc.InnerHtml = GetGeneralNotClosedNum().ToString(); div_zgwcl.InnerHtml = (100.0 * GetGeneralClosedNum() / (GetGeneralNotClosedNum() + GetGeneralClosedNum())).ToString("0.##") + "%"; } /// /// 获取隐患整改闭环项 /// /// public int GetGeneralClosedNum() { int result = 0; if (pids == null) { result = (from x in Funs.DB.HSSE_Hazard_HazardRegister where x.States == "3" select x).Count(); } else { result = (from x in Funs.DB.HSSE_Hazard_HazardRegister where x.States == "3" && pids.Contains(x.ProjectId) select x).Count(); } return result; } /// /// 获取隐患未整改完成项 /// /// public int GetGeneralNotClosedNum() { int result = 0; if (pids == null) { result = (from x in Funs.DB.HSSE_Hazard_HazardRegister where x.States != "3" select x).Count(); } else { result = (from x in Funs.DB.HSSE_Hazard_HazardRegister where x.States != "3" && pids.Contains(x.ProjectId) select x).Count(); } return result; } #endregion #region 材料到货 protected string gdclHtml; protected string sbclHtml; protected string gdclHead = "
    项目
    管子
    管件
    阀门
    垫片
    紧固件
    "; protected string sbclHead = "
    项目
    采购量
    到货量
    已到货百分比
    "; private async Task GetCldhAsync() { var list = new List(); if (pids == null) { list = Funs.DB.Base_Project.Where(x => (x.ProjectState == Const.ProjectState_1 || x.ProjectState == null)).ToList(); } else { list = Funs.DB.Base_Project.Where(x => pids.Contains(x.ProjectId)).ToList(); } var PipelinList = Funs.DB.CLGL_PipelineMaterialSumList.Where(x => x.Type == "M"); var SbclList = Funs.DB.CLGL_ContractListSum.Where(x => x.C1 == "设备"); foreach (var item in list) { #region 管道材料 gdclHtml += "
    "; var pname = item.ShortName; if (item.ShortName.Length > 3) { pname = item.ShortName.Substring(0, 3) + "..."; } gdclHtml += "
    " + pname + "
    "; var pid = BLL.ProjectService.GetCLProjectCodeByProjectId(item.ProjectId).ToString(); //管子 var num1 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "管子").FirstOrDefault(); if (num1 != null) { gdclHtml += "
    " + (num1.C7 == "" ? "0%" : num1.C7) + "
    "; } else { gdclHtml += "
    0%
    "; } var num2 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "管件法兰").FirstOrDefault(); if (num2 != null) { gdclHtml += "
    " + (num2.C7 == "" ? "0%" : num2.C7) + "
    "; } else { gdclHtml += "
    0%
    "; } var num3 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "阀门").FirstOrDefault(); if (num3 != null) { gdclHtml += "
    " + (num3.C7 == "" ? "0%" : num3.C7) + "
    "; } else { gdclHtml += "
    0%
    "; } var num4 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "垫片").FirstOrDefault(); if (num4 != null) { gdclHtml += "
    " + (num4.C7 == "" ? "0%" : num4.C7) + "
    "; } else { gdclHtml += "
    0%
    "; } var num5 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "紧固件").FirstOrDefault(); if (num5 != null) { gdclHtml += "
    " + (num5.C7 == "" ? "0%" : num5.C7) + "
    "; } else { gdclHtml += "
    0%
    "; } gdclHtml += "
    "; #endregion #region 设备材料 sbclHtml += "
    "; pname = item.ShortName; if (item.ShortName.Length > 5) { pname = item.ShortName.Substring(0, 5) + "..."; } sbclHtml += "
    " + pname + "
    "; //采购量 var SbcllCglList = SbclList.Where(x => x.ProjectId == pid).ToList(); double SbcllCgl = 0.0; double Sbdhs = 0.0; foreach (var itemCgl in SbcllCglList) { if (string.IsNullOrEmpty(itemCgl.C7)) { SbcllCgl += 0; Sbdhs += 0; } else { SbcllCgl += Convert.ToDouble(itemCgl.C7); Sbdhs += Convert.ToDouble(itemCgl.C9); } } sbclHtml += "
    " + SbcllCgl + "
    "; sbclHtml += "
    " + Sbdhs + "
    "; //百分比 if (SbcllCgl + Sbdhs != 0) { var dhbfb = String.Format("{0:N2}", 100.0 * Sbdhs / (Sbdhs + SbcllCgl), 2) + "%"; sbclHtml += "
    " + dhbfb + "
    "; } else { sbclHtml += "
    0%
    "; } sbclHtml += "
    "; #endregion } } #endregion /// /// 获取未遂事件数 /// /// private int GetNearMissNum() { if (pids == null) { var result = (from x in Funs.DB.Accident_AccidentPersonRecord join y in Funs.DB.Base_AccidentType on x.AccidentTypeId equals y.AccidentTypeId where x.IsAttempt == "1" && x.CompileDate > Const.DtmarkTime select x).Count(); return result; } else { var result = (from x in Funs.DB.Accident_AccidentPersonRecord join y in Funs.DB.Base_AccidentType on x.AccidentTypeId equals y.AccidentTypeId where x.IsAttempt == "1" && x.CompileDate > Const.DtmarkTime && pids.Contains(x.ProjectId) select x).Count(); return result; } } } }