ChengDa_English/SGGL/FineUIPro.Web/HJGL/WeldingReport/OneDayReport.aspx.cs

524 lines
21 KiB
C#
Raw Normal View History

2022-03-15 17:36:38 +08:00
using BLL;
using FineUIPro.Web.Controls;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.HJGL.WeldingReport
{
public partial class OneDayReport : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Funs.DropDownPageSize(this.ddlPageSize);
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
List<Model.Base_Unit> units = new List<Model.Base_Unit>();
dpDate.SelectedDate = new DateTime( DateTime.Now.Year, DateTime.Now.Month,1);
var pUnit = BLL.ProjectUnitService.GetProjectUnitByUnitIdProjectId(this.CurrUser.LoginProjectId, this.CurrUser.UnitId);
if (pUnit == null || pUnit.UnitType == Const.ProjectUnitType_1)
{
units = BLL.UnitService.GetUnitByProjectIdUnitTypeList(this.CurrUser.LoginProjectId, BLL.Const.ProjectUnitType_2);
//this.drpUnit.Enabled = false;
this.drpUnit.DataTextField = "UnitName";
this.drpUnit.DataValueField = "UnitId";
this.drpUnit.DataSource = units;
this.drpUnit.DataBind();
Funs.FineUIPleaseSelect(this.drpUnit);
}
else
{
units = BLL.UnitService.GetSubUnitsListBySupervisorUnitId(this.CurrUser.ProjectId, this.CurrUser.UnitId);
this.drpUnit.Enabled = false;
this.drpUnit.DataTextField = "UnitName";
this.drpUnit.DataValueField = "UnitId";
this.drpUnit.DataSource = units;
this.drpUnit.DataBind();
this.drpUnit.SelectedValue = CurrUser.UnitId;
}
//显示列
Model.Sys_UserShowColumns c = BLL.UserShowColumnsService.GetColumnsByUserId(this.CurrUser.UserId, Const.UnitAreaQualityMenuId);
if (c != null)
{
this.GetShowColumn(c.Columns);
}
2023-08-29 18:56:49 +08:00
BindGrid();
2022-03-15 17:36:38 +08:00
}
}
#endregion
#region BindGrid
/// <summary>
///
/// </summary>
private DataTable tb = null;
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
string strSql = @"SELECT 0 id, WorkArea.WorkAreaId, WorkArea.WorkAreaCode ,--工区代号
WorkArea.WorkAreaName ,--
CAST(ISNULL(total_jot.total_din,0) AS DECIMAL(19,2)) AS total_din ,--
'' Type,0 has_din,0 res_din, '' has_per, '' HSData
FROM ProjectData_WorkArea AS WorkArea
LEFT JOIN (SELECT COUNT(*) total_jot ,pw_isoinfo.WorkAreaId ,
SUM( case when pw_isoinfo.[Is_Standard] = 0 then JOT_Size else pw_jointinfo.Extend_Length end) AS total_din
,SUM(JOT_DoneDin) AS finished_total_din
FROM pw_jointinfo
LEFT JOIN pw_isoinfo ON pw_jointinfo.ISO_ID = pw_isoinfo.ISO_ID
LEFT JOIN Base_Material ON Base_Material.MaterialId = pw_jointinfo.MaterialId
WHERE 1=1-- (pw_isoinfo.Is_Standard=@IsStandard OR @IsStandard IS NULL)
GROUP BY pw_isoinfo.WorkAreaId) AS total_jot ON total_jot.WorkAreaId = WorkArea.WorkAreaId
WHERE ";
List<SqlParameter> listStr = new List<SqlParameter>();
strSql += " WorkArea.ProjectId = @ProjectId";
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
strSql += " and WorkArea.UnitId = @UnitId";
listStr.Add(new SqlParameter("@UnitId", this.drpUnit.SelectedValue));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb1 = SQLHelper.GetDataTableRunText(strSql, parameter);
strSql = @" select WorkAreaId,[day],[month],COUNT(distinct JOT_CellWelder) as WelderNum from (SELECT DAY(jot_welddate) as [day],MONTH(jot_welddate) as [month],
pw_isoinfo.WorkAreaId ,JOT_CellWelder
FROM pw_jointinfo
LEFT JOIN pw_isoinfo ON pw_jointinfo.ISO_ID = pw_isoinfo.ISO_ID
LEFT JOIN Base_Material ON Base_Material.MaterialId = pw_jointinfo.MaterialId
LEFT JOIN BO_WeldReportMain ON BO_WeldReportMain.dreportid = pw_jointinfo.dreportid
WHERE pw_isoinfo.ProjectId = '" + this.CurrUser.LoginProjectId + "' and pw_isoinfo.UnitId ='" + this.drpUnit.SelectedValue+ "' and jot_welddate >='" + dpDate.SelectedDate.Value.ToString("yyyy-MM-dd")+ "' and jot_welddate <'"+ dpDate.SelectedDate.Value.AddMonths(1).ToString("yyyy-MM-dd") + "'"+
@"union
SELECT DAY(jot_welddate) as [day],MONTH(jot_welddate) as [month],
pw_isoinfo.WorkAreaId ,JOT_FloorWelder
FROM pw_jointinfo
LEFT JOIN pw_isoinfo ON pw_jointinfo.ISO_ID = pw_isoinfo.ISO_ID
LEFT JOIN Base_Material ON Base_Material.MaterialId = pw_jointinfo.MaterialId
LEFT JOIN BO_WeldReportMain ON BO_WeldReportMain.dreportid = pw_jointinfo.dreportid
WHERE pw_isoinfo.ProjectId = '" + this.CurrUser.LoginProjectId + "' and pw_isoinfo.UnitId ='" + this.drpUnit.SelectedValue + "' and jot_welddate >='" + dpDate.SelectedDate.Value.ToString("yyyy-MM-dd") + "' and jot_welddate <'" + dpDate.SelectedDate.Value.AddMonths(1).ToString("yyyy-MM-dd") + "'" +
@") as a group by WorkAreaId,[day],[month]";
listStr = new List<SqlParameter>();
//strSql += " WorkArea.ProjectId = @ProjectId";
//listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
//strSql += " and WorkArea.UnitId = @UnitId";
//listStr.Add(new SqlParameter("@UnitId", this.drpUnit.SelectedValue));
parameter = listStr.ToArray();
DataTable tb2 = SQLHelper.GetDataTableRunText(strSql, parameter);
strSql = @" SELECT DAY(jot_welddate) as [day],MONTH(jot_welddate) as [month],
COUNT(*) finished_total_jot_bq ,
pw_isoinfo.WorkAreaId ,SUM(
case when pw_isoinfo.[Is_Standard] = 0 then JOT_DoneDin else pw_jointinfo.Extend_Length end
) AS finished_total_din_bq
FROM pw_jointinfo
LEFT JOIN pw_isoinfo ON pw_jointinfo.ISO_ID = pw_isoinfo.ISO_ID
LEFT JOIN Base_Material ON Base_Material.MaterialId = pw_jointinfo.MaterialId
LEFT JOIN BO_WeldReportMain ON BO_WeldReportMain.dreportid = pw_jointinfo.dreportid
WHERE pw_isoinfo.ProjectId = '" + this.CurrUser.LoginProjectId + "' and pw_isoinfo.UnitId ='" + this.drpUnit.SelectedValue + "' and jot_welddate >='" + dpDate.SelectedDate.Value.ToString("yyyy-MM-dd") + "' and jot_welddate <'" + dpDate.SelectedDate.Value.AddMonths(1).ToString("yyyy-MM-dd") + "'" +
@"GROUP BY pw_isoinfo.WorkAreaId,DAY(jot_welddate),MONTH(jot_welddate) ";
listStr = new List<SqlParameter>();
//strSql += " WorkArea.ProjectId = @ProjectId";
//listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
//strSql += " and WorkArea.UnitId = @UnitId";
//listStr.Add(new SqlParameter("@UnitId", this.drpUnit.SelectedValue));
parameter = listStr.ToArray();
DataTable tb3 = SQLHelper.GetDataTableRunText(strSql, parameter);
int day = DateTime.DaysInMonth(dpDate.SelectedDate.Value.Year, dpDate.SelectedDate.Value.Month);
if (tb1 != null)
{
for (int i = 1; i <= day; i++)
{
tb1.Columns.Add("Day" + i );
}
}
int numCount = tb1.Rows.Count;
for (int j = numCount - 1; j >= 0; j--)
{
var row1 = tb1.NewRow();
row1[0] = tb1.Rows[j][0];
row1[1] = tb1.Rows[j][1] + "|n";
row1[2] = tb1.Rows[j][2];
row1[3] = tb1.Rows[j][3];
row1[4] = tb1.Rows[j][4];
row1[5] = tb1.Rows[j][5];
tb1.Rows.InsertAt(row1, j + 1);
}
for (int j = 0; j < numCount; j++)
{
var row1 = tb1.Rows[j * 2];
row1["id"] = j * 2;
row1["Type"] = "焊工(人)";
for (int i = 0; i < tb2.Rows.Count; i++)
{
var row2 = tb2.Rows[i];
if (row2["WorkAreaId"].ToString() == row1["WorkAreaId"].ToString())
{
if (tb1.Columns.Contains("Day" + row2["day"]))
{
row1["Day" + row2["day"]] = row2["WelderNum"];
}
}
}
row1 = tb1.Rows[j * 2 + 1];
row1["id"] = j * 2 + 1;
row1["Type"] = "工作量(吋)";
for (int i = 0; i < tb3.Rows.Count; i++)
{
var row3 = tb3.Rows[i];
if (row3["WorkAreaId"].ToString() + "|n" == row1["WorkAreaId"].ToString())
{
if (tb1.Columns.Contains("Day" + row3["day"]))
{
row1["Day" + row3["day"]] = ((decimal)row3["finished_total_din_bq"]).ToString("#0.##");
}
}
}
double has = 0;
var row4 = tb1.Rows[j * 2 + 1];
for (int i = 1; i <= day; i++)
{
if (row4["Day" + i] != DBNull.Value)
try
{
has += double.Parse(row4["Day" + i].ToString());
}
catch (Exception e) { }
}
tb1.Rows[j * 2]["has_din"] = has;
if (row4["total_din"] != DBNull.Value)
{
tb1.Rows[j * 2]["res_din"] = double.Parse(row4["total_din"].ToString()) - has;
if (double.Parse(row4["total_din"].ToString()) > 0.000000001)
{
tb1.Rows[j * 2]["HSData"] = (100 * has / double.Parse(row4["total_din"].ToString())).ToString("#0.##") + "%";
}
}
}
var rowTotal1 = tb1.NewRow();
rowTotal1[0] = "10000000";
rowTotal1[1] = "";
rowTotal1[2] = "";
rowTotal1[3] = "合计";
rowTotal1["Type"] = "焊工(人)";
var rowTotal2 = tb1.NewRow();
rowTotal2[0] = "10000001";
rowTotal2[1] = "";
rowTotal2[2] = "";
rowTotal2[3] = "";
rowTotal2["Type"] = "工作量(吋)";
double total_din = 0;
for (int j = 0; j < numCount; j++)
{
try
{
total_din += double.Parse(tb1.Rows[j * 2 + 1]["total_din"].ToString());
}
catch (Exception e)
{
}
for (int i = 1; i <= day; i++)
{
double temp1 = 0;
double temp2 = 0;
double.TryParse(rowTotal1["Day" + i] != DBNull.Value ? rowTotal1["Day" + i].ToString() : "0", out temp1);
double.TryParse(tb1.Rows[j * 2]["Day" + i] != DBNull.Value ? tb1.Rows[j * 2]["Day" + i].ToString() : "0", out temp2);
rowTotal1["Day" + i] = temp1 + temp2;
double temp3 = 0;
double temp4 = 0;
double.TryParse(rowTotal2["Day" + i] != DBNull.Value ? rowTotal2["Day" + i].ToString() : "0", out temp3);
double.TryParse(tb1.Rows[j * 2 + 1]["Day" + i] != DBNull.Value ? tb1.Rows[j * 2 + 1]["Day" + i].ToString() : "0", out temp4);
rowTotal2["Day" + i] = temp3 + temp4;
}
}
tb1.Rows.Add(rowTotal1);
tb1.Rows.Add(rowTotal2);
double hasTotal = 0;
for (int i = 1; i <= day; i++)
{
if (rowTotal2["Day" + i] != DBNull.Value)
try
{
hasTotal += double.Parse(rowTotal2["Day" + i].ToString());
}
catch (Exception e) {
}
}
rowTotal2["total_din"] = total_din;
rowTotal1["has_din"] = hasTotal;
rowTotal1["res_din"] = double.Parse(rowTotal2["total_din"].ToString()) - hasTotal;
if (double.Parse(rowTotal2["total_din"].ToString()) > 0.000000001)
{
rowTotal1["HSData"] = (100 * hasTotal / double.Parse(rowTotal2["total_din"].ToString())).ToString("#0.##") + "%";
}
Grid1.RecordCount = tb1.Rows.Count;
Grid1.DataSource = tb1;
Grid1.DataBind();
}
/// <summary>
/// 改变索引事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
/// <summary>
/// 分页下拉选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid();
}
#endregion
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
this.BindGrid();
// 显示列
var c = UserShowColumnsService.GetColumnsByUserId(this.CurrUser.UserId, Const.UnitAreaQualityMenuId);
if (c != null)
{
this.GetShowColumn(c.Columns);
}
}
/// <summary>
/// 显示的列
/// </summary>
/// <param name="column"></param>
private void GetShowColumn(string column)
{
if (!string.IsNullOrEmpty(column))
{
for (int i = 0; i < Grid1.Columns.Count; i++)
{
this.Grid1.Columns[i].Hidden = true;
}
List<string> columns = column.Split(',').ToList();
foreach (var item in columns)
{
this.Grid1.Columns[Convert.ToInt32(item)].Hidden = false;
}
}
}
#region
/// <summary>
/// 统计
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void BtnAnalyse_Click(object sender, EventArgs e)
{
if (drpUnit.SelectedValue == BLL.Const._Null)
{
Alert.ShowInTop("请选择单位!", MessageBoxIcon.Warning);
return;
} ColumnUnitName.HeaderText = drpUnit.SelectedText;
if (dpDate.SelectedDate.HasValue)
{
CollumMonth.HeaderText = dpDate.SelectedDate.Value.ToString("yyyy年MM月");
int day = DateTime.DaysInMonth(dpDate.SelectedDate.Value.Year, dpDate.SelectedDate.Value.Month);
if (day == 30)
{
Day31.Hidden = true;
}
else if (day == 29)
{
Day30.Hidden = true;
Day31.Hidden = true;
}
else if (day == 28)
{
Day29.Hidden = true;
Day30.Hidden = true;
Day31.Hidden = true;
}
}
else
{
Alert.ShowInTop("请选择日期!", MessageBoxIcon.Warning);
return;
}
BindGrid();
//OutputSummaryData();
}
#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;
if (!column.Hidden)
{
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>");
}
int j = 0;
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
int i = 0;
foreach (GridColumn column in mht.Columns)
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("spanNumber") as System.Web.UI.HtmlControls.HtmlGenericControl).InnerText;
}
else if (column.ColumnID == "tfGender")
{
html = (row.FindControl("labGender") as AspNet.Label).Text;
}
if (i <= 5 && j % 2 == 0)
{
if (!column.Hidden)
{
sb.AppendFormat("<td rowspan='2'>{0}</td>", html);
}
}
else if (i > 5)
{
if (!column.Hidden)
{
sb.AppendFormat("<td >{0}</td>", html);
}
}
i++;
}
j++;
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
#region
/// <summary>
/// 单位下拉选择事件
/// </summary>
/// <param name = "sender" ></ param >
/// < param name="e"></param>
protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e)
{
2023-08-29 18:56:49 +08:00
BindGrid();
}
2022-03-15 17:36:38 +08:00
#endregion
}
}