ZHJA_HJGL/HJGL_ZH/FineUIPro.Web/Welder/WelderOKRate.aspx.cs

583 lines
26 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Web;
using BLL;
using Newtonsoft.Json.Linq;
using AspNet = System.Web.UI.WebControls;
using System.Linq;
namespace FineUIPro.Web.Welder
{
public partial class WelderOKRate : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (this.CurrUser.UserId == BLL.Const.GlyId)
{
this.btnDelete.Hidden = false;
}
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
InitTreeMenu();
}
}
#endregion
#region
private void InitTreeMenu()
{
this.tvControlItem.Nodes.Clear();
TreeNode rootNode = new TreeNode();
rootNode.Text = "年-月";
rootNode.NodeID = "0";
rootNode.Expanded = true;
this.tvControlItem.Nodes.Add(rootNode);
var welder = from x in Funs.DB.Sp_WelderOKRate
select x.Years;
if (welder.Count() > 0)
{
var years = welder.Distinct();
foreach (string y in years)
{
TreeNode tnYear = new TreeNode();//年节点
tnYear.Text = y;
tnYear.NodeID = y;
rootNode.Nodes.Add(tnYear);
var months = from x in Funs.DB.Sp_WelderOKRate
where x.Years == y
select x.Months;
if (months.Count() > 0)
{
months = months.Distinct();
foreach (string m in months)
{
TreeNode tnMonths = new TreeNode();//月节点
tnMonths.Text = m;
tnMonths.NodeID = y + "|" + m;
tnMonths.EnableClickEvent = true;
tnYear.Nodes.Add(tnMonths);
}
}
}
}
}
#endregion
protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
{
if (!string.IsNullOrEmpty(tvControlItem.SelectedNodeID))
{
var unit = (from x in Funs.DB.Sp_WelderOKRate
where x.Months == tvControlItem.SelectedNode.Text
&& x.Years == tvControlItem.SelectedNode.ParentNode.Text
select x.UnitId).Distinct();
var u = from x in unit
join y in Funs.DB.Base_Unit on x equals y.UnitId
select new { UnitId = x, y.UnitName };
//单位
this.drpUnit.DataTextField = "UnitName";
this.drpUnit.DataValueField = "UnitId";
this.drpUnit.DataSource = u;
this.drpUnit.DataBind();
Funs.FineUIPleaseSelect(this.drpUnit);
}
BindGrid();
OutputSummaryData();
}
/// <summary>
/// 全部行合计
/// </summary>
private void OutputSummaryData()
{
Grid1.SummaryData = null;
if (dt != null)
{
int sumTotalFilmNum = 0;
int sumOneToatalFilmNum = 0;
int sumOneToatalJointNum = 0;
int sumOnePassFilmNum = 0;
int sumOnePassJointNum = 0;
int sumOneRepairFilmNum = 0;
int sumTwoRepairFilmNum = 0;
int sumThreeRepairFilmNum = 0;
int sumCRepairFilmNum = 0;
int sumNoRepairFilmNum = 0;
int sumKPassFilmNum = 0;
int sumRMaterialFilmNum = 0;
string sumOKRate = "";
string sumOKJointRate = "";
foreach (DataRow row in dt.Rows)
{
sumTotalFilmNum += Convert.ToInt32(row["TotalFilmNum"]);
sumOneToatalFilmNum += Convert.ToInt32(row["OneToatalFilmNum"]);
if (!string.IsNullOrEmpty(row["OneToatalJointNum"].ToString()))
{
sumOneToatalJointNum += Convert.ToInt32(row["OneToatalJointNum"]);
}
sumOnePassFilmNum += Convert.ToInt32(row["OnePassFilmNum"]);
if (!string.IsNullOrEmpty(row["OnePassJointNum"].ToString()))
{
sumOnePassJointNum += Convert.ToInt32(row["OnePassJointNum"]);
}
sumOneRepairFilmNum += Convert.ToInt32(row["OneRepairFilmNum"]);
sumTwoRepairFilmNum += Convert.ToInt32(row["TwoRepairFilmNum"]);
sumThreeRepairFilmNum += Convert.ToInt32(row["ThreeRepairFilmNum"]);
sumCRepairFilmNum += Convert.ToInt32(row["CRepairFilmNum"]);
sumNoRepairFilmNum += Convert.ToInt32(row["NoRepairFilmNum"]);
sumKPassFilmNum += Convert.ToInt32(row["KPassFilmNum"]);
sumRMaterialFilmNum += Convert.ToInt32(row["RMaterialFilmNum"]);
}
if (sumOneToatalFilmNum != 0)
{
sumOKRate = (sumOnePassFilmNum * 100.0 / sumOneToatalFilmNum * 1.0).ToString("0.00") + "%";
}
if (sumOneToatalJointNum != 0)
{
sumOKJointRate = (sumOnePassJointNum * 100.0 / sumOneToatalJointNum * 1.0).ToString("0.00") + "%";
}
JObject summary = new JObject();
summary.Add("tfNumber", "合计");
summary.Add("TotalFilmNum", sumTotalFilmNum.ToString());
summary.Add("OneToatalFilmNum", sumOneToatalFilmNum.ToString());
summary.Add("OneToatalJointNum", sumOneToatalJointNum.ToString());
summary.Add("OnePassFilmNum", sumOnePassFilmNum.ToString());
summary.Add("OnePassJointNum", sumOnePassJointNum.ToString());
summary.Add("OneRepairFilmNum", sumOneRepairFilmNum.ToString());
summary.Add("TwoRepairFilmNum", sumTwoRepairFilmNum.ToString());
summary.Add("ThreeRepairFilmNum", sumThreeRepairFilmNum.ToString());
summary.Add("CRepairFilmNum", sumCRepairFilmNum.ToString());
summary.Add("NoRepairFilmNum", sumNoRepairFilmNum.ToString());
summary.Add("KPassFilmNum", sumKPassFilmNum.ToString());
summary.Add("RMaterialFilmNum", sumRMaterialFilmNum.ToString());
summary.Add("OKRate", sumOKRate.ToString());
summary.Add("OKJointRate", sumOKJointRate.ToString());
Grid1.SummaryData = summary;
}
}
/// <summary>
/// 数据表
/// </summary>
private DataTable dt = null;
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
if (tvControlItem.SelectedNode != null)
{
string strSql = @"SELECT sp.*,project.ProjectCode,project.ProjectName,welder.WED_Code
FROM dbo.Sp_WelderOKRate sp
LEFT JOIN dbo.Base_Project project ON project.ProjectId=sp.ProjectId
LEFT JOIN dbo.HJGL_BS_Welder welder ON sp.WED_ID=welder.WED_ID
WHERE 1=1";
List<SqlParameter> listStr = new List<SqlParameter>();
if (!string.IsNullOrEmpty(tvControlItem.SelectedNodeID))
{
strSql += " AND sp.Years= @Years AND sp.Months= @Months";
listStr.Add(new SqlParameter("@Years", tvControlItem.SelectedNode.ParentNode.Text));
listStr.Add(new SqlParameter("@Months", tvControlItem.SelectedNode.Text));
}
if (drpUnit.SelectedValue != Const._Null && !string.IsNullOrEmpty(drpUnit.SelectedValue))
{
strSql += " AND sp.UnitId= @UnitId";
listStr.Add(new SqlParameter("@UnitId", drpUnit.SelectedValue));
}
if (drpWelder.SelectedValueArray.Length>0)
{
string[] strs = drpWelder.SelectedValueArray;
string ids = string.Empty;
foreach (var str in strs)
{
ids += str + ",";
}
strSql += " AND @WED_ID like '%'+sp.WED_ID+'%'";
listStr.Add(new SqlParameter("@WED_ID", ids));
}
SqlParameter[] parameter = listStr.ToArray();
dt = SQLHelper.GetDataTableRunText(strSql, parameter);
//tb = SQLHelper.GetDataTableRunProc("HJGL_sp_WelderOKRateStatistics", parameter);
this.Grid1.RecordCount = dt.Rows.Count;
var table = this.GetPagedDataTable(Grid1, dt);
Grid1.DataSource = table;
Grid1.DataBind();
OutputSummaryData();
}
else
{
Grid1.DataSource = null;
Grid1.DataBind();
OutputSummaryData();
}
}
protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e)
{
string unitId = drpUnit.SelectedValue;
if (unitId != Const._Null)
{
var welder = (from x in Funs.DB.Sp_WelderOKRate
where x.Months == tvControlItem.SelectedNode.Text
&& x.Years == tvControlItem.SelectedNode.ParentNode.Text
&& x.UnitId== unitId
select x.WED_ID).Distinct();
var w = from x in welder
join y in Funs.DB.HJGL_BS_Welder on x equals y.WED_ID
select new { WED_ID = x, y.WED_Code };
drpWelder.Items.Clear();
drpWelder.DataTextField = "WED_Code";
drpWelder.DataValueField = "WED_ID";
drpWelder.DataSource = w;
Funs.FineUIPleaseSelect(drpWelder);
drpWelder.DataBind();
}
}
#endregion
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WelderOKRateEdit.aspx?RateId={0}", Grid1.SelectedRowID, "维护 - ")));
}
#region
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
this.Grid1.PageSize = Convert.ToInt32(this.ddlPageSize.SelectedValue);
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid();
}
#endregion
protected void btnFind_Click(object sender, EventArgs e)
{
this.BindGrid();
}
protected void btnPrint_Click(object sender, EventArgs e)
{
BindGrid();
string projectId = this.tvControlItem.SelectedNodeID;
if (!string.IsNullOrEmpty(tvControlItem.SelectedNodeID)
&& drpWelder.SelectedValue != Const._Null
&& !string.IsNullOrEmpty(drpWelder.SelectedValue))
{
var welder = BLL.HJGL_PersonManageService.GetWelderByWenId(drpWelder.SelectedValue);
string welderName = welder.WED_Name;
string welderCode = welder.WED_Code;
string years = tvControlItem.SelectedNode.ParentNode.Text;
string months = tvControlItem.SelectedNode.Text;
int sumTotalFilmNum = 0;
int sumOneToatalFilmNum = 0;
int sumOnePassFilmNum = 0;
string sumOKRate = "";
if (dt != null)
{
foreach (DataRow row in dt.Rows)
{
sumTotalFilmNum += Convert.ToInt32(row["TotalFilmNum"]);
sumOneToatalFilmNum += Convert.ToInt32(row["OneToatalFilmNum"]);
sumOnePassFilmNum += Convert.ToInt32(row["OnePassFilmNum"]);
}
if (sumOneToatalFilmNum != 0)
{
sumOKRate = (sumOnePassFilmNum * 100.0 / sumOneToatalFilmNum * 1.0).ToString("0.00") + "%";
}
}
string varValue = welderName + "|" + welderCode + "|" + years + "|" + months + "|" + sumTotalFilmNum.ToString() + "|" + sumOneToatalFilmNum.ToString() + "|" + sumOnePassFilmNum.ToString() + "|" + sumOKRate;
varValue = HttpUtility.UrlEncodeUnicode(varValue);
string replaceParameter = drpWelder.SelectedValue + "|" + years + "|" + months;
string reportId = BLL.Const.HGGL_WelderOKRateReportId;
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("../Common/ReportPrint/ExReportPrint.aspx?ispop=1&reportId={0}&replaceParameter={1}&varValue={2}&projectId=0", reportId, replaceParameter, varValue, "打印 - ")));
}
else
{
ShowNotify("请选择年月和焊工!", MessageBoxIcon.Warning);
return;
}
}
#region
/// <summary>
/// 编制
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAdd_Click(object sender, EventArgs e)
{
if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.Welder_WelderOKRateMenuId, Const.BtnCompile))
{
if (string.IsNullOrEmpty(this.txtMonths.Text.Trim()))
{
ShowNotify("请选择月份!", MessageBoxIcon.Warning);
return;
}
string[] yearMonth = txtMonths.Text.Split('-');
if (BLL.WelderOKRateService.IsExistYearMonth(yearMonth[0], yearMonth[1]))
{
ShowNotify("该单位该月份记录已生成,请点击该月份查看!", MessageBoxIcon.Warning);
return;
}
DateTime startDate = Convert.ToDateTime(this.txtMonths.Text.Trim() + "-01");
DateTime endDate = startDate.AddMonths(1).AddDays(-1);
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@date1", string.Format("{0:yyyy-MM-dd}", startDate)));
listStr.Add(new SqlParameter("@date2", string.Format("{0:yyyy-MM-dd}", endDate)));
SqlParameter[] parameter = listStr.ToArray();
SQLHelper.GetDataTableRunProc("HJGL_sp_WelderOKRate", parameter);
// 实现过程中的割口和母材数量
string strC = @"SELECT joint.JOT_CellWelder,joint.ProjectId,iso.BSU_ID,
SUM(ISNULL(joint.RT1_RepairFilmNum,0)+ISNULL(joint.RT2_RepairFilmNum,0)+ISNULL(joint.RT2_RepairFilmNum,0)) AS CRepairFilmNum
FROM dbo.HJGL_PW_JointInfo joint
LEFT JOIN (SELECT ISO_ID,JOT_ID, REPLACE(JOT_JointNo,'A','') AS JOT_JointNo
FROM dbo.HJGL_PW_JointInfo WHERE JOT_JointNo LIKE '%A%') b
ON b.ISO_ID = joint.ISO_ID AND b.JOT_JointNo = joint.JOT_JointNo
LEFT JOIN dbo.HJGL_PW_IsoInfo iso ON iso.ISO_ID = joint.ISO_ID
WHERE b.JOT_ID IS NOT NULL AND joint.dreportid IS NOT NULL
AND ((CASE WHEN (SELECT TOP 1 ConfirmDate FROM dbo.HJGL_CH_RepairItemRecord WHERE JOT_ID=joint.JOT_ID AND RepairMark='R3') IS NOT NULL
THEN (SELECT TOP 1 ConfirmDate FROM dbo.HJGL_CH_RepairItemRecord WHERE JOT_ID=joint.JOT_ID AND RepairMark='R3')
ELSE
CASE WHEN (SELECT TOP 1 ConfirmDate FROM dbo.HJGL_CH_RepairItemRecord WHERE JOT_ID=joint.JOT_ID AND RepairMark='R2') IS NOT NULL
THEN (SELECT TOP 1 ConfirmDate FROM dbo.HJGL_CH_RepairItemRecord WHERE JOT_ID=joint.JOT_ID AND RepairMark='R2')
ELSE (SELECT TOP 1 ConfirmDate FROM dbo.HJGL_CH_RepairItemRecord WHERE JOT_ID=joint.JOT_ID AND RepairMark='R1') END
END) BETWEEN @date1 AND @date2)
GROUP BY joint.ProjectId, joint.JOT_CellWelder,iso.BSU_ID";
List<SqlParameter> parmsC = new List<SqlParameter>();
parmsC.Add(new SqlParameter("@date1", string.Format("{0:yyyy-MM-dd}", startDate)));
parmsC.Add(new SqlParameter("@date2", string.Format("{0:yyyy-MM-dd}", endDate)));
SqlParameter[] parameterC = parmsC.ToArray();
DataTable dtc = SQLHelper.GetDataTableRunText(strC, parameterC);
string strR = @" SELECT SUM(joint.R_Material) AS R_MaterialNum,joint.JOT_CellWelder,joint.ProjectId,iso.BSU_ID
FROM dbo.HJGL_PW_JointInfo joint
LEFT JOIN dbo.HJGL_PW_IsoInfo iso ON iso.ISO_ID = joint.ISO_ID
WHERE joint.dreportid IS NOT NULL
AND (SELECT TOP 1 SignDate FROM dbo.HJGL_BO_QualityRating WHERE JOT_ID=joint.JOT_ID AND RMaterial=1) BETWEEN '2022-04-01' AND '2022-04-30'
AND joint.R_Material IS NOT NULL
GROUP BY joint.ProjectId, joint.JOT_CellWelder,iso.BSU_ID";
List<SqlParameter> parmsR = new List<SqlParameter>();
parmsR.Add(new SqlParameter("@date1", string.Format("{0:yyyy-MM-dd}", startDate)));
parmsR.Add(new SqlParameter("@date2", string.Format("{0:yyyy-MM-dd}", endDate)));
SqlParameter[] parameterR = parmsR.ToArray();
DataTable dtr = SQLHelper.GetDataTableRunText(strR, parameterR);
Model.SGGLDB db = Funs.DB;
for (int i = 0; i < dtc.Rows.Count; i++)
{
Model.Sp_WelderOKRate upc = db.Sp_WelderOKRate.FirstOrDefault(x => x.ProjectId == dtc.Rows[i]["ProjectId"].ToString()
&& x.UnitId == dtc.Rows[i]["BSU_ID"].ToString()
&& x.WED_ID == dtc.Rows[i]["JOT_CellWelder"].ToString()
&& x.Years == startDate.Year.ToString()
&& x.Months == string.Format("{0:MM}", startDate));
if (upc != null)
{
upc.CRepairFilmNum = Convert.ToInt32(dtc.Rows[i]["CRepairFilmNum"]);
db.SubmitChanges();
}
}
for (int i = 0; i < dtr.Rows.Count; i++)
{
Model.Sp_WelderOKRate upr = db.Sp_WelderOKRate.FirstOrDefault(x => x.ProjectId == dtr.Rows[i]["ProjectId"].ToString()
&& x.UnitId == dtr.Rows[i]["BSU_ID"].ToString()
&& x.WED_ID == dtr.Rows[i]["JOT_CellWelder"].ToString()
&& x.Years == startDate.Year.ToString()
&& x.Months == string.Format("{0:MM}", startDate));
if (upr != null)
{
upr.RMaterialFilmNum = Convert.ToInt32(dtr.Rows[i]["R_MaterialNum"]);
db.SubmitChanges();
}
}
InitTreeMenu();
BindGrid();
ShowNotify("该月份数据已成功!", MessageBoxIcon.Success);
}
else
{
ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
}
}
protected void btnModify_Click(object sender, EventArgs e)
{
//if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.Welder_QualifiedProjectMenuId, BLL.Const.BtnModify))
//{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请选择一条记录!", MessageBoxIcon.Warning);
return;
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WelderOKRateEdit.aspx?RateId={0}", Grid1.SelectedRowID, "维护 - ")));
//}
//else
//{
// ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
//}
}
protected void btnDelete_Click(object sender, EventArgs e)
{
if (this.tvControlItem.SelectedNode.Nodes.Count == 0)
{
string yearmonth = this.tvControlItem.SelectedNodeID;
if (!string.IsNullOrEmpty(yearmonth))
{
string year = yearmonth.Split('|')[0];
string month = yearmonth.Split('|')[1];
var list = from x in Funs.DB.Sp_WelderOKRate
where x.Months == month
&& x.Years == year
select x;
if (list.Count() > 0)
{
Funs.DB.Sp_WelderOKRate.DeleteAllOnSubmit(list);
Funs.DB.SubmitChanges();
}
}
}
else
{
Alert.ShowInTop("请选择末级节点删除!", MessageBoxIcon.Warning);
return;
}
ShowNotify("删除成功!", MessageBoxIcon.Success);
InitTreeMenu();
BindGrid();
}
#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;
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>");
this.Grid1.PageSize = 100000;
BindGrid();
foreach (GridColumn column in grid.AllColumns)
{
if (column.HeaderText != "返修数量")
{
sb.AppendFormat("<td>{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.AllColumns)
{
if (column.HeaderText != "返修数量")
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("labNumber") as AspNet.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
}
}