using BLL; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.CQMS.ProcessControl { public partial class InspectionManagementStatistics : PageBase { public DateTime StartDate; public DateTime NextDate; public DateTime NewDate; public DateTime EndDate; public int SunNumber; private static List StatisticsList = new List(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (drpZhType.SelectedValue.Equals("1")) { BLL.CNProfessionalService.InitCNProfessionalDownList(this.drpCNProfessional, false);//专业 drpCNProfessional.Items.Insert(0, new FineUIPro.ListItem("- 请选择专业 -", BLL.Const._Null)); } else { BLL.UnitService.InitUnitDownList(this.drpCNProfessional, this.CurrUser.LoginProjectId, false);//施工分包商 drpCNProfessional.Items.Insert(0, new FineUIPro.ListItem("- 请选择单位名称 -", BLL.Const._Null)); } BindGvInspectionManagement(this.drpZhType.SelectedValue, this.drpCNProfessional.SelectedValue); } } #region 绑定GridView /// /// 绑定 /// /// public void BindGvInspectionManagement(string ZyType, string cNProfessionalId) { if (string.IsNullOrEmpty(this.txtStartTime.Text.Trim()) && string.IsNullOrEmpty(this.txtEndTime.Text.Trim())) //未选择日期,统计项目开始起的每月数据 { StatisticsList = new List(); //List StatisticsList = new List(); Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId); StartDate = Convert.ToDateTime(project.StartDate); for (int i = 0; i < i + 1; i++) { Model.InspectionManagementStatistics Statistics = new Model.InspectionManagementStatistics(); if (i == 0) { NextDate = Convert.ToDateTime(DateTime.Parse(StartDate.ToString("yyyy-MM-dd")).AddMonths(1).ToShortDateString()); NewDate = Convert.ToDateTime(NextDate.Year + "-" + NextDate.Month + "-25"); Statistics.CheckDate = string.Format("{0:yyyy-MM-dd}", StartDate) + " 至 "; if (StartDate.Day < 25) { if (DateTime.Now < NewDate) { List managementListSunNumber = new List(); List managementListOneNumber = new List(); if (ZyType == "1") { //统计所给时间段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, false); //统计所给时间段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, true); } else { //统计所给时间段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, false); //统计所给时间段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, true); } Statistics.CheckDate += string.Format("{0:yyyy-MM-dd}", DateTime.Now); Statistics.SunNumber = managementListSunNumber.Count(); Statistics.OneStatisticsSunNumber = managementListOneNumber.Count(); if (managementListSunNumber.Count() != 0)//被除数不能为零 { Statistics.OneStatistics = Math.Round((double)managementListOneNumber.Count() / (double)managementListSunNumber.Count() * 100, 2) + "%";//保留两位小数、后四舍五入 } else { Statistics.OneStatistics = "0%"; } StatisticsList.Add(Statistics); break; } else { List managementListSunNumber = new List(); List managementListOneNumber = new List(); NextDate = Convert.ToDateTime(StartDate.Year + "-" + StartDate.Month + "-25"); if (ZyType == "1") { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NextDate, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NextDate, true); } else { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NextDate, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NextDate, true); } Statistics.CheckDate += string.Format("{0:yyyy-MM-dd}", NextDate); Statistics.SunNumber = managementListSunNumber.Count(); Statistics.OneStatisticsSunNumber = managementListOneNumber.Count(); if (managementListSunNumber.Count() != 0)//被除数不能为零 { Statistics.OneStatistics = Math.Round((double)managementListOneNumber.Count() / (double)managementListSunNumber.Count() * 100, 2) + "%";//保留两位小数、后四舍五入 } else { Statistics.OneStatistics = "0%"; } } } else { if (DateTime.Now < NewDate) { List managementListSunNumber = new List(); List managementListOneNumber = new List(); if (ZyType == "1") { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, true); } else { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, true); } Statistics.CheckDate += string.Format("{0:yyyy-MM-dd}", DateTime.Now); Statistics.SunNumber = managementListSunNumber.Count(); Statistics.OneStatisticsSunNumber = managementListOneNumber.Count(); if (managementListSunNumber.Count() != 0)//被除数不能为零 { Statistics.OneStatistics = Math.Round((double)managementListOneNumber.Count() / (double)managementListSunNumber.Count() * 100, 2) + "%";//保留两位小数、后四舍五入 } else { Statistics.OneStatistics = "0%"; } StatisticsList.Add(Statistics); break; } else { List managementListSunNumber = new List(); List managementListOneNumber = new List(); if (ZyType == "1") { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NewDate, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NewDate, true); } else { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NewDate, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NewDate, true); } Statistics.CheckDate += string.Format("{0:yyyy-MM-dd}", NewDate); Statistics.SunNumber = managementListSunNumber.Count(); Statistics.OneStatisticsSunNumber = managementListOneNumber.Count(); if (managementListSunNumber.Count() != 0)//被除数不能为零 { Statistics.OneStatistics = Math.Round((double)managementListOneNumber.Count() / (double)managementListSunNumber.Count() * 100, 2) + "%";//保留两位小数、后四舍五入 } else { Statistics.OneStatistics = "0%"; } } } } else { if (StartDate.Day > 25) { Statistics.CheckDate = NewDate.Year + "-" + NewDate.Month + "-" + (NewDate.Day + 1) + " 至 "; StartDate = Convert.ToDateTime(NewDate.Year + "-" + NewDate.Month + "-" + (NewDate.Day + 1));//获取上一记录的结束日期加一天为本次记录的开始日期 } else { Statistics.CheckDate = NextDate.Year + "-" + NextDate.Month + "-" + (NextDate.Day + 1) + " 至 "; StartDate = Convert.ToDateTime(NextDate.Year + "-" + NextDate.Month + "-" + (NextDate.Day + 1));//获取上一记录的结束日期加一天为本次记录的开始日期 } NextDate = Convert.ToDateTime(DateTime.Parse(NextDate.ToString("yyyy-MM-dd")).AddMonths(1).ToShortDateString()); NewDate = Convert.ToDateTime(NextDate.Year + "-" + NextDate.Month + "-25"); if (DateTime.Now < NewDate) { List managementListSunNumber = new List(); List managementListOneNumber = new List(); if (ZyType == "1") { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, true); } else { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, DateTime.Now, true); } Statistics.CheckDate += string.Format("{0:yyyy-MM-dd}", DateTime.Now); Statistics.SunNumber = managementListSunNumber.Count(); Statistics.OneStatisticsSunNumber = managementListOneNumber.Count(); if (managementListSunNumber.Count() != 0)//被除数不能为零 { Statistics.OneStatistics = Math.Round((double)managementListOneNumber.Count() / (double)managementListSunNumber.Count() * 100, 2) + "%";//保留两位小数、后四舍五入 } else { Statistics.OneStatistics = "0%"; } StatisticsList.Add(Statistics); break; } else { List managementListSunNumber = new List(); List managementListOneNumber = new List(); if (ZyType == "1") { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NewDate, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NewDate, true); } else { //统计所给事件段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NewDate, false); //统计所给事件段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, NewDate, true); } Statistics.CheckDate += string.Format("{0:yyyy-MM-dd}", NewDate); Statistics.SunNumber = managementListSunNumber.Count(); Statistics.OneStatisticsSunNumber = managementListOneNumber.Count(); if (managementListSunNumber.Count() != 0)//被除数不能为零 { Statistics.OneStatistics = Math.Round((double)managementListOneNumber.Count() / (double)managementListSunNumber.Count() * 100, 2) + "%";//保留两位小数、后四舍五入 } else { Statistics.OneStatistics = "0%"; } } } StatisticsList.Add(Statistics); } Model.InspectionManagementStatistics StatisticsLast = new Model.InspectionManagementStatistics(); StatisticsLast.CheckDate = "合计"; int sum1 = 0; int sum2 = 0; foreach (Model.InspectionManagementStatistics item in StatisticsList) { sum1 += item.OneStatisticsSunNumber; sum2 += item.SunNumber; } StatisticsLast.OneStatisticsSunNumber = sum1; StatisticsLast.SunNumber = sum2; if (sum2 != 0)//被除数不能为零 { StatisticsLast.OneStatistics = Math.Round((double)sum1 / (double)sum2 * 100, 2) + "%";//保留两位小数、后四舍五入 } else { StatisticsLast.OneStatistics = "0%"; } StatisticsList.Add(StatisticsLast); this.Grid1.DataSource = StatisticsList; this.Grid1.DataBind(); } else //选择日期,统计对应时间段内的数据 { StatisticsList = new List(); //List StatisticsList = new List(); Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId); StartDate = Convert.ToDateTime(project.StartDate); EndDate = DateTime.Now; if (!string.IsNullOrEmpty(this.txtStartTime.Text.Trim())) { StartDate = Convert.ToDateTime(this.txtStartTime.Text.Trim()); } if (!string.IsNullOrEmpty(this.txtEndTime.Text.Trim())) { EndDate = Convert.ToDateTime(this.txtEndTime.Text.Trim()); } Model.InspectionManagementStatistics Statistics = new Model.InspectionManagementStatistics(); List managementListSunNumber = new List(); List managementListOneNumber = new List(); if (ZyType == "1") { //统计所给时间段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, EndDate, false); //统计所给时间段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByCNProfessionalIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, EndDate, true); } else { //统计所给时间段的全部数量 managementListSunNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, EndDate, false); //统计所给时间段的合格数量 managementListOneNumber = BLL.InspectionManagementService.getInspectionManagementDetailListByUnitIdAndDate(this.CurrUser.LoginProjectId, cNProfessionalId, StartDate, EndDate, true); } Statistics.CheckDate = string.Format("{0:yyyy-MM-dd}", StartDate) + " 至 " + string.Format("{0:yyyy-MM-dd}", EndDate); Statistics.SunNumber = managementListSunNumber.Count(); Statistics.OneStatisticsSunNumber = managementListOneNumber.Count(); if (managementListSunNumber.Count() != 0)//被除数不能为零 { Statistics.OneStatistics = Math.Round((double)managementListOneNumber.Count() / (double)managementListSunNumber.Count() * 100, 2) + "%";//保留两位小数、后四舍五入 } else { Statistics.OneStatistics = "0%"; } StatisticsList.Add(Statistics); this.Grid1.DataSource = StatisticsList; this.Grid1.DataBind(); } } #endregion protected void btnSearch_Click(object sender, EventArgs e) { BindGvInspectionManagement(this.drpZhType.SelectedValue, this.drpCNProfessional.SelectedValue); //if (this.drpCNProfessional.SelectedValue != BLL.Const._Null) //{ // BindGvInspectionManagement(this.drpCNProfessional.SelectedValue); //} //else //{ // BindGvInspectionManagement(null); //} } protected void btnOut_Click(object sender, EventArgs e) { //Response.ClearContent(); //string filename = Funs.GetNewFileName(); //Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("控制点检查检测合格率统计" + filename, System.Text.Encoding.UTF8) + ".xls"); //Response.ContentType = "application/excel"; //Response.ContentEncoding = Encoding.UTF8; //this.Grid1.PageSize = Grid1.RecordCount; ////if (this.drpCNProfessional.SelectedValue != BLL.Const._Null) ////{ //// BindGvInspectionManagement(this.drpCNProfessional.SelectedValue); ////} ////else ////{ //// BindGvInspectionManagement(null); ////} //BindGvInspectionManagement(this.drpZhType.SelectedValue, this.drpCNProfessional.SelectedValue); //Response.Write(GetGridTableHtml2(Grid1)); //Response.End(); string rootPath = Server.MapPath("~/"); string initTemplatePath = Const.InspectionManagementStaticTempUrl; string uploadfilepath = string.Empty; string newUrl = string.Empty; uploadfilepath = rootPath + initTemplatePath; if (StatisticsList != null) { string projectName = BLL.ProjectService.GetShortNameByProjectId(this.CurrUser.LoginProjectId); newUrl = uploadfilepath.Replace("控制点检查检测合格率统计模板", "控制点检查检测合格率统计(" + projectName + DateTime.Now.ToString("yyyyMMdd") + ")"); File.Copy(uploadfilepath, newUrl); // 第一步:读取文件流 NPOI.SS.UserModel.IWorkbook workbook; using (FileStream stream = new FileStream(newUrl, FileMode.Open, FileAccess.Read)) { //workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(stream); workbook = new NPOI.HSSF.UserModel.HSSFWorkbook(stream); } // 创建单元格样式 NPOI.SS.UserModel.ICellStyle cellStyle = workbook.CreateCellStyle(); cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; var font = workbook.CreateFont(); font.FontHeightInPoints = 11; cellStyle.SetFont(font); NPOI.SS.UserModel.ICellStyle cellStyle0 = workbook.CreateCellStyle(); cellStyle0.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle0.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle0.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle0.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; cellStyle0.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; cellStyle0.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; var font0 = workbook.CreateFont(); font0.FontHeightInPoints = 12; font0.IsBold = true; cellStyle0.SetFont(font0); // 第二步:创建新数据行 NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); NPOI.SS.UserModel.IRow row = sheet.GetRow(0); NPOI.SS.UserModel.ICell cell; int i = 2; foreach (var item in StatisticsList) { // 第二步:创建新数据行 row = sheet.CreateRow(i); // 添加数据 cell = row.CreateCell(0); cell.CellStyle = cellStyle; cell.SetCellValue(string.Format("{0:yyyy-MM-dd}", item.CheckDate));//日期 cell = row.CreateCell(1); cell.CellStyle = cellStyle; string oneN = string.Empty; if (!string.IsNullOrEmpty(item.OneStatisticsSunNumber.ToString())) { oneN = item.OneStatisticsSunNumber.ToString(); } else { oneN = "0"; } cell.SetCellValue(oneN);//一次合格数 cell = row.CreateCell(2); cell.CellStyle = cellStyle; string sumN = string.Empty; if (!string.IsNullOrEmpty(item.SunNumber.ToString())) { sumN = item.SunNumber.ToString(); } else { sumN = "0"; } cell.SetCellValue(sumN);//总数 cell = row.CreateCell(3); cell.CellStyle = cellStyle; cell.SetCellValue(item.OneStatistics);//一次合格率 i++; } // 第三步:写入文件流 using (FileStream stream = new FileStream(newUrl, FileMode.Create, FileAccess.Write)) { workbook.Write(stream); workbook.Close(); } string fileName = Path.GetFileName(newUrl); FileInfo info = new FileInfo(newUrl); long fileSize = info.Length; Response.Clear(); Response.ContentType = "application/x-zip-compressed"; Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.AddHeader("Content-Length", fileSize.ToString()); Response.TransmitFile(newUrl, 0, fileSize); Response.Flush(); Response.Close(); File.Delete(newUrl); } else { Alert.ShowInTop("当前无记录,无法导出!", MessageBoxIcon.Warning); } } /// ///下拉动态加载数据信息 /// /// /// protected void drpZhType_SelectedIndexChanged(object sender, EventArgs e) { this.drpCNProfessional.Items.Clear(); if (drpZhType.SelectedValue.Equals("1")) { BLL.CNProfessionalService.InitCNProfessionalDownList(this.drpCNProfessional, false);//专业 drpCNProfessional.Items.Insert(0, new FineUIPro.ListItem("- 请选择专业 -", BLL.Const._Null)); } else { BLL.UnitService.InitUnitDownList(this.drpCNProfessional, this.CurrUser.LoginProjectId, false);//施工分包商 drpCNProfessional.Items.Insert(0, new FineUIPro.ListItem("- 请选择单位 -", BLL.Const._Null)); } this.drpCNProfessional.SelectedIndex = 0; } } }