1868 lines
		
	
	
		
			90 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			1868 lines
		
	
	
		
			90 KiB
		
	
	
	
		
			C#
		
	
	
	
| using BLL;
 | ||
| using FineUIPro.Web.BaseInfo;
 | ||
| using FineUIPro.Web.DataShow;
 | ||
| using FineUIPro.Web.OfficeCheck.Check;
 | ||
| using FineUIPro.Web.SysManage;
 | ||
| using Model;
 | ||
| using Newtonsoft.Json;
 | ||
| using NPOI.HSSF.Record;
 | ||
| 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 qualified = 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;
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 中英文
 | ||
|         /// </summary>
 | ||
|         protected string QualityRate = string.Empty;
 | ||
| 
 | ||
|         //焊接一次合格率
 | ||
|         protected string total = string.Empty;
 | ||
| 
 | ||
|         #endregion Fields
 | ||
| 
 | ||
|         #region Properties
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 项目id
 | ||
|         /// </summary>
 | ||
|         public string ProjectId
 | ||
|         {
 | ||
|             get
 | ||
|             {
 | ||
|                 return (string)ViewState["ProjectId"];
 | ||
|             }
 | ||
|             set
 | ||
|             {
 | ||
|                 ViewState["ProjectId"] = value;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         #endregion Properties
 | ||
| 
 | ||
|         #region Methods
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 打开待办
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void btnshowWindows(object sender, EventArgs e)
 | ||
|         {
 | ||
|             PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("{0}", hiddenUrl.Value, "办理 - ")));
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 页面加载
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         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<Task>
 | ||
|                 {
 | ||
|                     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;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 关闭弹出窗
 | ||
|         /// </summary>
 | ||
|         /// <param name="sender"></param>
 | ||
|         /// <param name="e"></param>
 | ||
|         protected void Window1_Close(object sender, WindowCloseEventArgs e)
 | ||
|         {
 | ||
|             getGztm();
 | ||
|             getGjsx();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 质量统计模块封装
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         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();
 | ||
|                 wHours = (from x in db.SitePerson_PersonInOutNumber where x.ProjectId == ProjectId orderby x.InOutDate descending select x.WorkHours ?? 0).ToList().FirstOrDefault();
 | ||
|                 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 getTrainRecord = db.View_EduTrain_TrainFind.Where(x => x.ProjectId == ProjectId).Count();
 | ||
|                 //修改:增加博晟教育中的人数
 | ||
|                 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 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 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;
 | ||
|                 var getallin = APIPageDataService.getPersonNum(ProjectId, DateTime.Now);
 | ||
| 
 | ||
|                 //int AllCount = 0;
 | ||
|                 //int MCount = 0;
 | ||
|                 //var getallin = from x in Funs.DB.T_d_EmployInOutRecord
 | ||
|                 //               join z in Funs.DB.Base_WorkPost on x.PostId equals z.WorkPostId into zGroup
 | ||
|                 //               from z in zGroup.DefaultIfEmpty()
 | ||
|                 //               where x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date
 | ||
|                 //               select new { x.IDCardNo, z.PostType };
 | ||
| 
 | ||
|                 //var getallin = (from x in Funs.DB.SitePerson_Checking
 | ||
|                 //                join z in Funs.DB.SitePerson_Person on x.PersonId equals z.PersonId into zGroup
 | ||
|                 //                from z in zGroup.DefaultIfEmpty()
 | ||
|                 //                    //join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId into yGroup
 | ||
|                 //                    //from y in yGroup.DefaultIfEmpty()
 | ||
|                 //                join w in Funs.DB.Base_WorkPost on z.WorkPostId equals w.WorkPostId into wGroup
 | ||
|                 //                from w in wGroup.DefaultIfEmpty()
 | ||
|                 //                where x.ProjectId == this.CurrUser.LoginProjectId && x.IntoOut == "1" && x.IntoOutTime >= DateTime.Now.Date
 | ||
|                 //                select new { x.PersonId, w.PostType }).Union
 | ||
|                 //                   (from x in Funs.DB.SitePerson_PersonInOut
 | ||
|                 //                    join z in Funs.DB.SitePerson_Person on x.PersonId equals z.PersonId into zGroup
 | ||
|                 //                    from z in zGroup.DefaultIfEmpty()
 | ||
|                 //                        //join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId into yGroup
 | ||
|                 //                        //from y in yGroup.DefaultIfEmpty()
 | ||
|                 //                    join w in Funs.DB.Base_WorkPost on z.WorkPostId equals w.WorkPostId into wGroup
 | ||
|                 //                    from w in wGroup.DefaultIfEmpty()
 | ||
|                 //                    where x.ProjectId == this.CurrUser.LoginProjectId && x.IsIn == true && x.ChangeTime >= DateTime.Now.Date
 | ||
|                 //                    select new { x.PersonId, w.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 整改数据
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 获取隐患整改闭环项
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         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;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 获取隐患未整改完成项
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         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;
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///
 | ||
|         /// </summary>
 | ||
|         private async Task getProjectInfo()
 | ||
|         {
 | ||
|             await Task.Run(() =>
 | ||
|             {
 | ||
|                 divProjectNameTitle = "";
 | ||
|                 divProjectAddressTitle = "";
 | ||
|                 divProjectMoneyTitle = "";
 | ||
|                 divOwnUnitTitle = "";
 | ||
|                 divSGUnitTitle = "";
 | ||
|                 divJLUnitTitle = "";
 | ||
|                 divProjectImg = "<div class=\"swiper-slide\"><img src=\"../res/images/16.png\"></div>";
 | ||
|                 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() + "<span>天</span>";
 | ||
|                         }
 | ||
|                         if (project.StartDate.HasValue)
 | ||
|                         {
 | ||
|                             int pdays = (project.EndDate.Value - project.StartDate.Value).Days;
 | ||
|                             if (pdays >= 0)
 | ||
|                             {
 | ||
|                                 this.divProjectDays.InnerHtml = pdays.ToString() + "<span>天</span>";
 | ||
|                             }
 | ||
|                         }
 | ||
|                     }
 | ||
|                     var allowExtensions = new List<string>
 | ||
|                 {
 | ||
|                     "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(" <div class=\"swiper-slide\"><img src=\"{0}\"></div>", atturl.Replace(Funs.RootPath, "/"));
 | ||
| 
 | ||
|                                     //this.divProjectImgs.Src = divProjectImg;
 | ||
|                                 }
 | ||
|                             }
 | ||
|                         }
 | ||
| 
 | ||
|                         divProjectImg = divProjectImg.Replace("<div class=\"swiper-slide\"><img src=\"../res/images/16.png\"></div>", "");
 | ||
|                     }
 | ||
|                 }
 | ||
|             });
 | ||
|         }
 | ||
|         #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;
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///     获取危大工程审批完成数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> GetCompletedNum()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = Project_HSSEData_HSSEService.GetCompletedNum(ProjectId);
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///     获取危大工程施工个数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> GetConstructionNum()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = Project_HSSEData_HSSEService.GetConstructionNum(ProjectId);
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 资质预警
 | ||
|         /// </summary>
 | ||
|         protected async Task<int> 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
 | ||
|                                         join z in Funs.DB.Base_WorkPost on y.WorkPostId equals z.WorkPostId
 | ||
|                                         where x.LimitDate.HasValue && x.LimitDate < DateTime.Now && y.ProjectId == ProjectId && y.OutTime == null && z.PostType == Const.PostType_2
 | ||
|                                         select x;
 | ||
|                 //// 预警人数
 | ||
|                 allCount = getPersonQualitys.Count();
 | ||
|                 return allCount;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///     获取危大工程完工个数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> GetFinishedNum()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = Project_HSSEData_HSSEService.GetFinishedNum(ProjectId);
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 机械预警
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> 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;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///     获取超危大工程审批完成数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> GetSuperCompletedNum()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = Project_HSSEData_HSSEService.GetSuperCompletedNum(ProjectId);
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///     获取超危大工程施工个数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> GetSuperConstructionNum()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = Project_HSSEData_HSSEService.GetSuperConstructionNum(ProjectId);
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///     获取超危大工程完工个数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> GetSuperFinishedNum()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = Project_HSSEData_HSSEService.GetSuperFinishedNum(ProjectId);
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///     获取超危大工程培训人次数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> GetSuperTrainPersonNum()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = Project_HSSEData_HSSEService.GetSuperTrainPersonNum(ProjectId);
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///     获取危大工程培训人次数
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> GetTrainPersonNum()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = Project_HSSEData_HSSEService.GetTrainPersonNum(ProjectId);
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 获取风险管控
 | ||
|         /// </summary>
 | ||
|         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<int> RiskLevelNum = new List<int>();
 | ||
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | ||
| 
 | ||
|                 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<LicenseDto> 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<int> getAllCount()
 | ||
|         {
 | ||
|             var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId).ToList().Count;
 | ||
|             return result;
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         protected async Task<int> getALLWrokCount0()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证").ToList().Count;
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         protected async Task<int> getALLWrokCount1()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证").ToList().Count;
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         protected async Task<int> getALLWrokCount2()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证").ToList().Count;
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         protected async Task<int> 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<int> getTodayCount()
 | ||
|         {
 | ||
|             var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.WorkStatesStr == "作业中").ToList().Count;
 | ||
|             return result;
 | ||
|         }
 | ||
|         /// <summary>
 | ||
|         /// 动火作业许可证
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<int> getWrokCount0()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
|         protected async Task<int> getWrokCount1()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
|         protected async Task<int> getWrokCount2()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
 | ||
|                 return result;
 | ||
|             });
 | ||
|         }
 | ||
|         protected async Task<int> 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 allnum = (from x in db.ProcessControl_InspectionManagement
 | ||
|                               where x.ProjectId == ProjectId
 | ||
|                               select x).Count();
 | ||
|                 var zgl = "0";
 | ||
|                 if (num2 != 0)
 | ||
|                 {
 | ||
|                     zgl = String.Format("{0:N2}", 100.0 * num2 / allnum);
 | ||
|                     zlgjzgl = zgl.ToString();
 | ||
|                     zggjzglDataValue = (100 - (100.0 * num2 / allnum)).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<double> listdata = new List<double>();
 | ||
|                 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)
 | ||
|                 {
 | ||
|                     //取每个单位、专业最新的一条数据
 | ||
|                     var datalist = ndtList.GroupBy(r => new { r.UnitId, r.ProfessionalName }).Select(g => g.OrderByDescending(r => r.CreateDate).First()).ToList();
 | ||
|                     foreach (var item in datalist)
 | ||
|                     {
 | ||
|                         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<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | ||
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | ||
|                 List<string> listCategories = new List<string>();
 | ||
|                 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<double> listdata = new List<double>();
 | ||
|                     List<double> listdata2 = new List<double>();
 | ||
|                     List<double> listdata3 = new List<double>();
 | ||
|                     List<double> listdata4 = new List<double>();
 | ||
|                     List<double> listdata5 = new List<double>();
 | ||
|                     List<double> listdata6 = new List<double>();
 | ||
|                     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 += "<div class=\"tr1\">";
 | ||
|                     swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: .625rem;\"><p>{0}</p></div>", index);
 | ||
|                     swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: 1rem;\"><p>{0}</p> </div>", item.Name);
 | ||
|                     swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: .8375rem;\"><p>{0}</p> </div>", item.Unit);
 | ||
|                     swgclHtml += string.Format(" <div class=\"th r-line\" style=\"width: .8375rem;\"><p>{0}</p> </div>", item.DesignNum);
 | ||
|                     swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: 2.325rem;\"><p><span class=\"r-line s1\">{0}</span><span class=\"r-line s1\">{1}</span><span   class=\"r-line s1\" style=\"border: none;\">{2}</span></p> </div>", item.PlanNum, item.RealNum, item.Rate);
 | ||
|                     swgclHtml += string.Format(" <div class=\"th r-line \" style=\"width: 2.325rem;\"><p><span class=\"r-line s1\">{0}</span><span class=\"r-line s1\">{1}</span><span   class=\"r-line s1\" style=\"border: none;\">{2}</span></p> </div>", item.TotalPlanNum, item.TotalRealNum, item.TotalRate);
 | ||
|                     swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: .8375rem;\"><p>{0}</p> </div>", item.SumRate);
 | ||
|                     swgclHtml += " </div>";
 | ||
|                 }
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         protected async Task<string> GetTreeAsync()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | ||
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | ||
|                 List<string> listCategories = new List<string>();
 | ||
|                 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<double> listdata = new List<double>();
 | ||
|                 List<double> listdata2 = new List<double>();
 | ||
|                 List<double> listdata3 = new List<double>();
 | ||
|                 List<double> listdata4 = new List<double>();
 | ||
|                 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 = "<div class=\"th-p\" >类型</div><div class=\"th-p\" >设计数量</div><div class=\"th-p\"><p>本期</p><p><span>计划</span><span>实际</span><span>完成率</span></p></div><div class=\"th-p\"><p>累计</p><p><span>计划</span><span>实际</span><span>完成率</span></p></div><div class=\"th-p\" >完成率</div>";
 | ||
|         //protected string QuantityDoneJdtjHead = "<div class=\"th-p\" >类型</div><div class=\"th-p\" >单位</div><div class=\"th-p\" >设计数量</div><div class=\"th-p\"><p>本期</p><p><span>计划完成</span><span>实际完成</span><span>完成率</span></p></div><div class=\"th-p\"><p>累计</p><p><span>计划完成</span><span>实际完成</span><span>完成率</span></p></div><div class=\"th-p\" >完成率</div>";
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 工程量完成情况
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<string> GetQuantityDoneJDAsync()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 string doneJdtjHtml = string.Empty;
 | ||
|                 string month = string.Format("{0:yyyy-MM-01}", DateTime.Now);
 | ||
|                 if (DateTime.Now.Day < 26)
 | ||
|                 {
 | ||
|                     month = string.Format("{0:yyyy-MM-01}", DateTime.Now.AddMonths(-1));
 | ||
|                 }
 | ||
|                 StringBuilder strSql = new StringBuilder();
 | ||
|                 strSql.AppendLine($@"select pro.ProjectId,pro.ProjectCode,pro.ProjectName,qc.QuantityCompletionId,ql.Name,ql.Unit,ql.DesignNum,ql.SortIndex,qco.PlanNum as PlanNum,qco.RealNum as RealNum,
 | ||
| CONVERT(NVARCHAR(10), ((CAST(CASE ISNULL(qco.PlanNum, 0) WHEN 0 THEN 0 ELSE 100 * ISNULL(qco.RealNum, 0) / (1.0 * qco.PlanNum) END AS DECIMAL(9, 2))))) AS Rate,
 | ||
| --(select NextNum from JDGL_QuantityCompletion where QuantityListId=ql.QuantityListId and Months=@month) as NextNum,
 | ||
| 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(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 ");
 | ||
|                 strSql.AppendLine(@"from JDGL_QuantityList ql 
 | ||
| left join JDGL_QuantityCompletion qc on ql.QuantityListId=qc.QuantityListId 
 | ||
| left join Base_Project pro on pro.ProjectId=qc.ProjectId 
 | ||
| left join (select PlanNum,RealNum,QuantityListId from JDGL_QuantityCompletion where Months=@month) qco on qco.QuantityListId=ql.QuantityListId ");
 | ||
|                 strSql.AppendLine("where qc.ProjectId=@ProjectId and isnull(pro.ProjectState,1)=1 and qc.QuantityCompletionId=(select top 1 QuantityCompletionId from JDGL_QuantityCompletion q where q.QuantityListId=qc.QuantityListId and q.Months<=@month order by q.Months desc) ");
 | ||
|                 strSql.AppendLine("order by ql.SortIndex, ql.Name ");
 | ||
| 
 | ||
|                 List<SqlParameter> listStr = new List<SqlParameter>();
 | ||
|                 listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
 | ||
|                 listStr.Add(new SqlParameter("@month", month));
 | ||
|                 SqlParameter[] parameter = listStr.ToArray();
 | ||
|                 DataTable tb = SQLHelper.GetDataTableRunText(strSql.ToString(), 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("<div class=\"row\">");
 | ||
|                     sb.Append($"<div class=\"tr\" >{name}({unit})</div>");
 | ||
|                     //sb.Append($"<div class=\"tr\" >{unit}</div>");
 | ||
|                     sb.Append($"<div class=\"tr\" >{designNum}</div>");
 | ||
|                     sb.Append($"<div class=\"tr\" ><p><span>{planNum}</span><span>{realNum}</span><span>{rate}</span></p></div>");
 | ||
|                     sb.Append($"<div class=\"tr\" ><p><span>{totalPlanNum}</span><span>{totalRealNum}</span><span>{totalRate}</span></p></div>");
 | ||
|                     sb.Append($"<div class=\"tr\" >{sumRate}</div>");
 | ||
|                     sb.Append("</div>");
 | ||
|                 }
 | ||
|                 doneJdtjHtml = sb.ToString();
 | ||
|                 return doneJdtjHtml;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 进度统计
 | ||
| 
 | ||
|         protected string WeekJdtjHtml;
 | ||
|         //protected string WeekJdtjHead = "<div class=\"th-p\" >序号</div><div class=\"th-p\" >单位</div><div class=\"th-p\"><p>上周完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
 | ||
|         protected string WeekJdtjHead = "<div class=\"th-p\" >单位</div><div class=\"th-p\"><p>上周完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
 | ||
| 
 | ||
|         protected string MonthJdtjHtml;
 | ||
|         //protected string MonthJdtjHead = "<div class=\"th-p\">序号</div><div class=\"th-p\">单位</div><div class=\"th-p\"><p>上月完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
 | ||
|         protected string MonthJdtjHead = "<div class=\"th-p\">单位</div><div class=\"th-p\"><p>上月完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 周进度完成情况
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<string> 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("<div class=\"row\">");
 | ||
|                         //sb.Append($"<div class=\"tr\" >{index}</div>");
 | ||
|                         sb.Append($"<div class=\"tr\" >{unit.UnitName}</div>");
 | ||
|                         sb.Append($"<div class=\"tr\" ><p><span>{weekPlanNum}</span><span>{weekPlanOkNum}</span><span>{weekRate}%</span></p></div>");
 | ||
|                         sb.Append($"<div class=\"tr\" ><p><span>{allWeekPlanNum}</span><span>{allWeekPlanOkNum}</span><span>{allWeekRate}%</span></p></div>");
 | ||
|                         sb.Append("</div>");
 | ||
|                         index++;
 | ||
|                     }
 | ||
|                     weekGridHtml = sb.ToString();
 | ||
|                 }
 | ||
|                 return weekGridHtml;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 月进度完成情况
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         protected async Task<string> 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("<div class=\"row\">");
 | ||
|                     //sb.Append($"<div class=\"tr\" >{index}</div>");
 | ||
|                     sb.Append($"<div class=\"tr\" >{unit.UnitName}</div>");
 | ||
|                     sb.Append($"<div class=\"tr\" ><p><span>{monthPlanNum}</span><span>{monthPlanOkNum}</span><span>{monthRate}%</span></p></div>");
 | ||
|                     sb.Append($"<div class=\"tr\" ><p><span>{allMonthPlanNum}</span><span>{allMonthPlanOkNum}</span><span>{allMonthRate}%</span></p></div>");
 | ||
|                     sb.Append("</div>");
 | ||
|                     index++;
 | ||
|                 }
 | ||
|                 monthGridHtml = sb.ToString();
 | ||
|                 return monthGridHtml;
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         #endregion
 | ||
| 
 | ||
|         #region 人力情况
 | ||
| 
 | ||
|         protected string Person
 | ||
|         {
 | ||
|             get;
 | ||
|             set;
 | ||
|         }
 | ||
| 
 | ||
|         protected async Task<string> GetPersonAsync()
 | ||
|         {
 | ||
|             return await Task.Run(() =>
 | ||
|             {
 | ||
|                 Model.SGGLDB db = Funs.DB;
 | ||
|                 List<Model.SingleSerie> series = new List<Model.SingleSerie>();
 | ||
|                 Model.BusinessColumn businessColumn = new Model.BusinessColumn();
 | ||
|                 List<string> listCategories = new List<string>();
 | ||
|                 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<double> listdata = new List<double>();
 | ||
|                 //管理人员
 | ||
|                 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 || x.WorkPostId == Const.WorkPost_Welder6);
 | ||
|                 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 += "<div class=\"li\">" + item.LicenseManagerCode + "-" + shortUnitname + "-" + item.WorkAreaName + "-" + gfx + "-" + item.LicenseTypeName
 | ||
|                      + "</div>";
 | ||
|              }*/
 | ||
|             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("<div class=\"li\">{0}-{1}-{2}-{3}-{4}</div>",
 | ||
|                     item.LicenseManagerCode,
 | ||
|                     item.ShortUnitName,
 | ||
|                     item.WorkAreaName,
 | ||
|                     item.GfxType,
 | ||
|                     item.LicenseTypeName);
 | ||
|             }
 | ||
|             returnHtml = sb.ToString();
 | ||
|             return returnHtml;
 | ||
|         }
 | ||
| 
 | ||
|         #endregion 作业许可列表
 | ||
| 
 | ||
|         #region 工作台面
 | ||
| 
 | ||
|         protected string gjsxRate = "0";
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 加载关键事项
 | ||
|         /// </summary>
 | ||
|         protected async Task getGjsx()
 | ||
|         {
 | ||
|             await Task.Run(() =>
 | ||
|             {
 | ||
|                 string returnDbHtml = "<div></div>";
 | ||
|                 ////关键事项
 | ||
|                 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))
 | ||
|                         )
 | ||
|                         UNION ALL
 | ||
|                         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 Project_ProjectUser as projectUser on projectUser.UserId=@userId
 | ||
|                         LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId
 | ||
|                         left join Base_Project as project on project.ProjectId =projectUser.ProjectId
 | ||
|                         WHERE GJSX.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and 
 | ||
|                         GJSX.State = 3 and GJSX.ProgressStatus=1 and (GJSX.UserID = @userId OR GJSX.User_ReceiveID = @userId ) 
 | ||
|                         ORDER BY DataTime DESC ";
 | ||
|                     List<SqlParameter> listStr = new List<SqlParameter>();
 | ||
| 
 | ||
|                     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 += "<div class=\"li\" style=\"cursor:pointer\"  " +
 | ||
|                             "onclick=\"returnWindows(\"" + tb.Rows[i]["PCUrl"] + "\")\"><span>" + tb.Rows[i]["MenuName"] + "</span><span>" + tb.Rows[i]["Content"] + "</span><span>" +
 | ||
|                              tb.Rows[i]["DataTime"].ToString().Replace('/', '-').Split(' ')[0] + "</span></div>";
 | ||
|                     }
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     returnDbHtml = "<div></div>";
 | ||
|                 }
 | ||
|                 this.div_gjsxlist.InnerHtml = returnDbHtml;
 | ||
| 
 | ||
|                 List<SqlParameter> listStaticListStr = new List<SqlParameter>();
 | ||
| 
 | ||
|                 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 allcount = list.Count();
 | ||
|                 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 = "<div></div>";
 | ||
|                 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))
 | ||
|                 ) 
 | ||
|                 UNION ALL
 | ||
|                 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 Project_ProjectUser as projectUser on projectUser.UserId=@userId
 | ||
|                 LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId
 | ||
|                 left join Base_Project as project on project.ProjectId =projectUser.ProjectId
 | ||
|                 WHERE GJSX.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and 
 | ||
|                 GJSX.State = 3 and GJSX.ProgressStatus=1 and (GJSX.UserID = @userId OR GJSX.User_ReceiveID = @userId ) 
 | ||
|                 ORDER BY DataTime DESC ";
 | ||
|                     List<SqlParameter> listStr = new List<SqlParameter>();
 | ||
| 
 | ||
|                     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 += "<div class=\"li\" style=\"cursor:pointer\"  onclick=\"returnWindows('" + item.PCUrl + "')\"><span>" + item.MenuName + "</span><span>" + item.Content + "</span><span>" +
 | ||
|     item.DataTime.ToString().Replace('/', '-').Split(' ')[0] + "</span></div>";
 | ||
|                     }
 | ||
|                 }
 | ||
|                 else
 | ||
|                 {
 | ||
|                     returnDbHtml = "<div></div>";
 | ||
|                 }
 | ||
|                 this.div_dbsxlist.InnerHtml = returnDbHtml;
 | ||
|             });
 | ||
|         }
 | ||
|         #endregion 工作台面
 | ||
|         #region 材料到货
 | ||
| 
 | ||
|         protected string gdclHead = "<div class=\"th-p\">材料类别</div><div class=\"th-p\">设计量</div><div class=\"th-p\"><p>采购量</p><p><span>采购量</span><span>百分比</span></p></div><div class=\"th-p\"><p>到货量</p><p><span>已到货</span><span>百分比</span></p></div><div class=\"th-p\"><p>领料量</p><p><span>已领料</span><span>百分比</span></p></div>";
 | ||
|         protected string gdclHtml;
 | ||
|         protected string sbclHead = "<div class=\"th-p\">合同号</div>" +
 | ||
|             "<div class=\"th-p\" >采购总量</div>" +
 | ||
|             "<div class=\"th-p\" >发货总量</div>" +
 | ||
|             "<div class=\"th-p\" >到货总量</div>" +
 | ||
|             "<div class=\"th-p\" >到货百分比</div>";
 | ||
| 
 | ||
|         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 += "<div class=\"row\">";
 | ||
|                     gdclHtml += "<div class=\"tr\" >" + item.C1 + "</div>";
 | ||
|                     gdclHtml += "<div class=\"tr\" >" + (string.IsNullOrEmpty(item.C2) ? "0" : item.C2) + "</div>";
 | ||
|                     gdclHtml += "<div class=\"tr\" ><p><span>" + (string.IsNullOrEmpty(item.C4) ? "0" : item.C4) + "</span><span>" + (string.IsNullOrEmpty(item.C5) ? "0%" : item.C5) + "</span></p></div>";
 | ||
|                     gdclHtml += "<div class=\"tr\" ><p><span>" + (string.IsNullOrEmpty(item.C6) ? "0" : item.C6) + "</span><span>" + (string.IsNullOrEmpty(item.C7) ? "0%" : item.C7) + "</span></p></div>";
 | ||
|                     gdclHtml += "<div class=\"tr\" ><p><span>" + (string.IsNullOrEmpty(item.C8) ? "0" : item.C8) + "</span><span>" + (string.IsNullOrEmpty(item.C9) ? "0%" : item.C9) + "</span></p></div>";
 | ||
|                     gdclHtml += "</div>";
 | ||
|                 }
 | ||
| 
 | ||
|                 //设备材料
 | ||
|                 var SbclList = Funs.DB.CLGL_ContractListSum.Where(x => x.C1 == "设备" && x.ProjectId == pid);
 | ||
|                 foreach (var item in SbclList)
 | ||
|                 {
 | ||
|                     sbclHtml += "<div class=\"row\">";
 | ||
|                     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 += "<div class=\"tr\" >" + item.C2 + "</div>";
 | ||
|                     sbclHtml += "<div class=\"tr\" >" + SbcllCgl + "</div>";
 | ||
|                     sbclHtml += "<div class=\"tr\" >" + item.C7 + "</div>";
 | ||
|                     sbclHtml += "<div class=\"tr\" >" + Sbdhs + "</div>";
 | ||
|                     //百分比
 | ||
|                     var dhbfb = "0%";
 | ||
|                     //if (SbcllCgl + Sbdhs != 0)
 | ||
|                     //{
 | ||
|                     //    dhbfb = String.Format("{0:N2}", 100.0 * Sbdhs / (Sbdhs + SbcllCgl), 2) + "%";
 | ||
|                     //}
 | ||
|                     if (SbcllCgl != 0)
 | ||
|                     {
 | ||
|                         dhbfb = String.Format("{0:N2}", 100.0 * Sbdhs / SbcllCgl, 2) + "%";
 | ||
|                     }
 | ||
|                     sbclHtml += "<div class=\"tr\" >" + dhbfb + "</div>";
 | ||
|                     sbclHtml += "</div>";
 | ||
|                 }
 | ||
|             });
 | ||
|         }
 | ||
| 
 | ||
|         #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;
 | ||
|                 qualified = Resources.Lan.qualified;
 | ||
|                 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;
 | ||
|             });
 | ||
|         }
 | ||
|     }
 | ||
| } |