Basf_EProject/EProject/FineUIPro.Web/ManHours/ManHoursStatistics.aspx.cs

331 lines
12 KiB
C#

using BLL;
using BLL.Common;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace FineUIPro.Web.ManHours
{
public partial class ManHoursStatistics : PageBase
{
string dis = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string strSql = @" SELECT * FROM Sys_ActualManHourMonthSet where CONVERT(INT,Years)=" + DateTime.Now.Year + " and DepartId is null and Person=0";
DataTable dt = SQLHelper.GetDataTableRunText(strSql, null);
if (dt != null && dt.Rows.Count > 0)
{
string json = JsonHelper.DataTableToJSON(dt);
ActualManHour.Value = json;
}
BindDeptTree("");
BindGrid("D1@770DF268-7955-4E8E-9A47-95595B3E614C");
}
}
#region
protected void TextBox_TextChanged(object sender, EventArgs e)
{
string UserName = txtUserName.Text;
BindDeptTree(UserName);
}
#endregion
#region Grid1行选择事件
/// <summary>
/// Grid行选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowSelect(object sender, GridRowSelectEventArgs e)
{
string eProjectId = this.Grid1.SelectedRowID;
if (!string.IsNullOrEmpty(eProjectId))
{
BindGrid2(eProjectId);
}
}
#endregion
public void BindGrid2(string paramet)
{
try
{
string sId = "";
int Layer = 0;
if (!string.IsNullOrEmpty(paramet))
{
Layer = 1;
sId = paramet;
}
SqlParameter[] parameter = new SqlParameter[]
{
new SqlParameter("@Layer",Layer),
new SqlParameter("@sId",sId),
new SqlParameter("@Start",""),
new SqlParameter("@End","")
};
DataSet ds = SQLHelper.RunProcedure("Proc_NewManHoursStatisticsChild", parameter, "t");
DataTable table1 = ds.Tables[0];
Grid2.RecordCount = table1.Rows.Count;
//table1 = GetFilteredTable(Grid2.FilteredData, table1);
var table = this.GetPagedDataTable(Grid2, table1);
Grid2.DataSource = table;
Grid2.DataBind();
OutputSummaryData2(table1);
}
catch (Exception ex)
{
throw ex;
}
}
public void BindGrid(string paramet)
{
hidjson.Value = "";
int Layer = 0;
string sId = "";
string DepartId = "";
string[] sIdArr = paramet.Split('@');
string Start = DateTime.Now.AddYears(-3).ToString("yyyyMM");
string End = DateTime.Now.ToString("yyyyMM");
string strSql1 = @" SELECT * FROM Sys_ActualManHourMonthSet where Years in ('" + (DateTime.Now.Year-1)+"','" +( DateTime.Now.Year-2 )+ "','" + DateTime.Now.Year + "') and DepartId='770DF268-7955-4E8E-9A47-95595B3E614C'";
DataTable dt1 = SQLHelper.GetDataTableRunText(strSql1, null);
if (dt1 != null && dt1.Rows.Count > 0)
{
string json = JsonHelper.DataTableToJSON(dt1);
hidchildJson.Value = json;
}
try
{
if (sIdArr[0].ToString() == "UD")
{
Layer = 1;
sId = sIdArr[1].ToString();
DepartId = sIdArr[2].ToString();
}
if (sIdArr[0].ToString() == "D1")
{
Layer = 2;
sId = sIdArr[1].ToString();
}
if (sIdArr[0].ToString() == "D2")
{
Layer = 3;
sId = sIdArr[1].ToString();
}
SqlParameter[] parameter = new SqlParameter[]
{
new SqlParameter("@Layer",Layer),
new SqlParameter("@sId",sId),
new SqlParameter("@Start",Start),
new SqlParameter("@End",End),
new SqlParameter("@DepartId",DepartId),
};
DataSet ds = SQLHelper.RunProcedure("Proc_NewManHoursStatistics", parameter, "t");
DataTable table1 = ds.Tables[0];
DataTable table2 = ds.Tables[1];
Grid1.RecordCount = table1.Rows.Count;
//table1 = GetFilteredTable(Grid1.FilteredData, table1);
var table = this.GetPagedDataTable(Grid1, table1);
Grid1.DataSource = table;
Grid1.DataBind();
OutputSummaryData(table1);
string json = JsonHelper.DataTableToJSON(table2);
hidjson.Value = json;
Grid2.DataSource = table2;
Grid2.DataBind();
OutputSummaryData2(table2);
}
catch (Exception ex)
{
throw ex;
}
}
private void OutputSummaryData(DataTable table)
{
DataTable source = table;
float ManHoursTotal = 0.0f;
float HoursTotal = 0.0f;
foreach (DataRow row in source.Rows)
{
ManHoursTotal += Convert.ToInt32(row["ManHours"]);
HoursTotal += Convert.ToInt32(row["Hours"]);
}
JObject summary = new JObject();
summary.Add("ManHours", ManHoursTotal.ToString("F2"));
summary.Add("Hours", HoursTotal.ToString("F2"));
Grid1.SummaryData = summary;
}
private void OutputSummaryData2(DataTable table)
{
DataTable source = table;
float TaskPlanTotal = 0.0f;
float TaskActualTotal = 0.0f;
float NoPlannedTotal = 0.0f;
foreach (DataRow row in source.Rows)
{
TaskPlanTotal += Convert.ToInt32(row["TaskPlan"]);
TaskActualTotal += Convert.ToInt32(row["TaskActual"]);
NoPlannedTotal += Convert.ToInt32(row["NoPlanned"]);
}
JObject summary = new JObject();
summary.Add("TaskPlan", TaskPlanTotal.ToString("F2"));
summary.Add("TaskActual", TaskActualTotal.ToString("F2"));
summary.Add("NoPlanned", NoPlannedTotal.ToString("F2"));
Grid2.SummaryData = summary;
}
/// <summary>
/// 加载部门人员
/// </summary>
private void BindDeptTree(string UserName)
{
this.tvUser.Nodes.Clear();
try
{
// string strSql = @"SELECT distinct DepartId,DepartCode,DepartName,IsPost FROM View_Sys_Users where SupCheckItem='0'";
string strSql = "SELECT [DepartId] ,[DepartCode],[DepartName],SupCheckItem FROM [Base_Depart] where SupCheckItem='0' and DepartCode='CTE' order by DepartCode";
DataTable table = SQLHelper.GetDataTableRunText(strSql, null);
for (int i = 0; i < table.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = table.Rows[i]["DepartName"].ToString();
node.NodeID = "D1@" + table.Rows[i]["DepartId"].ToString();
node.Expanded = true;
node.EnableClickEvent = true;
this.tvUser.Nodes.Add(node);
BindDeptNodeTwo(node, table.Rows[i]["DepartId"].ToString(), UserName);
}
}
catch (Exception ex)
{
Alert.ShowInParent(ex.ToString());
}
}
/// <summary>
///
/// </summary>
/// <param name="DTnode"></param>
/// <param name="DepartId"></param>
private void BindDeptNodeTwo(TreeNode DTnode, string DepartId, string UserName)
{
string strSql = @"SELECT [DepartId] ,[DepartCode],[DepartName] ,[SupCheckItem] FROM [Base_Depart] where SupCheckItem=@SupCheckItem";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@SupCheckItem", DepartId));
SqlParameter[] parameter = listStr.ToArray();
DataTable table = SQLHelper.GetDataTableRunText(strSql, parameter);
for (int i = 0; i < table.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = table.Rows[i]["DepartName"].ToString();
node.NodeID = "D2@" + table.Rows[i]["DepartId"].ToString();
node.Expanded = true;
node.EnableClickEvent = true;
DTnode.Nodes.Add(node);//把指定的节点添加到控件中
BindDeptNodeThree(node, table.Rows[i]["DepartId"].ToString(), UserName);
}
}
/// <summary>
///
/// </summary>
/// <param name="DTnode"></param>
/// <param name="DepartId"></param>
private void BindDeptNodeThree(TreeNode DTnode, string DepartId, string UserName)
{
try
{
string strSql = @"SELECT UserId,UserCode,UserName,DepartId,DepartCode,DepartName,RoleId,RoleName,IsPost FROM View_Sys_Users WHERE DepartId=@DepartId";
//SqlParameter[] parameter = new SqlParameter[]
// {
// new SqlParameter("@DepartId",DepartId)
// };
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@DepartId", DepartId));
if (!string.IsNullOrEmpty(UserName))
{
strSql += " AND UserName=@UserName ";
listStr.Add(new SqlParameter("@UserName", UserName));
}
SqlParameter[] parameter = listStr.ToArray();
DataTable table = SQLHelper.GetDataTableRunText(strSql, parameter);
for (int i = 0; i < table.Rows.Count; i++)
{
TreeNode node = new TreeNode();
node.Text = table.Rows[i]["UserName"].ToString();
node.NodeID = "UD@" + table.Rows[i]["UserId"].ToString() + "@" + table.Rows[i]["DepartId"].ToString();
node.Expanded = true;
node.EnableClickEvent = true;
DTnode.Nodes.Add(node);//把指定的节点添加到控件中
}
}
catch (Exception ex)
{
Alert.ShowInParent(ex.ToString());
}
}
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
BindGrid(dis);
}
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid2_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
BindGrid(dis);
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
//Grid1.PageSize = Convert.ToInt32(this.ddlPageSize.SelectedValue);
//BindGrid(dis);
}
/// <summary>
/// 树节点选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void tvUser_NodeCommand(object sender, FineUIPro.TreeCommandEventArgs e)
{
dis = e.Node.NodeID.ToString();
BindGrid(e.Node.NodeID.ToString());
}
}
}