Basf_TCC7/HJGL/FineUIPro.Web/common/MainSupervision.aspx.cs

291 lines
16 KiB
C#
Raw 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.Data;
using System.Data.SqlClient;
using System.Web.UI.DataVisualization.Charting;
using System.Drawing;
using BLL;
namespace FineUIPro.Web.common
{
public partial class MainSupervision : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ShowChart();
BindPointNoTrust();
BindTrustNoCheck();
BindCheckNoAudit();
BindPointWarn();
}
}
private void BindPointWarn()
{
string strSql = @"SELECT ins.InstallationCode,t.PointBatchCode,welder.WelderCode,t.WeldingNum,t.LastWeldingDate
FROM
(SELECT pb.ProjectId,pb.InstallationId,pb.UnitId,pb.PointBatchCode,jot.CoverWelderId,rate.DetectionRateValue,
COUNT(pbItem.PointBatchItemId) AS WeldingNum,MIN(daily.WeldingDate) AS LastWeldingDate
FROM dbo.Batch_PointBatchItem AS pbItem
LEFT JOIN Batch_PointBatch AS pb ON pb.PointBatchId=pbItem.PointBatchId
LEFT JOIN Pipeline_WeldJoint AS jot ON jot.WeldJointId=pbItem.WeldJointId
LEFT JOIN dbo.Pipeline_WeldingDaily daily ON daily.WeldingDailyId = jot.WeldingDailyId
LEFT JOIN dbo.Base_DetectionRate rate ON rate.DetectionRateId = pb.DetectionRateId
WHERE pbItem.IsCompletedPoint=0 AND jot.WeldingDailyId IS NOT NULL
GROUP BY pb.ProjectId,pb.InstallationId,pb.UnitId,pb.PointBatchCode,rate.DetectionRateValue,jot.CoverWelderId
)t
LEFT JOIN dbo.Welder_Welder welder ON welder.WelderId = t.CoverWelderId
LEFT JOIN dbo.Project_Installation ins ON ins.InstallationId = t.InstallationId
WHERE t.ProjectId=@ProjectId ";
List<SqlParameter> listStr = new List<SqlParameter>();
if (!string.IsNullOrEmpty(this.CurrUser.LoginProjectId))
{
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
}
var q = from x in BLL.Funs.DB.Sys_Set where x.ProjectId == this.CurrUser.LoginProjectId && x.SetId == "6" select x;
if (q.Count() > 0 && !string.IsNullOrEmpty(q.First().SetValue))
{
strSql += " AND t.WeldingNum>=(@WarnPontRate/t.DetectionRateValue)";
listStr.Add(new SqlParameter("@WarnPontRate", Convert.ToInt32(q.First().SetValue)));
}
else
{
strSql += " AND t.WeldingNum>='5'";
}
var d = from x in BLL.Funs.DB.Sys_Set where x.ProjectId == this.CurrUser.LoginProjectId && x.SetId == "5" select x;
if (d.Count() > 0 && !string.IsNullOrEmpty(d.First().SetValue))
{
strSql += " AND DATEDIFF(DAY,t.LastWeldingDate,GETDATE())>@WarnPointDay";
listStr.Add(new SqlParameter("@WarnPointDay", Convert.ToInt32(d.First().SetValue)));
}
else
{
strSql += " AND DATEDIFF(DAY,t.LastWeldingDate,GETDATE())>'3'";
}
SqlParameter[] parameter = listStr.ToArray();
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
gvPointWarn.DataSource = dt;
gvPointWarn.DataBind();
}
private void BindPointNoTrust()
{
string strSql = @" SELECT (u.UnitName+''+ Convert(varchar(6),COUNT(batchItem.PointBatchItemId))) AS PointNoTrust
FROM dbo.Batch_PointBatchItem batchItem
LEFT JOIN dbo.Pipeline_WeldJoint jot ON jot.WeldJointId = batchItem.WeldJointId
LEFT JOIN dbo.Batch_BatchTrustItem trustItem ON trustItem.PointBatchItemId = batchItem.PointBatchItemId
LEFT JOIN dbo.Pipeline_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
LEFT JOIN Base_Unit u on u.UnitId=pipe.UnitId
WHERE batchItem.PointState IS NOT NULL AND trustItem.TrustBatchItemId IS NULL
AND pipe.ProjectId=@ProjectId
group by pipe.ProjectId ,u.UnitName";
if (!string.IsNullOrEmpty(this.CurrUser.LoginProjectId))
{
SqlParameter[] parameter = new SqlParameter[]
{
new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)
};
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
gvPointNoTrust.DataSource = dt;
gvPointNoTrust.DataBind();
}
}
private void BindTrustNoCheck()
{
string strSql = @"SELECT (u.UnitName+''+Convert(varchar(6),COUNT(trustItem.TrustBatchItemId))) AS TrustNoCheck
FROM Batch_BatchTrustItem trustItem
LEFT JOIN dbo.Batch_BatchTrust trust ON trust.TrustBatchId = trustItem.TrustBatchId
LEFT JOIN dbo.Base_DetectionType ndttype ON ndttype.DetectionTypeId = trust.DetectionTypeId
LEFT JOIN dbo.Pipeline_WeldJoint jot ON jot.WeldJointId = trustItem.WeldJointId
LEFT JOIN dbo.Batch_NDEItem ndtItem ON ndtItem.TrustBatchItemId = trustItem.TrustBatchItemId
LEFT JOIN dbo.Pipeline_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
LEFT JOIN Base_Unit u on u.UnitId=pipe.UnitId
WHERE ndtItem.NDEItemID IS NULL AND IsCancelTrust is null AND pipe.ProjectId=@ProjectId
GROUP BY pipe.ProjectId, u.UnitName";
if (!string.IsNullOrEmpty(this.CurrUser.LoginProjectId))
{
SqlParameter[] parameter = new SqlParameter[]
{
new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)
};
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
gvTrustNoCheck.DataSource = dt;
gvTrustNoCheck.DataBind();
}
}
private void BindCheckNoAudit()
{
// string strSql = @" SELECT (u.UnitName+''+Convert(varchar(6),COUNT(ndtItem.NDEItemID))) AS CheckNoAudit
// FROM dbo.Batch_NDEItem ndtItem
// LEFT JOIN dbo.Batch_NDE ndt ON ndt.NDEID = ndtItem.NDEID
// LEFT JOIN dbo.Batch_BatchTrustItem trust ON trust.TrustBatchItemId = ndtItem.TrustBatchItemId
// LEFT JOIN dbo.Pipeline_WeldJoint jot ON jot.WeldJointId = trust.WeldJointId
// LEFT JOIN dbo.Pipeline_Pipeline pipe ON pipe.PipelineId = jot.PipelineId
//LEFT JOIN Base_Unit u on u.UnitId=pipe.UnitId
// WHERE ndtItem.SubmitDate IS NULL AND ndt.ProjectId=@ProjectId
// GROUP BY pipe.ProjectId, u.UnitName";
// if (!string.IsNullOrEmpty(this.CurrUser.LoginProjectId))
// {
// SqlParameter[] parameter = new SqlParameter[]
// {
// new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)
// };
// DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
// gvCheckNoAudit.DataSource = dt;
// gvCheckNoAudit.DataBind();
// }
}
private void ShowChart()
{
string strSql1 = @"SELECT v.totalDin AS '预估',(v.totalDin-ISNULL(v1.LastDin,0)) AS '完成',
ISNULL(v1.LastDin,0) AS '剩余',ISNULL(v2.LastWeekDin,0) AS '近一周'
FROM
(SELECT ProjectId, ISNULL(SUM(ISNULL(Size,0)),0) AS totalDin
FROM dbo.Pipeline_WeldJoint GROUP BY ProjectId) v
LEFT JOIN
(SELECT ProjectId, ISNULL(SUM(ISNULL(Size,0)),0) AS LastDin
FROM dbo.Pipeline_WeldJoint
WHERE WeldingDailyId IS NULL GROUP BY ProjectId) v1 ON v1.ProjectId = v.ProjectId
LEFT JOIN
(SELECT jot.ProjectId, ISNULL(SUM(ISNULL(jot.Size,0)),0) AS LastWeekDin
FROM dbo.Pipeline_WeldJoint jot
LEFT JOIN dbo.Pipeline_WeldingDaily report ON report.WeldingDailyId = jot.WeldingDailyId
WHERE jot.WeldingDailyId IS NOT NULL AND report.WeldingDate<=GETDATE() AND report.WeldingDate>DATEADD(ww,-1,GETDATE())
GROUP BY jot.ProjectId) v2 ON v2.ProjectId = v.ProjectId
WHERE v.ProjectId=@ProjectId1";
string strSql2 = @"SELECT ISNULL(v1.BatchTrustNum,0) AS '委托数',ISNULL(v2.NdtCheckNum,0) AS '拍片焊口',
(ISNULL(v1.BatchTrustNum,0)-ISNULL(v2.NdtCheckNum,0)) AS '积压焊口' ,
ISNULL(v3.LastWeekCheckNum,0) AS '近一周检测'
FROM
(SELECT trust.ProjectId, COUNT(d.TrustBatchItemId) AS BatchTrustNum
FROM dbo.Batch_BatchTrustItem d
LEFT JOIN dbo.Batch_BatchTrust trust ON trust.TrustBatchId = d.TrustBatchId
LEFT JOIN dbo.Base_DetectionType ndt ON ndt.DetectionTypeId = trust.DetectionTypeId
WHERE ndt.SysType='射线检测' GROUP BY trust.ProjectId) v1
LEFT JOIN
(SELECT ndt.ProjectId,COUNT(ndtItme.NDEItemID) AS NdtCheckNum
FROM dbo.Batch_NDEItem ndtItme
LEFT JOIN dbo.Batch_NDE ndt ON ndt.NDEID = ndtItme.NDEID
LEFT JOIN dbo.Base_DetectionType ndtType ON ndtType.DetectionTypeId = ndtItme.DetectionTypeId
WHERE ndtType.SysType ='射线检测' AND SubmitDate IS NOT NULL
GROUP BY ndt.ProjectId ) v2 ON v2.ProjectId = v1.ProjectId
LEFT JOIN
(SELECT ndt.ProjectId,COUNT(ndtItme.NDEItemID) AS LastWeekCheckNum
FROM dbo.Batch_NDEItem ndtItme
LEFT JOIN dbo.Batch_NDE ndt ON ndt.NDEID = ndtItme.NDEID
LEFT JOIN dbo.Base_DetectionType ndtType ON ndtType.DetectionTypeId = ndtItme.DetectionTypeId
WHERE ndtType.SysType ='射线检测' AND SubmitDate IS NOT NULL
AND ndtItme.SubmitDate<=GETDATE() AND ndtItme.SubmitDate>DATEADD(ww,-1,GETDATE())
GROUP BY ndt.ProjectId ) v3 ON v3.ProjectId = v1.ProjectId
WHERE v1.ProjectId=@ProjectId2 AND ISNULL(v1.BatchTrustNum,0)>0 ";
if (!string.IsNullOrEmpty(this.CurrUser.LoginProjectId))
{
SqlParameter[] parameter1 = new SqlParameter[]
{
new SqlParameter("@ProjectId1", this.CurrUser.LoginProjectId)
};
DataTable dt1 = SQLHelper.GetDataTableRunText(strSql1, parameter1);
SqlParameter[] parameter2 = new SqlParameter[]
{
new SqlParameter("@ProjectId2", this.CurrUser.LoginProjectId)
};
DataTable dt2 = SQLHelper.GetDataTableRunText(strSql2, parameter2);
if (dt1.Rows.Count > 0)
{
CreateChart(dt1, Chart1);
}
if (dt2.Rows.Count > 0)
{
CreateChart(dt2, Chart2);
}
}
}
/// <summary>
/// 创建Chart图形
/// </summary>
/// <param name="dt">数据表</param>
/// <param name="chart1">图形</param>
private void CreateChart(DataTable dt, Chart chart1)
{
chart1.BackColor = Color.WhiteSmoke;
chart1.ImageLocation = "~/Images/ChartPic_#SEQ(300,3)";
chart1.BorderlineDashStyle = ChartDashStyle.Solid;
chart1.Palette = ChartColorPalette.BrightPastel;
chart1.BackSecondaryColor = Color.White;
chart1.BackGradientStyle = GradientStyle.TopBottom;
chart1.BorderWidth = 2;
chart1.BorderColor = Color.FromArgb(26, 59, 105);
chart1.ImageType = ChartImageType.Png;
ChartArea chartArea = new ChartArea();
chartArea.Name = "焊接工作量";
chartArea.BackColor = Color.Transparent;
chartArea.AxisX.IsLabelAutoFit = false;
chartArea.AxisY.IsLabelAutoFit = false;
chartArea.AxisX.LabelStyle.Font = new Font("Verdana,Arial,Helvetica,sans-serif", 8F, FontStyle.Regular);
chartArea.AxisY.LabelStyle.Font = new Font("Verdana,Arial,Helvetica,sans-serif", 8F, FontStyle.Regular);
chartArea.AxisY.LineColor = Color.FromArgb(64, 64, 64, 64);
chartArea.AxisX.LineColor = Color.FromArgb(64, 64, 64, 64);
chartArea.AxisY.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64);
chartArea.AxisX.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64);
chartArea.AxisX.Interval = 1;
chartArea.Area3DStyle.Enable3D = true;
chart1.ChartAreas.Add(chartArea);
chart1.Series.Add("焊接工作量");
chart1.Series["焊接工作量"].ChartType = ChartControlService.GetChartType("Column");
chart1.Series["焊接工作量"].Name = "焊接工作量";
chart1.Series["焊接工作量"].IsValueShownAsLabel = false;
chart1.Series["焊接工作量"].BorderWidth = 2;
chart1.Series["焊接工作量"]["DrawingStyle"] = "Cylinder";
for (int i = 0; i < dt.Columns.Count; i++)
{
chart1.Series["焊接工作量"].Points.AddXY(dt.Columns[i].ColumnName, dt.Rows[0][i].ToString());
chart1.Series["焊接工作量"].Points[i].Color = GetColor(i);
//chart1.Series["焊接工作量"].Points[i].Url = "~/WeldingProcess/WeldingReport/WeldSummary.aspx";
chart1.Series["焊接工作量"].Points[i].ToolTip = "#VALX#VALY";
}
}
private Color GetColor(int i)
{
Color c = Color.Blue;
if (i == 1)
{
c = Color.Yellow;
}
if (i == 2)
{
c = Color.Red;
}
if (i == 3)
{
c = Color.Green;
}
return c;
}
}
}