using BLL; using FineUIPro.Web.BaseInfo; using FineUIPro.Web.DataShow; using FineUIPro.Web.SysManage; using Model; using Newtonsoft.Json; using NPOI.Util; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.common { public partial class mainProject2 : PageBase { #region Fields protected string ActualValue = string.Empty; protected string completed = string.Empty; protected string Cumulative_actual_value = string.Empty; //实际值 protected string Cumulative_planned_value = string.Empty; protected string GeneralRisk = string.Empty; //一般风险 protected string GreaterRisk = string.Empty; protected string LowRisk = string.Empty; //已完成 protected string majorRisk = string.Empty; protected string OnePassRate = string.Empty; //一次共检合格率 protected string OnePassRateOfWelding = string.Empty; //重大风险 //低风险 //较大风险 protected string PlannedValue = string.Empty; /// /// 中英文 /// protected string QualityRate = string.Empty; //焊接一次合格率 protected string total = string.Empty; #endregion Fields #region Properties /// /// 项目id /// public string ProjectId { get { return (string)ViewState["ProjectId"]; } set { ViewState["ProjectId"] = value; } } #endregion Properties #region Methods /// /// 打开待办 /// /// /// protected void btnshowWindows(object sender, EventArgs e) { PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("{0}", hiddenUrl.Value, "办理 - "))); } /// /// 页面加载 /// /// /// protected async void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ProjectId = CurrUser.LoginProjectId; var treeTask = GetTreeAsync(); var personTask = GetPersonAsync(); var weekJdtjTask = GetWeekJDAsync(); var monthJdtjTask = GetMonthJDAsync(); var quantityDoneJDTask = GetQuantityDoneJDAsync(); var otherTasks = new List { BindSafetyStatisticsAsync(), // 安全统计模块 BindQualityStatisticsAsync(), // 质量统计模块 getHazardData(), //整改数据 getZgsj(), //风险预警 getHazard(), getWork(), //工程概况 getProjectInfo(), //GetJD(), //质量共检 getZlgj(), //焊接 getHj(), //加载质量问题 getZlwt(), //人员信息 getSitePerson(), //项目人员图表 // getProjectSitePerson(), //工作台面 getGjsx(), getGztm(), //材料到货 getCldh(), getCNEN(),//中英文翻译 }; await Task.WhenAll(otherTasks.Concat(new[] { treeTask, personTask, weekJdtjTask, monthJdtjTask, quantityDoneJDTask })); Tree = await treeTask; Person = await personTask; WeekJdtjHtml = await weekJdtjTask; MonthJdtjHtml = await monthJdtjTask; QuantityDoneJdtjHtml = await quantityDoneJDTask; } } /// /// 关闭弹出窗 /// /// /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { getGztm(); getGjsx(); } // 质量统计模块封装 private async Task BindQualityStatisticsAsync() { await Task.Run(() => { //质量培训人员 DateTime date = DateTime.Now.AddDays(-1); int CqmsPxNum = (from x in Funs.DB.Comprehensive_InspectionPerson where x.IsTrain == true && x.ProjectId == ProjectId select x).Count(); divCqmsPxNum.InnerHtml = CqmsPxNum.ToString(); //施工审批量 int sgspl = Funs.DB.Comprehensive_GeneralPlanApproval.Where(x => x.ProjectId == ProjectId && x.AuditMan != null && x.AuditMan != "" && x.ApprovalMan != null && x.ApprovalMan != "").Count() + Funs.DB.Comprehensive_MajorPlanApproval.Where(x => x.ProjectId == ProjectId && x.AuditMan != null && x.AuditMan != "" && x.ApprovalMan != null && x.ApprovalMan != "").Count(); div_sgfaSpl.InnerHtml = sgspl.ToString(); }); } // 安全统计模块封装 private async Task BindSafetyStatisticsAsync() { await Task.Run(() => { Model.SGGLDB db = Funs.DB; //安全人工时 //int wHours = db.SitePerson_PersonInOutNumber.Where(x => x.ProjectId == ProjectId).Max(x => x.WorkHours) ?? 0; int wHours = 0; DateTime? sDate = Funs.GetNewDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString()); wHours = (from x in db.T_d_EmployInOutRecord where x.ProjectId == ProjectId select x.ManHours ?? 0).ToList().Sum(); this.divSafeWorkTime.InnerHtml = wHours.ToString(); //本月安全人工时 int wHoursMonth = 0; var dayReports = BLL.SitePerson_MonthReportService.getMonthReports(this.ProjectId, sDate); if (dayReports.Any()) { wHoursMonth = Convert.ToInt32(dayReports[0].DayWorkTime); } this.divSafeWorkTimeMonth.InnerHtml = wHoursMonth.ToString(); //安全培训累计人员 var getTrainRecord = db.EduTrain_TrainRecord.Where(x => x.ProjectId == ProjectId).Sum(x => x.TrainPersonNum) ?? 0; //修改:增加博晟教育中的人数 var boShengCount = db.Bo_Sheng_TrainPerson.Count(x => x.ProjectId == ProjectId && (x.DeleteTag == "False" || x.DeleteTag == null)); this.divSafePersonNum.InnerHtml = (getTrainRecord + boShengCount).ToString(); //安全管理人员 var allSum = from x in Funs.DB.SitePerson_Person where x.ProjectId == ProjectId && x.IsUsed == true && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime.Value > DateTime.Now) select x; var glAllPerson = from x in allSum join y in Funs.DB.Base_WorkPost on x.WorkPostId equals y.WorkPostId where y.IsHsse == true && x.ProjectId == ProjectId //安管人员 select x; this.divSafeManagePersonNum.InnerHtml = glAllPerson.Count().ToString(); //未遂事故 var wsAccidentList1 = from x in db.Accident_AccidentPersonRecord join y in db.Base_AccidentType on x.AccidentTypeId equals y.AccidentTypeId where y.AccidentTypeName.Contains("未遂") && x.ProjectId == ProjectId select x; var wsAccidentList2 = from x in db.Accident_AccidentReportOther join y in db.Sys_Const on x.AccidentTypeId equals y.ConstValue where y.ConstText.Contains("未遂") && x.ProjectId == ProjectId select x; this.divWS.InnerHtml = (wsAccidentList1.Count() + wsAccidentList2.Count()).ToString(); }); } #endregion Methods // 项目统计优化 #region 人员信息 private async Task getSitePerson() { await Task.Run(() => { int AllCount = 0; int MCount = 0; //修改日期2024-10-30 16:53:50 为了和另一个看板相同 //Funs.DB.T_d_EmployInOutRecord.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date) //var getallin = APIPageDataService.getPersonNum(ProjectId, DateTime.Now); var getallin = from x in Funs.DB.T_d_EmployInOutRecord join z in Funs.DB.Base_WorkPost on x.PostId equals z.WorkPostId where x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date select new { z.PostType }; AllCount = getallin.Count(); if (AllCount > 0) { MCount = getallin.Where(x => x.PostType == Const.PostType_1).Count(); } if (AllCount > 0) { ////当前现场总人数 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 getProjectSitePerson() { await Task.Run(() => { var list = Funs.DB.Base_Project.Where(x => (x.ProjectState == Const.ProjectState_1 || x.ProjectState == null) && x.Progress != null && x.ProjectId == ProjectId).ToList(); foreach (var item in list) { ProjectPersonMc += "'" + item.ShortName + "',"; ProjectPersonCount += "'" + APIPageDataService.getPersonNum(item.ProjectId, DateTime.Now).Count() + "',"; } if (!string.IsNullOrEmpty(ProjectPersonMc) && !string.IsNullOrEmpty(ProjectPersonCount)) { ProjectPersonMc = ProjectPersonMc.TrimEnd(','); ProjectPersonCount = ProjectPersonCount.TrimEnd(','); } }); } #endregion 项目人员图表 #region 整改数据 /// /// 获取隐患整改闭环项 /// /// public int GetGeneralClosedNum() { int result = (from x in Funs.DB.HSSE_Hazard_HazardRegister where x.States == "3" && x.ProjectId == ProjectId select x).Count(); return result; } /// /// 获取隐患未整改完成项 /// /// public int GetGeneralNotClosedNum() { int result = (from x in Funs.DB.HSSE_Hazard_HazardRegister where x.States != "3" && x.ProjectId == ProjectId select x).Count(); return result; } protected async Task getZgsj() { await Task.Run(() => { int GeneralClosedNum = GetGeneralClosedNum(); int GeneralNotClosedNum = GetGeneralNotClosedNum(); div_zgsj.InnerHtml = (GeneralClosedNum + GeneralNotClosedNum).ToString(); div_zgywc.InnerHtml = GeneralClosedNum.ToString(); div_zgwwc.InnerHtml = GeneralNotClosedNum.ToString(); div_zgwcl.InnerHtml = String.Format("{0:N2}", 100.0 * GeneralClosedNum / (GeneralNotClosedNum + GeneralClosedNum)).Replace("NaN", "0") + "%"; }); } #endregion 整改数据 #region 工程概括 protected string divJLUnitTitle; protected string divOwnUnitTitle; protected string divProjectAddressTitle; protected string divProjectImg; protected string divProjectMoneyTitle; protected string divProjectNameTitle; protected string divSGUnitTitle; protected string spanJLUnit; protected string spanOwnUnit; protected string spanProjectAddress; protected string spanProjectName; protected string spanRemark; protected string spanSGUnit; private string GetFileType(string fileName) { string fileType = String.Empty; int lastDotIndex = fileName.LastIndexOf("."); if (lastDotIndex >= 0) { fileType = fileName.Substring(lastDotIndex + 1).ToLower(); } return fileType; } /// /// /// private async Task getProjectInfo() { await Task.Run(() => { divProjectNameTitle = ""; divProjectAddressTitle = ""; divProjectMoneyTitle = ""; divOwnUnitTitle = ""; divSGUnitTitle = ""; divJLUnitTitle = ""; divProjectImg = "
"; var project = ProjectService.GetProjectByProjectId(this.ProjectId); if (project != null) { if (project.EndDate.HasValue) { this.divEndDate.InnerHtml = string.Format("{0:yyyy-MM-dd}", project.EndDate); int endDays = (project.EndDate.Value - DateTime.Now).Days; if (endDays >= 0) { this.divRemainingDays.InnerHtml = endDays.ToString() + ""; } if (project.StartDate.HasValue) { int pdays = (project.EndDate.Value - project.StartDate.Value).Days; if (pdays >= 0) { this.divProjectDays.InnerHtml = pdays.ToString() + ""; } } } var allowExtensions = new List { "jpg", "jpeg", "png", "bmp", "gif", // 图片文件类型 }; var getImag = Funs.DB.AttachFile.FirstOrDefault(x => x.ToKeyId == project.ProjectId); if (getImag != null && !string.IsNullOrEmpty(getImag.AttachUrl)) { string url = getImag.AttachUrl.Replace('\\', '/'); var UrlList = Funs.GetStrListByStr(url, ','); bool isHiddDefaultImg = false; foreach (var item in UrlList) { if (!string.IsNullOrEmpty(item)) { string atturl = Funs.RootPath + item.Replace(';', ' ').Trim(); string fileType = GetFileType(atturl); if (File.Exists(atturl) && allowExtensions.Contains(fileType)) { isHiddDefaultImg = true; divProjectImg += string.Format("
", atturl.Replace(Funs.RootPath, "/")); //this.divProjectImgs.Src = divProjectImg; } } } divProjectImg = divProjectImg.Replace("
", ""); } } }); } #endregion 工程概括 #region 风险预警 protected int CompletedNum; protected int AllNum; protected int ConstructionNum; protected int EarlyWarningCounts; protected int FinishedNum; protected int JxyjNum; protected string riskData1; protected string riskData2; protected string riskData3; protected string riskData4; protected string riskDataRate; protected int SuperCompletedNum; protected int SuperAllNum; protected int SuperConstructionNum; protected int SuperFinishedNum; protected int SuperTrainPersonNum; protected int TrainPersonNum; /// /// 获取危大工程审批完成数 /// /// protected async Task GetCompletedNum() { return await Task.Run(() => { var result = Project_HSSEData_HSSEService.GetCompletedNum(ProjectId); return result; }); } /// /// 获取危大工程施工个数 /// /// protected async Task GetConstructionNum() { return await Task.Run(() => { var result = Project_HSSEData_HSSEService.GetConstructionNum(ProjectId); return result; }); } /// /// 资质预警 /// protected async Task getEarlyWarningCounts() { return await Task.Run(() => { int allCount = 0; var getPersonQualitys = from x in Funs.DB.QualityAudit_PersonQuality join y in Funs.DB.SitePerson_Person on x.PersonId equals y.PersonId where x.LimitDate.HasValue && x.LimitDate < DateTime.Now && y.ProjectId == ProjectId select x; //// 预警人数 allCount = getPersonQualitys.Count(); return allCount; }); } /// /// 获取危大工程完工个数 /// /// protected async Task GetFinishedNum() { return await Task.Run(() => { var result = Project_HSSEData_HSSEService.GetFinishedNum(ProjectId); return result; }); } /// /// 机械预警 /// /// protected async Task GetJxyjNum() { return await Task.Run(() => { int result = 0; //机具报验的到期提醒和过期提醒记录数加一起 ////机具报验的到期提醒数 //var num1 = Funs.DB.Comprehensive_InspectionMachine.Where(x => x.IsOnSite == true && DateTime.Now < x.NextTestDate && x.ProjectId == ProjectId // && ((DateTime)x.NextTestDate).AddDays(-15) < DateTime.Now).Count(); //过期提醒记录数 var num2 = Funs.DB.Comprehensive_InspectionMachine.Where(x => x.IsOnSite == true && x.NextTestDate < DateTime.Now && x.ProjectId == ProjectId).Count(); //result = num1 + num2; result = num2; return result; }); } /// /// 获取超危大工程审批完成数 /// /// protected async Task GetSuperCompletedNum() { return await Task.Run(() => { var result = Project_HSSEData_HSSEService.GetSuperCompletedNum(ProjectId); return result; }); } /// /// 获取超危大工程施工个数 /// /// protected async Task GetSuperConstructionNum() { return await Task.Run(() => { var result = Project_HSSEData_HSSEService.GetSuperConstructionNum(ProjectId); return result; }); } /// /// 获取超危大工程完工个数 /// /// protected async Task GetSuperFinishedNum() { return await Task.Run(() => { var result = Project_HSSEData_HSSEService.GetSuperFinishedNum(ProjectId); return result; }); } /// /// 获取超危大工程培训人次数 /// /// protected async Task GetSuperTrainPersonNum() { return await Task.Run(() => { var result = Project_HSSEData_HSSEService.GetSuperTrainPersonNum(ProjectId); return result; }); } /// /// 获取危大工程培训人次数 /// /// protected async Task GetTrainPersonNum() { return await Task.Run(() => { var result = Project_HSSEData_HSSEService.GetTrainPersonNum(ProjectId); return result; }); } /// /// 获取风险管控 /// private async Task getHazard() { await Task.Run(() => { ; var getHazards = from x in Funs.DB.Hazard_HazardSelectedItem join y in Funs.DB.Base_RiskLevel on x.HazardLevel equals y.RiskLevelId where x.ProjectId == ProjectId select new { x.HazardSelectedItemId, y.RiskLevel }; var riskLevels = from x in Funs.DB.Base_RiskLevel select x; List RiskLevelNum = new List(); List series = new List(); riskData1 = getHazards.Count(x => x.RiskLevel == 1).ToString(); riskData2 = getHazards.Count(x => x.RiskLevel == 2).ToString(); riskData3 = getHazards.Count(x => x.RiskLevel == 3).ToString(); riskData4 = getHazards.Count(x => x.RiskLevel == 4).ToString(); if (getHazards.Count() > 0) { riskDataRate = (100.0 * getHazards.Count(x => x.RiskLevel == 4) / getHazards.Count()).ToString("0.##"); } else { riskDataRate = "0"; } }); } private async Task getHazardData() { var EarlyWarningCountsTask = getEarlyWarningCounts(); var GetJxyjNumTask = GetJxyjNum(); var CompletedNumTask = GetCompletedNum(); var TrainPersonNumTask = GetTrainPersonNum(); var ConstructionNumTask = GetConstructionNum(); var FinishedNumTask = GetFinishedNum(); var SuperCompletedNumTask = GetSuperCompletedNum(); var SuperTrainPersonNumTask = GetSuperTrainPersonNum(); var SuperConstructionNumTask = GetSuperConstructionNum(); var SuperFinishedNumTask = GetSuperFinishedNum(); await Task.WhenAll( EarlyWarningCountsTask, GetJxyjNumTask, CompletedNumTask, TrainPersonNumTask, ConstructionNumTask, FinishedNumTask, SuperCompletedNumTask, SuperTrainPersonNumTask, SuperConstructionNumTask, SuperFinishedNumTask); EarlyWarningCounts = await EarlyWarningCountsTask; JxyjNum = await GetJxyjNumTask; CompletedNum = await CompletedNumTask; TrainPersonNum = await TrainPersonNumTask; ConstructionNum = await ConstructionNumTask; FinishedNum = await FinishedNumTask; SuperCompletedNum = await SuperCompletedNumTask; SuperTrainPersonNum = await SuperTrainPersonNumTask; SuperConstructionNum = await SuperConstructionNumTask; SuperFinishedNum = await SuperFinishedNumTask; AllNum = await CompletedNumTask + await ConstructionNumTask + await FinishedNumTask; SuperAllNum = await SuperCompletedNumTask + await SuperConstructionNumTask + await SuperFinishedNumTask; } #endregion 风险预警 #region 作业许可 protected int AllWrokCount0; protected int AllWrokCount1; protected int AllWrokCount2; protected int AllWrokCount3; protected int WrokCount0; protected int WrokCount1; protected int WrokCount2; protected int WrokCount3; protected async Task getWork() { var AllWrokCount0 = getALLWrokCount0(); var AllWrokCount1 = getALLWrokCount1(); var AllWrokCount2 = getALLWrokCount2(); var AllWrokCount3 = getALLWrokCount3(); var WrokCount0 = getWrokCount0(); var WrokCount1 = getWrokCount1(); var WrokCount2 = getWrokCount2(); var WrokCount3 = getWrokCount3(); await Task.WhenAll(AllWrokCount0, AllWrokCount1, AllWrokCount2, AllWrokCount3, WrokCount0, WrokCount1, WrokCount2, WrokCount3); this.AllWrokCount0 = await AllWrokCount0; this.AllWrokCount1 = await AllWrokCount1; this.AllWrokCount2 = await AllWrokCount2; this.AllWrokCount3 = await AllWrokCount3; this.WrokCount0 = await WrokCount0; this.WrokCount1 = await WrokCount1; this.WrokCount2 = await WrokCount2; this.WrokCount3 = await WrokCount3; } protected IQueryable GetLicenseQuery() { var query = from lm in Funs.DB.License_LicenseManager join lt in Funs.DB.Base_LicenseType on lm.LicenseTypeId equals lt.LicenseTypeId into ltJoin from licenseType in ltJoin.DefaultIfEmpty() select new LicenseDto { ProjectId = lm.ProjectId, LicenseTypeName = licenseType.LicenseTypeName ?? "", WorkStatesStr = lm.WorkStates == "1" ? "待开工" : lm.WorkStates == "2" ? "作业中" : lm.WorkStates == "3" ? "已关闭" : lm.WorkStates == "-1" ? "已取消" : "" }; return query; } protected async Task getAllCount() { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId).ToList().Count; return result; } protected async Task getALLWrokCount0() { return await Task.Run(() => { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证").ToList().Count; return result; }); } protected async Task getALLWrokCount1() { return await Task.Run(() => { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证").ToList().Count; return result; }); } protected async Task getALLWrokCount2() { return await Task.Run(() => { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证").ToList().Count; return result; }); } protected async Task getALLWrokCount3() { return await Task.Run(() => { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证").ToList().Count; return result; }); } protected async Task getTodayCount() { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.WorkStatesStr == "作业中").ToList().Count; return result; } /// /// 动火作业许可证 /// /// protected async Task getWrokCount0() { return await Task.Run(() => { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; return result; }); } protected async Task getWrokCount1() { return await Task.Run(() => { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; return result; }); } protected async Task getWrokCount2() { return await Task.Run(() => { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; return result; }); } protected async Task getWrokCount3() { return await Task.Run(() => { var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; return result; }); } #endregion 作业许可 #region 质量问题 protected string zgzglDataValue; //质量问题总计 protected string zlallNumber; //质量问题合格数量 protected string zlfinishNumber; //质量问题整改率 protected string zlzgl; protected async Task getZlwt() { await Task.Run(() => { zlallNumber = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now && x.ProjectId == ProjectId select x).Count().ToString(); var num2 = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now && x.State == "7" && x.ProjectId == ProjectId select x).Count(); zlfinishNumber = num2.ToString(); var num3 = (from x in Funs.DB.Check_CheckControl where x.CheckDate <= DateTime.Now && x.State != "7" && x.ProjectId == ProjectId select x).Count(); var zgl = String.Format("{0:N2}", 100.0 * num2 / (num2 + num3)); zlzgl = zgl.ToString().Replace("NaN", "0"); zgzglDataValue = (100 - (100.0 * num2 / (num2 + num3))).ToString(); }); } #endregion 质量问题 #region 质量共检 protected string zggjzglDataValue; protected string zlgjallNumber; protected string zlgjfinishNumber; protected string zlgjzgl; protected async Task getZlgj() { await Task.Run(() => { Model.SGGLDB db = Funs.DB; zlgjallNumber = (from x in db.ProcessControl_InspectionManagement where x.ProjectId == ProjectId select x).Count().ToString(); var num2 = (from x in db.ProcessControl_InspectionManagement where x.IsOnceQualified == true && x.ProjectId == ProjectId select x).Count(); zlgjfinishNumber = num2.ToString(); var num3 = (from x in db.ProcessControl_InspectionManagement where (x.IsOnceQualified == false || x.IsOnceQualified == null) && x.ProjectId == ProjectId select x).Count(); var zgl = "0"; if (num2 != 0) { zgl = String.Format("{0:N2}", 100.0 * num2 / (num2 + num3)); zlgjzgl = zgl.ToString(); zggjzglDataValue = (100 - (100.0 * num2 / (num2 + num3))).ToString(); } else { zlgjzgl = zgl.ToString(); zggjzglDataValue = "0"; } }); } #endregion 质量共检 #region 焊接 protected string hjallNumber = "0"; protected string hjDataValue = "0"; protected string hjfinishNumber = "0"; protected string hjzgl = "0"; protected async Task getHj() { 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 ndtList = // (from x in db.ProcessControl_NondestructiveTest_New // where x.ProfessionalName == "工艺管道" && x.ProjectId == ProjectId // orderby x.CreateDate descending // select x).FirstOrDefault(); // decimal a = 0, b = 0; // if (ndtList != null) // { // if (ndtList.TotalQuantity.HasValue) // { // a += Math.Floor(ndtList.TotalQuantity.Value * Funs.GetNewDecimalOrZero(ndtList.TotalRate) / // 100); // b += ndtList.TotalQuantity.Value; // } // // if (!string.IsNullOrEmpty(ndtList.TotalRate)) // { // result = Convert.ToDouble(ndtList.TotalRate); // } // } // else // { // var hjglData = // (from x in db.HJGL_FL_Data // where x.ProjectId == ProjectId // orderby x.CompileDate descending // select x).FirstOrDefault(); // if (hjglData != null) // { // a = Funs.GetNewDecimalOrZero(hjglData.OneTimeFilmQualifiedAmount); // b = Funs.GetNewDecimalOrZero(hjglData.OneTimeFilmAmount); // if (a > 0 && b > 0) // { // result = Convert.ToDouble(Convert.ToDecimal(100.0) * b / a); // } // } // } var ndtList = (from x in db.ProcessControl_NondestructiveTest_New where x.ProjectId == ProjectId select x).ToList(); decimal a = 0, b = 0; if (ndtList.Count > 0) { foreach (var item in ndtList) { if (item.TotalQuantity.HasValue) { a += Math.Floor(item.TotalQuantity.Value * Funs.GetNewDecimalOrZero(item.TotalRate) / 100); b += item.TotalQuantity.Value; } } result = Convert.ToDouble(Convert.ToDecimal(100.0) * b / a); } else { var hjglData = (from x in db.HJGL_FL_Data where x.ProjectId == ProjectId orderby x.CompileDate descending select x).FirstOrDefault(); if (hjglData != null) { a = Funs.GetNewDecimalOrZero(hjglData.OneTimeFilmQualifiedAmount); b = Funs.GetNewDecimalOrZero(hjglData.OneTimeFilmAmount); if (a > 0 && b > 0) { result = Convert.ToDouble(Convert.ToDecimal(100.0) * b / a); } } } if (b > 0) { hjallNumber = b.ToString(); hjfinishNumber = a.ToString(); hjzgl = result.ToString(); hjDataValue = (100 - result).ToString(); } //var ndtLists = from x in db.HJGL_FL_NdtList where x.ProjectId == ProjectId select x; //if (ndtLists.Count() > 0) //{ // decimal a = 0, b = 0; // foreach (var item in ndtLists) // { // a += Funs.GetNewDecimalOrZero(item.OneTimeFilmQualifiedAmount); // b += Funs.GetNewDecimalOrZero(item.OneTimeFilmAmount); // } // 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(); // } //} //else //{ // var data = (from x in db.HJGL_FL_Data where x.ProjectId == ProjectId orderby x.CompileDate descending select x).FirstOrDefault(); // if (data != null) // { // decimal a = Funs.GetNewDecimalOrZero(data.OneTimeFilmQualifiedAmount); // decimal b = Funs.GetNewDecimalOrZero(data.OneTimeFilmAmount); // 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 swgclHtml; protected string Tree { get; set; } protected string Two { get { List series = new List(); Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); businessColumn.title = "赢得值曲线"; Model.Project_Installation installation = BLL.Project_InstallationService.GetProjectInstallationByProjectId(this.CurrUser.LoginProjectId); if (installation != null) { Model.SingleSerie s = new Model.SingleSerie(); Model.SingleSerie s2 = new Model.SingleSerie(); Model.SingleSerie s3 = new Model.SingleSerie(); Model.SingleSerie s4 = new Model.SingleSerie(); Model.SingleSerie s5 = new Model.SingleSerie(); Model.SingleSerie s6 = new Model.SingleSerie(); List listdata = new List(); List listdata2 = new List(); List listdata3 = new List(); List listdata4 = new List(); List listdata5 = new List(); List listdata6 = new List(); string strSql = "select distinct (cast(YEAR(Months) as varchar(4))+'.'+cast(MONTH(Months) as varchar(2))) as 月份,t.Months," + "ThisRealCost as '本月已完工作实际费用-ACWP',ThisPlanCost as '本月已完工作预算费用-BCWP',ThisPlanValue as '本月计划工作预算费用-BCWS',TotalPlanValue as '累计计划工作预算费用-BCWS',TotalRealCost as '累计已完工作实际费用-ACWP',TotalPlanCost as '累计已完工作预算费用-BCWP' " + "from dbo.View_WBS_CostControlParentDetail as t where ParentId=@Id order by t.Months"; //string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01"; SqlParameter[] parameter = new SqlParameter[] { new SqlParameter("@Id",installation.InstallationId), //new SqlParameter("@Months",date), }; DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter); decimal lastbcws = 0, bcws = 0, lastacwp = 0, acwp = 0, lastbcwp = 0, bcwp = 0; for (int i = 0; i < dt.Rows.Count; i++) { dt.Rows[i]["本月已完工作实际费用-ACWP"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月已完工作实际费用-ACWP"].ToString()) / 10000; dt.Rows[i]["本月已完工作预算费用-BCWP"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月已完工作预算费用-BCWP"].ToString()) / 10000; dt.Rows[i]["本月计划工作预算费用-BCWS"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月计划工作预算费用-BCWS"].ToString()) / 10000; bcws = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计计划工作预算费用-BCWS"].ToString()); acwp = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计已完工作实际费用-ACWP"].ToString()); bcwp = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计已完工作预算费用-BCWP"].ToString()); if (bcws == lastbcws) { if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now) { dt.Rows[i]["累计计划工作预算费用-BCWS"] = 0; } else { dt.Rows[i]["累计计划工作预算费用-BCWS"] = bcws / 10000; } } else { dt.Rows[i]["累计计划工作预算费用-BCWS"] = bcws / 10000; } if (acwp == lastacwp) { if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now) { dt.Rows[i]["累计已完工作实际费用-ACWP"] = 0; } else { dt.Rows[i]["累计已完工作实际费用-ACWP"] = acwp / 10000; } } else { dt.Rows[i]["累计已完工作实际费用-ACWP"] = acwp / 10000; } if (bcwp == lastbcwp) { if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now) { dt.Rows[i]["累计已完工作预算费用-BCWP"] = 0; } else { dt.Rows[i]["累计已完工作预算费用-BCWP"] = bcwp / 10000; } } else { dt.Rows[i]["累计已完工作预算费用-BCWP"] = bcwp / 10000; } lastbcws = bcws; lastacwp = acwp; lastbcwp = bcwp; listCategories.Add(dt.Rows[i]["月份"].ToString()); if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) <= DateTime.Now) { listdata.Add(Convert.ToDouble(dt.Rows[i]["本月计划工作预算费用-BCWS"])); listdata2.Add(Convert.ToDouble(dt.Rows[i]["累计计划工作预算费用-BCWS"])); listdata3.Add(Convert.ToDouble(dt.Rows[i]["本月已完工作预算费用-BCWP"])); listdata4.Add(Convert.ToDouble(dt.Rows[i]["累计已完工作预算费用-BCWP"])); listdata5.Add(Convert.ToDouble(dt.Rows[i]["本月已完工作实际费用-ACWP"])); listdata6.Add(Convert.ToDouble(dt.Rows[i]["累计已完工作实际费用-ACWP"])); } } s.data = listdata; s2.data = listdata2; s3.data = listdata3; s4.data = listdata4; s5.data = listdata5; s6.data = listdata6; series.Add(s); series.Add(s2); series.Add(s3); series.Add(s4); series.Add(s5); series.Add(s6); businessColumn.categories = listCategories; businessColumn.series = series; } return JsonConvert.SerializeObject(businessColumn); } } protected async Task GetJD() { await Task.Run(() => { int index = 0; var result = Funs.DB.View_JDGL_QuantityCompletion .Where(qc => qc.ProjectId == this.CurrUser.LoginProjectId) .OrderBy(qc => qc.SortIndex) .ThenBy(qc => qc.Name) .ToList(); foreach (var item in result) { index++; swgclHtml += "
"; swgclHtml += string.Format("

{0}

", index); swgclHtml += string.Format("

{0}

", item.Name); swgclHtml += string.Format("

{0}

", item.Unit); swgclHtml += string.Format("

{0}

", item.DesignNum); swgclHtml += string.Format("

{0}{1}{2}

", item.PlanNum, item.RealNum, item.Rate); swgclHtml += string.Format("

{0}{1}{2}

", item.TotalPlanNum, item.TotalRealNum, item.TotalRate); swgclHtml += string.Format("

{0}

", item.SumRate); swgclHtml += "
"; } }); } protected async Task GetTreeAsync() { return await Task.Run(() => { List series = new List(); Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); businessColumn.title = "赢得值曲线"; var views = (from x in Funs.DB.View_JDGL_ProgressCompletion where x.ProjectId == this.CurrUser.LoginProjectId orderby x.Months select x).ToList(); Model.SingleSerie s = new Model.SingleSerie(); Model.SingleSerie s2 = new Model.SingleSerie(); Model.SingleSerie s3 = new Model.SingleSerie(); Model.SingleSerie s4 = new Model.SingleSerie(); List listdata = new List(); List listdata2 = new List(); List listdata3 = new List(); List listdata4 = new List(); for (int i = 0; i < views.Count; i++) { listCategories.Add(views[i].MonthStr); listdata.Add(Convert.ToDouble(views[i].PlanNum)); listdata2.Add(Convert.ToDouble(views[i].TotalPlanNum)); listdata3.Add(Convert.ToDouble(views[i].RealNum)); listdata4.Add(Convert.ToDouble(views[i].TotalRealNum)); } s.data = listdata; s2.data = listdata2; s3.data = listdata3; s4.data = listdata4; series.Add(s); series.Add(s2); series.Add(s3); series.Add(s4); businessColumn.categories = listCategories; businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); }); } #endregion 赢得值曲线 #region 工程量完成情况 protected string QuantityDoneJdtjHtml; protected string QuantityDoneJdtjHead = "
类型
设计数量

本期

计划实际完成率

累计

计划实际完成率

完成率
"; //protected string QuantityDoneJdtjHead = "
类型
单位
设计数量

本期

计划完成实际完成完成率

累计

计划完成实际完成完成率

完成率
"; /// /// 工程量完成情况 /// /// protected async Task GetQuantityDoneJDAsync() { return await Task.Run(() => { string doneJdtjHtml = string.Empty; string month = string.Format("{0:yyyy-MM-01}", DateTime.Now); //DateTime months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-01"); if (DateTime.Now.Day < 26) { month = string.Format("{0:yyyy-MM-01}", DateTime.Now.AddMonths(-1)); //months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.AddMonths(-1).Month.ToString() + "-01"); } string strSql = @"select qc.QuantityCompletionId,(select PlanNum from JDGL_QuantityCompletion where QuantityListId=ql.QuantityListId and Months=@month) as PlanNum, (select RealNum from JDGL_QuantityCompletion where QuantityListId=ql.QuantityListId and Months=@month) as RealNum, (select NextNum from JDGL_QuantityCompletion where QuantityListId=ql.QuantityListId and Months=@month) as NextNum,ql.DesignNum,ql.Name,ql.Unit,ql.SortIndex, CONVERT(FLOAT, (select sum(ISNULL(PlanNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month)) as TotalPlanNum, CONVERT(FLOAT, (select sum(ISNULL(RealNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month)) as TotalRealNum, CONVERT(NVARCHAR(10), ((CAST(CASE ISNULL(qc.PlanNum, 0) WHEN 0 THEN 0 ELSE 100 * ISNULL(qc.RealNum, 0) / (1.0 * qc.PlanNum) END AS DECIMAL(9, 2))))) + '%' AS Rate, CONVERT(NVARCHAR(10), ((CAST(CASE(select sum(ISNULL(PlanNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month) WHEN 0 THEN 0 ELSE 100 * (select sum(ISNULL(RealNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month) / (1.0 * (select sum(ISNULL(PlanNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month)) END AS DECIMAL(9, 2)))))+'%' AS TotalRate, CONVERT(NVARCHAR(10), ((CAST(CASE ISNULL(ql.DesignNum, 0) WHEN 0 THEN 0 ELSE 100 * (select sum(ISNULL(RealNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month) / (1.0 * ql.DesignNum) END AS DECIMAL(9, 2)))))+'%' AS SumRate, CONVERT(FLOAT, (select sum(ISNULL(PlanNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months < qc.Months)) as LastTotalPlanNum, CONVERT(FLOAT, (select sum(ISNULL(RealNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months < qc.Months)) as LastTotalRealNum from[dbo].JDGL_QuantityList ql left join dbo.[JDGL_QuantityCompletion] qc on ql.QuantityListId=qc.QuantityListId where qc.QuantityCompletionId=(select top 1 QuantityCompletionId from[JDGL_QuantityCompletion] q where q.QuantityListId=qc.QuantityListId and q.Months<=@month order by q.Months desc) and qc.ProjectId=@ProjectId order by ql.SortIndex, ql.Name"; List listStr = new List(); listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); listStr.Add(new SqlParameter("@month", month)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); StringBuilder sb = new StringBuilder(); for (int j = 0; j < tb.Rows.Count; j++) { string name = tb.Rows[j]["Name"].ToString().Trim(); string unit = tb.Rows[j]["Unit"].ToString().Trim(); string designNum = Funs.RemoveZero(tb.Rows[j]["DesignNum"].ToString().Trim()); string planNum = Funs.RemoveZero(tb.Rows[j]["PlanNum"].ToString().Trim()); string realNum = Funs.RemoveZero(tb.Rows[j]["RealNum"].ToString().Trim()); string rate = tb.Rows[j]["Rate"].ToString().Trim(); string nextNum = Funs.RemoveZero(tb.Rows[j]["NextNum"].ToString().Trim()); string totalPlanNum = Funs.RemoveZero(tb.Rows[j]["TotalPlanNum"].ToString().Trim()); string totalRealNum = Funs.RemoveZero(tb.Rows[j]["TotalRealNum"].ToString().Trim()); string totalRate = tb.Rows[j]["TotalRate"].ToString().Trim(); string sumRate = tb.Rows[j]["SumRate"].ToString().Trim(); sb.Append("
"); sb.Append($"
{name}({unit})
"); //sb.Append($"
{unit}
"); sb.Append($"
{designNum}
"); sb.Append($"

{planNum}{realNum}{rate}

"); sb.Append($"

{totalPlanNum}{totalRealNum}{totalRate}

"); sb.Append($"
{sumRate}
"); sb.Append("
"); } doneJdtjHtml = sb.ToString(); return doneJdtjHtml; }); } #endregion #region 进度统计 protected string WeekJdtjHtml; //protected string WeekJdtjHead = "
序号
单位

上周完成情况

计划项完成项百分比

累计完成情况

计划项完成项百分比

"; protected string WeekJdtjHead = "
单位

上周完成情况

计划项完成项百分比

累计完成情况

计划项完成项百分比

"; protected string MonthJdtjHtml; //protected string MonthJdtjHead = "
序号
单位

上月完成情况

计划项完成项百分比

累计完成情况

计划项完成项百分比

"; protected string MonthJdtjHead = "
单位

上月完成情况

计划项完成项百分比

累计完成情况

计划项完成项百分比

"; /// /// 周进度完成情况 /// /// protected async Task GetWeekJDAsync() { return await Task.Run(() => { string weekGridHtml = string.Empty; //获取当前时间上一个周计划信息 var lastWeek = WeekPlanService.GetLastWeekPlan(this.CurrUser.LoginProjectId); if (lastWeek != null) { Model.SGGLDB db = Funs.DB; //1、获取本项目周进度计划中所有责任单位Id var units = (from x in db.JDGL_WeekPlan join y in db.Base_Unit on x.UnitId equals y.UnitId where x.ProjectId == this.CurrUser.LoginProjectId && x.EndDate <= lastWeek.EndDate orderby x.UnitId select new { x.UnitId, y.UnitName }).Distinct().ToList(); //2、获取当前项目指定周所有计划 var allWeekPlans = (from x in db.JDGL_WeekPlan where x.ProjectId == this.CurrUser.LoginProjectId && x.WeekNo == lastWeek.WeekNo orderby x.UnitId select x).ToList(); //3、获取当前项目所有周计划 var allPlans = (from x in db.JDGL_WeekPlan join y in db.Base_Unit on x.UnitId equals y.UnitId where x.ProjectId == this.CurrUser.LoginProjectId && x.EndDate <= lastWeek.EndDate orderby x.UnitId select x).ToList(); StringBuilder sb = new StringBuilder(); int index = 1; foreach (var unit in units) { double weekPlanNum = allWeekPlans.Where(x => x.UnitId == unit.UnitId).Count(); double weekPlanOkNum = allWeekPlans.Where(x => x.UnitId == unit.UnitId && x.IsOK == true).Count(); double weekRate = weekPlanNum > 0 ? Math.Round((weekPlanOkNum / weekPlanNum) * 100, 2) : 0; double allWeekPlanNum = allPlans.Where(x => x.UnitId == unit.UnitId).Count(); double allWeekPlanOkNum = allPlans.Where(x => x.UnitId == unit.UnitId && x.IsOK == true).Count(); double allWeekRate = allWeekPlanNum > 0 ? Math.Round((allWeekPlanOkNum / allWeekPlanNum) * 100, 2) : 0; sb.Append("
"); //sb.Append($"
{index}
"); sb.Append($"
{unit.UnitName}
"); sb.Append($"

{weekPlanNum}{weekPlanOkNum}{weekRate}%

"); sb.Append($"

{allWeekPlanNum}{allWeekPlanOkNum}{allWeekRate}%

"); sb.Append("
"); index++; } weekGridHtml = sb.ToString(); } return weekGridHtml; }); } /// /// 月进度完成情况 /// /// protected async Task GetMonthJDAsync() { return await Task.Run(() => { string monthGridHtml = string.Empty; //统计月份信息 DateTime months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-01"); if (DateTime.Now.Day < 26) { months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.AddMonths(-1).Month.ToString() + "-01"); } Model.SGGLDB db = Funs.DB; //1、获取本项目月进度计划中所有责任单位Id var units = (from x in db.JDGL_MonthPlan join y in db.Base_Unit on x.UnitId equals y.UnitId where x.ProjectId == this.CurrUser.LoginProjectId && x.Months <= months orderby x.UnitId select new { x.UnitId, y.UnitName }).Distinct().ToList(); //2、获取当前项目指定月所有计划 var allMonthPlans = (from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId && x.Months == months orderby x.UnitId select x).ToList(); //3、获取当前项目所有月计划 var allPlans = (from x in db.JDGL_MonthPlan join y in db.Base_Unit on x.UnitId equals y.UnitId where x.ProjectId == this.CurrUser.LoginProjectId && x.Months <= months orderby x.UnitId select x).ToList(); StringBuilder sb = new StringBuilder(); int index = 1; foreach (var unit in units) { double monthPlanNum = allMonthPlans.Where(x => x.UnitId == unit.UnitId).Count(); double monthPlanOkNum = allMonthPlans.Where(x => x.UnitId == unit.UnitId && x.RealDate != null).Count(); double monthRate = monthPlanNum > 0 ? Math.Round((monthPlanOkNum / monthPlanNum) * 100, 2) : 0; double allMonthPlanNum = allPlans.Where(x => x.UnitId == unit.UnitId).Count(); double allMonthPlanOkNum = allPlans.Where(x => x.UnitId == unit.UnitId && x.RealDate != null).Count(); double allMonthRate = allMonthPlanNum > 0 ? Math.Round((allMonthPlanOkNum / allMonthPlanNum) * 100, 2) : 0; sb.Append("
"); //sb.Append($"
{index}
"); sb.Append($"
{unit.UnitName}
"); sb.Append($"

{monthPlanNum}{monthPlanOkNum}{monthRate}%

"); sb.Append($"

{allMonthPlanNum}{allMonthPlanOkNum}{allMonthRate}%

"); sb.Append("
"); index++; } monthGridHtml = sb.ToString(); return monthGridHtml; }); } #endregion #region 人力情况 protected string Person { get; set; } protected async Task GetPersonAsync() { return await Task.Run(() => { Model.SGGLDB db = Funs.DB; List series = new List(); Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); var persons = from x in db.SitePerson_Person where x.ProjectId == this.CurrUser.LoginProjectId && x.IsUsed == true && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime > DateTime.Now) select x; var posts = (from x in persons join y in db.Base_WorkPost on x.WorkPostId equals y.WorkPostId select y).Distinct(); Model.SingleSerie s = new Model.SingleSerie(); List listdata = new List(); //管理人员 listCategories.Add("管理人员"); int workPostCount12 = (from x in persons join y in db.Base_WorkPost on x.WorkPostId equals y.WorkPostId where y.PostType == Const.PostType_1 select x).Count(); listdata.Add(workPostCount12); //普工 listCategories.Add("普工"); int workPostCountP = persons.Count(x => x.WorkPostId == Const.WorkPost_PGWorker); listdata.Add(workPostCountP); //木工 listCategories.Add("木工"); int workPostCount1 = persons.Count(x => x.WorkPostId == Const.WorkPost_Carpentry); listdata.Add(workPostCount1); //钢筋工 listCategories.Add("钢筋工"); int workPostCount2 = persons.Count(x => x.WorkPostId == Const.WorkPost_SteelWorker); listdata.Add(workPostCount2); //焊工 listCategories.Add("焊工"); int workPostCount6 = persons.Count(x => x.WorkPostId == Const.WorkPost_Welder1 || x.WorkPostId == Const.WorkPost_Welder2 || x.WorkPostId == Const.WorkPost_Welder3 || x.WorkPostId == Const.WorkPost_Welder4 || x.WorkPostId == Const.WorkPost_Welder5); listdata.Add(workPostCount6); //铆工 listCategories.Add("铆工"); int workPostCount7 = persons.Count(x => x.WorkPostId == Const.WorkPost_Riveter); listdata.Add(workPostCount7); //管工 listCategories.Add("管工"); int workPostCount8 = persons.Count(x => x.WorkPostId == Const.WorkPost_Foreman); listdata.Add(workPostCount8); ////瓦工 //listCategories.Add("瓦工"); //int workPostCount3 = persons.Count(x => x.WorkPostId == Const.WorkPost_Bricklayer); //listdata.Add(workPostCount3); ////混凝土工 //listCategories.Add("混凝土工"); //int workPostCount4 = persons.Count(x => x.WorkPostId == Const.WorkPost_ConcreteWorker); //listdata.Add(workPostCount4); ////钳工 //listCategories.Add("钳工"); //int workPostCount5 = persons.Count(x => x.WorkPostId == Const.WorkPost_Fitter1 || x.WorkPostId == Const.WorkPost_Fitter2); //listdata.Add(workPostCount5); ////电工 //listCategories.Add("电工"); //int workPostCount9 = persons.Count(x => x.WorkPostId == Const.WorkPost_Electrician1 || x.WorkPostId == Const.WorkPost_Electrician2 // || x.WorkPostId == Const.WorkPost_Electrician3); //listdata.Add(workPostCount9); ////仪表工 //listCategories.Add("仪表工"); //int workPostCount10 = persons.Count(x => x.WorkPostId == Const.WorkPost_Instrumentalist); //listdata.Add(workPostCount10); ////防腐保温工 //listCategories.Add("防腐保温工"); //int workPostCount11 = persons.Count(x => x.WorkPostId == Const.WorkPost_AnticorrosionWorker); //listdata.Add(workPostCount11); //其他 listCategories.Add("其他"); int workPostCount13 = persons.Count() - workPostCount1 - workPostCount2 - workPostCountP - workPostCount6 - workPostCount7 - workPostCount8 - workPostCount12; listdata.Add(workPostCount13); s.data = listdata; series.Add(s); businessColumn.categories = listCategories; businessColumn.title = persons.Count().ToString(); businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); }); } #endregion 人力情况 #region 作业许可列表 protected string getLicenseManager() { string returnHtml = ""; /* var list = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId).ToList(); foreach (var item in list) { var gfx = "风险作业"; if (item.IsHighRisk != true) { gfx = "非高风险"; } string shortUnitname = string.Empty; var unit = Funs.DB.Base_Unit.Where(x => x.UnitId == item.UnitId).FirstOrDefault(); if (unit != null) { shortUnitname = unit.ShortUnitName; } returnHtml += "
" + item.LicenseManagerCode + "-" + shortUnitname + "-" + item.WorkAreaName + "-" + gfx + "-" + item.LicenseTypeName + "
"; }*/ var result = (from x in Funs.DB.License_LicenseManager join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId into units from unit in units.DefaultIfEmpty() join z in Funs.DB.WBS_UnitWork on x.WorkAreaId equals z.UnitWorkId into areas from area in areas.DefaultIfEmpty() join w in Funs.DB.Base_LicenseType on x.LicenseTypeId equals w.LicenseTypeId where x.ProjectId == ProjectId select new { x.LicenseManagerCode, WorkAreaName = area.UnitWorkName, w.LicenseTypeName, x.IsHighRisk, unit.ShortUnitName }) .AsEnumerable() // 后续操作在内存中进行 .Select(x => new { x.LicenseManagerCode, x.WorkAreaName, x.LicenseTypeName, GfxType = x.IsHighRisk == true ? "风险作业" : "非高风险", ShortUnitName = x.ShortUnitName ?? "" }).ToList(); var sb = new StringBuilder(); foreach (var item in result) { sb.AppendFormat("
{0}-{1}-{2}-{3}-{4}
", item.LicenseManagerCode, item.ShortUnitName, item.WorkAreaName, item.GfxType, item.LicenseTypeName); } returnHtml = sb.ToString(); return returnHtml; } #endregion 作业许可列表 #region 工作台面 protected string gjsxRate = "0"; /// /// 加载关键事项 /// protected async Task getGjsx() { await Task.Run(() => { string returnDbHtml = "
"; ////关键事项 if (!string.IsNullOrEmpty(ProjectId)) { string strSql = @"SELECT GJSXID AS DataId ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId ,'关键事项待处理' AS MenuName ,GJSX.Detail AS Content ,users.UserId ,users.UserName ,GJSX.CreateDate AS DataTime ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr ,'../PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl FROM GJSX LEFT JOIN Sys_User AS users ON users.UserId =@userId WHERE GJSX.ProjectId=@projectId AND GJSX.State != 0 AND (((select count(*) from GJSX_detail detail where detail.Progress_user=@userId and detail.GJSXID=GJSX.GJSXID)=0 and (select count(*) from GJSX_Process process where process.UserId=@userId and process.GJSXID=GJSX.GJSXID)>0) or (GJSX.User_Acceptance like '%'+@userId+'%' and (select count(*) from GJSX_detail detail where detail.GJSXID=GJSX.GJSXID)=(select count(*) from GJSX_Process process where process.GJSXID=GJSX.GJSXID)) )"; List listStr = new List(); listStr.Add(new SqlParameter("@userId", CurrUser.UserId)); listStr.Add(new SqlParameter("@projectId", ProjectId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); for (int i = 0; i < tb.Rows.Count; i++) { returnDbHtml += "
" + tb.Rows[i]["MenuName"] + "" + tb.Rows[i]["Content"] + "" + tb.Rows[i]["DataTime"].ToString().Replace('/', '-').Split(' ')[0] + "
"; } } else { returnDbHtml = "
"; } this.div_gjsxlist.InnerHtml = returnDbHtml; List listStaticListStr = new List(); listStaticListStr.Add(new SqlParameter("@UserID", null)); listStaticListStr.Add(new SqlParameter("@unit", null)); listStaticListStr.Add(new SqlParameter("@projectid", this.CurrUser.LoginProjectId)); listStaticListStr.Add(new SqlParameter("@CNProfessional_ID", null)); listStaticListStr.Add(new SqlParameter("@questionType", null)); listStaticListStr.Add(new SqlParameter("@processMan", null)); listStaticListStr.Add(new SqlParameter("@User_Acceptance", null)); SqlParameter[] Staticparameter = listStaticListStr.ToArray(); DataTable statcitbDataTable = SQLHelper.GetDataTableRunProc("Sp_GJSXStatistic", Staticparameter); var list = from x in Funs.DB.GJSX where x.ProjectId == this.CurrUser.LoginProjectId && x.State!="1" select x; var allcount = list.Count(x => x.State == "0") + list.Count(x => x.State != "0" && x.CompleteDate < DateTime.Now); var closecount = list.Count(x => x.State == "0"); gjsxRate = String.Format("{0:N2}", 100.0 * closecount / allcount); gjsxRate = gjsxRate.ToString().Replace("NaN", "0") + "%"; }); } protected async Task getGztm() { await Task.Run(() => { //div_dbsxlist.InnerHtml = ""; string returnDbHtml = "
"; if (!string.IsNullOrEmpty(ProjectId)) { //关键事项 string strSql = @"SELECT GJSXID AS DataId ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId ,'关键事项待处理' AS MenuName ,GJSX.Detail AS Content ,users.UserId ,users.UserName ,GJSX.CreateDate AS DataTime ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr ,'../PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl FROM GJSX LEFT JOIN Sys_User AS users ON users.UserId =@userId WHERE GJSX.ProjectId=@projectId AND GJSX.State != 0 AND (((select count(*) from GJSX_detail detail where detail.Progress_user=@userId and detail.GJSXID=GJSX.GJSXID)=0 and (select count(*) from GJSX_Process process where process.UserId=@userId and process.GJSXID=GJSX.GJSXID)>0) or (GJSX.User_Acceptance like '%'+@userId+'%' and (select count(*) from GJSX_detail detail where detail.GJSXID=GJSX.GJSXID)=(select count(*) from GJSX_Process process where process.GJSXID=GJSX.GJSXID)) )"; List listStr = new List(); listStr.Add(new SqlParameter("@userId", CurrUser.UserId)); listStr.Add(new SqlParameter("@projectId", ProjectId)); SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); var Gjsxcount = tb.Rows.Count; div_gjsx.InnerHtml = Gjsxcount.ToString(); var getDataList = Funs.DB.Sp_Project_GetToDoItems(this.CurrUser.LoginProjectId, this.CurrUser.UserId).ToList(); //待办事项、个人流程 div_dbsx.InnerHtml = getDataList.Count().ToString(); div_grlc.InnerHtml = getDataList.Count().ToString(); foreach (var item in getDataList) { returnDbHtml += "
" + item.MenuName + "" + item.Content + "" + item.DataTime.ToString().Replace('/', '-').Split(' ')[0] + "
"; } } else { returnDbHtml = "
"; } this.div_dbsxlist.InnerHtml = returnDbHtml; }); } #endregion 工作台面 #region 材料到货 protected string gdclHead = "
材料类别
设计量

采购量

采购量百分比

到货量

已到货百分比

领料量

已领料百分比

"; protected string gdclHtml; protected string sbclHead = "
合同号
" + "
采购总量
" + "
发货总量
" + "
到货总量
" + "
到货百分比
"; protected string sbclHtml; private async Task getCldh() { await Task.Run(() => { //管道材料 var pid = BLL.ProjectService.GetCLProjectCodeByProjectId(ProjectId).ToString(); var list = Funs.DB.CLGL_PipelineMaterialSumList.Where(x => x.Type == "M" && x.ProjectId == pid); foreach (var item in list) { gdclHtml += "
"; gdclHtml += "
" + item.C1 + "
"; gdclHtml += "
" + (string.IsNullOrEmpty(item.C2) ? "0" : item.C2) + "
"; gdclHtml += "

" + (string.IsNullOrEmpty(item.C4) ? "0" : item.C4) + "" + (string.IsNullOrEmpty(item.C5) ? "0%" : item.C5) + "

"; gdclHtml += "

" + (string.IsNullOrEmpty(item.C6) ? "0" : item.C6) + "" + (string.IsNullOrEmpty(item.C7) ? "0%" : item.C7) + "

"; gdclHtml += "

" + (string.IsNullOrEmpty(item.C8) ? "0" : item.C8) + "" + (string.IsNullOrEmpty(item.C9) ? "0%" : item.C9) + "

"; gdclHtml += "
"; } //设备材料 var SbclList = Funs.DB.CLGL_ContractListSum.Where(x => x.C1 == "管道" && x.ProjectId == pid); foreach (var item in SbclList) { sbclHtml += "
"; double SbcllCgl = 0.0; double Sbdhs = 0.0; if (string.IsNullOrEmpty(item.C7)) { SbcllCgl += 0; Sbdhs += 0; } else { SbcllCgl += Convert.ToDouble(item.C7); Sbdhs += Convert.ToDouble(item.C9); } sbclHtml += "
" + item.C2 + "
"; sbclHtml += "
" + SbcllCgl + "
"; sbclHtml += "
" + item.C7 + "
"; sbclHtml += "
" + Sbdhs + "
"; //百分比 var dhbfb = "0%"; if (SbcllCgl + Sbdhs != 0) { dhbfb = String.Format("{0:N2}", 100.0 * Sbdhs / (Sbdhs + SbcllCgl), 2) + "%"; } sbclHtml += "
" + dhbfb + "
"; sbclHtml += "
"; } }); } #endregion 材料到货 //质量问题整改率 //总计 //计划值 //累计计划值 //累计实际值 private async Task getCNEN() { await Task.Run(() => { QualityRate = Resources.Lan.QualityRate; OnePassRate = Resources.Lan.OnePassRate; OnePassRateOfWelding = Resources.Lan.OnePassRateOfWelding; total = Resources.Lan.total; completed = Resources.Lan.completed; majorRisk = Resources.Lan.MajorRisk; LowRisk = Resources.Lan.LowRisk; GeneralRisk = Resources.Lan.GeneralRisk; GreaterRisk = Resources.Lan.GreaterRisk; PlannedValue = Resources.Lan.PlannedValue; ActualValue = Resources.Lan.ActualValue; Cumulative_planned_value = Resources.Lan.Cumulative_planned_value; Cumulative_actual_value = Resources.Lan.Cumulative_actual_value; }); } } }