SGGL_SHJ/SGGL/FineUIPro.Web/HSSE/CostGoods/CostSummaryUnit.aspx.cs

371 lines
13 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace FineUIPro.Web.HSSE.CostGoods
{
public partial class CostSummaryUnit : PageBase
{
/// <summary>
/// 项目id
/// </summary>
public string ProjectId
{
get
{
return (string)ViewState["ProjectId"];
}
set
{
ViewState["ProjectId"] = value;
}
}
#region Page_Init
// 注意动态创建的代码需要放置于Page_Init不是Page_Load这样每次构造页面时都会执行
protected void Page_Init(object sender, EventArgs e)
{
InitUnitGrid();
}
protected static List<Model.Base_Unit> getUnit = new List<Model.Base_Unit>();
protected static List<Model.Base_Unit> getSUnit = new List<Model.Base_Unit>();
#region
private void InitUnitGrid()
{
FineUIPro.BoundField bf;
FineUIPro.GroupField gr;
bf = new FineUIPro.BoundField();
bf.DataField = "Id";
bf.DataFormatString = "{0}";
bf.HeaderText = "编号";
bf.Width = 60;
bf.Hidden = true;
Grid1.Columns.Add(bf);
bf = new FineUIPro.BoundField();
bf.DataField = "SupCostTypeName";
bf.DataFormatString = "{0}";
bf.HeaderText = "类别名称";
bf.ColumnID = "GroupB";
bf.Width = 90;
bf.HeaderTextAlign = TextAlign.Center;
Grid1.Columns.Add(bf);
bf = new FineUIPro.BoundField();
bf.DataField = "CostTypeName";
bf.DataFormatString = "{0}";
bf.HeaderText = "分项名称";
bf.Width = 150;
bf.HeaderTextAlign = TextAlign.Center;
Grid1.Columns.Add(bf);
this.ProjectId = this.ProjectId ?? this.CurrUser.LoginProjectId;
getUnit = (from x in Funs.DB.Project_ProjectUnit
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.ProjectId && x.UnitType == Const.ProjectUnitType_1
select y).ToList();
foreach (var item in getUnit)
{
gr = new FineUIPro.GroupField();
gr.HeaderText = item.UnitName + "(元)";
gr.HeaderTextAlign = TextAlign.Center;
bf = new FineUIPro.BoundField();
bf.DataField = item.UnitId + "a";
bf.DataFormatString = "{0}";
bf.HeaderText = "计划";
bf.Width = 100;
gr.Columns.Add(bf);
bf = new FineUIPro.BoundField();
bf.DataField = item.UnitId + "b";
bf.DataFormatString = "{0}";
bf.HeaderText = "申请";
bf.Width = 100;
gr.Columns.Add(bf);
Grid1.Columns.Add(gr);
}
getSUnit = (from x in Funs.DB.Project_ProjectUnit
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.ProjectId && x.UnitType == Const.ProjectUnitType_2
select y).ToList();
foreach (var item in getSUnit)
{
gr = new FineUIPro.GroupField();
gr.HeaderText = item.UnitName + "(元)";
gr.HeaderTextAlign = TextAlign.Center;
bf = new FineUIPro.BoundField();
bf.DataField = item.UnitId + "a";
bf.DataFormatString = "{0}";
bf.HeaderText = "计划";
bf.HeaderTextAlign = TextAlign.Center;
bf.Width = 100;
gr.Columns.Add(bf);
bf = new FineUIPro.BoundField();
bf.DataField = item.UnitId + "b";
bf.DataFormatString = "{0}";
bf.HeaderText = "申请";
bf.HeaderTextAlign = TextAlign.Center;
bf.Width = 100;
gr.Columns.Add(bf);
Grid1.Columns.Add(gr);
}
gr = new FineUIPro.GroupField();
gr.HeaderText = "合计(元)";
gr.HeaderTextAlign = TextAlign.Center;
bf = new FineUIPro.BoundField();
bf.DataField = "SumC";
bf.DataFormatString = "{0}";
bf.HeaderText = "计划";
bf.Width = 90;
bf.HeaderTextAlign = TextAlign.Center;
gr.Columns.Add(bf);
bf = new FineUIPro.BoundField();
bf.DataField = "SumD";
bf.DataFormatString = "{0}";
bf.HeaderText = "申请";
bf.Width = 90;
bf.HeaderTextAlign = TextAlign.Center;
gr.Columns.Add(bf);
Grid1.Columns.Add(gr);
Grid1.DataKeyNames = new string[] { "Id", "CostTypeName" };
if (Grid1.Columns.Count() > 9)
{
Grid1.ForceFit = false;
}
}
#endregion
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ProjectId = this.CurrUser.LoginProjectId;
if (!string.IsNullOrEmpty(Request.Params["projectId"]) && Request.Params["projectId"] != this.ProjectId)
{
this.ProjectId = Request.Params["projectId"];
}
Funs.DropDownPageSize(this.ddlPageSize);
LoadData();
}
}
/// <summary>
/// 获取数据
/// </summary>
private void LoadData()
{
DataTable tb = GetDataTable(); //this.LINQToDataTable(getData.ToList());
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
/// <summary>
/// 获取模拟树表格
/// </summary>
/// <returns></returns>
public DataTable GetDataTable()
{
DataTable table = new DataTable();
table.Columns.Add(new DataColumn("Id", typeof(string)));
table.Columns.Add(new DataColumn("SupCostTypeName", typeof(string)));
table.Columns.Add(new DataColumn("CostTypeName", typeof(string)));
foreach (var item in getUnit)
{
table.Columns.Add(new DataColumn(item.UnitId + "a", typeof(string)));
table.Columns.Add(new DataColumn(item.UnitId + "b", typeof(string)));
}
foreach (var item in getSUnit)
{
table.Columns.Add(new DataColumn(item.UnitId + "a", typeof(string)));
table.Columns.Add(new DataColumn(item.UnitId + "b", typeof(string)));
}
table.Columns.Add(new DataColumn("SumC", typeof(String)));
table.Columns.Add(new DataColumn("SumD", typeof(String)));
if (!string.IsNullOrEmpty(this.txtYear.Text))
{
int year = Funs.GetNewIntOrZero(this.txtYear.Text);
SetTable(table, year);
}
else
{
SetTable(table, null);
}
return table;
}
/// <summary>
/// 设置table
/// </summary>
/// <param name="table"></param>
/// <param name="year"></param>
private void SetTable(DataTable table, int? year)
{
var getDetail = from x in Funs.DB.CostGoods_ExpenseDetail
join y in Funs.DB.CostGoods_Expense on x.ExpenseId equals y.ExpenseId
where y.ProjectId == this.ProjectId && (!year.HasValue || y.Year == year)
orderby y.Year, x.SupSortIndex, x.SortIndex
select new { x.ExpenseDetailId, x.ExpenseId, y.UnitId, y.Year, x.SupCostTypeId, x.SupCostTypeName, x.SupSortIndex, x.CostType, x.CostTypeName, x.SortIndex, x.CostMoney };
var getCostManageItem = from x in Funs.DB.CostGoods_CostManageItem
join y in Funs.DB.CostGoods_CostManage on x.CostManageId equals y.CostManageId
where y.ProjectId == this.ProjectId && (!year.HasValue || y.CostManageDate.Value.Year == year) && y.States == Const.State_2
select new { x.CostManageId, x.CostManageItemId, y.UnitId, Year = y.CostManageDate.Value.Year, x.SupCostTypeId, x.CostTypeId, x.PriceMoney };
var getType = (from x in getDetail select new { x.SupSortIndex, x.SortIndex, x.CostType }).Distinct();
foreach (var item in getType)
{
decimal sumC = 0;
decimal sumCD = 0;
var getD = getDetail.FirstOrDefault(x => x.CostType == item.CostType);
if (getD != null)
{
DataRow row = table.NewRow();
row[0] = getD.ExpenseDetailId + "#" + getD.ExpenseId;
row[1] = getD.SupCostTypeName;
row[2] = getD.CostTypeName;
int r = 3;
foreach (var uitem in getUnit)
{
row[r] = 0.00;
var getD1 = getDetail.Where(x => x.UnitId == uitem.UnitId && x.CostType == item.CostType);
if (getD1.Count() > 0)
{
decimal c = getD1.Sum(X => X.CostMoney ?? 0);
row[r] = c;
sumC += c;
}
row[r + 1] = 0.00;
var getCD = getCostManageItem.Where(x => x.UnitId == uitem.UnitId && x.CostTypeId == item.CostType);
if (getCD.Count() > 0)
{
decimal d = getCD.Sum(x => x.PriceMoney ?? 0);
row[r + 1] = d;
sumCD += d;
}
r = r + 2;
}
foreach (var suitem in getSUnit)
{
row[r] = 0.00;
var getD1 = getDetail.Where(x => x.UnitId == suitem.UnitId && x.CostType == item.CostType);
if (getD1.Count() > 0)
{
decimal c = getD1.Sum(X => X.CostMoney ?? 0);
row[r] = c;
sumC += c;
}
row[r + 1] = 0.00;
var getCD = getCostManageItem.Where(x => x.UnitId == suitem.UnitId && x.CostTypeId == item.CostType);
if (getCD.Count() > 0)
{
decimal d = getCD.Sum(x => x.PriceMoney ?? 0);
row[r + 1] = d;
sumCD += d;
}
r = r + 2;
}
row[r] = sumC;
row[r + 1] = sumCD;
table.Rows.Add(row);
}
}
}
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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;
Response.Write(GetGridTableHtml(this.Grid1));
Response.End();
}
#endregion
#region
/// <summary>
/// 改变索引事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
LoadData();
}
/// <summary>
/// 分页下拉选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
this.Grid1.PageSize = Convert.ToInt32(this.ddlPageSize.SelectedValue);
LoadData();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
LoadData();
}
#endregion
/// <summary>
/// 单位查询事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e)
{
this.LoadData();
}
protected void txtYear_ClearIconClick(object sender, EventArgs e)
{
this.txtYear.Text = string.Empty;
this.LoadData();
}
}
}