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 == null || 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;
 | 
						||
            });
 | 
						||
        }
 | 
						||
    }
 | 
						||
} |