using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.HiddenInspection
{
public partial class RishAnalysis : PageBase
{
#region 定义项
///
/// 项目id
///
public string ProjectId
{
get
{
return (string)ViewState["ProjectId"];
}
set
{
ViewState["ProjectId"] = value;
}
}
#endregion
#region 加载页面
///
/// 加载页面
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Funs.DropDownPageSize(this.ddlPageSize);
ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
this.txtEndTime.Text = DateTime.Now.ToString("yyyy-MM-dd");
this.txtStartTime.Text = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
this.ProjectId = this.CurrUser.LoginProjectId;
ProjectService.InitProjectDropDownList(this.drpProject, false);
this.drpProject.SelectedValue = this.ProjectId;
this.drpProject.Enabled = false;
UnitService.InitUnitDropDownList(this.drpUnit, this.ProjectId, true);
BindGrid();
}
this.AnalyseData();
}
///
/// 绑定数据
///
private void BindGrid()
{
var getDatas = DataStatisticsService.HazardRegisterStatistics(this.drpProject.SelectedValue, this.drpUnit.SelectedValue, Funs.GetNewDateTime(this.txtStartTime.Text), Funs.GetNewDateTime(this.txtEndTime.Text));
DataTable tb = this.GetPagedDataTable(Grid1, getDatas);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
#endregion
#region 查询
///
/// 查询
///
///
///
protected void TextBox_TextChanged(object sender, EventArgs e)
{
this.BindGrid();
}
#endregion
#region 排序、分页、关闭窗口
///
/// 分页
///
///
///
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
///
/// 排序
///
///
///
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
BindGrid();
}
///
/// 分页显示条数下拉框
///
///
///
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
BindGrid();
}
#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("HSE巡检统计" + 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();
}
///
/// 导出方法
///
///
///
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("");
sb.Append("
");
sb.Append("");
foreach (GridColumn column in grid.Columns)
{
sb.AppendFormat("{0} | ", column.HeaderText);
}
sb.Append("
");
foreach (GridRow row in grid.Rows)
{
sb.Append("");
foreach (GridColumn column in grid.Columns)
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfPageIndex")
{
html = (row.FindControl("lblPageIndex") as AspNet.Label).Text;
}else if(column.ColumnIndex == 6)
{
html = (row.FindControl("DataCountRate") as AspNet.Label).Text;
}
sb.AppendFormat("{0} | ", html);
}
sb.Append("
");
}
sb.Append("
");
return sb.ToString();
}
#endregion
protected string ConvertDataCountRate(object dataCountRate)
{
string res = string.Empty;
if (dataCountRate != null)
{
res = ((float)dataCountRate).ToString("0.00");
}
return res;
}
#region 统计
///
/// 统计分析
///
///
///
protected void BtnAnalyse_Click(object sender, EventArgs e)
{
this.AnalyseData();
PageContext.RegisterStartupScript(@" setTimeout(function () { rendChart(" + legend + "," + xAxis + "," + series + ");},1000); ");
}
public string legend = "[]";
public string xAxis = "[]";
public string series = "[]";
///
/// 统计方法
///
private void AnalyseData()
{
if (this.rblState.SelectedValue == "0")
{
string strSql = @" select u.UnitId,u.unitName,
count(*) as allnum,
Sum(case when States= 1 or States is null then 1 else 0 end) as todo,
Sum(case when States= 3 or States =2 then 1 else 0 end) as finish
from HSSE_Hazard_HazardRegister r left join Base_Unit u on r.ResponsibleUnit = u.UnitId
where u.UnitId is not null and ProjectId=@ProjectId and States != '4' and ProblemTypes = '1'
";
if (!string.IsNullOrEmpty(this.txtStartRectificationTime.Text.Trim()))
{
strSql += " and CheckTime >='" + this.txtStartRectificationTime.Text.Trim() + "' ";
}
if (!string.IsNullOrEmpty(this.txtEndRectificationTime.Text.Trim()))
{
strSql += " and CheckTime <'" + DateTime.Parse(this.txtEndRectificationTime.Text.Trim()).AddDays(1).ToString("yyyy-MM-dd") + "' ";
}
strSql += " group by u.UnitId,u.unitName ";
List listStr = new List();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
legend = "[\"全部\", \"待整改\", \"已整改\"]";
xAxis = "[";
string series1 = "[";
string series2 = "[";
string series3 = "[";
if (tb != null)
{
foreach (DataRow dr in tb.Rows)
{
xAxis += "\"" + dr["unitName"].ToString() + "\",";
series1 += "" + dr["allnum"].ToString() + ",";
series2 += "" + dr["todo"].ToString() + ",";
series3 += "" + dr["finish"].ToString() + ",";
}
}
xAxis = xAxis.TrimEnd(',');
xAxis += "]";
series1 = series1.TrimEnd(',');
series1 += "]";
series2 = series2.TrimEnd(',');
series2 += "]";
series3 = series3.TrimEnd(',');
series3 += "]";
series = @"[{
name: '全部',
type: 'bar',
label: {
show: true,
position: 'top'
},
barWidth: 20,
emphasis: {
focus: 'series'
},
data: " + series1 + @"
},
{
name: '待整改',
type: 'bar',
barWidth: 20,
label: {
show: true,
position: 'top'
},
emphasis: {
focus: 'series'
},
data: " + series2 + @"
},
{
name: '已整改',
type: 'bar',
barWidth: 20,
label: {
show: true,
position: 'top'
},
emphasis: {
focus: 'series'
},
data: " + series3 + @"
}]";
}
else
{
string strSql = @" select u.UnitId,u.unitName,r.RegisterTypesId,t.RegisterTypesName,
count(*) as allnum,
Sum(case when States= 1 or States is null then 1 else 0 end) as todo,
Sum(case when States= 3 or States = 2 then 1 else 0 end) as finish
from HSSE_Hazard_HazardRegister r left join Base_Unit u on r.ResponsibleUnit = u.UnitId
left join HSSE_Hazard_HazardRegisterTypes t on r.RegisterTypesId=t.RegisterTypesId
where u.UnitId is not null and r.RegisterTypesId is not null and ProjectId=@ProjectId and States != '4' and ProblemTypes = '1'
";
if (!string.IsNullOrEmpty(this.txtStartRectificationTime.Text.Trim()))
{
strSql += " and CheckTime >='" + this.txtStartRectificationTime.Text.Trim() + "' ";
}
if (!string.IsNullOrEmpty(this.txtEndRectificationTime.Text.Trim()))
{
strSql += " and CheckTime <'" + DateTime.Parse(this.txtEndRectificationTime.Text.Trim()).AddDays(1).ToString("yyyy-MM-dd") + "' ";
}
strSql += " group by u.UnitId,u.unitName ,r.RegisterTypesId,t.RegisterTypesName ";
List listStr = new List();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
Dictionary> data = new Dictionary>();
legend = "[";
xAxis = "[";
HashSet xdic = new HashSet();
HashSet unitdic = new HashSet();
foreach (DataRow dr in tb.Rows)
{
xdic.Add(dr["RegisterTypesName"].ToString());
unitdic.Add(dr["unitName"].ToString());
Dictionary temp = null;
if (!data.ContainsKey(dr["unitName"].ToString()))
{
data.Add(dr["unitName"].ToString(), new Dictionary());
}
temp = data[dr["unitName"].ToString()];
if (!temp.ContainsKey(dr["RegisterTypesName"].ToString()))
{
temp.Add(dr["RegisterTypesName"].ToString(), "0");
}
temp[dr["RegisterTypesName"].ToString()] = dr["allnum"].ToString();
}
foreach (string types in xdic)
{
xAxis += "\"" + types + "\",";
}
xAxis = xAxis.TrimEnd(',');
xAxis += "]";
foreach (string types in unitdic)
{
legend += "\"" + types + "[全部]\",";
legend += "\"" + types + "[未整改]\",";
legend += "\"" + types + "[已整改]\",";
}
legend = legend.TrimEnd(',');
legend += "]";
series = "[";
foreach (string unit in data.Keys)
{
string tempseries = "";
foreach (string types in xdic)
{
if (data[unit].ContainsKey(types))
{
tempseries += "" + data[unit][types] + ",";
}
else
{
tempseries += "0,";
}
}
series += @"{
name: '" + unit + @"[全部]',
type: 'bar',
stack: '全部',
barWidth: 10,
label: {
show: true,
position: 'top'
},
emphasis: {
focus: 'series'
},
data: [" + tempseries.TrimEnd(',') + @"]
},";
}
data = new Dictionary>();
foreach (DataRow dr in tb.Rows)
{
xdic.Add(dr["RegisterTypesName"].ToString());
Dictionary temp = null;
if (!data.ContainsKey(dr["unitName"].ToString()))
{
data.Add(dr["unitName"].ToString(), new Dictionary());
}
temp = data[dr["unitName"].ToString()];
if (!temp.ContainsKey(dr["RegisterTypesName"].ToString()))
{
temp.Add(dr["RegisterTypesName"].ToString(), "0");
}
temp[dr["RegisterTypesName"].ToString()] = dr["todo"].ToString();
}
foreach (string unit in data.Keys)
{
string tempseries = "";
foreach (string types in xdic)
{
if (data[unit].ContainsKey(types))
{
tempseries += "" + data[unit][types] + ",";
}
else
{
tempseries += "0,";
}
}
series += @"{
name: '" + unit + @"[未整改]',
type: 'bar',
stack: '未整改',
barWidth: 10,
label: {
show: true,
position: 'top'
},
emphasis: {
focus: 'series'
},
data: [" + tempseries.TrimEnd(',') + @"]
},";
}
data = new Dictionary>();
foreach (DataRow dr in tb.Rows)
{
xdic.Add(dr["RegisterTypesName"].ToString());
Dictionary temp = null;
if (!data.ContainsKey(dr["unitName"].ToString()))
{
data.Add(dr["unitName"].ToString(), new Dictionary());
}
temp = data[dr["unitName"].ToString()];
if (!temp.ContainsKey(dr["RegisterTypesName"].ToString()))
{
temp.Add(dr["RegisterTypesName"].ToString(), "0");
}
temp[dr["RegisterTypesName"].ToString()] = dr["finish"].ToString();
}
foreach (string unit in data.Keys)
{
string tempseries = "";
foreach (string types in xdic)
{
if (data[unit].ContainsKey(types))
{
tempseries += "" + data[unit][types] + ",";
}
else
{
tempseries += "0,";
}
}
series += @"{
name: '" + unit + @"[已整改]',
type: 'bar',
stack: '已整改',
barWidth: 10,
label: {
show: true,
position: 'top'
},
emphasis: {
focus: 'series'
},
data: [" + tempseries.TrimEnd(',') + @"]
},";
}
series = series.TrimEnd(',');
series += "]";
}
}
#endregion
#region 图形
///
/// 图形变换
///
///
///
protected void drpChartType_SelectedIndexChanged(object sender, EventArgs e)
{
this.AnalyseData();
PageContext.RegisterStartupScript(@"setTimeout(function () { rendChart(" + legend + "," + xAxis + "," + series + ");}, 1000); ");
}
protected void ckbShow_CheckedChanged(object sender, CheckedEventArgs e)
{
this.AnalyseData();
PageContext.RegisterStartupScript(@"setTimeout(function () { rendChart(" + legend + "," + xAxis + "," + series + ");}, 1000);");
}
#endregion
}
}