xinjiang/SGGL/FineUIPro.Web/HSSE/CostGoods/CostLedger.aspx.cs

260 lines
11 KiB
C#
Raw 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 System;
using System.Collections.Generic;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.CostGoods
{
public partial class CostLedger : PageBase
{
#region
/// <summary>
/// 项目主键
/// </summary>
public string ProjectId
{
get
{
return (string)ViewState["ProjectId"];
}
set
{
ViewState["ProjectId"] = value;
}
}
#endregion
private static string headerStr;
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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.CurrUser.LoginProjectId)
{
this.ProjectId = Request.Params["projectId"];
}
Model.Base_Project project = BLL.ProjectService.GetProjectByProjectId(this.ProjectId);
if (project.StartDate == null || project.EndDate == null)
{
Alert.ShowInTop("请先设置项目的开始时间和结束时间!", MessageBoxIcon.Warning);
return;
}
else
{
headerStr = string.Empty;
DateTime startTime;
DateTime endTime;
DateTime monthStartTime;
DateTime monthEndTime;
int sortIndex = 1;
List<Model.Project_ProjectUnit> subUnits = BLL.ProjectUnitService.GetProjectUnitListByProjectIdUnitType(this.ProjectId, BLL.Const.ProjectUnitType_2);
DataTable dt = new DataTable();
dt.Columns.Add("R0"); //序号
dt.Columns.Add("R1"); //施工分包商
dt.Columns.Add("R2"); //HSE费用
dt.Columns.Add("R3"); //审批支付、剩余
startTime = Convert.ToDateTime(Convert.ToDateTime(project.StartDate).ToString("yyyy-MM"));
endTime = Convert.ToDateTime(Convert.ToDateTime(project.EndDate).ToString("yyyy-MM"));
string monthStr = string.Empty;
while (endTime >= startTime)
{
monthStr += startTime.ToString("yyyy-MM") + "|";
startTime = startTime.AddMonths(1);
}
if (!string.IsNullOrEmpty(monthStr))
{
monthStr = monthStr.Substring(0, monthStr.LastIndexOf("|"));
}
string[] months = monthStr.Split('|');
//如果超过15个月需要加宽GridView以保证样式
if (months.Length > 15)
{
int addNum = months.Length - 15;
this.gvCostLedger.Width = 1100 + addNum * 60;
}
string monthTitle = string.Empty;
for (int i = 0; i < months.Length; i++)
{
monthTitle += months[i] + ",";
dt.Columns.Add("M" + i);
}
if (!string.IsNullOrEmpty(monthTitle))
{
monthTitle = monthTitle.Substring(0, monthTitle.LastIndexOf(","));
}
dt.Columns.Add("合计");
headerStr += "序号#施工分包商#HSE费用(元)#步骤#审批金额";
headerStr += " " + monthTitle + "#合计";
foreach (Model.Project_ProjectUnit proUnit in subUnits)
{
var unit = BLL.UnitService.GetUnitByUnitId(proUnit.UnitId);
decimal? planCost = proUnit.PlanCostA + proUnit.PlanCostB ?? 0;
decimal planAmount = planCost ?? 0;
decimal lastCost = planAmount;
decimal totalCost = 0;
DataRow row1 = dt.NewRow();
DataRow row2 = dt.NewRow();
row1[0] = sortIndex;
row1[1] = unit.UnitName;
row1[2] = planAmount.ToString("0.00");
row1[3] = "审批支付";
row2[0] = sortIndex;
row2[1] = unit.UnitName;
row2[2] = planAmount.ToString("0.00");
row2[3] = "剩余";
int r = 4;
for (int i = 0; i < months.Length; i++)
{
DateTime month = Convert.ToDateTime(months[i] + "-01");
monthStartTime = month.AddMonths(-1).AddDays(25);
monthEndTime = month.AddDays(24);
decimal? costitem = BLL.CostManageItemService.GetCostsByUnitId(unit.UnitId, monthStartTime, monthEndTime);//分包商HSE费用申请总价
decimal? subPay = BLL.SubPayRegistrationService.GetSubPayRegistrationByUnitId(unit.UnitId, monthStartTime, monthEndTime);//分包商HSE费用投入登记
decimal? cost = null;
if (costitem != null && subPay != null)
{
cost = Convert.ToDecimal(costitem) + Convert.ToDecimal(subPay);
}
else
{
if (costitem != null)
{
cost = Convert.ToDecimal(costitem);
}
else if (subPay != null)
{
cost = Convert.ToDecimal(subPay);
}
}
if (cost != null)
{
decimal c = Convert.ToDecimal(cost);
row1[r + i] = c.ToString("0.00"); ;
totalCost += c;
if (lastCost == planAmount)
{
lastCost = planAmount - c;
}
else
{
lastCost = lastCost - c;
}
row2[r + i] = lastCost.ToString("0.00");
}
}
row1[r + months.Length] = totalCost.ToString("0.00"); ;
dt.Rows.Add(row1);
dt.Rows.Add(row2);
sortIndex++;
}
this.gvCostLedger.DataSource = dt;
this.gvCostLedger.DataBind();
}
}
}
#endregion
#region Grid创建行
protected void gvCostLedger_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
DynamicTHeaderHepler dHelper = new DynamicTHeaderHepler();
dHelper.SplitTableHeader(e.Row, headerStr);
}
}
#endregion
#region
/// <summary>
/// 在控件被绑定后激发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gvCostLedger_DataBound(object sender, EventArgs e)
{
int row1 = 1, t1 = 0, row2 = 1, t2 = 0, row0 = 1, t0 = 0;
for (int i = 0; i < this.gvCostLedger.Rows.Count - 1; i++)
{
GridViewRow gvr = this.gvCostLedger.Rows[i];
GridViewRow gvrNext = this.gvCostLedger.Rows[i + 1];
if (gvr.Cells[0].Text == gvrNext.Cells[0].Text)
{
gvrNext.Cells[0].Visible = false;
row0++;
this.gvCostLedger.Rows[t0].Cells[0].RowSpan = row0;
}
else
{
t0 = row0 + t0;
row0 = 1;
}
if (gvr.Cells[1].Text == gvrNext.Cells[1].Text)
{
gvrNext.Cells[1].Visible = false;
row1++;
this.gvCostLedger.Rows[t1].Cells[1].RowSpan = row1;
}
else
{
t1 = row1 + t1;
row1 = 1;
}
if (gvr.Cells[2].Text == gvrNext.Cells[2].Text)
{
gvrNext.Cells[2].Visible = false;
row2++;
this.gvCostLedger.Rows[t2].Cells[2].RowSpan = row2;
}
else
{
t2 = row2 + t2;
row2 = 1;
}
}
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>");
Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode("HSSE合同HSE费用及支付台账", 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.gvCostLedger.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
#endregion
}
}