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; using BLL; using FineUIPro.Web.HSSE.License; using Microsoft.Office.Interop.Word; using Model; using NPOI.SS.Formula.Functions; using AspNet = System.Web.UI.WebControls; namespace FineUIPro.Web.JDGL.Check { public partial class MonthPlanStatisc : PageBase { private static List StatisticsList = new List(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.txtMonths.Text = string.Format("{0:yyyy-MM}", DateTime.Now); this.txtYear.Text = string.Format("{0:yyyy}", DateTime.Now); BindStatisc(); } } protected void btnSearch_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.txtMonths.Text.Trim())) { Alert.ShowInTop("月份不能为空!", MessageBoxIcon.Warning); return; } BindStatisc(); } #region 绑定GridView /// /// 绑定 /// /// public void BindStatisc() { var cycle = this.ckCycle.SelectedValue; StatisticsList = new List(); int i = 1; Model.SGGLDB db = Funs.DB; List totalList = new List(); List sumTotalList = new List(); if (cycle == "1") {//按月 DateTime months = Convert.ToDateTime(this.txtMonths.Text + "-01"); //所有集合 totalList = (from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId && x.Months == months select x).ToList(); //所有集合 sumTotalList = (from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId && x.Months <= months select x).ToList(); } else if (cycle == "2") {//按年(以上一年度12月份至本年度11月份为一个周期) DateTime sDate = Convert.ToDateTime(this.txtYear.Text + "-12-01").AddYears(-1); DateTime eDate = Convert.ToDateTime(this.txtYear.Text + "-12-01"); //所有集合 totalList = (from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId && x.Months >= sDate && x.Months < eDate select x).ToList(); //所有集合 sumTotalList = (from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId && x.Months < eDate select x).ToList(); } else {//按项目周期 //所有集合 totalList = (from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList(); //所有集合 sumTotalList = (from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList(); } ////所有集合 //var totalList = from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId && x.Months == months select x; ////所有集合 //var sumTotalList = from x in db.JDGL_MonthPlan where x.ProjectId == this.CurrUser.LoginProjectId && x.Months <= months select x; if (this.ckType.SelectedValue == "1") //按责任单位 { var pUnit = from x in db.Project_ProjectUnit join y in db.Base_Unit on x.UnitId equals y.UnitId where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitType == BLL.Const.ProjectUnitType_2 orderby y.UnitCode select y; foreach (var item in pUnit) { //当期集合 var list = totalList.Where(x => x.UnitId == item.UnitId); Model.JDGL_MonthPlan JDGL_MonthPlan = new Model.JDGL_MonthPlan(); JDGL_MonthPlan.NodeContent = item.UnitName; int a = list.Count(); int b = list.Count(x => x.RealDate.HasValue); JDGL_MonthPlan.UnitId = a.ToString(); JDGL_MonthPlan.DutyPerson = b.ToString(); if (a != 0)//被除数不能为零 { JDGL_MonthPlan.Remark = Math.Round((double)b / (double)a * 100, 2) + "%";//保留两位小数、后四舍五入 } else { JDGL_MonthPlan.Remark = "0%"; } StatisticsList.Add(JDGL_MonthPlan); i++; } } else //按五环责任人 { var user = (from x in db.Sys_User join y in db.JDGL_MonthPlan on x.UserId equals y.DutyPerson where y.ProjectId == this.CurrUser.LoginProjectId orderby x.UserId select x).Distinct().ToList(); foreach (var item in user) { //所有集合 var list = totalList.Where(x => x.DutyPerson == item.UserId); Model.JDGL_MonthPlan JDGL_MonthPlan = new Model.JDGL_MonthPlan(); JDGL_MonthPlan.NodeContent = item.UserName; int a = list.Count(); int b = list.Count(x => x.RealDate.HasValue); JDGL_MonthPlan.UnitId = a.ToString(); JDGL_MonthPlan.DutyPerson = b.ToString(); if (a != 0)//被除数不能为零 { JDGL_MonthPlan.Remark = Math.Round((double)b / (double)a * 100, 2) + "%";//保留两位小数、后四舍五入 } else { JDGL_MonthPlan.Remark = "0%"; } StatisticsList.Add(JDGL_MonthPlan); i++; } } if (StatisticsList.Count() > 0) //增加合计 { Model.JDGL_MonthPlan StatisticsLast = new Model.JDGL_MonthPlan(); StatisticsLast.NodeContent = "合计"; int a = totalList.Count(); int b = totalList.Count(x => x.RealDate.HasValue); StatisticsLast.UnitId = a.ToString(); StatisticsLast.DutyPerson = b.ToString(); if (a != 0)//被除数不能为零 { StatisticsLast.Remark = Math.Round((double)b / (double)a * 100, 2) + "%";//保留两位小数、后四舍五入 } else { StatisticsLast.Remark = "0%"; } StatisticsList.Add(StatisticsLast); } //增加累计 Model.JDGL_MonthPlan StatisticsSum = new Model.JDGL_MonthPlan(); StatisticsSum.NodeContent = "累计"; int c = sumTotalList.Count(); int d = sumTotalList.Count(x => x.RealDate.HasValue); StatisticsSum.UnitId = c.ToString(); StatisticsSum.DutyPerson = d.ToString(); if (c != 0)//被除数不能为零 { StatisticsSum.Remark = Math.Round((double)d / (double)c * 100, 2) + "%";//保留两位小数、后四舍五入 } else { StatisticsSum.Remark = "0%"; } StatisticsList.Add(StatisticsSum); this.Grid1.DataSource = StatisticsList; this.Grid1.DataBind(); } #endregion /// /// 统计周期 /// /// /// protected void ckCycle_SelectedIndexChanged(object sender, EventArgs e) { var cycle = this.ckCycle.SelectedValue; if (cycle == "1") {//按月份 this.txtMonths.Hidden = false; this.txtYear.Hidden = true; } else if (cycle == "2") {//按年份 this.txtMonths.Hidden = true; this.txtYear.Hidden = false; } else {//按项目周期 this.txtMonths.Hidden = true; this.txtYear.Hidden = true; } BindStatisc(); } /// /// 统计汇总 /// /// /// protected void ckType_SelectedIndexChanged(object sender, EventArgs e) { if (this.ckType.SelectedValue == "1") { this.Grid1.Columns[1].HeaderText = "责任单位"; } else { this.Grid1.Columns[1].HeaderText = "五环责任人"; } BindStatisc(); } protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { BindStatisc(); } #region 导出按钮 /// 导出按钮 /// /// /// protected void btnOut_Click(object sender, EventArgs e) { //string rootPath = Server.MapPath("~/"); //string initTemplatePath = Const.JDGL_MonthPlanTemlUrl; //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("NCR统计模板", "NCR统计(" + 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; // cellStyle.WrapText = true;//自动换行 // var font = workbook.CreateFont(); // font.FontHeightInPoints = 11; // cellStyle.SetFont(font); // // 第二步:创建新数据行 // 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(item.WorkName);//工作名称 // cell = row.CreateCell(1); // cell.CellStyle = cellStyle; // cell.SetCellValue(item.CheckNum); // cell = row.CreateCell(2); // cell.CellStyle = cellStyle; // cell.SetCellValue(item.OKNum); // cell = row.CreateCell(3); // cell.CellStyle = cellStyle; // cell.SetCellValue(item.NotOKNum); // cell = row.CreateCell(4); // cell.CellStyle = cellStyle; // cell.SetCellValue(item.OKRate); // cell = row.CreateCell(5); // cell.CellStyle = cellStyle; // cell.SetCellValue(item.Remark); // 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); //} } /// /// 导出方法 /// /// /// //private string GetGridTableHtml(Grid grid) //{ // StringBuilder sb = new StringBuilder(); // sb.Append(""); // sb.Append(""); // sb.Append(""); // grid.PageSize = 10000; // BindStatisc(); // foreach (GridColumn column in grid.Columns) // { // sb.AppendFormat("", column.HeaderText); // } // sb.Append(""); // foreach (GridRow row in grid.Rows) // { // sb.Append(""); // foreach (GridColumn column in grid.Columns) // { // string html = row.Values[column.ColumnIndex].ToString(); // if (column.ColumnID == "tfNumber") // { // html = (row.FindControl("labNumber") as AspNet.Label).Text; // } // sb.AppendFormat("", html); // } // sb.Append(""); // } // sb.Append("
{0}
{0}
"); // return sb.ToString(); //} #endregion } }