xinjiang/SGGL/FineUIPro.Web/ZHGL/Environmental/ProjectChemicalReport.aspx.cs

636 lines
25 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 System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BLL;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.ZHGL.Environmental
{
public partial class ProjectChemicalReport : PageBase
{
#region
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BLL.ConstValue.InitConstValueDropDownList(this.drpMonth, ConstValue.Group_0009, false);
BLL.ConstValue.InitConstValueDropDownList(this.drpYear, ConstValue.Group_0008, false);
this.drpUnit.DataTextField = "UnitName";
drpUnit.DataValueField = "UnitId";
drpUnit.DataSource = BLL.UnitService.GetThisUnitDropDownList();
drpUnit.DataBind();
this.drpUnit.Readonly = true;
////取上个报表时间
DateTime showDate = System.DateTime.Now.AddMonths(-1);
drpMonth.SelectedValue = showDate.Month.ToString();
drpYear.SelectedValue = showDate.Year.ToString();
GetValue();
}
}
private void SetEmpty()
{
this.SimpleForm1.Title = string.Empty;
lbUnitName.Text = "填报企业:";
lbFillingDate.Text = "填报日期:";
lbDutyPerson.Text = "负责人:";
lbHandleMan.Text = string.Empty;
this.Grid1.DataSource = null;
this.Grid1.DataBind();
}
#endregion
#region
private void GetValue()
{
int year = Funs.GetNewIntOrZero(drpYear.SelectedValue);
int month = Funs.GetNewIntOrZero(drpMonth.SelectedValue);
Model.View_Environmental_ProjectChemicalReport report = Funs.DB.View_Environmental_ProjectChemicalReport.FirstOrDefault(e => e.ProjectId == this.CurrUser.LoginProjectId && e.Month == month && e.Year == year);
if (report != null)
{
string upState = string.Empty;
if (report.UpState == BLL.Const.UpState_3)
{
upState = "(已上报)";
}
else
{
upState = "(未上报)";
}
this.SimpleForm1.Title = "企业化工行业能源节约与生态环境保护汇总表" + report.MonthStr + report.YearStr + upState;
lbUnitName.Text = "填报项目:" + report.ProjectName;
if (report.FillingDate != null)
{
lbFillingDate.Text = "填报日期:" + string.Format("{0:yyyy-MM-dd}", report.FillingDate);
}
else
{
lbFillingDate.Text = "填报日期:";
}
lbDutyPerson.Text = "负责人:" + report.DutyPerson;
//if (report.HandleState == BLL.Const.HandleState_1 || report.UpState == BLL.Const.UpState_3)
//{
// this.lbHandleMan.Hidden = true;
//}
//else
//{
// this.lbHandleMan.Hidden = false;
// lbHandleMan.Text = "下一步办理人:" + report.UserName;
//}
var indexNames = ProjectChemicalReportItemService.GetIndexNames();
var units = ProjectChemicalReportItemService.GetUnits();
//之前月度合计值集合
List<Model.Environmental_ProjectChemicalReportItem> reportItems = BLL.ProjectChemicalReportItemService.GetItems(report.ChemicalReportId);
List<Model.ChemicalReportItem> items = new List<Model.ChemicalReportItem>();
foreach (var yearSumItem in reportItems)
{
Model.ChemicalReportItem item = new Model.ChemicalReportItem();
item.ChemicalReportItemId = yearSumItem.ChemicalReportItemId;
item.IndexName = indexNames.First(x => x.Value == yearSumItem.SortIndex).Text;
item.Unit = units.First(x => x.Value == yearSumItem.SortIndex).Text;
item.SortIndex = yearSumItem.SortIndex;
item.BaseNumber = yearSumItem.BaseNumber;
item.LastYearValue = yearSumItem.LastYearValue;
item.ThisYearValue = yearSumItem.ThisYearValue;
item.Rate = yearSumItem.Rate;
items.Add(item);
}
Grid1.DataSource = items;
Grid1.DataBind();
}
else
{
SetEmpty();
}
this.GetButtonPower();
}
#endregion
#region
/// <summary>
/// 关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
GetValue();
}
/// <summary>
/// 关闭导入弹出窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window2_Close(object sender, WindowCloseEventArgs e)
{
GetValue();
}
/// <summary>
/// 关闭查看审批信息弹出窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window4_Close(object sender, WindowCloseEventArgs e)
{
GetValue();
}
#endregion
#region
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
Grid1.SortDirection = e.SortDirection;
Grid1.SortField = e.SortField;
}
#endregion
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.ProjectChemicalReportMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
this.btnNew.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnEdit.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnDelete))
{
this.btnDelete.Hidden = false;
}
}
var getReport = BLL.ProjectChemicalReportService.GetChemicalReportByProjectIdAndYearAndMonth(this.CurrUser.LoginProjectId, Funs.GetNewIntOrZero(drpYear.SelectedValue), Funs.GetNewIntOrZero(drpMonth.SelectedValue));
this.btnAudit1.Hidden = true;
this.btnAudit2.Hidden = true;
if (getReport != null)
{
this.btnNew.Hidden = true;
//if (getReport.HandleMan == this.CurrUser.UserId) //当前人是下一步办理入
//{
// if (getReport.HandleState == BLL.Const.HandleState_2)
// {
// this.btnAudit1.Hidden = false;
// this.btnEdit.Hidden = true;
// }
// else if (getReport.HandleState == BLL.Const.HandleState_3)
// {
// this.btnAudit2.Hidden = false;
// this.btnEdit.Hidden = true;
// }
// else if (getReport.HandleState == BLL.Const.HandleState_4)
// {
//this.btnUpdata.Hidden = false;
// }
//}
}
}
#endregion
#region
/// <summary>
/// 增加
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnNew_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectChemicalReportSave.aspx?UnitId={0}&&Year={1}&&Months={2}", this.CurrUser.UnitId, this.drpYear.SelectedValue, this.drpMonth.SelectedValue, "编辑 - ")));
}
/// <summary>
/// 修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnEdit_Click(object sender, EventArgs e)
{
Model.Environmental_ProjectChemicalReport report = BLL.ProjectChemicalReportService.GetChemicalReportByProjectIdAndYearAndMonth(this.CurrUser.LoginProjectId, Funs.GetNewIntOrZero(drpYear.SelectedValue), Funs.GetNewIntOrZero(drpMonth.SelectedValue));
if (report != null)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectChemicalReportSave.aspx?ChemicalReportId={0}", report.ChemicalReportId, "编辑 - ")));
}
else
{
ShowNotify("所选时间无报表记录!", MessageBoxIcon.Warning);
}
}
/// <summary>
/// 审核
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAudit1_Click(object sender, EventArgs e)
{
Model.Environmental_ProjectChemicalReport report = BLL.ProjectChemicalReportService.GetChemicalReportByProjectIdAndYearAndMonth(this.CurrUser.LoginProjectId, Funs.GetNewIntOrZero(drpYear.SelectedValue), Funs.GetNewIntOrZero(drpMonth.SelectedValue));
if (report != null)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectChemicalReportSave.aspx?ChemicalReportId={0}", report.ChemicalReportId, "编辑 - ")));
}
else
{
ShowNotify("所选时间无报表记录!", MessageBoxIcon.Warning);
}
}
/// <summary>
/// 审批
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAudit2_Click(object sender, EventArgs e)
{
Model.Environmental_ProjectChemicalReport report = BLL.ProjectChemicalReportService.GetChemicalReportByProjectIdAndYearAndMonth(this.CurrUser.LoginProjectId, Funs.GetNewIntOrZero(drpYear.SelectedValue), Funs.GetNewIntOrZero(drpMonth.SelectedValue));
if (report != null)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectChemicalReportSave.aspx?ChemicalReportId={0}", report.ChemicalReportId, "编辑 - ")));
}
else
{
ShowNotify("所选时间无报表记录!", MessageBoxIcon.Warning);
}
}
/// <summary>
/// 上报
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnUpdata_Click(object sender, EventArgs e)
{
Model.Environmental_ProjectChemicalReport report = BLL.ProjectChemicalReportService.GetChemicalReportByProjectIdAndYearAndMonth(this.CurrUser.LoginProjectId, Funs.GetNewIntOrZero(drpYear.SelectedValue), Funs.GetNewIntOrZero(drpMonth.SelectedValue));
if (report != null)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ProjectChemicalReportSave.aspx?ChemicalReportId={0}&type=Updata", report.ChemicalReportId, "编辑 - ")));
}
else
{
ShowNotify("所选时间无报表记录!", MessageBoxIcon.Warning);
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDelete_Click(object sender, EventArgs e)
{
Model.Environmental_ProjectChemicalReport report = BLL.ProjectChemicalReportService.GetChemicalReportByProjectIdAndYearAndMonth(this.CurrUser.LoginProjectId, Funs.GetNewIntOrZero(drpYear.SelectedValue), Funs.GetNewIntOrZero(drpMonth.SelectedValue));
if (report != null)
{
BLL.LogService.AddSys_Log(this.CurrUser, report.Year.ToString() + "-" + report.Month.ToString(), report.ChemicalReportId, BLL.Const.ProjectChemicalReportMenuId, BLL.Const.BtnDelete);
BLL.ProjectDataFlowSetService.DeleteFlowSetByDataId(report.ChemicalReportId);
BLL.ProjectChemicalReportItemService.DeleteChemicalReportItemByChemicalReportId(report.ChemicalReportId);
BLL.ProjectChemicalReportService.DeleteChemicalReportByChemicalReportId(report.ChemicalReportId);
SetEmpty();
this.btnNew.Hidden = false;
ShowNotify("删除数据成功!", MessageBoxIcon.Success);
}
else
{
ShowNotify("所选时间无报表记录!");
}
}
#endregion
#region
/// <summary>
/// 把时间转换为文字形式
/// </summary>
/// <param name="state"></param>
/// <returns></returns>
protected string ConvertCompileDate(object CompileDate)
{
if (CompileDate != null)
{
return string.Format("{0:yyyy-MM-dd}", CompileDate);
}
return "";
}
/// <summary>
/// 把时间转换为文字形式
/// </summary>
/// <param name="state"></param>
/// <returns></returns>
protected string ConvertDate(object ChemicalReportId)
{
if (ChemicalReportId != null)
{
Model.Environmental_ProjectChemicalReport report = BLL.ProjectChemicalReportService.GetChemicalReportByChemicalReportId(ChemicalReportId.ToString());
if (report != null)
{
return report.Year + "年" + report.Month + "月";
}
}
return "";
}
#endregion
#region
/// <summary>
/// 单位下拉框联动事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e)
{
var units = BLL.UnitService.GetUnitDropDownList();
if (units != null && !string.IsNullOrEmpty(this.drpUnit.SelectedText))
{
var unit = units.FirstOrDefault(x => x.UnitName == this.drpUnit.SelectedText);
if (unit != null)
{
drpUnit.SelectedValue = unit.UnitId;
}
}
GetValue();
}
#endregion
#region /
/// <summary>
/// 前一个月
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void BtnBulletLeft_Click(object sender, EventArgs e)
{
SetMonthChange("-");
}
/// <summary>
/// 后一个月
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void BulletRight_Click(object sender, EventArgs e)
{
SetMonthChange("+");
}
/// <summary>
/// 月份加减变化
/// </summary>
/// <param name="type"></param>
private void SetMonthChange(string type)
{
DateTime? nowDate = Funs.GetNewDateTime(this.drpYear.SelectedValue + "-" + this.drpMonth.SelectedValue);
if (nowDate.HasValue)
{
DateTime showDate = new DateTime();
if (type == "+")
{
showDate = nowDate.Value.AddMonths(1);
}
else
{
showDate = nowDate.Value.AddMonths(-1);
}
this.drpYear.SelectedValue = showDate.Year.ToString();
drpMonth.SelectedValue = showDate.Month.ToString();
///值变化
GetValue();
}
}
#endregion
#region
/// <summary>
/// 查看审批信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSee_Click(object sender, EventArgs e)
{
Model.Environmental_ProjectChemicalReport report = BLL.ProjectChemicalReportService.GetChemicalReportByProjectIdAndYearAndMonth(this.CurrUser.LoginProjectId, Funs.GetNewIntOrZero(drpYear.SelectedValue), Funs.GetNewIntOrZero(drpMonth.SelectedValue));
if (report != null)
{
PageContext.RegisterStartupScript(Window4.GetShowReference(String.Format("ReportAuditSee.aspx?Id={0}", report.ChemicalReportId, "查看 - ")));
}
else
{
ShowNotify("所选月份无记录!", MessageBoxIcon.Warning);
}
}
#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;
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
MultiHeaderTable mht = new MultiHeaderTable();
mht.ResolveMultiHeaderTable(Grid1.Columns);
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;\">");
foreach (List<object[]> rows in mht.MultiTable)
{
sb.Append("<tr>");
foreach (object[] cell in rows)
{
int rowspan = Convert.ToInt32(cell[0]);
int colspan = Convert.ToInt32(cell[1]);
GridColumn column = cell[2] as GridColumn;
sb.AppendFormat("<th{0}{1}{2}>{3}</th>",
rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "",
colspan != 1 ? " colspan=\"" + colspan + "\"" : "",
colspan != 1 ? " style=\"text-align:center;\"" : "",
column.HeaderText);
}
sb.Append("</tr>");
}
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (GridColumn column in mht.Columns)
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as AspNet.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#region
/// <summary>
/// 多表头处理
/// </summary>
public class MultiHeaderTable
{
// 包含 rowspancolspan 的多表头,方便生成 HTML 的 table 标签
public List<List<object[]>> MultiTable = new List<List<object[]>>();
// 最终渲染的列数组
public List<GridColumn> Columns = new List<GridColumn>();
public void ResolveMultiHeaderTable(GridColumnCollection columns)
{
List<object[]> row = new List<object[]>();
foreach (GridColumn column in columns)
{
object[] cell = new object[4];
cell[0] = 1; // rowspan
cell[1] = 1; // colspan
cell[2] = column;
cell[3] = null;
row.Add(cell);
}
ResolveMultiTable(row, 0);
ResolveColumns(row);
}
private void ResolveColumns(List<object[]> row)
{
foreach (object[] cell in row)
{
GroupField groupField = cell[2] as GroupField;
if (groupField != null && groupField.Columns.Count > 0)
{
List<object[]> subrow = new List<object[]>();
foreach (GridColumn column in groupField.Columns)
{
subrow.Add(new object[]
{
1,
1,
column,
groupField
});
}
ResolveColumns(subrow);
}
else
{
Columns.Add(cell[2] as GridColumn);
}
}
}
private void ResolveMultiTable(List<object[]> row, int level)
{
List<object[]> nextrow = new List<object[]>();
foreach (object[] cell in row)
{
GroupField groupField = cell[2] as GroupField;
if (groupField != null && groupField.Columns.Count > 0)
{
// 如果当前列包含子列,则更改当前列的 colspan以及增加父列向上递归的colspan
cell[1] = Convert.ToInt32(groupField.Columns.Count);
PlusColspan(level - 1, cell[3] as GridColumn, groupField.Columns.Count - 1);
foreach (GridColumn column in groupField.Columns)
{
nextrow.Add(new object[]
{
1,
1,
column,
groupField
});
}
}
}
MultiTable.Add(row);
// 如果当前下一行,则增加上一行(向上递归)中没有子列的列的 rowspan
if (nextrow.Count > 0)
{
PlusRowspan(level);
ResolveMultiTable(nextrow, level + 1);
}
}
private void PlusRowspan(int level)
{
if (level < 0)
{
return;
}
foreach (object[] cells in MultiTable[level])
{
GroupField groupField = cells[2] as GroupField;
if (groupField != null && groupField.Columns.Count > 0)
{
// ...
}
else
{
cells[0] = Convert.ToInt32(cells[0]) + 1;
}
}
PlusRowspan(level - 1);
}
private void PlusColspan(int level, GridColumn parent, int plusCount)
{
if (level < 0)
{
return;
}
foreach (object[] cells in MultiTable[level])
{
GridColumn column = cells[2] as GridColumn;
if (column == parent)
{
cells[1] = Convert.ToInt32(cells[1]) + plusCount;
PlusColspan(level - 1, cells[3] as GridColumn, plusCount);
}
}
}
}
#endregion
#endregion
}
}