SGGL_SHJ/SGGL/FineUIPro.Web/PHTGL/ContractCompile/ContractTrackProgressDetect...

646 lines
26 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 BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.PHTGL.ContractCompile
{
public partial class ContractTrackProgressDetectionGrid : PageBase
{
#region Page_Init
// 注意动态创建的代码需要放置于Page_Init不是Page_Load这样每次构造页面时都会执行
protected void Page_Init(object sender, EventArgs e)
{
InitGrid();
}
public DataTable GridTable=new DataTable();
private void InitGrid()
{
FineUIPro.BoundField bf;
FineUIPro.RenderField rf;
FineUIPro.TextBox txTextBox;
ContractId = Request.Params["ContractId"];
GridTable.Columns.Add("Id");
ListItem[] list = new ListItem[8];
list[0] = new ListItem("主项号", "MainItemCode");
list[1] = new ListItem("主项名称", "MainItemName");
list[2] = new ListItem("专业工程名称", "MajorName");
list[3] = new ListItem("专业代码", "MajorCode");
list[4] = new ListItem("分部工程", "SubProject");
list[5] = new ListItem("分项工程", "SubItemProject");
list[6] = new ListItem("项目编码", "ProjectCode");
list[7] = new ListItem("项目名称", "ProjectName");
foreach (var item in list)
{
bf = new FineUIPro.BoundField();
bf.ColumnID = item.Value;
bf.DataField = item.Value;
bf.HeaderText = item.Text;
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
Grid1.Columns.Add(bf);
GridTable.Columns.Add(item.Value);
}
if (!string.IsNullOrEmpty(ContractId))
{
Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack();
queryContractTrack.ProjectId = this.CurrUser.LoginProjectId;
queryContractTrack.ContractId = this.ContractId;
var modelContractTracks = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack);
if (modelContractTracks.Count==0) return;
Model.PHTGL_ContractTrackProgress table = new Model.PHTGL_ContractTrackProgress();
table.ContractTrackId = modelContractTracks[0].Id;
var tb = BLL.PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByModle(table);
foreach (var item in tb)
{
//string date = item.Date.Replace("-", "");
string date = item.Date+"#" ;
GroupField p = new GroupField();
p.HeaderText = item.Date;
p.TextAlign = TextAlign.Center;
GroupField p1 = new GroupField();
p1.HeaderText = "当月进展情况";
p1.TextAlign = TextAlign.Center;
GroupField p1BCWS = new GroupField();
p1BCWS.HeaderText = "BCWS";
p1BCWS.TextAlign = TextAlign.Center;
GroupField p1ACWP = new GroupField();
p1ACWP.HeaderText = "ACWP";
p1ACWP.TextAlign = TextAlign.Center;
GroupField p2 = new GroupField();
p2.HeaderText = "累计进展情况";
p2.TextAlign = TextAlign.Center;
GroupField p2BCWS = new GroupField();
p2BCWS.HeaderText = "BCWS";
p2BCWS.TextAlign = TextAlign.Center;
GroupField p2ACWP = new GroupField();
p2ACWP.HeaderText = "ACWP";
p2ACWP.TextAlign = TextAlign.Center;
#region
#region BCWS
txTextBox = new FineUIPro.TextBox();
txTextBox.ID = "txt" +date+ "BCWS_Quantity";
rf = new RenderField();
rf.ColumnID = date+"BCWS_Quantity";
rf.DataField = date+"BCWS_Quantity";
rf.HeaderText = "工程量";
rf.TextAlign = FineUIPro.TextAlign.Left;
rf.Editor.Add(txTextBox);
p1BCWS.Columns.Add(rf);
GridTable.Columns.Add(date + "BCWS_Quantity");
bf = new FineUIPro.BoundField();
bf.ColumnID = date + "BCWS_OutputValue";
bf.DataField = date + "BCWS_OutputValue";
bf.HeaderText = "产值(元)";
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
p1BCWS.Columns.Add(bf);
GridTable.Columns.Add(date + "BCWS_OutputValue");
bf = new FineUIPro.BoundField();
bf.ColumnID = date + "BCWS_Percentage";
bf.DataField = date + "BCWS_Percentage";
bf.HeaderText = "百分比/%";
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
p1BCWS.Columns.Add(bf);
GridTable.Columns.Add(date + "BCWS_Percentage");
#endregion
#region ACWP
txTextBox = new FineUIPro.TextBox();
txTextBox.ID = "txt" + date + "ACWP_Quantity";
rf = new RenderField();
rf.ColumnID = date + "ACWP_Quantity";
rf.DataField = date + "ACWP_Quantity";
rf.HeaderText = "工程量";
rf.TextAlign = FineUIPro.TextAlign.Left;
rf.Editor.Add(txTextBox);
p1ACWP.Columns.Add(rf);
GridTable.Columns.Add(date + "ACWP_Quantity");
bf = new FineUIPro.BoundField();
bf.ColumnID = date + "ACWP_OutputValue";
bf.DataField = date + "ACWP_OutputValue";
bf.HeaderText = "产值(元)";
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
p1ACWP.Columns.Add(bf);
GridTable.Columns.Add(date + "ACWP_OutputValue");
bf = new FineUIPro.BoundField();
bf.ColumnID = date + "ACWP_Percentage";
bf.DataField = date + "ACWP_Percentage";
bf.HeaderText = "百分比/%";
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
p1ACWP.Columns.Add(bf);
GridTable.Columns.Add(date + "ACWP_Percentage");
#endregion
#endregion
#region
#region BCWS
txTextBox = new FineUIPro.TextBox();
txTextBox.ID = "txt" + date + "SumBCWS_Quantity";
rf = new RenderField();
rf.ColumnID = date + "SumBCWS_Quantity";
rf.DataField = date + "SumBCWS_Quantity";
rf.HeaderText = "工程量";
rf.TextAlign = FineUIPro.TextAlign.Left;
rf.Editor.Add(txTextBox);
p2BCWS.Columns.Add(rf);
GridTable.Columns.Add(date + "SumBCWS_Quantity");
bf = new FineUIPro.BoundField();
bf.ColumnID = date + "SumBCWS_OutputValue";
bf.DataField = date + "SumBCWS_OutputValue";
bf.HeaderText = "产值(元)";
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
p2BCWS.Columns.Add(bf);
GridTable.Columns.Add(date + "SumBCWS_OutputValue");
bf = new FineUIPro.BoundField();
bf.ColumnID = date + "SumBCWS_Percentage";
bf.DataField = date + "SumBCWS_Percentage";
bf.HeaderText = "百分比/%";
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
p2BCWS.Columns.Add(bf);
GridTable.Columns.Add(date + "SumBCWS_Percentage");
#endregion
#region ACWP
txTextBox = new FineUIPro.TextBox();
txTextBox.ID = "txt" + date + "SumACWP_Quantity";
rf = new RenderField();
rf.ColumnID = date + "SumACWP_Quantity";
rf.DataField = date + "SumACWP_Quantity";
rf.HeaderText = "工程量";
rf.TextAlign = FineUIPro.TextAlign.Left;
rf.Editor.Add(txTextBox);
p2ACWP.Columns.Add(rf);
GridTable.Columns.Add(date + "SumACWP_Quantity");
bf = new FineUIPro.BoundField();
bf.ColumnID = date + "SumACWP_OutputValue";
bf.DataField = date + "SumACWP_OutputValue";
bf.HeaderText = "产值(元)";
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
p2ACWP.Columns.Add(bf);
GridTable.Columns.Add(date + "SumACWP_OutputValue");
bf = new FineUIPro.BoundField();
bf.ColumnID = date + "SumACWP_Percentage";
bf.DataField = date + "SumACWP_Percentage";
bf.HeaderText = "百分比/%";
bf.HeaderTextAlign = TextAlign.Center;
bf.TextAlign = TextAlign.Center;
p2ACWP.Columns.Add(bf);
GridTable.Columns.Add(date + "SumACWP_Percentage");
#endregion
#endregion
p1.Columns.Add(p1BCWS);
p1.Columns.Add(p1ACWP);
p2.Columns.Add(p2BCWS);
p2.Columns.Add(p2ACWP);
p.Columns.Add(p1);
p.Columns.Add(p2);
Grid1.Columns.Add(p);
}
}
}
#endregion
public string ContractId
{
get => (string)ViewState["ContractId"];
set => ViewState["ContractId"] = value;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.GetButtonPower();
// 绑定表格
this.BindGrid();
}
}
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
if (!string .IsNullOrEmpty(ContractId))
{
DataRow row;
Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack();
queryContractTrack.ProjectId = this.CurrUser.LoginProjectId;
queryContractTrack.ContractId = this.ContractId;
var modelContractTracks = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack);
foreach (var item in modelContractTracks)
{
row= GridTable.NewRow();
row["Id"] = item.Id;
row["MainItemCode"] = item.MainItemCode;
row["MainItemName"] = item.MainItemName;
row["MajorName"] = item.MajorName;
row["MajorCode"] = item.MajorCode;
row["SubProject"] = item.SubProject;
row["SubItemProject"] = item.SubItemProject;
row["ProjectCode"] = item.ProjectCode;
row["ProjectName"] = item.ProjectName;
Model.PHTGL_ContractTrackProgress qContractTrackProgress = new Model.PHTGL_ContractTrackProgress();
qContractTrackProgress.ContractTrackId = item.Id;
var modelContractTrackProgresses = BLL.PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByModle(qContractTrackProgress);
foreach (var detail in modelContractTrackProgresses)
{
// var date=detail.Date.Replace("-", "");
var date=detail.Date + "#";
row[date+ "BCWS_Quantity"] = detail.BCWS_Quantity;
row[date+ "BCWS_OutputValue"] = detail.BCWS_OutputValue;
row[date+ "BCWS_Percentage"] = detail.BCWS_Percentage;
row[date+ "ACWP_Quantity"] = detail.ACWP_Quantity;
row[date+ "ACWP_OutputValue"] = detail.ACWP_OutputValue;
row[date+ "ACWP_Percentage"] = detail.ACWP_Percentage;
var SumModel = PhtglContracttrackprogressService.GetSumProgress(detail.ContractTrackProgressId);
row[date + "SumBCWS_Quantity"] = SumModel.BCWS_Quantity;
row[date + "SumBCWS_OutputValue"] = SumModel.BCWS_OutputValue;
row[date + "SumBCWS_Percentage"] = SumModel.BCWS_Percentage;
row[date + "SumACWP_Quantity"] = SumModel.ACWP_Quantity;
row[date + "SumACWP_OutputValue"] = SumModel.ACWP_OutputValue;
row[date + "SumACWP_Percentage"] = SumModel.ACWP_Percentage;
}
GridTable.Rows.Add(row);
}
Grid1.DataSource = GridTable;
Grid1.DataBind();
}
}
protected void Grid1_OnRowDataBound(object sender, GridRowEventArgs e)
{
if (!string.IsNullOrEmpty(ContractId))
{
Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack();
queryContractTrack.ProjectId = this.CurrUser.LoginProjectId;
queryContractTrack.ContractId = this.ContractId;
var modelContractTracks = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack);
foreach (var item in modelContractTracks)
{
Model.PHTGL_ContractTrackProgress qContractTrackProgress = new Model.PHTGL_ContractTrackProgress();
qContractTrackProgress.ContractTrackId = item.Id;
var modelContractTrackProgresses = BLL.PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByModle(qContractTrackProgress);
foreach (var detail in modelContractTrackProgresses)
{
var date = detail.Date + "#";
RenderField rfRenderField1 = Grid1.FindColumn(date + "BCWS_Quantity") as RenderField;
BoundField bf1 = Grid1.FindColumn(date + "BCWS_OutputValue") as BoundField;
BoundField bf2 = Grid1.FindColumn(date + "BCWS_Percentage") as BoundField;
e.CellAttributes[rfRenderField1.ColumnIndex]["data-color"] = "color1";
e.CellAttributes[bf1.ColumnIndex]["data-color"] = "color1";
e.CellAttributes[bf2.ColumnIndex]["data-color"] = "color1";
RenderField rfRenderField2 = Grid1.FindColumn(date + "SumBCWS_Quantity") as RenderField;
BoundField bf3 = Grid1.FindColumn(date + "SumBCWS_OutputValue") as BoundField;
BoundField bf4 = Grid1.FindColumn(date + "SumBCWS_Percentage") as BoundField;
e.CellAttributes[rfRenderField2.ColumnIndex]["data-color"] = "color1";
e.CellAttributes[bf3.ColumnIndex]["data-color"] = "color1";
e.CellAttributes[bf4.ColumnIndex]["data-color"] = "color1";
}
}
}
}
#endregion
#region GV
/// <summary>
/// 过滤表头
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//protected void Grid1_FilterChange(object sender, EventArgs e)
//{
// this.BindGrid();
//}
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.Grid1.PageIndex = e.NewPageIndex;
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.Grid1.SortDirection = e.SortDirection;
this.Grid1.SortField = e.SortField;
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 编辑按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnEdit_Click(object sender, EventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
string ID = Grid1.SelectedRowID;
var model = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackById(ID);
if (model != null) ///已上报时不能删除
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ContractTrackEdit.aspx?Id={0}", ID, "编辑 - ")));
}
}
/// <summary>
/// Grid行双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
this.btnEdit_Click(null, null);
}
protected void btnSave_OnClick(object sender, EventArgs e)
{
JArray EditorArr = Grid1.GetMergedData();
if (EditorArr.Count > 0)
{
for (int i = 0; i < EditorArr.Count; i++)
{
JObject objects = (JObject)EditorArr[i];
var listfiled = objects["values"].ToList();
var Id = objects["id"].ToString();
var model = BLL.PhtglContractTrackService.GetPHTGL_ContractTrackById(Id);
if (model!=null)
{
foreach (var item in listfiled) //遍历行中的字段
{
var b = item;
var txtname = b.First.Path.Substring(b.First.Path.LastIndexOf('.') + 1);
var txtvalue = b.First.Value<string>();
string date = txtname.Split('#')[0].ToString();
string filed = txtname.Split('#')[1].ToString();
var modelContractTrackProgress = PhtglContracttrackprogressService.GetPHTGL_ContractTrackProgressByTrackIdAndDate(Id, date);
if (modelContractTrackProgress!=null)
{
switch (filed)
{
case "ACWP_Quantity":
modelContractTrackProgress.ACWP_Quantity = Funs.GetNewDecimalOrZero(txtvalue) ;
break;
case "BCWS_Quantity":
modelContractTrackProgress.BCWS_Quantity = Funs.GetNewDecimalOrZero(txtvalue);
break;
}
}
PhtglContracttrackprogressService.UpdatePHTGL_ContractTrackProgress(modelContractTrackProgress);
}
}
}
}
CheckProgressd();
BindGrid();
}
/// <summary>
/// 修改产值/百分比
/// </summary>
private void CheckProgressd()
{
if (!string.IsNullOrEmpty(ContractId))
{
Model.PHTGL_ContractTrack queryContractTrack = new Model.PHTGL_ContractTrack();
queryContractTrack.ProjectId = this.CurrUser.LoginProjectId;
queryContractTrack.ContractId = this.ContractId;
var modelContractTracks =
BLL.PhtglContractTrackService.GetPHTGL_ContractTrackByModle(queryContractTrack);
foreach (var item in modelContractTracks)
{
PhtglContracttrackprogressService.CheckProgressByContractTrackId(item.Id);
}
}
}
protected void btnQuery_OnClick(object sender, EventArgs e)
{
BindGrid();
}
protected void btnGetChart_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(ContractId))
{
var model = ContractService.GetContractById(ContractId);
if (model != null)
{
PageContext.RegisterStartupScript(
Window2.GetShowReference(string.Format("ContractTrackProgressChart.aspx?ContractId={0}", model.ContractId, "图表 - ")));
}
}
else
{
ShowNotify("请选择施工分包合同", MessageBoxIcon.Question);
}
}
#endregion
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, BLL.Const.PHTGL_ContractTrackProgressDetectionMenuId);
if (buttonList.Count > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
//this.btnNew.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
// this.btnMenuEdit.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnDelete))
{
// this.btnMenuDelete.Hidden = false;
}
}
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#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 = 500;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
sb.AppendFormat("<td>{0}</td>", column.HeaderText);
}
sb.Append("</tr>");
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
}
}