using BLL; using System; using System.Data; using System.Linq; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.HSSE.CostGoods { public partial class CostLedgerNew : PageBase { private static string headerStr; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { txtDate.Text = DateTime.Now.ToString("yyyy-MM"); loadAll(); } } /// /// 根据日期加载所有 /// protected void loadAll() { var pid = CurrUser.LoginProjectId; var result = Funs.DB.CostGoods_HseExpense.FirstOrDefault(x => x.ProjectId == CurrUser.LoginProjectId && x.PayMonth == txtDate.Text); if (result!=null) { DateTime startTime = Convert.ToDateTime(result.PayDate.Value.Year + "-" + result.PayDate.Value.Month + "-1"); DateTime endTime = startTime.AddMonths(1); headerStr = string.Empty; headerStr += "编号#类别"; DataTable dt = new DataTable(); dt.Columns.Add("R0"); //编号 dt.Columns.Add("R1"); //类别 var units = BLL.UnitService.GetMainAndSubUnitByProjectIdList(result.ProjectId); int a = 0; for (int i = 0; i < units.Count; i++) { headerStr += "#" + units[i].UnitName + " 当月累计,当年累计"; dt.Columns.Add("M" + a); //当月累计 a++; dt.Columns.Add("M" + a); //当年累计 a++; } DataRow row1 = dt.NewRow(); row1[0] = "1"; row1[1] = "完善、改造和维护安全防护设备、设施"; int b = 2; var yearHseExpense = Funs.DB.CostGoods_HseExpense.Where(x => x.ProjectId == pid && x.PayDate.Value.Year == endTime.Year); var monthHseExpense = Funs.DB.CostGoods_HseExpense.Where(x => x.ProjectId == pid && x.PayDate >= startTime && x.PayDate <= endTime); for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId ).Sum(x => x.SMonthType1); row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType1) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1=dt.NewRow(); row1[0] = "2"; row1[1] = "应急救援和演练"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType2 ) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType2 ) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1 = dt.NewRow(); row1[0] = "3"; row1[1] = "重大危险源管理;隐患整改;安全生产信息化"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType3) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType3) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1 = dt.NewRow(); row1[0] = "4"; row1[1] = "安全检查、评估评价、咨询与标准化建设"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType4) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType4) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1 = dt.NewRow(); row1[0] = "5"; row1[1] = "作业人员防护用品"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType5) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType5) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1 = dt.NewRow(); row1[0] = "6"; row1[1] = "安全生产宣传、教育、培训及奖励"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType6) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType6) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1 = dt.NewRow(); row1[0] = "7"; row1[1] = "“四新”推广应用支出"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType7 ) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType7) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1 = dt.NewRow(); row1[0] = "8"; row1[1] = "安全设施及特种设备检测检验、检定校准"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType8) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType8) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1 = dt.NewRow(); row1[0] = "9"; row1[1] = "安全生产责任保险"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType9) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType9) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); b = 2; row1 = dt.NewRow(); row1[0] = "10"; row1[1] = "其他与安全生产直接相关的支出"; for (int i = 0; i < units.Count; i++) { row1[b] = monthHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType10) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; row1[b] = yearHseExpense.Where(x => x.UnitId == units[i].UnitId).Sum(x => x.SMonthType10) ?? 0; row1[b] = Funs.GetNewDecimalOrZero(row1[b].ToString()).ToString("N2"); b++; } dt.Rows.Add(row1); this.gvTotalPayRegistration.DataSource = dt; this.gvTotalPayRegistration.DataBind(); } } #region 在控件被绑定后激发 /// /// 在控件被绑定后激发 /// /// /// protected void gvTotalPayRegistration_DataBound(object sender, EventArgs e) { } #endregion #region Grid创建行 /// /// Grid创建行 /// /// /// protected void gvTotalPayRegistration_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { DynamicTHeaderHepler dHelper = new DynamicTHeaderHepler(); dHelper.SplitTableHeader(e.Row, headerStr); } } #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("项目HSE费用投入登记表" + 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.gvTotalPayRegistration.RenderControl(oHtmlTextWriter); Response.Write(oStringWriter.ToString()); Response.Flush(); Response.End(); } /// /// 重载VerifyRenderingInServerForm方法,否则运行的时候会出现如下错误提示:“类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内” /// /// public override void VerifyRenderingInServerForm(Control control) { } #endregion } }