/// <summary>
        /// 增加百万工时安全统计月报表明细表
        /// </summary>
        /// <param name="MillionsMonthlyReportItem">百万工时安全统计月报表明细表实体</param>
        public static void AddMillionsMonthlyReportItem(Model.Information_MillionsMonthlyReportItem MillionsMonthlyReportItem)
        {
            Model.SUBHSSEDB db = Funs.DB;
            Model.Information_MillionsMonthlyReportItem newMillionsMonthlyReportItem = new Model.Information_MillionsMonthlyReportItem
            {
                MillionsMonthlyReportItemId = MillionsMonthlyReportItem.MillionsMonthlyReportItemId,
                MillionsMonthlyReportId     = MillionsMonthlyReportItem.MillionsMonthlyReportId,
                SortIndex                 = MillionsMonthlyReportItem.SortIndex,
                Affiliation               = MillionsMonthlyReportItem.Affiliation,
                Name                      = MillionsMonthlyReportItem.Name,
                PostPersonNum             = MillionsMonthlyReportItem.PostPersonNum,
                SnapPersonNum             = MillionsMonthlyReportItem.SnapPersonNum,
                ContractorNum             = MillionsMonthlyReportItem.ContractorNum,
                SumPersonNum              = MillionsMonthlyReportItem.SumPersonNum,
                TotalWorkNum              = MillionsMonthlyReportItem.TotalWorkNum,
                SeriousInjuriesNum        = MillionsMonthlyReportItem.SeriousInjuriesNum,
                SeriousInjuriesPersonNum  = MillionsMonthlyReportItem.SeriousInjuriesPersonNum,
                SeriousInjuriesLossHour   = MillionsMonthlyReportItem.SeriousInjuriesLossHour,
                MinorAccidentNum          = MillionsMonthlyReportItem.MinorAccidentNum,
                MinorAccidentPersonNum    = MillionsMonthlyReportItem.MinorAccidentPersonNum,
                MinorAccidentLossHour     = MillionsMonthlyReportItem.MinorAccidentLossHour,
                OtherAccidentNum          = MillionsMonthlyReportItem.OtherAccidentNum,
                OtherAccidentPersonNum    = MillionsMonthlyReportItem.OtherAccidentPersonNum,
                OtherAccidentLossHour     = MillionsMonthlyReportItem.OtherAccidentLossHour,
                RestrictedWorkPersonNum   = MillionsMonthlyReportItem.RestrictedWorkPersonNum,
                RestrictedWorkLossHour    = MillionsMonthlyReportItem.RestrictedWorkLossHour,
                MedicalTreatmentPersonNum = MillionsMonthlyReportItem.MedicalTreatmentPersonNum,
                MedicalTreatmentLossHour  = MillionsMonthlyReportItem.MedicalTreatmentLossHour,
                FireNum                   = MillionsMonthlyReportItem.FireNum,
                ExplosionNum              = MillionsMonthlyReportItem.ExplosionNum,
                TrafficNum                = MillionsMonthlyReportItem.TrafficNum,
                EquipmentNum              = MillionsMonthlyReportItem.EquipmentNum,
                QualityNum                = MillionsMonthlyReportItem.QualityNum,
                OtherNum                  = MillionsMonthlyReportItem.OtherNum,
                FirstAidDressingsNum      = MillionsMonthlyReportItem.FirstAidDressingsNum,
                AttemptedEventNum         = MillionsMonthlyReportItem.AttemptedEventNum,
                LossDayNum                = MillionsMonthlyReportItem.LossDayNum
            };

            db.Information_MillionsMonthlyReportItem.InsertOnSubmit(newMillionsMonthlyReportItem);
            db.SubmitChanges();
        }
        /// <summary>
        /// 修改百万工时安全统计月报表明细表
        /// </summary>
        /// <param name="MillionsMonthlyReportItem">百万工时安全统计月报表明细表实体</param>
        public static void UpdateMillionsMonthlyReportItem(Model.Information_MillionsMonthlyReportItem MillionsMonthlyReportItem)
        {
            Model.SUBHSSEDB db = Funs.DB;
            Model.Information_MillionsMonthlyReportItem newMillionsMonthlyReportItem = db.Information_MillionsMonthlyReportItem.FirstOrDefault(e => e.MillionsMonthlyReportItemId == MillionsMonthlyReportItem.MillionsMonthlyReportItemId);
            newMillionsMonthlyReportItem.SortIndex                 = MillionsMonthlyReportItem.SortIndex;
            newMillionsMonthlyReportItem.Affiliation               = MillionsMonthlyReportItem.Affiliation;
            newMillionsMonthlyReportItem.Name                      = MillionsMonthlyReportItem.Name;
            newMillionsMonthlyReportItem.PostPersonNum             = MillionsMonthlyReportItem.PostPersonNum;
            newMillionsMonthlyReportItem.SnapPersonNum             = MillionsMonthlyReportItem.SnapPersonNum;
            newMillionsMonthlyReportItem.ContractorNum             = MillionsMonthlyReportItem.ContractorNum;
            newMillionsMonthlyReportItem.SumPersonNum              = MillionsMonthlyReportItem.SumPersonNum;
            newMillionsMonthlyReportItem.TotalWorkNum              = MillionsMonthlyReportItem.TotalWorkNum;
            newMillionsMonthlyReportItem.SeriousInjuriesNum        = MillionsMonthlyReportItem.SeriousInjuriesNum;
            newMillionsMonthlyReportItem.SeriousInjuriesPersonNum  = MillionsMonthlyReportItem.SeriousInjuriesPersonNum;
            newMillionsMonthlyReportItem.SeriousInjuriesLossHour   = MillionsMonthlyReportItem.SeriousInjuriesLossHour;
            newMillionsMonthlyReportItem.MinorAccidentNum          = MillionsMonthlyReportItem.MinorAccidentNum;
            newMillionsMonthlyReportItem.MinorAccidentPersonNum    = MillionsMonthlyReportItem.MinorAccidentPersonNum;
            newMillionsMonthlyReportItem.MinorAccidentLossHour     = MillionsMonthlyReportItem.MinorAccidentLossHour;
            newMillionsMonthlyReportItem.OtherAccidentNum          = MillionsMonthlyReportItem.OtherAccidentNum;
            newMillionsMonthlyReportItem.OtherAccidentPersonNum    = MillionsMonthlyReportItem.OtherAccidentPersonNum;
            newMillionsMonthlyReportItem.OtherAccidentLossHour     = MillionsMonthlyReportItem.OtherAccidentLossHour;
            newMillionsMonthlyReportItem.RestrictedWorkPersonNum   = MillionsMonthlyReportItem.RestrictedWorkPersonNum;
            newMillionsMonthlyReportItem.RestrictedWorkLossHour    = MillionsMonthlyReportItem.RestrictedWorkLossHour;
            newMillionsMonthlyReportItem.MedicalTreatmentPersonNum = MillionsMonthlyReportItem.MedicalTreatmentPersonNum;
            newMillionsMonthlyReportItem.MedicalTreatmentLossHour  = MillionsMonthlyReportItem.MedicalTreatmentLossHour;
            newMillionsMonthlyReportItem.FireNum                   = MillionsMonthlyReportItem.FireNum;
            newMillionsMonthlyReportItem.ExplosionNum              = MillionsMonthlyReportItem.ExplosionNum;
            newMillionsMonthlyReportItem.TrafficNum                = MillionsMonthlyReportItem.TrafficNum;
            newMillionsMonthlyReportItem.EquipmentNum              = MillionsMonthlyReportItem.EquipmentNum;
            newMillionsMonthlyReportItem.QualityNum                = MillionsMonthlyReportItem.QualityNum;
            newMillionsMonthlyReportItem.OtherNum                  = MillionsMonthlyReportItem.OtherNum;
            newMillionsMonthlyReportItem.FirstAidDressingsNum      = MillionsMonthlyReportItem.FirstAidDressingsNum;
            newMillionsMonthlyReportItem.AttemptedEventNum         = MillionsMonthlyReportItem.AttemptedEventNum;
            newMillionsMonthlyReportItem.LossDayNum                = MillionsMonthlyReportItem.LossDayNum;

            db.SubmitChanges();
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            int     PostPersonNumSum = 0, SnapPersonNumSum = 0, ContractorNumSum = 0, SumPersonNumSum = 0, SeriousInjuriesNumSum = 0, SeriousInjuriesPersonNumSum = 0, SeriousInjuriesLossHourSum = 0, MinorAccidentNumSum = 0, MinorAccidentPersonNumSum = 0, MinorAccidentLossHourSum = 0, OtherAccidentNumSum = 0, OtherAccidentPersonNumSum = 0, OtherAccidentLossHourSum = 0, RestrictedWorkPersonNumSum = 0, RestrictedWorkLossHourSum = 0, MedicalTreatmentPersonNumSum = 0, MedicalTreatmentLossHourSum = 0, FireNumSum = 0, ExplosionNumSum = 0, TrafficNumSum = 0, EquipmentNumSum = 0, QualityNumSum = 0, OtherNumSum = 0, FirstAidDressingsNumSum = 0, AttemptedEventNumSum = 0, LossDayNumSum = 0;
            decimal TotalWorkNumSum = 0;

            if (errorInfos.Count <= 0)
            {
                List <Model.View_DataIn_MillionsMonthlyReport> report = new List <Model.View_DataIn_MillionsMonthlyReport>();
                if (Session["reports"] != null)
                {
                    report = Session["reports"] as List <Model.View_DataIn_MillionsMonthlyReport>;
                }

                int a = report.Count();
                for (int i = 0; i < a; i++)
                {
                    MillionsMonthlyReportId = string.Empty;
                    //判断百万工时安全统计月报是否存在
                    var isExist = BLL.MillionsMonthlyReportService.GetMillionsMonthlyReportByUnitIdAndYearAndMonth(report[i].UnitId, Convert.ToInt32(report[i].Year), Convert.ToInt32(report[i].Month));
                    if (isExist != null)
                    {
                        MillionsMonthlyReportId = isExist.MillionsMonthlyReportId;
                    }
                    else
                    {
                        MillionsMonthlyReportId = SQLHelper.GetNewID(typeof(Model.Information_MillionsMonthlyReport));
                        Model.Information_MillionsMonthlyReport newReport = new Model.Information_MillionsMonthlyReport
                        {
                            MillionsMonthlyReportId = MillionsMonthlyReportId,
                            UnitId                 = report[i].UnitId,
                            Year                   = report[i].Year,
                            Month                  = report[i].Month,
                            FillingMan             = this.CurrUser.UserName,
                            FillingDate            = DateTime.Now,
                            DutyPerson             = report[i].DutyPerson,
                            RecordableIncidentRate = report[i].RecordableIncidentRate,
                            LostTimeRate           = report[i].LostTimeRate,
                            LostTimeInjuryRate     = report[i].LostTimeInjuryRate,
                            DeathAccidentFrequency = report[i].DeathAccidentFrequency,
                            AccidentMortality      = report[i].AccidentMortality,
                            UpState                = BLL.Const.UpState_2,
                            HandleState            = BLL.Const.HandleState_1,
                            HandleMan              = this.CurrUser.UserId
                        };
                        BLL.MillionsMonthlyReportService.AddMillionsMonthlyReport(newReport);
                    }
                    Model.Information_MillionsMonthlyReportItem newReportItem = new Model.Information_MillionsMonthlyReportItem
                    {
                        MillionsMonthlyReportItemId = report[i].MillionsMonthlyReportItemId,
                        MillionsMonthlyReportId     = MillionsMonthlyReportId,
                        Affiliation               = report[i].Affiliation,
                        Name                      = report[i].Name,
                        PostPersonNum             = report[i].PostPersonNum,
                        SnapPersonNum             = report[i].SnapPersonNum,
                        ContractorNum             = report[i].ContractorNum,
                        SumPersonNum              = report[i].SumPersonNum,
                        TotalWorkNum              = report[i].TotalWorkNum,
                        SeriousInjuriesNum        = report[i].SeriousInjuriesNum,
                        SeriousInjuriesPersonNum  = report[i].SeriousInjuriesPersonNum,
                        SeriousInjuriesLossHour   = report[i].SeriousInjuriesLossHour,
                        MinorAccidentNum          = report[i].MinorAccidentNum,
                        MinorAccidentPersonNum    = report[i].MinorAccidentPersonNum,
                        MinorAccidentLossHour     = report[i].MinorAccidentLossHour,
                        OtherAccidentNum          = report[i].OtherAccidentNum,
                        OtherAccidentPersonNum    = report[i].OtherAccidentPersonNum,
                        OtherAccidentLossHour     = report[i].OtherAccidentLossHour,
                        RestrictedWorkPersonNum   = report[i].RestrictedWorkPersonNum,
                        RestrictedWorkLossHour    = report[i].RestrictedWorkLossHour,
                        MedicalTreatmentPersonNum = report[i].MedicalTreatmentPersonNum,
                        MedicalTreatmentLossHour  = report[i].MedicalTreatmentLossHour,
                        FireNum                   = report[i].FireNum,
                        ExplosionNum              = report[i].ExplosionNum,
                        TrafficNum                = report[i].TrafficNum,
                        EquipmentNum              = report[i].EquipmentNum,
                        QualityNum                = report[i].QualityNum,
                        OtherNum                  = report[i].OtherNum,
                        FirstAidDressingsNum      = report[i].FirstAidDressingsNum,
                        AttemptedEventNum         = report[i].AttemptedEventNum,
                        LossDayNum                = report[i].LossDayNum
                    };
                    var sortIndexMax = ((from x in Funs.DB.Information_MillionsMonthlyReportItem where x.MillionsMonthlyReportId == MillionsMonthlyReportId select x.SortIndex).Max());
                    if (sortIndexMax != null)
                    {
                        newReportItem.SortIndex = sortIndexMax + 10;
                    }
                    else
                    {
                        newReportItem.SortIndex = i + 10;
                    }

                    PostPersonNumSum             += Convert.ToInt32(newReportItem.PostPersonNum);
                    SnapPersonNumSum             += Convert.ToInt32(newReportItem.SnapPersonNum);
                    ContractorNumSum             += Convert.ToInt32(newReportItem.ContractorNum);
                    SumPersonNumSum              += Convert.ToInt32(newReportItem.SumPersonNum);
                    TotalWorkNumSum              += Convert.ToDecimal(newReportItem.TotalWorkNum);
                    SeriousInjuriesNumSum        += Convert.ToInt32(newReportItem.SeriousInjuriesNum);
                    SeriousInjuriesPersonNumSum  += Convert.ToInt32(newReportItem.SeriousInjuriesPersonNum);
                    SeriousInjuriesLossHourSum   += Convert.ToInt32(newReportItem.SeriousInjuriesLossHour);
                    MinorAccidentNumSum          += Convert.ToInt32(newReportItem.MinorAccidentNum);
                    MinorAccidentPersonNumSum    += Convert.ToInt32(newReportItem.MinorAccidentPersonNum);
                    MinorAccidentLossHourSum     += Convert.ToInt32(newReportItem.MinorAccidentLossHour);
                    OtherAccidentNumSum          += Convert.ToInt32(newReportItem.OtherAccidentNum);
                    OtherAccidentPersonNumSum    += Convert.ToInt32(newReportItem.OtherAccidentPersonNum);
                    OtherAccidentLossHourSum     += Convert.ToInt32(newReportItem.OtherAccidentLossHour);
                    RestrictedWorkPersonNumSum   += Convert.ToInt32(newReportItem.RestrictedWorkPersonNum);
                    RestrictedWorkLossHourSum    += Convert.ToInt32(newReportItem.RestrictedWorkLossHour);
                    MedicalTreatmentPersonNumSum += Convert.ToInt32(newReportItem.MedicalTreatmentPersonNum);
                    MedicalTreatmentLossHourSum  += Convert.ToInt32(newReportItem.MedicalTreatmentLossHour);
                    FireNumSum              += Convert.ToInt32(newReportItem.FireNum);
                    ExplosionNumSum         += Convert.ToInt32(newReportItem.ExplosionNum);
                    TrafficNumSum           += Convert.ToInt32(newReportItem.TrafficNum);
                    EquipmentNumSum         += Convert.ToInt32(newReportItem.EquipmentNum);
                    QualityNumSum           += Convert.ToInt32(newReportItem.QualityNum);
                    OtherNumSum             += Convert.ToInt32(newReportItem.OtherNum);
                    FirstAidDressingsNumSum += Convert.ToInt32(newReportItem.FirstAidDressingsNum);
                    AttemptedEventNumSum    += Convert.ToInt32(newReportItem.AttemptedEventNum);
                    LossDayNumSum           += Convert.ToInt32(newReportItem.LossDayNum);

                    BLL.MillionsMonthlyReportItemService.AddMillionsMonthlyReportItem(newReportItem);
                }


                //增加本月合计数
                Model.Information_MillionsMonthlyReportItem totalItem = new Model.Information_MillionsMonthlyReportItem
                {
                    MillionsMonthlyReportItemId = SQLHelper.GetNewID(typeof(Model.Information_MillionsMonthlyReportItem)),
                    MillionsMonthlyReportId     = MillionsMonthlyReportId
                };
                var sort = ((from x in Funs.DB.Information_MillionsMonthlyReportItem where x.MillionsMonthlyReportId == MillionsMonthlyReportId select x.SortIndex).Max());
                if (sort != null)
                {
                    totalItem.SortIndex = sort + 10;
                }
                totalItem.Affiliation               = "本月合计";
                totalItem.Name                      = "本月合计";
                totalItem.PostPersonNum             = PostPersonNumSum;
                totalItem.SnapPersonNum             = SnapPersonNumSum;
                totalItem.ContractorNum             = ContractorNumSum;
                totalItem.SumPersonNum              = SumPersonNumSum;
                totalItem.TotalWorkNum              = TotalWorkNumSum;
                totalItem.SeriousInjuriesNum        = SeriousInjuriesNumSum;
                totalItem.SeriousInjuriesPersonNum  = SeriousInjuriesPersonNumSum;
                totalItem.SeriousInjuriesLossHour   = SeriousInjuriesLossHourSum;
                totalItem.MinorAccidentNum          = MinorAccidentNumSum;
                totalItem.MinorAccidentPersonNum    = MinorAccidentPersonNumSum;
                totalItem.MinorAccidentLossHour     = MinorAccidentLossHourSum;
                totalItem.OtherAccidentNum          = OtherAccidentNumSum;
                totalItem.OtherAccidentPersonNum    = OtherAccidentPersonNumSum;
                totalItem.OtherAccidentLossHour     = OtherAccidentLossHourSum;
                totalItem.RestrictedWorkPersonNum   = RestrictedWorkPersonNumSum;
                totalItem.RestrictedWorkLossHour    = RestrictedWorkLossHourSum;
                totalItem.MedicalTreatmentPersonNum = MedicalTreatmentPersonNumSum;
                totalItem.MedicalTreatmentLossHour  = MedicalTreatmentLossHourSum;
                totalItem.FireNum                   = FireNumSum;
                totalItem.ExplosionNum              = ExplosionNumSum;
                totalItem.TrafficNum                = TrafficNumSum;
                totalItem.EquipmentNum              = EquipmentNumSum;
                totalItem.QualityNum                = QualityNumSum;
                totalItem.OtherNum                  = OtherNumSum;
                totalItem.FirstAidDressingsNum      = FirstAidDressingsNumSum;
                totalItem.AttemptedEventNum         = AttemptedEventNumSum;
                totalItem.LossDayNum                = LossDayNumSum;
                BLL.MillionsMonthlyReportItemService.AddMillionsMonthlyReportItem(totalItem);

                string rootPath     = Server.MapPath("~/");
                string initFullPath = rootPath + initPath;
                string filePath     = initFullPath + this.hdFileName.Text;
                if (filePath != string.Empty && System.IO.File.Exists(filePath))
                {
                    System.IO.File.Delete(filePath);//删除上传的XLS文件
                }
                ShowNotify("导入成功!", MessageBoxIcon.Success);
                PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
            }
            else
            {
                ShowNotify("请先将错误数据修正,再重新导入保存!", MessageBoxIcon.Warning);
            }
        }