using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Newtonsoft.Json.Linq;
using BLL;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.ZHGL.ManagementReport
{
    public partial class HeadMonthReportBView : PageBase
    {
        #region 定义项
        /// 
        /// 月报告查主键
        /// 
        public string MonthReportId
        {
            get
            {
                return (string)ViewState["MonthReportId"];
            }
            set
            {
                ViewState["MonthReportId"] = value;
            }
        }
        private static DateTime startTime;
        private static DateTime endTime;
        #endregion
        /// 
        /// 页面加载
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.MonthReportId = Request.Params["HeadMonthReportId"];
                if (!string.IsNullOrEmpty(this.MonthReportId))
                {
                    Model.Manager_HeadMonthReportB headMonthReport = BLL.HeadMonthReportBService.GetHeadMonthReportByHeadMonthReportId(this.MonthReportId);
                    if (headMonthReport != null)
                    {
                        this.txtMonthReportCode.Text = headMonthReport.MonthReportCode;
                        this.txtReportUnitName.Text = headMonthReport.ReportUnitName;
                        this.txtReportMan.Text = headMonthReport.ReportMan;
                        if (headMonthReport.ReportDate != null)
                        {
                            this.txtReportDate.Text = string.Format("{0:yyyy-MM-dd}", headMonthReport.ReportDate);
                        }
                        if (headMonthReport.Months != null)
                        {
                            this.txtMonths.Text = string.Format("{0:yyyy-MM}", headMonthReport.Months);
                        }
                        startTime = Convert.ToDateTime(headMonthReport.Months);
                        endTime = startTime.AddMonths(1);
                        this.txtCheckMan.Text = headMonthReport.CheckMan;
                    }
                }
                // 获取项目当月的月报
                List monthReports = new List();
                // 获取项目最近的月报
                List lastMonthReports = new List();
                List projects = BLL.ProjectService.GetAllProjectDropDownList();
                foreach (Model.Base_Project project in projects)
                {
                    Model.Manager_MonthReportB x = BLL.MonthReportBService.GetMonthReportsByMonthsAndProjectId(startTime, project.ProjectId);
                    if (x != null)
                    {
                        monthReports.Add(x);
                    }
                    else
                    {
                        Model.Manager_MonthReportB n = BLL.MonthReportBService.GetLateMonthReportByMonths(startTime, project.ProjectId);
                        if (n != null)
                        {
                            lastMonthReports.Add(n);
                        }
                    }
                }
                GetMonth(monthReports, lastMonthReports);
            }
        }
        /// 
        /// 获取各项目月报汇总
        /// 
        /// 
        /// 
        private void GetMonth(List monthReports, List lastReports)
        {
            GetProjectStation(this.rblState.SelectedValue);
            GetAccidentSort(monthReports, lastReports);
            GetTrainSort(monthReports, lastReports);
            GetMeetingSort(monthReports, lastReports);
            GetCheckSort(monthReports, lastReports);
            GetIncentiveSort(monthReports, lastReports);
        }
        #region 项目状态发生变化
        /// 
        /// 
        /// 
        /// 
        /// 
        protected void rblState_SelectedIndexChanged(object sender, EventArgs e)
        {
            GetProjectStation(this.rblState.SelectedValue);
        }
        #endregion
        private bool IsShow(string projectId)
        {
            bool b = false;
            if (this.rblState.SelectedValue == "1")   //施工中
            {
                Model.Manager_MonthReportB monthReport = BLL.MonthReportBService.GetMonthReportsByMonthsAndProjectId(startTime, projectId);
                if (monthReport != null)
                {
                    b = true;
                }
                //else    //项目当月未生成月报且完工,但有数据 
                //{
                //    Model.Base_ProjectSate projectSate = (from x in Funs.DB.Base_ProjectSate
                //                                          where x.ProjectId == projectId
                //                                          orderby x.CompileDate descending
                //                                          select x).FirstOrDefault();
                //    if (projectSate != null)
                //    {
                //        if (projectSate.CompileDate >= startTime && projectSate.CompileDate < endTime)
                //        {
                //            b = true;
                //        }
                //    }
                //}
            }
            return b;
        }
        #region 获取各项目情况
        ////
        ////获取各项目情况
        ////
        private void GetProjectStation(string state)
        {
            int sumManhours = 0, sumTotalManhours = 0, sumHseManhours = 0, sumTotalHseManhours = 0, sumTotalManNum = 0,
               sumAccidentNum = 0, sumAccidentTotalNum = 0, sumLoseHours = 0, sumTotalLoseHours = 0, sumHazardNum = 0,
               sumIsArgumentHazardNum = 0, allManhours = 0, allTotalManhours = 0, allHseManhours = 0, allTotalHseManhours = 0, allTotalManNum = 0,
               allAccidentNum = 0, allAccidentTotalNum = 0, allLoseHours = 0, allTotalLoseHours = 0, allHazardNum = 0,
               allIsArgumentHazardNum = 0;
            decimal sumAvgA = 0, sumAvgB = 0, sumAvgC = 0, sumPlanCostA = 0, sumPlanCostB = 0, sumRealCostA = 0, sumRealCostYA = 0,
                sumRealCostPA = 0, sumRealCostB = 0, sumRealCostYB = 0, sumRealCostPB = 0, sumRealCostAB = 0, sumRealCostYAB = 0, sumRealCostPAB = 0,
                allAvgA = 0, allAvgB = 0, allAvgC = 0, allPlanCostA = 0, allPlanCostB = 0, allRealCostA = 0, allRealCostYA = 0,
                allRealCostPA = 0, allRealCostB = 0, allRealCostYB = 0, allRealCostPB = 0, allRealCostAB = 0, allRealCostYAB = 0, allRealCostPAB = 0;
            List items = new List();
            List allProjects = BLL.ProjectService.GetAllProjectDropDownList();
            List projects = new List();
            if (state == "0")   //全部
            {
                projects = BLL.ProjectService.GetAllProjectDropDownList();
            }
            else
            {
                projects = BLL.ProjectService.GetProjectDropDownListByState(this.rblState.SelectedValue, endTime);
            }
            //获取当月所有项目发生损失工时事故的最后时间
            Model.Accident_AccidentReport maxAccident = BLL.AccidentReport2Service.GetMaxAccidentTimeReportByTime(startTime, endTime);
            DateTime? maxAccidentTime = null;
            if (maxAccident != null)
            {
                maxAccidentTime = maxAccident.AccidentDate;
            }
            allProjects = allProjects.OrderBy(x => x.ProjectCode).ToList();
            projects = projects.OrderBy(x => x.ProjectCode).ToList();
            Model.Manager_HeadMonthReportB LastHeadMonthReport = BLL.HeadMonthReportBService.GetLastHeadMonthReportByMonths(startTime);
            if (maxAccidentTime == null)
            {
                if (LastHeadMonthReport != null)
                {
                    if (LastHeadMonthReport.AllSumTotalHseManhours != null)
                    {
                        sumTotalHseManhours = LastHeadMonthReport.AllSumTotalHseManhours ?? 0;    //上月月报累计值不为空时,累计值初始为上月累计值
                        allTotalHseManhours = LastHeadMonthReport.AllSumTotalHseManhours ?? 0;
                    }
                }
            }
            List projectIds = projects.Select(x => x.ProjectId).ToList();
            List allProjectIds = allProjects.Select(x => x.ProjectId).ToList();
            foreach (Model.Base_Project project in allProjects)
            {
                bool show = true;
                List costStatisticDetails = null;
                // 当月的月报
                Model.Manager_MonthReportB monthReport = BLL.MonthReportBService.GetMonthReportsByMonthsAndProjectId(startTime, project.ProjectId);
                // 最近的月报
                Model.Manager_MonthReportB lastMonthReport = BLL.MonthReportBService.GetLateMonthReportByMonths(startTime, project.ProjectId);
                if (projectIds.Contains(project.ProjectId) || IsShow(project.ProjectId))   //选中状态的项目
                {
                    Model.HeadMonthReportProjectStationItem item = new Model.HeadMonthReportProjectStationItem
                    {
                        ProjectCode = project.ProjectCode,
                        ProjectName = project.ProjectName,
                        ProjectManager = BLL.ProjectService.GetProjectManagerName(project.ProjectId)
                    };
                    item.ProjectType = ProjectTypeService.GetProjectTypeNameById(project.ProjectType);
                    item.StartDate = project.StartDate;
                    item.EndDate = project.EndDate;
                    if (monthReport != null)
                    {
                        item.Manhours = (monthReport.Manhours ?? 0).ToString();
                        sumManhours += monthReport.Manhours ?? 0;
                        allManhours += monthReport.Manhours ?? 0;
                        item.TotalManhours = (monthReport.TotalManhours ?? 0).ToString();
                        sumTotalManhours += monthReport.TotalManhours ?? 0;
                        allTotalManhours += monthReport.TotalManhours ?? 0;
                        item.HseManhours = (monthReport.HseManhours ?? 0).ToString();
                        item.TotalHseManhours = (monthReport.TotalHseManhours ?? 0).ToString();
                        if (maxAccidentTime != null)  //当月发生事故
                        {
                            int hseManhours = 0;
                            List newDayReports = BLL.SitePerson_DayReportService.GetDayReportsByCompileDate(Convert.ToDateTime(maxAccidentTime).AddDays(1), endTime, project.ProjectId);
                            if (newDayReports.Count > 0)
                            {
                                foreach (var dayReport in newDayReports)
                                {
                                    hseManhours += Convert.ToInt32((from y in Funs.DB.SitePerson_DayReportDetail where y.DayReportId == dayReport.DayReportId.ToString() select y.PersonWorkTime ?? 0).Sum());
                                }
                            }
                            sumHseManhours += hseManhours;
                            allHseManhours += hseManhours;
                            sumTotalHseManhours += hseManhours;
                            allTotalHseManhours += hseManhours;
                        }
                        else
                        {
                            sumHseManhours += monthReport.HseManhours ?? 0;
                            allHseManhours += monthReport.HseManhours ?? 0;
                            sumTotalHseManhours += monthReport.HseManhours ?? 0;
                            allTotalHseManhours += monthReport.HseManhours ?? 0;
                        }
                        item.TotalManNum = (monthReport.TotalManNum ?? 0).ToString();
                        sumTotalManNum += monthReport.TotalManNum ?? 0;
                        allTotalManNum += monthReport.TotalManNum ?? 0;
                        var q = BLL.AccidentSortBService.GetAccidentSortsByMonthReportId(monthReport.MonthReportId);
                        item.AccidentNum = (from x in q select x.Number ?? 0).Sum().ToString();
                        sumAccidentNum += Funs.GetNewIntOrZero(item.AccidentNum);
                        allAccidentNum += Funs.GetNewIntOrZero(item.AccidentNum);
                        item.AccidentTotalNum = (from x in q select x.TotalNum ?? 0).Sum().ToString();
                        sumAccidentTotalNum += Funs.GetNewIntOrZero(item.AccidentTotalNum);
                        allAccidentTotalNum += Funs.GetNewIntOrZero(item.AccidentTotalNum);
                        item.LoseHours = (from x in q select x.LoseHours ?? 0).Sum().ToString();
                        sumLoseHours += Funs.GetNewIntOrZero(item.LoseHours);
                        allLoseHours += Funs.GetNewIntOrZero(item.LoseHours);
                        item.TotalLoseHours = (from x in q select x.TotalLoseHours ?? 0).Sum().ToString();
                        sumTotalLoseHours += Funs.GetNewIntOrZero(item.TotalLoseHours);
                        allTotalLoseHours += Funs.GetNewIntOrZero(item.TotalLoseHours);
                        item.AvgA = (monthReport.AccidentRateA ?? 0).ToString();
                        item.AvgB = (monthReport.AccidentRateB ?? 0).ToString();
                        item.AvgC = (monthReport.AccidentRateC ?? 0).ToString();
                        item.HazardNum = (monthReport.TotalLargerHazardNun ?? 0).ToString();
                        sumHazardNum += monthReport.TotalLargerHazardNun ?? 0;
                        allHazardNum += monthReport.TotalLargerHazardNun ?? 0;
                        item.IsArgumentHazardNum = (monthReport.TotalIsArgumentLargerHazardNun ?? 0).ToString();
                        sumIsArgumentHazardNum += monthReport.TotalIsArgumentLargerHazardNun ?? 0;
                        allIsArgumentHazardNum += monthReport.TotalIsArgumentLargerHazardNun ?? 0;
                        DateTime yearStartTime = Convert.ToDateTime(startTime.Year + "-01" + "-01");
                        List yearCosts = (from x in Funs.DB.Manager_HseCostB
                                                                  join y in Funs.DB.Manager_MonthReportB
                                                                  on x.MonthReportId equals y.MonthReportId
                                                                  where y.ProjectId == project.ProjectId && y.Months.Value.Year == yearStartTime.Year
                                                                  select x).ToList();
                        List monthCosts = BLL.HseCostBService.GetHseCostsByMonthReportId(monthReport.MonthReportId);
                        item.PlanCostA = monthCosts.Sum(x => x.PlanCostA ?? 0).ToString();
                        sumPlanCostA += Funs.GetNewDecimalOrZero(item.PlanCostA);
                        allPlanCostA += Funs.GetNewDecimalOrZero(item.PlanCostA);
                        item.PlanCostB = monthCosts.Sum(x => x.PlanCostB ?? 0).ToString();
                        sumPlanCostB += Funs.GetNewDecimalOrZero(item.PlanCostB);
                        allPlanCostB += Funs.GetNewDecimalOrZero(item.PlanCostB);
                        Model.TC_CostStatistic costStatistic = BLL.CostStatisticService.GetCostStatisticByMonthsAndProjectId(Convert.ToDateTime(monthReport.Months), project.ProjectId);
                        if (costStatistic != null)
                        {
                            costStatisticDetails = BLL.CostStatisticDetailService.GetCostStatisticDetailsByCostStatisticCode(costStatistic.CostStatisticCode);
                            if (costStatisticDetails.Count > 0)
                            {
                                item.RealCostA = (costStatisticDetails.Sum(x => x.A) ?? 0).ToString();
                                sumRealCostA += Funs.GetNewDecimalOrZero(item.RealCostA);
                                allRealCostA += Funs.GetNewDecimalOrZero(item.RealCostA);
                                item.RealCostYA = (costStatisticDetails.Sum(x => x.YA) ?? 0).ToString();
                                sumRealCostYA += Funs.GetNewDecimalOrZero(item.RealCostYA);
                                allRealCostYA += Funs.GetNewDecimalOrZero(item.RealCostYA);
                                item.RealCostPA = (costStatisticDetails.Sum(x => x.PA) ?? 0).ToString();
                                sumRealCostPA += Funs.GetNewDecimalOrZero(item.RealCostPA);
                                allRealCostPA += Funs.GetNewDecimalOrZero(item.RealCostPA);
                                item.RealCostB = (costStatisticDetails.Sum(x => x.B) ?? 0).ToString();
                                sumRealCostB += Funs.GetNewDecimalOrZero(item.RealCostB);
                                allRealCostB += Funs.GetNewDecimalOrZero(item.RealCostB);
                                item.RealCostYB = (costStatisticDetails.Sum(x => x.YB) ?? 0).ToString();
                                sumRealCostYB += Funs.GetNewDecimalOrZero(item.RealCostYB);
                                allRealCostYB += Funs.GetNewDecimalOrZero(item.RealCostYB);
                                item.RealCostPB = (costStatisticDetails.Sum(x => x.PB) ?? 0).ToString();
                                sumRealCostPB += Funs.GetNewDecimalOrZero(item.RealCostPB);
                                allRealCostPB += Funs.GetNewDecimalOrZero(item.RealCostPB);
                                item.RealCostAB = (costStatisticDetails.Sum(x => x.AB) ?? 0).ToString();
                                sumRealCostAB += Funs.GetNewDecimalOrZero(item.RealCostAB);
                                allRealCostAB += Funs.GetNewDecimalOrZero(item.RealCostAB);
                                item.RealCostYAB = (costStatisticDetails.Sum(x => x.YAB) ?? 0).ToString();
                                sumRealCostYAB += Funs.GetNewDecimalOrZero(item.RealCostYAB);
                                allRealCostYAB += Funs.GetNewDecimalOrZero(item.RealCostYAB);
                                item.RealCostPAB = (costStatisticDetails.Sum(x => x.PAB) ?? 0).ToString();
                                sumRealCostPAB += Funs.GetNewDecimalOrZero(item.RealCostPAB);
                                allRealCostPAB += Funs.GetNewDecimalOrZero(item.RealCostPAB);
                            }
                            else
                            {
                                item.RealCostA = "0";
                                item.RealCostYA = "0";
                                item.RealCostPA = "0";
                                item.RealCostB = "0";
                                item.RealCostYB = "0";
                                item.RealCostPB = "0";
                                item.RealCostAB = "0";
                                item.RealCostYAB = "0";
                                item.RealCostPAB = "0";
                            }
                        }
                        item.RealCostA = monthCosts.Sum(x => x.RealCostA ?? 0).ToString();
                        sumRealCostA += Funs.GetNewDecimalOrZero(item.RealCostA);
                        item.RealCostYA = yearCosts.Sum(x => x.RealCostA ?? 0).ToString();
                        sumRealCostYA += Funs.GetNewDecimalOrZero(item.RealCostYA);
                        item.RealCostPA = monthCosts.Sum(x => x.ProjectRealCostA ?? 0).ToString();
                        sumRealCostPA += Funs.GetNewDecimalOrZero(item.RealCostPA);
                        item.RealCostB = monthCosts.Sum(x => x.RealCostB ?? 0).ToString();
                        sumRealCostB += Funs.GetNewDecimalOrZero(item.RealCostB);
                        item.RealCostYB = yearCosts.Sum(x => x.RealCostB ?? 0).ToString();
                        sumRealCostYB += Funs.GetNewDecimalOrZero(item.RealCostYB);
                        item.RealCostPB = monthCosts.Sum(x => x.ProjectRealCostB ?? 0).ToString();
                        sumRealCostPB += Funs.GetNewDecimalOrZero(item.RealCostPB);
                        item.RealCostAB = monthCosts.Sum(x => x.RealCostAB ?? 0).ToString();
                        sumRealCostAB += Funs.GetNewDecimalOrZero(item.RealCostAB);
                        item.RealCostYAB = yearCosts.Sum(x => x.RealCostAB ?? 0).ToString();
                        sumRealCostYAB += Funs.GetNewDecimalOrZero(item.RealCostYAB);
                        item.RealCostPAB = monthCosts.Sum(x => x.ProjectRealCostAB ?? 0).ToString();
                        sumRealCostPAB += Funs.GetNewDecimalOrZero(item.RealCostPAB);
                    }
                    else
                    {
                        if (lastMonthReport != null)
                        {
                            item.Manhours = "0";
                            item.TotalManhours = (lastMonthReport.TotalManhours ?? 0).ToString();
                            sumTotalManhours += lastMonthReport.TotalManhours ?? 0;
                            allTotalManhours += lastMonthReport.TotalManhours ?? 0;
                            item.HseManhours = "0";
                            item.TotalHseManhours = (lastMonthReport.TotalHseManhours ?? 0).ToString();
                            if (maxAccidentTime != null)  //当月发生事故
                            {
                                int hseManhours = 0;
                                List newDayReports = BLL.SitePerson_DayReportService.GetDayReportsByCompileDate(Convert.ToDateTime(maxAccidentTime).AddDays(1), endTime, project.ProjectId);
                                if (newDayReports.Count > 0)
                                {
                                    foreach (var dayReport in newDayReports)
                                    {
                                        hseManhours += Convert.ToInt32((from y in Funs.DB.SitePerson_DayReportDetail where y.DayReportId == dayReport.DayReportId.ToString() select y.PersonWorkTime ?? 0).Sum());
                                    }
                                }
                                sumTotalHseManhours += hseManhours;
                                allTotalHseManhours += hseManhours;
                            }
                            item.TotalManNum = "0";
                            item.AccidentNum = "0";
                            var q = BLL.AccidentSortBService.GetAccidentSortsByMonthReportId(lastMonthReport.MonthReportId);
                            item.AccidentTotalNum = (from x in q select x.TotalNum ?? 0).Sum().ToString();
                            sumAccidentTotalNum += Funs.GetNewIntOrZero(item.AccidentTotalNum);
                            allAccidentTotalNum += Funs.GetNewIntOrZero(item.AccidentTotalNum);
                            item.LoseHours = "0";
                            sumLoseHours += Funs.GetNewIntOrZero(item.LoseHours);
                            allLoseHours += Funs.GetNewIntOrZero(item.LoseHours);
                            item.TotalLoseHours = (from x in q select x.TotalLoseHours ?? 0).Sum().ToString();
                            sumTotalLoseHours += Funs.GetNewIntOrZero(item.TotalLoseHours);
                            allTotalLoseHours += Funs.GetNewIntOrZero(item.TotalLoseHours);
                            item.AvgA = "0";
                            item.AvgB = "0";
                            item.AvgC = "0";
                            item.HazardNum = (lastMonthReport.TotalLargerHazardNun ?? 0).ToString();
                            sumHazardNum += lastMonthReport.TotalLargerHazardNun ?? 0;
                            allHazardNum += lastMonthReport.TotalLargerHazardNun ?? 0;
                            item.IsArgumentHazardNum = (lastMonthReport.TotalIsArgumentLargerHazardNun ?? 0).ToString();
                            sumIsArgumentHazardNum += lastMonthReport.TotalIsArgumentLargerHazardNun ?? 0;
                            allIsArgumentHazardNum += lastMonthReport.TotalIsArgumentLargerHazardNun ?? 0;
                            DateTime yearStartTime = Convert.ToDateTime(startTime.Year + "-01" + "-01");
                            List yearCosts = (from x in Funs.DB.Manager_HseCostB
                                                                      join y in Funs.DB.Manager_MonthReportB
                                                                      on x.MonthReportId equals y.MonthReportId
                                                                      where y.ProjectId == project.ProjectId && y.Months.Value.Year == yearStartTime.Year
                                                                      select x).ToList();
                            List monthCosts = BLL.HseCostBService.GetHseCostsByMonthReportId(lastMonthReport.MonthReportId);
                            item.PlanCostA = monthCosts.Sum(x => x.PlanCostA ?? 0).ToString();
                            sumPlanCostA += Funs.GetNewDecimalOrZero(item.PlanCostA);
                            allPlanCostA += Funs.GetNewDecimalOrZero(item.PlanCostA);
                            item.PlanCostB = monthCosts.Sum(x => x.PlanCostB ?? 0).ToString();
                            sumPlanCostB += Funs.GetNewDecimalOrZero(item.PlanCostB);
                            allPlanCostB += Funs.GetNewDecimalOrZero(item.PlanCostB);
                            Model.TC_CostStatistic costStatistic = BLL.CostStatisticService.GetCostStatisticByMonthsAndProjectId(Convert.ToDateTime(lastMonthReport.Months), project.ProjectId);
                            if (costStatistic != null)
                            {
                                costStatisticDetails = BLL.CostStatisticDetailService.GetCostStatisticDetailsByCostStatisticCode(costStatistic.CostStatisticCode);
                                if (costStatisticDetails.Count > 0)
                                {
                                    item.RealCostA = (costStatisticDetails.Sum(x => x.A) ?? 0).ToString();
                                    sumRealCostA += Funs.GetNewDecimalOrZero(item.RealCostA);
                                    allRealCostA += Funs.GetNewDecimalOrZero(item.RealCostA);
                                    item.RealCostYA = (costStatisticDetails.Sum(x => x.YA) ?? 0).ToString();
                                    sumRealCostYA += Funs.GetNewDecimalOrZero(item.RealCostYA);
                                    allRealCostYA += Funs.GetNewDecimalOrZero(item.RealCostYA);
                                    item.RealCostPA = (costStatisticDetails.Sum(x => x.PA) ?? 0).ToString();
                                    sumRealCostPA += Funs.GetNewDecimalOrZero(item.RealCostPA);
                                    allRealCostPA += Funs.GetNewDecimalOrZero(item.RealCostPA);
                                    item.RealCostB = (costStatisticDetails.Sum(x => x.B) ?? 0).ToString();
                                    sumRealCostB += Funs.GetNewDecimalOrZero(item.RealCostB);
                                    allRealCostB += Funs.GetNewDecimalOrZero(item.RealCostB);
                                    item.RealCostYB = (costStatisticDetails.Sum(x => x.YB) ?? 0).ToString();
                                    sumRealCostYB += Funs.GetNewDecimalOrZero(item.RealCostYB);
                                    allRealCostYB += Funs.GetNewDecimalOrZero(item.RealCostYB);
                                    item.RealCostPB = (costStatisticDetails.Sum(x => x.PB) ?? 0).ToString();
                                    sumRealCostPB += Funs.GetNewDecimalOrZero(item.RealCostPB);
                                    allRealCostPB += Funs.GetNewDecimalOrZero(item.RealCostPB);
                                    item.RealCostAB = (costStatisticDetails.Sum(x => x.AB) ?? 0).ToString();
                                    sumRealCostAB += Funs.GetNewDecimalOrZero(item.RealCostAB);
                                    allRealCostAB += Funs.GetNewDecimalOrZero(item.RealCostAB);
                                    item.RealCostYAB = (costStatisticDetails.Sum(x => x.YAB) ?? 0).ToString();
                                    sumRealCostYAB += Funs.GetNewDecimalOrZero(item.RealCostYAB);
                                    allRealCostYAB += Funs.GetNewDecimalOrZero(item.RealCostYAB);
                                    item.RealCostPAB = (costStatisticDetails.Sum(x => x.PAB) ?? 0).ToString();
                                    sumRealCostPAB += Funs.GetNewDecimalOrZero(item.RealCostPAB);
                                    allRealCostPAB += Funs.GetNewDecimalOrZero(item.RealCostPAB);
                                }
                                else
                                {
                                    item.RealCostA = "0";
                                    item.RealCostYA = "0";
                                    item.RealCostPA = "0";
                                    item.RealCostB = "0";
                                    item.RealCostYB = "0";
                                    item.RealCostPB = "0";
                                    item.RealCostAB = "0";
                                    item.RealCostYAB = "0";
                                    item.RealCostPAB = "0";
                                }
                            }
                            else
                            {
                                item.RealCostA = "0";
                                item.RealCostYA = "0";
                                item.RealCostPA = "0";
                                item.RealCostB = "0";
                                item.RealCostYB = "0";
                                item.RealCostPB = "0";
                                item.RealCostAB = "0";
                                item.RealCostYAB = "0";
                                item.RealCostPAB = "0";
                            }
                            item.RealCostYA = yearCosts.Sum(x => x.RealCostA ?? 0).ToString();
                            sumRealCostYA += Funs.GetNewDecimalOrZero(item.RealCostYA);
                            allRealCostYA += Funs.GetNewDecimalOrZero(item.RealCostYA);
                            item.RealCostPA = monthCosts.Sum(x => x.ProjectRealCostA ?? 0).ToString();
                            sumRealCostPA += Funs.GetNewDecimalOrZero(item.RealCostPA);
                            allRealCostPA += Funs.GetNewDecimalOrZero(item.RealCostPA);
                            item.RealCostYB = yearCosts.Sum(x => x.RealCostB ?? 0).ToString();
                            sumRealCostYB += Funs.GetNewDecimalOrZero(item.RealCostYB);
                            allRealCostYB += Funs.GetNewDecimalOrZero(item.RealCostYB);
                            item.RealCostPB = monthCosts.Sum(x => x.ProjectRealCostB ?? 0).ToString();
                            sumRealCostPB += Funs.GetNewDecimalOrZero(item.RealCostPB);
                            allRealCostPB += Funs.GetNewDecimalOrZero(item.RealCostPB);
                            item.RealCostYAB = yearCosts.Sum(x => x.RealCostAB ?? 0).ToString();
                            sumRealCostYAB += Funs.GetNewDecimalOrZero(item.RealCostYAB);
                            allRealCostYAB += Funs.GetNewDecimalOrZero(item.RealCostYAB);
                            item.RealCostPAB = monthCosts.Sum(x => x.ProjectRealCostAB ?? 0).ToString();
                            sumRealCostPAB += Funs.GetNewDecimalOrZero(item.RealCostPAB);
                            allRealCostPAB += Funs.GetNewDecimalOrZero(item.RealCostPAB);
                        }
                        else
                        {
                            show = false;
                        }
                    }
                    if (show)
                    {
                        items.Add(item);
                    }
                }
                else
                {
                    if (monthReport != null)
                    {
                        allManhours += monthReport.Manhours ?? 0;
                        allTotalManhours += monthReport.TotalManhours ?? 0;
                        if (maxAccidentTime != null)  //当月发生事故
                        {
                            int hseManhours = 0;
                            List newDayReports = BLL.SitePerson_DayReportService.GetDayReportsByCompileDate(Convert.ToDateTime(maxAccidentTime).AddDays(1), endTime, project.ProjectId);
                            if (newDayReports.Count > 0)
                            {
                                foreach (var dayReport in newDayReports)
                                {
                                    hseManhours += Convert.ToInt32((from y in Funs.DB.SitePerson_DayReportDetail where y.DayReportId == dayReport.DayReportId.ToString() select y.PersonWorkTime ?? 0).Sum());
                                }
                            }
                            allHseManhours += hseManhours;
                            allTotalHseManhours += hseManhours;
                        }
                        else
                        {
                            allHseManhours += monthReport.HseManhours ?? 0;
                            allTotalHseManhours += monthReport.HseManhours ?? 0;
                        }
                        allTotalManNum += monthReport.TotalManNum ?? 0;
                        allAccidentNum += monthReport.AccidentNum ?? 0;
                        var q = BLL.AccidentSortBService.GetAccidentSortsByMonthReportId(monthReport.MonthReportId);
                        allAccidentTotalNum += (from x in q select x.TotalNum ?? 0).Sum();
                        allLoseHours += (from x in q select x.LoseHours ?? 0).Sum();
                        allTotalLoseHours += (from x in q select x.TotalLoseHours ?? 0).Sum();
                        allHazardNum += monthReport.TotalLargerHazardNun ?? 0;
                        allIsArgumentHazardNum += monthReport.TotalIsArgumentLargerHazardNun ?? 0;
                        DateTime yearStartTime = Convert.ToDateTime(startTime.Year + "-01" + "-01");
                        List yearCosts = (from x in Funs.DB.Manager_HseCostB
                                                                  join y in Funs.DB.Manager_MonthReportB
                                                                  on x.MonthReportId equals y.MonthReportId
                                                                  where y.ProjectId == project.ProjectId && y.Months.Value.Year == yearStartTime.Year
                                                                  select x).ToList();
                        List monthCosts = BLL.HseCostBService.GetHseCostsByMonthReportId(monthReport.MonthReportId);
                        allPlanCostA += monthCosts.Sum(x => x.PlanCostA ?? 0);
                        allPlanCostB += monthCosts.Sum(x => x.PlanCostB ?? 0);
                        Model.TC_CostStatistic costStatistic = BLL.CostStatisticService.GetCostStatisticByMonthsAndProjectId(Convert.ToDateTime(monthReport.Months), project.ProjectId);
                        if (costStatistic != null)
                        {
                            costStatisticDetails = BLL.CostStatisticDetailService.GetCostStatisticDetailsByCostStatisticCode(costStatistic.CostStatisticCode);
                            if (costStatisticDetails.Count > 0)
                            {
                                allRealCostA += costStatisticDetails.Sum(x => x.A) ?? 0;
                                allRealCostYA += costStatisticDetails.Sum(x => x.YA) ?? 0;
                                allRealCostPA += costStatisticDetails.Sum(x => x.PA) ?? 0;
                                allRealCostB += costStatisticDetails.Sum(x => x.B) ?? 0;
                                allRealCostYB += costStatisticDetails.Sum(x => x.YB) ?? 0;
                                allRealCostPB += costStatisticDetails.Sum(x => x.PB) ?? 0;
                                allRealCostAB += costStatisticDetails.Sum(x => x.AB) ?? 0;
                                allRealCostYAB += costStatisticDetails.Sum(x => x.YAB) ?? 0;
                                allRealCostPAB += costStatisticDetails.Sum(x => x.PAB) ?? 0;
                            }
                        }
                    }
                    else
                    {
                        if (lastMonthReport != null)
                        {
                            allTotalManhours += lastMonthReport.TotalManhours ?? 0;
                            if (maxAccidentTime != null)  //当月发生事故
                            {
                                int hseManhours = 0;
                                List newDayReports = BLL.SitePerson_DayReportService.GetDayReportsByCompileDate(Convert.ToDateTime(maxAccidentTime).AddDays(1), endTime, project.ProjectId);
                                if (newDayReports.Count > 0)
                                {
                                    foreach (var dayReport in newDayReports)
                                    {
                                        hseManhours += Convert.ToInt32((from y in Funs.DB.SitePerson_DayReportDetail where y.DayReportId == dayReport.DayReportId.ToString() select y.PersonWorkTime ?? 0).Sum());
                                    }
                                }
                                allTotalHseManhours += hseManhours;
                            }
                            var q = BLL.AccidentSortBService.GetAccidentSortsByMonthReportId(lastMonthReport.MonthReportId);
                            allAccidentTotalNum += (from x in q select x.TotalNum ?? 0).Sum();
                            allTotalLoseHours += (from x in q select x.TotalLoseHours ?? 0).Sum();
                            allHazardNum += lastMonthReport.TotalLargerHazardNun ?? 0;
                            allIsArgumentHazardNum += lastMonthReport.TotalIsArgumentLargerHazardNun ?? 0;
                            DateTime yearStartTime = Convert.ToDateTime(startTime.Year + "-01" + "-01");
                            List yearCosts = (from x in Funs.DB.Manager_HseCostB
                                                                      join y in Funs.DB.Manager_MonthReportB
                                                                      on x.MonthReportId equals y.MonthReportId
                                                                      where y.ProjectId == project.ProjectId && y.Months.Value.Year == yearStartTime.Year
                                                                      select x).ToList();
                            List monthCosts = BLL.HseCostBService.GetHseCostsByMonthReportId(lastMonthReport.MonthReportId);
                            allPlanCostA += monthCosts.Sum(x => x.PlanCostA ?? 0);
                            allPlanCostB += monthCosts.Sum(x => x.PlanCostB ?? 0);
                            Model.TC_CostStatistic costStatistic = BLL.CostStatisticService.GetCostStatisticByMonthsAndProjectId(Convert.ToDateTime(lastMonthReport.Months), project.ProjectId);
                            if (costStatistic != null)
                            {
                                costStatisticDetails = BLL.CostStatisticDetailService.GetCostStatisticDetailsByCostStatisticCode(costStatistic.CostStatisticCode);
                                if (costStatisticDetails.Count > 0)
                                {
                                    allRealCostA += costStatisticDetails.Sum(x => x.A) ?? 0;
                                    allRealCostYA += costStatisticDetails.Sum(x => x.YA) ?? 0;
                                    allRealCostPA += costStatisticDetails.Sum(x => x.PA) ?? 0;
                                    allRealCostB += costStatisticDetails.Sum(x => x.B) ?? 0;
                                    allRealCostYB += costStatisticDetails.Sum(x => x.YB) ?? 0;
                                    allRealCostPB += costStatisticDetails.Sum(x => x.PB) ?? 0;
                                    allRealCostAB += costStatisticDetails.Sum(x => x.AB) ?? 0;
                                    allRealCostYAB += costStatisticDetails.Sum(x => x.YAB) ?? 0;
                                    allRealCostPAB += costStatisticDetails.Sum(x => x.PAB) ?? 0;
                                }
                            }
                        }
                    }
                }
                //}
            }
            var q1 = (from x in Funs.DB.Manager_AccidentSortB
                      join y in Funs.DB.Manager_MonthReportB on x.MonthReportId equals y.MonthReportId
                      where projectIds.Contains(y.ProjectId) && (x.AccidentType.Contains("死 亡 事 故") || x.AccidentType.Contains("轻 伤 事 故") || x.AccidentType.Contains("重 伤 事 故") || x.AccidentType.Contains("医 院 处 置") || x.AccidentType.Contains("工 作 受 限 事 故"))
                      && y.Months <= startTime
                      select x).Distinct().ToList();
            decimal a = (from x in q1 select x.TotalNum ?? 0).Sum();
            if (sumTotalManhours != 0)
            {
                sumAvgA = decimal.Round(Convert.ToDecimal(a * 1000000 / Convert.ToInt32(sumTotalManhours)), 2);
            }
            var q2 = (from x in Funs.DB.Manager_AccidentSortB
                      join y in Funs.DB.Manager_MonthReportB on x.MonthReportId equals y.MonthReportId
                      where projectIds.Contains(y.ProjectId) && (x.AccidentType.Contains("死 亡 事 故") || x.AccidentType.Contains("轻 伤 事 故") || x.AccidentType.Contains("重 伤 事 故"))
                      && y.Months <= startTime
                      select x).Distinct().ToList();
            decimal b = (from x in q2 select x.TotalNum ?? 0).Sum();
            if (sumTotalManhours != 0)
            {
                sumAvgB = decimal.Round(Convert.ToDecimal(b * 1000000 / Convert.ToInt32(sumTotalManhours)), 2);
            }
            decimal c1 = (from x in q2 select x.TotalLoseHours ?? 0).Sum();
            if (sumTotalManhours != 0)
            {
                sumAvgC = decimal.Round(Convert.ToDecimal(c1 * 1000000 / Convert.ToDecimal(sumTotalManhours)), 2);
            }
            var aq1 = (from x in Funs.DB.Manager_AccidentSortB
                       join y in Funs.DB.Manager_MonthReportB on x.MonthReportId equals y.MonthReportId
                       where allProjectIds.Contains(y.ProjectId) && (x.AccidentType.Contains("死 亡 事 故") || x.AccidentType.Contains("轻 伤 事 故") || x.AccidentType.Contains("重 伤 事 故") || x.AccidentType.Contains("医 院 处 置") || x.AccidentType.Contains("工 作 受 限 事 故"))
                       && y.Months <= startTime
                       select x).Distinct().ToList();
            decimal aa = (from x in aq1 select x.TotalNum ?? 0).Sum();
            if (allTotalManhours != 0)
            {
                allAvgA = decimal.Round(Convert.ToDecimal(aa * 1000000 / Convert.ToInt32(allTotalManhours)), 2);
            }
            var aq2 = (from x in Funs.DB.Manager_AccidentSortB
                       join y in Funs.DB.Manager_MonthReportB on x.MonthReportId equals y.MonthReportId
                       where allProjectIds.Contains(y.ProjectId) && (x.AccidentType.Contains("死 亡 事 故") || x.AccidentType.Contains("轻 伤 事 故") || x.AccidentType.Contains("重 伤 事 故"))
                      && y.Months <= startTime
                       select x).Distinct().ToList();
            decimal bb = (from x in aq2 select x.TotalNum ?? 0).Sum();
            if (allTotalManhours != 0)
            {
                allAvgB = decimal.Round(Convert.ToDecimal(bb * 1000000 / Convert.ToInt32(allTotalManhours)), 2);
            }
            decimal cc1 = (from x in aq2 select x.TotalLoseHours ?? 0).Sum();
            if (allTotalManhours != 0)
            {
                allAvgC = decimal.Round(Convert.ToDecimal(cc1 * 1000000 / Convert.ToDecimal(allTotalManhours)), 2);
            }
            Model.HeadMonthReportProjectStationItem sumItem = new Model.HeadMonthReportProjectStationItem
            {
                ProjectName = "当前类型项目合计:",
                Manhours = sumManhours.ToString(),
                TotalManhours = sumTotalManhours.ToString(),
                HseManhours = sumHseManhours.ToString(),
                TotalHseManhours = sumTotalHseManhours.ToString(),
                TotalManNum = sumTotalManNum.ToString(),
                AccidentNum = sumAccidentNum.ToString(),
                AccidentTotalNum = sumAccidentTotalNum.ToString(),
                LoseHours = sumLoseHours.ToString(),
                TotalLoseHours = sumTotalLoseHours.ToString(),
                AvgA = sumAvgA.ToString(),
                AvgB = sumAvgB.ToString(),
                AvgC = sumAvgC.ToString(),
                HazardNum = sumHazardNum.ToString(),
                IsArgumentHazardNum = sumIsArgumentHazardNum.ToString(),
                PlanCostA = sumPlanCostA.ToString(),
                PlanCostB = sumPlanCostB.ToString(),
                RealCostA = sumRealCostA.ToString(),
                RealCostYA = sumRealCostYA.ToString(),
                RealCostPA = sumRealCostPA.ToString(),
                RealCostB = sumRealCostB.ToString(),
                RealCostYB = sumRealCostYB.ToString(),
                RealCostPB = sumRealCostPB.ToString(),
                RealCostAB = sumRealCostAB.ToString(),
                RealCostYAB = sumRealCostYAB.ToString(),
                RealCostPAB = sumRealCostPAB.ToString()
            };
            items.Add(sumItem);
            Model.Manager_HeadMonthReportB headMonthReport = BLL.HeadMonthReportBService.GetHeadMonthReportByMonths(startTime);
            if (headMonthReport != null && !string.IsNullOrEmpty(headMonthReport.CheckMan))
            {
                allHseManhours = headMonthReport.AllSumHseManhours ?? 0;
                allTotalHseManhours = headMonthReport.AllSumTotalHseManhours ?? 0;
            }
            Model.HeadMonthReportProjectStationItem totalItem = new Model.HeadMonthReportProjectStationItem
            {
                ProjectName = "公司所有项目合计:",
                Manhours = allManhours.ToString(),
                TotalManhours = allTotalManhours.ToString(),
                HseManhours = allHseManhours.ToString(),
                TotalHseManhours = allTotalHseManhours.ToString(),
                TotalManNum = allTotalManNum.ToString(),
                AccidentNum = allAccidentNum.ToString(),
                AccidentTotalNum = allAccidentTotalNum.ToString(),
                LoseHours = allLoseHours.ToString(),
                TotalLoseHours = allTotalLoseHours.ToString(),
                AvgA = allAvgA.ToString(),
                AvgB = allAvgB.ToString(),
                AvgC = allAvgC.ToString(),
                HazardNum = allHazardNum.ToString(),
                IsArgumentHazardNum = allIsArgumentHazardNum.ToString(),
                PlanCostA = allPlanCostA.ToString(),
                PlanCostB = allPlanCostB.ToString(),
                RealCostA = allRealCostA.ToString(),
                RealCostYA = allRealCostYA.ToString(),
                RealCostPA = allRealCostPA.ToString(),
                RealCostB = allRealCostB.ToString(),
                RealCostYB = allRealCostYB.ToString(),
                RealCostPB = allRealCostPB.ToString(),
                RealCostAB = allRealCostAB.ToString(),
                RealCostYAB = allRealCostYAB.ToString(),
                RealCostPAB = allRealCostPAB.ToString()
            };
            items.Add(totalItem);
            this.gvProjectStation.DataSource = items;
            this.gvProjectStation.DataBind();
        }
        #endregion
        #region 获取事故情况
        /// 
        /// 获取事故情况
        /// 
        private void GetAccidentSort(List monthReports, List lastReports)
        {
            List ids = monthReports.Select(x => x.MonthReportId).ToList();
            List lastIds = lastReports.Select(x => x.MonthReportId).ToList();
            List accidentSorts1 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType11.Text);
            List lastAccidentSorts1 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType11.Text);
            this.txtNumber11.Text = accidentSorts1.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber11.Text = (accidentSorts1.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts1.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum11.Text = accidentSorts1.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum11.Text = (accidentSorts1.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts1.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours11.Text = accidentSorts1.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours11.Text = (accidentSorts1.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts1.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney11.Text = accidentSorts1.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney11.Text = (accidentSorts1.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts1.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts2 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType12.Text);
            List lastAccidentSorts2 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType12.Text);
            this.txtNumber12.Text = accidentSorts2.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber12.Text = (accidentSorts2.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts2.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum12.Text = accidentSorts2.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum12.Text = (accidentSorts2.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts2.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours12.Text = accidentSorts2.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours12.Text = (accidentSorts2.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts2.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney12.Text = accidentSorts2.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney12.Text = (accidentSorts2.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts2.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts3 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType13.Text);
            List lastAccidentSorts3 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType13.Text);
            this.txtNumber13.Text = accidentSorts3.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber13.Text = (accidentSorts3.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts3.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum13.Text = accidentSorts3.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum13.Text = (accidentSorts3.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts3.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours13.Text = accidentSorts3.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours13.Text = (accidentSorts3.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts3.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney13.Text = accidentSorts3.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney13.Text = (accidentSorts3.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts3.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts4 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType14.Text);
            List lastAccidentSorts4 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType14.Text);
            this.txtNumber14.Text = accidentSorts4.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber14.Text = (accidentSorts4.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts4.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum14.Text = accidentSorts4.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum14.Text = (accidentSorts4.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts4.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours14.Text = accidentSorts4.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours14.Text = (accidentSorts4.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts4.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney14.Text = accidentSorts4.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney14.Text = (accidentSorts4.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts4.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts5 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType15.Text);
            List lastAccidentSorts5 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType15.Text);
            this.txtNumber15.Text = accidentSorts5.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber15.Text = (accidentSorts5.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts5.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum15.Text = accidentSorts5.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum15.Text = (accidentSorts5.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts5.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours15.Text = accidentSorts5.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours15.Text = (accidentSorts5.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts5.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney15.Text = accidentSorts5.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney15.Text = (accidentSorts5.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts5.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts6 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType16.Text);
            List lastAccidentSorts6 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType16.Text);
            this.txtNumber16.Text = accidentSorts6.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber16.Text = (accidentSorts6.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts6.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum16.Text = accidentSorts6.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum16.Text = (accidentSorts6.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts6.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours16.Text = accidentSorts6.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours16.Text = (accidentSorts6.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts6.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney16.Text = accidentSorts6.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney16.Text = (accidentSorts6.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts6.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts21 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType21.Text);
            List lastAccidentSorts21 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType21.Text);
            this.txtNumber21.Text = accidentSorts21.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber21.Text = (accidentSorts21.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts21.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum21.Text = accidentSorts21.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum21.Text = (accidentSorts21.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts21.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours21.Text = accidentSorts21.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours21.Text = (accidentSorts21.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts21.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney21.Text = accidentSorts21.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney21.Text = (accidentSorts21.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts21.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts22 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType22.Text);
            List lastAccidentSorts22 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType22.Text);
            this.txtNumber22.Text = accidentSorts22.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber22.Text = (accidentSorts22.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts22.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum22.Text = accidentSorts22.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum22.Text = (accidentSorts22.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts22.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours22.Text = accidentSorts22.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours22.Text = (accidentSorts22.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts22.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney22.Text = accidentSorts22.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney22.Text = (accidentSorts22.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts22.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts23 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType23.Text);
            List lastAccidentSorts23 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType23.Text);
            this.txtNumber23.Text = accidentSorts23.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber23.Text = (accidentSorts23.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts23.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum23.Text = accidentSorts23.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum23.Text = (accidentSorts23.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts23.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours23.Text = accidentSorts23.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours23.Text = (accidentSorts23.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts23.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney23.Text = accidentSorts23.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney23.Text = (accidentSorts23.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts23.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts24 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType24.Text);
            List lastAccidentSorts24 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType24.Text);
            this.txtNumber24.Text = accidentSorts24.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber24.Text = (accidentSorts24.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts24.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum24.Text = accidentSorts24.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum24.Text = (accidentSorts24.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts24.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours24.Text = accidentSorts24.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours24.Text = (accidentSorts24.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts24.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney24.Text = accidentSorts24.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney24.Text = (accidentSorts24.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts24.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts25 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType25.Text);
            List lastAccidentSorts25 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType25.Text);
            this.txtNumber25.Text = accidentSorts25.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber25.Text = (accidentSorts25.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts25.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum25.Text = accidentSorts25.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum25.Text = (accidentSorts25.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts25.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours25.Text = accidentSorts25.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours25.Text = (accidentSorts25.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts25.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney25.Text = accidentSorts25.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney25.Text = (accidentSorts25.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts25.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts26 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType26.Text);
            List lastAccidentSorts26 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType26.Text);
            this.txtNumber26.Text = accidentSorts26.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber26.Text = (accidentSorts26.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts26.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum26.Text = accidentSorts26.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum26.Text = (accidentSorts26.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts26.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours26.Text = accidentSorts26.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours26.Text = (accidentSorts26.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts26.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney26.Text = accidentSorts26.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney26.Text = (accidentSorts26.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts26.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts27 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType27.Text);
            List lastAccidentSorts27 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType27.Text);
            this.txtNumber27.Text = accidentSorts27.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber27.Text = (accidentSorts27.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts27.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum27.Text = accidentSorts27.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum27.Text = (accidentSorts27.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts27.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours27.Text = accidentSorts27.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours27.Text = (accidentSorts27.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts27.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney27.Text = accidentSorts27.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney27.Text = (accidentSorts27.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts27.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts28 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType28.Text);
            List lastAccidentSorts28 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType28.Text);
            this.txtNumber28.Text = accidentSorts28.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber28.Text = (accidentSorts28.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts28.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum28.Text = accidentSorts28.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum28.Text = (accidentSorts28.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts28.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours28.Text = accidentSorts28.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours28.Text = (accidentSorts28.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts28.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney28.Text = accidentSorts28.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney28.Text = (accidentSorts28.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts28.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            List accidentSorts29 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(ids, this.lblAccidentType29.Text);
            List lastAccidentSorts29 = BLL.AccidentSortBService.GetAccidentSortsByMonthReportIdsAndAccidentType(lastIds, this.lblAccidentType29.Text);
            this.txtNumber29.Text = accidentSorts29.Sum(x => x.Number ?? 0).ToString();
            this.txtSumNumber29.Text = (accidentSorts29.Sum(x => x.TotalNum ?? 0) + lastAccidentSorts29.Sum(x => x.TotalNum ?? 0)).ToString();
            this.txtPersonNum29.Text = accidentSorts29.Sum(x => x.PersonNum ?? 0).ToString();
            this.txtSumPersonNum29.Text = (accidentSorts29.Sum(x => x.TotalPersonNum ?? 0) + lastAccidentSorts29.Sum(x => x.TotalPersonNum ?? 0)).ToString();
            this.txtLoseHours29.Text = accidentSorts29.Sum(x => x.LoseHours ?? 0).ToString();
            this.txtSumLoseHours29.Text = (accidentSorts29.Sum(x => x.TotalLoseHours ?? 0) + lastAccidentSorts29.Sum(x => x.TotalLoseHours ?? 0)).ToString();
            this.txtLoseMoney29.Text = accidentSorts29.Sum(x => x.LoseMoney ?? 0).ToString();
            this.txtSumLoseMoney29.Text = (accidentSorts29.Sum(x => x.TotalLoseMoney ?? 0) + lastAccidentSorts29.Sum(x => x.TotalLoseMoney ?? 0)).ToString();
            //事故数据
            List accidentReports = (from x in Funs.DB.Accident_AccidentReport where x.AccidentDate >= startTime && x.AccidentDate < endTime select x).ToList();
            List accidentReportOthers = (from x in Funs.DB.Accident_AccidentReportOther where x.AccidentDate >= startTime && x.AccidentDate < endTime select x).ToList();
            this.txtAccidentNum.Text = ((from x in accidentReports where x.AccidentTypeId == "1" || x.AccidentTypeId == "2" || x.AccidentTypeId == "3" select x).Count()
                + (from x in accidentReportOthers where x.AccidentTypeId == "1" || x.AccidentTypeId == "2" select x).Count()).ToString();
            int sumManhours = 0;
            AspNet.Label lblTotalManhours = this.gvProjectStation.Rows[this.gvProjectStation.Rows.Count - 1].FindControl("lblTotalManhours") as AspNet.Label;
            if (lblTotalManhours != null)
            {
                sumManhours = Funs.GetNewIntOrZero(lblTotalManhours.Text);
            }
            //百万工时总可记录事故率:当期的医院处置、工作受限事故、轻伤、重伤、死亡事故总次数*一百万/当期累计总工时数
            int countA = (from x in accidentReports where x.AccidentTypeId == "1" || x.AccidentTypeId == "2" || x.AccidentTypeId == "3" select x).Count()
                + (from x in accidentReportOthers where x.AccidentTypeId == "1" || x.AccidentTypeId == "2" select x).Count();
            if (sumManhours != 0)
            {
                this.txtAccidentRateA.Text = decimal.Round((Convert.ToDecimal(countA) * 1000000 / sumManhours), 2).ToString();
            }
            else
            {
                this.txtAccidentRateA.Text = "0";
            }
            //百万工时损失工时率:当期总损失工时数*一百万/当期累计总工时数
            decimal countB = (from x in accidentReports select x.WorkingHoursLoss ?? 0).Sum()
                + (from x in accidentReportOthers select x.WorkingHoursLoss ?? 0).Sum();
            if (sumManhours != 0)
            {
                this.txtAccidentRateB.Text = decimal.Round((Convert.ToDecimal(countB) * 1000000 / sumManhours), 2).ToString();
            }
            else
            {
                this.txtAccidentRateB.Text = "0";
            }
            //百万工时损失工时伤害事故率:当期的轻伤、重伤、死亡事故总次数*一百万/当期累计总工时数
            int countC = (from x in accidentReports where x.AccidentTypeId == "1" || x.AccidentTypeId == "2" || x.AccidentTypeId == "3" select x).Count();
            if (sumManhours != 0)
            {
                this.txtAccidentRateC.Text = decimal.Round((Convert.ToDecimal(countC) * 1000000 / sumManhours), 2).ToString();
            }
            else
            {
                this.txtAccidentRateC.Text = "0";
            }
            //百万工时死亡事故频率:当期死亡事故总次数*一百万/当期累计总工时数
            int countD = (from x in accidentReports where x.AccidentTypeId == "1" select x).Count();
            if (sumManhours != 0)
            {
                this.txtAccidentRateD.Text = decimal.Round((Convert.ToDecimal(countD) * 1000000 / sumManhours), 2).ToString();
            }
            else
            {
                this.txtAccidentRateD.Text = "0";
            }
            //百万工时事故死亡率:当期死亡总人数*一百万/当期累计总工时数
            int countE = (from x in accidentReports where x.AccidentTypeId == "1" select x.PeopleNum ?? 0).Sum();
            if (sumManhours != 0)
            {
                this.txtAccidentRateE.Text = decimal.Round((Convert.ToDecimal(countD) * 1000000 / sumManhours), 2).ToString();
            }
            else
            {
                this.txtAccidentRateE.Text = "0";
            }
            List details = new List();
            foreach (var item in monthReports)
            {
                details.AddRange(BLL.AccidentDetailSortBService.GetAccidentDetailSortsByMonthReportId(item.MonthReportId));
            }
            this.GridAccidentDetailSort.DataSource = details;
            this.GridAccidentDetailSort.DataBind();
        }
        #endregion
        #region 获取培训情况
        /// 
        /// 获取培训情况
        /// 
        private void GetTrainSort(List monthReports, List lastReports)
        {
            int? sumTrainNumber = 0;
            int? sumTotalTrainNum = 0;
            int? sumTrainPersonNumber = 0;
            int? sumTotalTrainPersonNum = 0;
            var trainTypes = BLL.TrainTypeService.GetTrainTypeList();
            List totalTrainSorts = new List();
            List trainSorts = new List();
            List lastTrainSorts = new List();
            foreach (var item in monthReports)
            {
                trainSorts.AddRange(BLL.TrainSortBService.GetTrainSortsByMonthReportId(item.MonthReportId));
            }
            foreach (var item in lastReports)
            {
                lastTrainSorts.AddRange(BLL.TrainSortBService.GetTrainSortsByMonthReportId(item.MonthReportId));
            }
            foreach (var item in trainTypes)
            {
                Model.Manager_TrainSortB trainSort = new Model.Manager_TrainSortB
                {
                    TrainSortId = SQLHelper.GetNewID(),
                    TrainType = item.TrainTypeName,
                    TrainNumber = trainSorts.Where(x => x.TrainType == item.TrainTypeName).Sum(x => x.TrainNumber ?? 0),
                    TotalTrainNum = trainSorts.Where(x => x.TrainType == item.TrainTypeName).Sum(x => x.TotalTrainNum ?? 0) + lastTrainSorts.Where(x => x.TrainType == item.TrainTypeName).Sum(x => x.TotalTrainNum ?? 0),
                    TrainPersonNumber = trainSorts.Where(x => x.TrainType == item.TrainTypeName).Sum(x => x.TrainPersonNumber ?? 0),
                    TotalTrainPersonNum = trainSorts.Where(x => x.TrainType == item.TrainTypeName).Sum(x => x.TotalTrainPersonNum ?? 0) + lastTrainSorts.Where(x => x.TrainType == item.TrainTypeName).Sum(x => x.TotalTrainPersonNum ?? 0)
                };
                totalTrainSorts.Add(trainSort);
                sumTrainNumber += trainSort.TrainNumber ?? 0;
                sumTotalTrainNum += trainSort.TotalTrainNum ?? 0;
                sumTrainPersonNumber += trainSort.TrainPersonNumber ?? 0;
                sumTotalTrainPersonNum += trainSort.TotalTrainPersonNum ?? 0;
            }
            this.gvTrainSort.Columns[0].FooterStyle.HorizontalAlign = HorizontalAlign.Left;
            this.gvTrainSort.Columns[0].FooterText = "合计";
            this.gvTrainSort.Columns[1].FooterStyle.HorizontalAlign = HorizontalAlign.Left;
            this.gvTrainSort.Columns[1].FooterText = (sumTrainNumber ?? 0).ToString("N0");
            this.gvTrainSort.Columns[2].FooterStyle.HorizontalAlign = HorizontalAlign.Left;
            this.gvTrainSort.Columns[2].FooterText = (sumTotalTrainNum ?? 0).ToString("N0");
            this.gvTrainSort.Columns[3].FooterStyle.HorizontalAlign = HorizontalAlign.Left;
            this.gvTrainSort.Columns[3].FooterText = (sumTrainPersonNumber ?? 0).ToString("N0");
            this.gvTrainSort.Columns[4].FooterStyle.HorizontalAlign = HorizontalAlign.Left;
            this.gvTrainSort.Columns[4].FooterText = (sumTotalTrainPersonNum ?? 0).ToString("N0");
            this.gvTrainSort.DataSource = totalTrainSorts;
            this.gvTrainSort.DataBind();
        }
        #endregion
        #region 获取会议情况
        /// 
        /// 获取会议情况
        /// 
        private void GetMeetingSort(List monthReports, List lastReports)
        {
            List meetingSorts1 = new List();
            List meetingSorts2 = new List();
            List meetingSorts3 = new List();
            List lastMeetingSorts1 = new List();
            List lastMeetingSorts2 = new List();
            List lastMeetingSorts3 = new List();
            foreach (var item in monthReports)
            {
                if (BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType1.Text) != null)
                {
                    meetingSorts1.Add(BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType1.Text));
                }
                if (BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType2.Text) != null)
                {
                    meetingSorts2.Add(BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType2.Text));
                }
                if (BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType3.Text) != null)
                {
                    meetingSorts3.Add(BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType3.Text));
                }
            }
            foreach (var item in lastReports)
            {
                if (BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType1.Text) != null)
                {
                    lastMeetingSorts1.Add(BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType1.Text));
                }
                if (BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType2.Text) != null)
                {
                    lastMeetingSorts2.Add(BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType2.Text));
                }
                if (BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType3.Text) != null)
                {
                    lastMeetingSorts3.Add(BLL.MeetingSortBService.GetMeetingSortsByMonthReportIdAndMeetingType(item.MonthReportId, this.lblMeetingType3.Text));
                }
            }
            this.txtMeetingNumber1.Text = meetingSorts1.Sum(x => x.MeetingNumber ?? 0).ToString();
            this.txtSumMeetingNumber1.Text = (meetingSorts1.Sum(x => x.TotalMeetingNum ?? 0) + lastMeetingSorts1.Sum(x => x.TotalMeetingNum ?? 0)).ToString();
            this.txtMeetingPersonNumber1.Text = meetingSorts1.Sum(x => x.MeetingPersonNumber ?? 0).ToString();
            this.txtSumMeetingPersonNumber1.Text = (meetingSorts1.Sum(x => x.TotalMeetingPersonNum ?? 0) + lastMeetingSorts1.Sum(x => x.TotalMeetingPersonNum ?? 0)).ToString();
            this.txtMeetingNumber2.Text = meetingSorts2.Sum(x => x.MeetingNumber ?? 0).ToString();
            this.txtSumMeetingNumber2.Text = (meetingSorts2.Sum(x => x.TotalMeetingNum ?? 0) + lastMeetingSorts2.Sum(x => x.TotalMeetingNum ?? 0)).ToString();
            this.txtMeetingPersonNumber2.Text = meetingSorts2.Sum(x => x.MeetingPersonNumber ?? 0).ToString();
            this.txtSumMeetingPersonNumber2.Text = (meetingSorts2.Sum(x => x.TotalMeetingPersonNum ?? 0) + lastMeetingSorts2.Sum(x => x.TotalMeetingPersonNum ?? 0)).ToString();
            this.txtMeetingNumber3.Text = meetingSorts3.Sum(x => x.MeetingNumber ?? 0).ToString();
            this.txtSumMeetingNumber3.Text = (meetingSorts3.Sum(x => x.TotalMeetingNum ?? 0) + lastMeetingSorts3.Sum(x => x.TotalMeetingNum ?? 0)).ToString();
            this.txtMeetingPersonNumber3.Text = meetingSorts3.Sum(x => x.MeetingPersonNumber ?? 0).ToString();
            this.txtSumMeetingPersonNumber3.Text = (meetingSorts3.Sum(x => x.TotalMeetingPersonNum ?? 0) + lastMeetingSorts3.Sum(x => x.TotalMeetingPersonNum ?? 0)).ToString();
            this.txtAllMeetingNumber.Text = (Convert.ToInt32(this.txtMeetingNumber1.Text.Trim()) + Convert.ToInt32(this.txtMeetingNumber2.Text.Trim()) + Convert.ToInt32(this.txtMeetingNumber3.Text.Trim())).ToString();
            this.txtAllMeetingPersonNumber.Text = (Convert.ToInt32(this.txtMeetingPersonNumber1.Text.Trim()) + Convert.ToInt32(this.txtMeetingPersonNumber2.Text.Trim()) + Convert.ToInt32(this.txtMeetingPersonNumber3.Text.Trim())).ToString();
            this.txtAllSumMeetingNumber.Text = (Convert.ToInt32(this.txtSumMeetingNumber1.Text.Trim()) + Convert.ToInt32(this.txtSumMeetingNumber2.Text.Trim()) + Convert.ToInt32(this.txtSumMeetingNumber3.Text.Trim())).ToString();
            this.txtAllSumMeetingPersonNumber.Text = (Convert.ToInt32(this.txtSumMeetingPersonNumber1.Text.Trim()) + Convert.ToInt32(this.txtSumMeetingPersonNumber2.Text.Trim()) + Convert.ToInt32(this.txtSumMeetingPersonNumber3.Text.Trim())).ToString();
        }
        #endregion
        #region 获取检查情况
        /// 
        /// 获取检查情况
        /// 
        private void GetCheckSort(List monthReports, List lastReports)
        {
            List checkSorts1 = new List();
            List checkSorts2 = new List();
            List checkSorts3 = new List();
            List checkSorts4 = new List();
            List lastCheckSorts1 = new List();
            List lastCheckSorts2 = new List();
            List lastCheckSorts3 = new List();
            List lastCheckSorts4 = new List();
            foreach (var item in monthReports)
            {
                if (BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType1.Text) != null)
                {
                    checkSorts1.Add(BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType1.Text));
                }
                if (BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType2.Text) != null)
                {
                    checkSorts2.Add(BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType2.Text));
                }
                if (BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType3.Text) != null)
                {
                    checkSorts3.Add(BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType3.Text));
                }
                if (BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType4.Text) != null)
                {
                    checkSorts4.Add(BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType4.Text));
                }
            }
            foreach (var item in lastReports)
            {
                if (BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType1.Text) != null)
                {
                    lastCheckSorts1.Add(BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType1.Text));
                }
                if (BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType2.Text) != null)
                {
                    lastCheckSorts2.Add(BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType2.Text));
                }
                if (BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType3.Text) != null)
                {
                    lastCheckSorts3.Add(BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType3.Text));
                }
                if (BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType4.Text) != null)
                {
                    lastCheckSorts4.Add(BLL.CheckSortBService.GetCheckSortByMonthReportIdAndCheckType(item.MonthReportId, this.lblCheckType4.Text));
                }
            }
            this.txtCheckNumber1.Text = checkSorts1.Sum(x => x.CheckNumber ?? 0).ToString();
            this.txtSumCheckNumber1.Text = (checkSorts1.Sum(x => x.TotalCheckNum ?? 0) + lastCheckSorts1.Sum(x => x.TotalCheckNum ?? 0)).ToString();
            this.txtViolationNumber1.Text = checkSorts1.Sum(x => x.ViolationNumber ?? 0).ToString();
            this.txtSumViolationNumber1.Text = (checkSorts1.Sum(x => x.TotalViolationNum ?? 0) + lastCheckSorts1.Sum(x => x.TotalViolationNum ?? 0)).ToString();
            this.txtCheckNumber2.Text = checkSorts2.Sum(x => x.CheckNumber ?? 0).ToString();
            this.txtSumCheckNumber2.Text = (checkSorts2.Sum(x => x.TotalCheckNum ?? 0) + lastCheckSorts2.Sum(x => x.TotalCheckNum ?? 0)).ToString();
            this.txtViolationNumber2.Text = checkSorts2.Sum(x => x.ViolationNumber ?? 0).ToString();
            this.txtSumViolationNumber2.Text = (checkSorts2.Sum(x => x.TotalViolationNum ?? 0) + lastCheckSorts2.Sum(x => x.TotalViolationNum ?? 0)).ToString();
            this.txtCheckNumber3.Text = checkSorts3.Sum(x => x.CheckNumber ?? 0).ToString();
            this.txtSumCheckNumber3.Text = (checkSorts3.Sum(x => x.TotalCheckNum ?? 0) + lastCheckSorts3.Sum(x => x.TotalCheckNum ?? 0)).ToString();
            this.txtViolationNumber3.Text = checkSorts3.Sum(x => x.ViolationNumber ?? 0).ToString();
            this.txtSumViolationNumber3.Text = (checkSorts3.Sum(x => x.TotalViolationNum ?? 0) + lastCheckSorts3.Sum(x => x.TotalViolationNum ?? 0)).ToString();
            this.txtCheckNumber4.Text = checkSorts4.Sum(x => x.CheckNumber ?? 0).ToString();
            this.txtSumCheckNumber4.Text = (checkSorts4.Sum(x => x.TotalCheckNum ?? 0) + lastCheckSorts4.Sum(x => x.TotalCheckNum ?? 0)).ToString();
            this.txtViolationNumber4.Text = checkSorts4.Sum(x => x.ViolationNumber ?? 0).ToString();
            this.txtSumViolationNumber4.Text = (checkSorts4.Sum(x => x.TotalViolationNum ?? 0) + lastCheckSorts4.Sum(x => x.TotalViolationNum ?? 0)).ToString();
            this.txtAllCheckNumber.Text = (Convert.ToInt32(this.txtCheckNumber1.Text.Trim()) + Convert.ToInt32(this.txtCheckNumber2.Text.Trim()) + Convert.ToInt32(this.txtCheckNumber3.Text.Trim()) + Convert.ToInt32(this.txtCheckNumber4.Text.Trim())).ToString();
            this.txtAllSumCheckNumber.Text = (Convert.ToInt32(this.txtSumCheckNumber1.Text.Trim()) + Convert.ToInt32(this.txtSumCheckNumber2.Text.Trim()) + Convert.ToInt32(this.txtSumCheckNumber3.Text.Trim()) + Convert.ToInt32(this.txtSumCheckNumber4.Text.Trim())).ToString();
            this.txtAllViolationNumber.Text = (Convert.ToInt32(this.txtViolationNumber1.Text.Trim()) + Convert.ToInt32(this.txtViolationNumber2.Text.Trim()) + Convert.ToInt32(this.txtViolationNumber3.Text.Trim()) + Convert.ToInt32(this.txtViolationNumber4.Text.Trim())).ToString();
            this.txtAllSumViolationNumber.Text = (Convert.ToInt32(this.txtSumViolationNumber1.Text.Trim()) + Convert.ToInt32(this.txtSumViolationNumber2.Text.Trim()) + Convert.ToInt32(this.txtSumViolationNumber3.Text.Trim()) + Convert.ToInt32(this.txtSumViolationNumber4.Text.Trim())).ToString();
        }
        #endregion
        #region 获取奖惩情况
        /// 
        /// 获取奖惩情况
        /// 
        private void GetIncentiveSort(List monthReports, List lastReports)
        {
            List incentiveSorts1 = new List();
            List incentiveSorts2 = new List();
            List incentiveSorts3 = new List();
            List incentiveSorts4 = new List();
            List incentiveSorts5 = new List();
            List incentiveSorts6 = new List();
            List incentiveSorts7 = new List();
            List lastIncentiveSorts1 = new List();
            List lastIncentiveSorts2 = new List();
            List lastIncentiveSorts3 = new List();
            List lastIncentiveSorts4 = new List();
            List lastIncentiveSorts5 = new List();
            List lastIncentiveSorts6 = new List();
            List lastIncentiveSorts7 = new List();
            foreach (var item in monthReports)
            {
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType11.Text) != null)
                {
                    incentiveSorts1.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType11.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType12.Text) != null)
                {
                    incentiveSorts2.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType12.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType13.Text) != null)
                {
                    incentiveSorts3.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType13.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType14.Text) != null)
                {
                    incentiveSorts4.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType14.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType15.Text) != null)
                {
                    incentiveSorts5.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType15.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, "通 报 批 评 (人/次)") != null)
                {
                    incentiveSorts6.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, "通 报 批 评 (人/次)"));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, "开 除 (人/次)") != null)
                {
                    incentiveSorts7.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, "开 除 (人/次)"));
                }
            }
            foreach (var item in lastReports)
            {
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType11.Text) != null)
                {
                    lastIncentiveSorts1.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType11.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType12.Text) != null)
                {
                    lastIncentiveSorts2.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType12.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType13.Text) != null)
                {
                    lastIncentiveSorts3.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType13.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType14.Text) != null)
                {
                    lastIncentiveSorts4.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType14.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType15.Text) != null)
                {
                    lastIncentiveSorts5.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, this.lblIncentiveType15.Text));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, "通 报 批 评 (人/次)") != null)
                {
                    lastIncentiveSorts6.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, "通 报 批 评 (人/次)"));
                }
                if (BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, "开 除 (人/次)") != null)
                {
                    lastIncentiveSorts7.Add(BLL.IncentiveSortBService.GetIncentiveSortByMonthReportIdAndIncentiveType(item.MonthReportId, "开 除 (人/次)"));
                }
            }
            this.txtIncentiveMoney1.Text = incentiveSorts1.Sum(x => x.IncentiveMoney ?? 0).ToString("N2");
            this.txtSumIncentiveMoney1.Text = (incentiveSorts1.Sum(x => x.TotalIncentiveMoney ?? 0) + lastIncentiveSorts1.Sum(x => x.TotalIncentiveMoney ?? 0)).ToString("N2");
            this.txtIncentiveMoney2.Text = incentiveSorts2.Sum(x => x.IncentiveMoney ?? 0).ToString("N2");
            this.txtSumIncentiveMoney2.Text = (incentiveSorts2.Sum(x => x.TotalIncentiveMoney ?? 0) + lastIncentiveSorts2.Sum(x => x.TotalIncentiveMoney ?? 0)).ToString("N2");
            this.txtIncentiveMoney3.Text = incentiveSorts3.Sum(x => x.IncentiveMoney ?? 0).ToString("N2");
            this.txtSumIncentiveMoney3.Text = (incentiveSorts3.Sum(x => x.TotalIncentiveMoney ?? 0) + lastIncentiveSorts3.Sum(x => x.TotalIncentiveMoney ?? 0)).ToString("N2");
            this.txtIncentiveMoney4.Text = incentiveSorts4.Sum(x => x.IncentiveMoney ?? 0).ToString("N2");
            this.txtSumIncentiveMoney4.Text = (incentiveSorts4.Sum(x => x.TotalIncentiveMoney ?? 0) + lastIncentiveSorts4.Sum(x => x.TotalIncentiveMoney ?? 0)).ToString("N2");
            this.txtIncentiveMoney5.Text = incentiveSorts5.Sum(x => x.IncentiveMoney ?? 0).ToString("N2");
            this.txtSumIncentiveMoney5.Text = (incentiveSorts5.Sum(x => x.TotalIncentiveMoney ?? 0) + lastIncentiveSorts5.Sum(x => x.TotalIncentiveMoney ?? 0)).ToString("N2");
            this.txtIncentiveNumber1.Text = incentiveSorts6.Sum(x => x.IncentiveNumber ?? 0).ToString();
            this.txtSumIncentiveNumber1.Text = (incentiveSorts6.Sum(x => x.TotalIncentiveNumber ?? 0) + lastIncentiveSorts6.Sum(x => x.TotalIncentiveNumber ?? 0)).ToString();
            this.txtIncentiveNumber2.Text = incentiveSorts7.Sum(x => x.IncentiveNumber ?? 0).ToString();
            this.txtSumIncentiveNumber2.Text = (incentiveSorts7.Sum(x => x.TotalIncentiveNumber ?? 0) + lastIncentiveSorts7.Sum(x => x.TotalIncentiveNumber ?? 0)).ToString();
        }
        #endregion
        #region 多表头
        /// 
        /// 多表头
        /// 
        /// 
        /// 
        protected void gvProjectStation_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Header)
            {
                string headerStr = "序号#项目代号#项目名称#项目经理#项目类型#项目开工日期#项目竣工日期#完成工时 当月,累计#项目安全工时 当月,累计#当月员工总数#事故起数 当月,累计#损失工时 当月,累计#可记录事故率#损失工时事故率#事故伤害严重率#危险性较大的清单数#需要专家论证的危险性较大的清单数#安全生产费计划额#文明施工措施费计划额#实际支出 A-安全生产合计 当期,当年合计,项目累计#实际支出 B-文明施工合计 当期,当年合计,项目累计#实际支出 A+B合计 当期,当年合计,项目累计";
                DynamicTHeaderHepler dHelper = new DynamicTHeaderHepler();
                dHelper.SplitTableHeader(e.Row, headerStr);
            }
        }
        #endregion
        #region 格式化字符串
        /// 
        /// 转换项目代码
        /// 
        /// 
        /// 
        protected string ConvertProjectCode(object monthReportId)
        {
            if (monthReportId != null)
            {
                Model.Manager_MonthReportB monthReport = BLL.MonthReportBService.GetMonthReportByMonthReportId(monthReportId.ToString());
                if (monthReport != null)
                {
                    Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(monthReport.ProjectId);
                    if (project != null)
                    {
                        return project.ProjectCode;
                    }
                }
            }
            return "";
        }
        /// 
        /// 转换项目名称
        /// 
        /// 
        /// 
        protected string ConvertProjectName(object monthReportId)
        {
            if (monthReportId != null)
            {
                Model.Manager_MonthReportB monthReport = BLL.MonthReportBService.GetMonthReportByMonthReportId(monthReportId.ToString());
                if (monthReport != null)
                {
                    return BLL.ProjectService.GetProjectNameByProjectId(monthReport.ProjectId);
                }
            }
            return "";
        }
        /// 
        /// 转换项目经理
        /// 
        /// 
        /// 
        protected string ConvertProjectManagerName(object monthReportId)
        {
            if (monthReportId != null)
            {
                Model.Manager_MonthReportB monthReport = BLL.MonthReportBService.GetMonthReportByMonthReportId(monthReportId.ToString());
                if (monthReport != null)
                {
                    ///项目经理
                    var m = Funs.DB.Project_ProjectUser.FirstOrDefault(x => x.ProjectId == monthReport.ProjectId && x.RoleId.Contains(BLL.Const.ProjectManager));
                    if (m != null)
                    {
                        Model.Sys_User user = BLL.UserService.GetUserByUserId(m.UserId);
                        if (user != null)
                        {
                            return user.UserName;
                        }
                    }
                }
            }
            return "";
        }
        #endregion
        #region 导出
        /// 
        /// 导出
        /// 
        /// 
        /// 
        protected void btnOut_Click(object sender, EventArgs e)
        {
            DateTime dt = DateTime.Now;
            string filename = dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Second.ToString();
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.Write("");
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("管理月报" + filename, System.Text.Encoding.UTF8) + ".xls");
            Response.ContentType = "application/ms-excel";
            this.EnableViewState = false;
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            this.Table1.RenderControl(oHtmlTextWriter);
            Response.Write(oStringWriter.ToString());
            Response.Flush();
            Response.End();
        }
        /// 
        /// 重载VerifyRenderingInServerForm方法,否则运行的时候会出现如下错误提示:“类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内”
        /// 
        /// 
        public override void VerifyRenderingInServerForm(Control control)
        {
        }
        #endregion
    }
}