using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Web.UI.WebControls;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace FineUIPro.Web.ReportManage.SafeEnvBudget
{
public partial class SafeEnvBudgetTotal : PageBase
{
#region 加载页面
///
/// 加载页面
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List years = new List();
for (int i = DateTime.Now.Year - 5; i < DateTime.Now.Year + 10; i++)
{
if (i == DateTime.Now.Year)
{
var item = new ListItem(i + "", i + "");
years.Add(item);
}
else
{
var item = new ListItem(i + "", i + "");
years.Add(item);
}
}
drpYear.DataTextField = "Text";
drpYear.DataValueField = "Value";
drpYear.DataSource = years;
drpYear.DataBind();
drpYear.SelectedValue = DateTime.Now.Year + "";
// 绑定表格
BindGrid();
}
}
///
/// 绑定数据
///
private void BindGrid()
{
string strSql = @" SELECT SafeEnvBudget.* ,0.0 LastYearBudgetAmount from SafeEnvBudget SafeEnvBudget
where SafeEnvBudget.State = 2 ";
List listStr = new List();
if (!string.IsNullOrEmpty(this.drpYear.SelectedText.Trim()))
{
strSql += " AND SafeEnvBudget.Year = @Year";
listStr.Add(new SqlParameter("@Year", this.drpYear.SelectedText.Trim()));
}
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
if (tb != null)
{
string strSqlPre = @" SELECT SafeEnvBudget.* from SafeEnvBudget SafeEnvBudget
where SafeEnvBudget.State = 2 ";
List listStrPre = new List();
if (!string.IsNullOrEmpty(this.drpYear.SelectedText.Trim()))
{
strSqlPre += " AND SafeEnvBudget.Year = @Year";
listStrPre.Add(new SqlParameter("@Year", int.Parse(this.drpYear.SelectedText.Trim()) - 1));
}
SqlParameter[] parameterPre = listStrPre.ToArray();
DataTable tbPre = SQLHelper.GetDataTableRunText(strSqlPre, parameterPre);
HashSet set = new HashSet();
HashSet set1 = new HashSet();
HashSet set2 = new HashSet();
HashSet set3 = new HashSet();
HashSet set4 = new HashSet();
HashSet set5 = new HashSet();
foreach (DataRow row in tb.Rows)
{
set.Add(row["ProjectId"].ToString());
set1.Add(row["Subject1"].ToString());
}
List prjectids = set.ToList();
var projects = Funs.DB.Base_Project.Where(x => prjectids.Contains(x.ProjectId)).ToList();
Dictionary projectName = new Dictionary();
foreach (var p in projects)
{
tb.Columns.Add(p.ProjectId);
BoundField bf = new FineUIPro.BoundField();
bf.DataField = p.ProjectId;
bf.DataFormatString = "{0}";
if (!string.IsNullOrEmpty(p.ShortName))
{
bf.HeaderText = p.ShortName;
}
else
{
bf.HeaderText = p.ProjectName;
}
projectName.Add(p.ProjectId, bf.HeaderText);
Grid1.Columns.Add(bf);
}
BoundField bf1 = new FineUIPro.BoundField();
bf1.DataField = "Remark";
bf1.DataFormatString = "{0}";
bf1.HeaderText = "说明";
Grid1.Columns.Add(bf1);
DataTable dtRes = tb.Clone();
decimal BudgetAmount1 = 0;
decimal BudgetAmount2 = 0;
decimal BudgetAmount3 = 0;
decimal BudgetAmount4 = 0;
decimal BudgetAmount5 = 0;
foreach (string Subject1 in set1)
{
BudgetAmount1 = 0;
var row1 = dtRes.NewRow();
dtRes.Rows.Add(row1);
row1["BudgetId"] = Guid.NewGuid().ToString();
row1["Subject1"] = Subject1;
DataRow[] rowData1= tb.Select("Subject1 = '"+ Subject1 + "'");
set2.Clear();
foreach(DataRow row in rowData1)
{
set2.Add(row["Subject2"].ToString());
}
foreach (string Subject2 in set2)
{
BudgetAmount2 = 0;
var row2 = dtRes.NewRow();
row2["BudgetId"] = Guid.NewGuid().ToString();
row2["Subject2"] = Subject2;
dtRes.Rows.Add(row2);
DataRow[] rowData2 = tb.Select("Subject1 = '" + Subject1 + "' and Subject2= '" + Subject2 + "'");
set3.Clear();
foreach (DataRow row in rowData2)
{
set3.Add(row["Subject3"].ToString());
}
foreach (string Subject3 in set3)
{
BudgetAmount3 = 0;
var row3 = dtRes.NewRow();
row3["BudgetId"] = Guid.NewGuid().ToString();
row3["Subject3"] = Subject3;
dtRes.Rows.Add(row3);
DataRow[] rowData4 = tb.Select("Subject1 = '" + Subject1 + "' and Subject2= '" + Subject2 + "' and Subject3= '"+ Subject3 + "'");
set4.Clear();
foreach (DataRow row in rowData4)
{
set4.Add(row["Subject4"].ToString());
}
foreach (string Subject4 in set4)
{
BudgetAmount4 = 0;
var row4 = dtRes.NewRow();
row4["BudgetId"] = Guid.NewGuid().ToString();
row4["Subject4"] = Subject4;
dtRes.Rows.Add(row4);
DataRow[] rowData5 = tb.Select("Subject1 = '" + Subject1 + "' and Subject2= '" + Subject2 + "' and Subject3= '" + Subject3 + "' and Subject4 = '"+ Subject4 + "'");
set5.Clear();
foreach (DataRow row in rowData5)
{
set5.Add(row["Subject5"].ToString());
}
foreach (string Subject5 in set5)
{
BudgetAmount5 = 0;
var row5 = dtRes.NewRow();
row5["BudgetId"] = Guid.NewGuid().ToString();
dtRes.Rows.Add(row5);
DataRow[] rowData6 = tb.Select("Subject1 = '" + Subject1 + "' and Subject2= '" + Subject2 + "' and Subject3= '" + Subject3 + "' and Subject4 = '" + Subject4 + "' and Subject5 = '" + Subject5 + "'");
foreach (DataRow row6 in rowData6)
{
row5["Subject5"] = Subject5;
row5[row6["ProjectId"].ToString()] = row6["BudgetAmount"];
if (!string.IsNullOrEmpty(row6["Remark"].ToString()))
{
row5["Remark"] = row5["Remark"].ToString() + projectName[row6["ProjectId"].ToString()] + ":"+ row6["Remark"].ToString();
}
decimal BudgetAmount = Funs.GetNewDecimalOrZero(row6["BudgetAmount"].ToString());
BudgetAmount1 += BudgetAmount;
BudgetAmount2 += BudgetAmount;
BudgetAmount3 += BudgetAmount;
BudgetAmount4 += BudgetAmount;
BudgetAmount5 += BudgetAmount;
}
row5["LastYearBudgetAmount"] = tbPre.Compute ("Sum(BudgetAmount)", "Subject1 = '" + Subject1 + "' and Subject2= '" + Subject2 + "' and Subject3= '" + Subject3 + "' and Subject4 = '" + Subject4 + "' and Subject5 = '" + Subject5 + "'") ;
row5["BudgetAmount"] = BudgetAmount5;
}
row4["LastYearBudgetAmount"] = tbPre.Compute("Sum(BudgetAmount)", "Subject1 = '" + Subject1 + "' and Subject2= '" + Subject2 + "' and Subject3= '" + Subject3 + "' and Subject4 = '" + Subject4 + "'");
row4["BudgetAmount"] = BudgetAmount4;
}
row3["LastYearBudgetAmount"] = tbPre.Compute("Sum(BudgetAmount)", "Subject1 = '" + Subject1 + "' and Subject2= '" + Subject2 + "' and Subject3= '" + Subject3 + "'");
row3["BudgetAmount"] = BudgetAmount3;
}
row2["LastYearBudgetAmount"] = tbPre.Compute("Sum(BudgetAmount)", "Subject1 = '" + Subject1 + "' and Subject2= '" + Subject2 + "'");
row2["BudgetAmount"] = BudgetAmount2;
}
row1["LastYearBudgetAmount"] = tbPre.Compute("Sum(BudgetAmount)", "Subject1 = '" + Subject1 + "'") ;
row1["BudgetAmount"] = BudgetAmount1;
}
Grid1.RecordCount = dtRes.Rows.Count;
Grid1.DataSource = dtRes;
Grid1.DataBind();
}
}
#endregion
#region 导出按钮
/// 导出按钮
///
///
///
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 = System.Text.Encoding.UTF8;
this.Grid1.PageSize = this.Grid1.RecordCount;
BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
#endregion
#region 查询
///
/// 查询
///
///
///
protected void TextBox_TextChanged(object sender, EventArgs e)
{
this.BindGrid();
}
#endregion
protected void drpYear_SelectedIndexChanged(object sender, EventArgs e)
{
this.BindGrid();
}
}
}