342 lines
18 KiB
C#
342 lines
18 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Web;
|
||
using System.Web.UI;
|
||
using System.Web.UI.WebControls;
|
||
using System.IO;
|
||
using System.Data.SqlClient;
|
||
using System.Data;
|
||
using Newtonsoft.Json.Linq;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Web.UI.DataVisualization.Charting;
|
||
using System.Drawing;
|
||
using BLL;
|
||
|
||
namespace FineUIPro.Web.common
|
||
{
|
||
public partial class main : PageBase
|
||
{
|
||
public string pics, links, texts;
|
||
|
||
protected void Page_Load(object sender, EventArgs e)
|
||
{
|
||
if (!IsPostBack)
|
||
{
|
||
this.drpProject.DataTextField = "ProjectCode";
|
||
this.drpProject.DataValueField = "ProjectId";
|
||
this.drpProject.DataSource = BLL.Base_ProjectService.GetOnProjectListByUserId(this.CurrUser.UserId, "1");
|
||
this.drpProject.DataBind();
|
||
Funs.FineUIPleaseSelect(this.drpProject);
|
||
|
||
this.BindGrid();
|
||
|
||
ShowChart();
|
||
}
|
||
|
||
//ProjectPic();
|
||
}
|
||
|
||
private void BindGrid()
|
||
{
|
||
string strSql = @"SELECT v.ProjectId,p.ProjectCode,p.ProjectName,p.IsClosed,v.totalDin,
|
||
ISNULL(v1.LastDin,0) AS LastDin
|
||
FROM
|
||
(SELECT ProjectId, ISNULL(SUM(ISNULL(JOT_Size,0)),0) AS totalDin
|
||
FROM dbo.HJGL_PW_JointInfo GROUP BY ProjectId) v
|
||
LEFT JOIN
|
||
(SELECT ProjectId, ISNULL(SUM(ISNULL(JOT_Size,0)),0) AS LastDin
|
||
FROM dbo.HJGL_PW_JointInfo
|
||
WHERE DReportID IS NULL GROUP BY ProjectId) v1 ON v1.ProjectId = v.ProjectId
|
||
LEFT JOIN dbo.Base_Project p ON p.ProjectId = v.ProjectId
|
||
WHERE v.totalDin>=1000 AND ISNULL(v1.LastDin,0)>0 AND p.IsClosed=@IsClosed";
|
||
|
||
List<SqlParameter> listStr = new List<SqlParameter>();
|
||
listStr.Add(new SqlParameter("@IsClosed", Convert.ToBoolean(this.drpIsClose.SelectedValue)));
|
||
SqlParameter[] parameter = listStr.ToArray();
|
||
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||
var table = this.GetSortTable(Grid1, tb);
|
||
Grid1.DataSource = table;
|
||
Grid1.DataBind();
|
||
}
|
||
|
||
protected void drpIsClose_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
BindGrid();
|
||
}
|
||
|
||
protected void drpProject_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
ShowChart();
|
||
}
|
||
|
||
|
||
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(JOT_Size,0)),0) AS totalDin
|
||
FROM dbo.HJGL_PW_JointInfo GROUP BY ProjectId) v
|
||
LEFT JOIN
|
||
(SELECT ProjectId, ISNULL(SUM(ISNULL(JOT_Size,0)),0) AS LastDin
|
||
FROM dbo.HJGL_PW_JointInfo
|
||
WHERE DReportID IS NULL GROUP BY ProjectId) v1 ON v1.ProjectId = v.ProjectId
|
||
|
||
LEFT JOIN
|
||
(SELECT jot.ProjectId, ISNULL(SUM(ISNULL(jot.JOT_Size,0)),0) AS LastWeekDin
|
||
FROM dbo.HJGL_PW_JointInfo jot
|
||
|
||
LEFT JOIN dbo.HJGL_BO_WeldReportMain report ON report.DReportID = jot.DReportID
|
||
WHERE jot.DReportID IS NOT NULL AND report.JOT_WeldDate<=GETDATE() AND report.JOT_WeldDate>DATEADD(ww,-1,GETDATE())
|
||
GROUP BY jot.ProjectId) v2 ON v2.ProjectId = v.ProjectId
|
||
WHERE v.ProjectId=@ProjectId1";
|
||
|
||
string strSql2 = @"SELECT v1.TotalCheckNum AS '预估',CAST(v1.TotalCheckNum*1.5 AS INT) AS '理论值×1.5倍',ISNULL(v2.FinishCheckNum,0) AS '已委托',
|
||
(CASE WHEN v1.TotalCheckNum-ISNULL(v2.FinishCheckNum,0)>0 THEN v1.TotalCheckNum-ISNULL(v2.FinishCheckNum,0)
|
||
ELSE 0 END) AS '剩余', ISNULL(v3.LastWeekCheckNum,0) AS '近一周'
|
||
FROM
|
||
(SELECT v.ProjectId,SUM(v.TotalCheckNum) AS TotalCheckNum
|
||
FROM
|
||
(SELECT isoinfo.ProjectId,case when cast(total_jot.total_jot as decimal(9,2))*ndtRate.NDTR_Rate/100>cast((ISNULL(total_jot.total_jot,0)*ndtRate.NDTR_Rate/100) as int)
|
||
then cast((ISNULL(total_jot.total_jot,0)*ndtRate.NDTR_Rate/100) as int)+1
|
||
else cast((ISNULL(total_jot.total_jot,0)*ndtRate.NDTR_Rate/100) as int) end
|
||
as TotalCheckNum --预计检测数量
|
||
FROM HJGL_PW_IsoInfo AS isoinfo
|
||
--对接焊缝检测比例
|
||
left join HJGL_BS_WeldControl as weldControl on weldControl.ISC_ID=isoinfo.ISC_ID and weldControl.ExecStandardId=isoinfo.ISO_Executive
|
||
left join HJGL_BS_NDTRate as ndtRate on ndtRate.NDTR_ID=weldControl.Joty_Rate
|
||
----焊口总数量
|
||
LEFT JOIN (SELECT COUNT(*) AS total_jot,HJGL_PW_JointInfo.ISO_ID
|
||
FROM HJGL_PW_JointInfo
|
||
GROUP BY HJGL_PW_JointInfo.ISO_ID) AS total_jot ON total_jot.ISO_ID =isoinfo.ISO_ID )v
|
||
GROUP BY v.ProjectId) v1
|
||
LEFT JOIN
|
||
(SELECT batch.ProjectId, COUNT(d.BatchDetailId) AS FinishCheckNum
|
||
FROM dbo.HJGL_BO_BatchDetail d
|
||
LEFT JOIN dbo.HJGL_BO_Batch batch ON batch.BatchId = d.BatchId
|
||
WHERE d.ndt IS NOT NULL AND d.PointType='1'
|
||
AND CHARINDEX((SELECT TOP 1 t.NDT_ID FROM dbo.HJGL_BS_NDTType t WHERE t.SysType='射线检测'),d.NDT)>0
|
||
GROUP BY batch.ProjectId) v2 ON v2.ProjectId=v1.ProjectId
|
||
|
||
LEFT JOIN
|
||
(SELECT batch.ProjectId, COUNT(d.BatchDetailId) AS LastWeekCheckNum
|
||
FROM dbo.HJGL_BO_BatchDetail d
|
||
LEFT JOIN dbo.HJGL_BO_Batch batch ON batch.BatchId = d.BatchId
|
||
WHERE d.ndt IS NOT NULL AND d.PointType='1'
|
||
AND CHARINDEX((SELECT TOP 1 t.NDT_ID FROM dbo.HJGL_BS_NDTType t WHERE t.SysType='射线检测'),d.NDT)>0
|
||
AND d.PointDate<=GETDATE() AND d.PointDate>DATEADD(ww,-1,GETDATE())
|
||
GROUP BY batch.ProjectId) v3 ON v3.ProjectId=v1.ProjectId
|
||
WHERE v1.ProjectId=@ProjectId2 AND (v1.TotalCheckNum>0 OR ISNULL(v2.FinishCheckNum,0)>0)";
|
||
|
||
string strSql3 = @"SELECT v1.TotalHotJot AS '预估',ISNULL(v2.FinishHotJot,0) AS '完成',
|
||
(v1.TotalHotJot-ISNULL(v2.FinishHotJot,0)) AS '剩余',
|
||
ISNULL(v3.LastWeekHotJot,0) AS '近一周'
|
||
FROM
|
||
(SELECT jot.ProjectId, COUNT(jot.JOT_ID) AS TotalHotJot
|
||
FROM HJGL_PW_JointInfo AS jot
|
||
WHERE jot.IS_Proess='1'
|
||
GROUP BY jot.ProjectId) v1
|
||
|
||
LEFT JOIN
|
||
(SELECT trust.ProjectId, COUNT(DISTINCT(trustItem.JOT_ID)) AS FinishHotJot
|
||
FROM dbo.HJGL_CH_HotProessTrustItem trustItem
|
||
LEFT JOIN dbo.HJGL_CH_HotProessTrust trust ON trust.HotProessTrustId = trustItem.HotProessTrustId
|
||
GROUP BY trust.ProjectId) v2 ON v2.ProjectId = v1.ProjectId
|
||
|
||
LEFT JOIN
|
||
(SELECT trust.ProjectId, COUNT(DISTINCT(trustItem.JOT_ID)) AS LastWeekHotJot
|
||
FROM dbo.HJGL_CH_HotProessTrustItem trustItem
|
||
LEFT JOIN dbo.HJGL_CH_HotProessTrust trust ON trust.HotProessTrustId = trustItem.HotProessTrustId
|
||
WHERE trustItem.TrustDate<=GETDATE() AND trustItem.TrustDate>DATEADD(ww,-1,GETDATE())
|
||
GROUP BY trust.ProjectId) v3 ON v3.ProjectId = v1.ProjectId
|
||
WHERE v1.ProjectId=@ProjectId3";
|
||
|
||
string strSql4 = @"SELECT v1.TotalHardJot AS '预估',ISNULL(v2.FinishHardJot,0) AS '完成',
|
||
(v1.TotalHardJot-ISNULL(v2.FinishHardJot,0)) AS '剩余',
|
||
ISNULL(v3.LastWeekHardJot,0) AS '近一周'
|
||
FROM
|
||
(SELECT jot.ProjectId, COUNT(jot.JOT_ID) AS TotalHardJot
|
||
FROM HJGL_PW_JointInfo AS jot
|
||
WHERE jot.IS_Proess='1' AND CHARINDEX('4',jot.ProessTypes)>0
|
||
GROUP BY jot.ProjectId) v1
|
||
LEFT JOIN
|
||
(SELECT hard.ProjectId, COUNT(DISTINCT(hardItem.JOT_ID)) AS FinishHardJot
|
||
FROM dbo.HJGL_CH_HardTestReportItem hardItem
|
||
LEFT JOIN dbo.HJGL_CH_HardTestReport hard ON hard.HardTestReportId = hardItem.HardTestReportId
|
||
GROUP BY hard.ProjectId) v2 ON v2.ProjectId = v1.ProjectId
|
||
|
||
LEFT JOIN
|
||
(SELECT hard.ProjectId, COUNT(DISTINCT(hardItem.JOT_ID)) AS LastWeekHardJot
|
||
FROM dbo.HJGL_CH_HardTestReportItem hardItem
|
||
LEFT JOIN dbo.HJGL_CH_HardTestReport hard ON hard.HardTestReportId = hardItem.HardTestReportId
|
||
WHERE hard.TestDate<=GETDATE() AND hard.TestDate>DATEADD(ww,-1,GETDATE())
|
||
GROUP BY hard.ProjectId) v3 ON v3.ProjectId = v1.ProjectId
|
||
WHERE v1.ProjectId=@ProjectId4";
|
||
|
||
if (this.drpProject.SelectedValue != "null" && this.drpProject.SelectedValue != "")
|
||
{
|
||
SqlParameter[] parameter1 = new SqlParameter[]
|
||
{
|
||
new SqlParameter("@ProjectId1", this.drpProject.SelectedValue)
|
||
};
|
||
DataTable dt1 = SQLHelper.GetDataTableRunText(strSql1, parameter1);
|
||
|
||
SqlParameter[] parameter2 = new SqlParameter[]
|
||
{
|
||
new SqlParameter("@ProjectId2", this.drpProject.SelectedValue)
|
||
};
|
||
DataTable dt2 = SQLHelper.GetDataTableRunText(strSql2, parameter2);
|
||
|
||
SqlParameter[] parameter3 = new SqlParameter[]
|
||
{
|
||
new SqlParameter("@ProjectId3", this.drpProject.SelectedValue)
|
||
};
|
||
DataTable dt3 = SQLHelper.GetDataTableRunText(strSql3, parameter3);
|
||
|
||
SqlParameter[] parameter4 = new SqlParameter[]
|
||
{
|
||
new SqlParameter("@ProjectId4", this.drpProject.SelectedValue)
|
||
};
|
||
DataTable dt4 = SQLHelper.GetDataTableRunText(strSql4, parameter4);
|
||
|
||
if (dt1.Rows.Count > 0)
|
||
{
|
||
CreateChart(dt1, Chart1);
|
||
}
|
||
if (dt2.Rows.Count > 0)
|
||
{
|
||
CreateChart(dt2, Chart2);
|
||
}
|
||
if (dt3.Rows.Count > 0)
|
||
{
|
||
CreateChart(dt3, Chart3);
|
||
}
|
||
if (dt4.Rows.Count > 0)
|
||
{
|
||
CreateChart(dt4, Chart4);
|
||
}
|
||
}
|
||
}
|
||
|
||
private Model.DataSourceChart GetDataSourceChart(DataTable dt)
|
||
{
|
||
Model.DataSourceChart dataSourceChart = new Model.DataSourceChart();
|
||
dataSourceChart.Width = 315;
|
||
dataSourceChart.Height = 210;
|
||
|
||
dataSourceChart.IsNotEnable3D = false;
|
||
dataSourceChart.ChartType = ChartControlService.GetChartType("Column");
|
||
dataSourceChart.Title = "工作量统计";
|
||
|
||
List<Model.DataSourceTeam> dataSourceTeams = new List<Model.DataSourceTeam>();
|
||
|
||
for (int i = 0; i < dt.Rows.Count; i++)
|
||
{
|
||
Model.DataSourceTeam dataSourceTeam = new Model.DataSourceTeam();
|
||
dataSourceTeam.DataPointName = "焊接工作量";//dt.Rows[i][0].ToString();
|
||
List<Model.DataSourcePoint> dataSourcePoints = new List<Model.DataSourcePoint>();
|
||
for (int j = 0; j < dt.Columns.Count; j++)
|
||
{
|
||
Model.DataSourcePoint dataSourcePoint = new Model.DataSourcePoint();
|
||
dataSourcePoint.PointText = dt.Columns[j].ToString();
|
||
if (Convert.ToInt32(dt.Rows[i][j]) != 0)
|
||
{
|
||
dataSourcePoint.PointValue = dt.Rows[i][j].ToString();
|
||
}
|
||
dataSourcePoints.Add(dataSourcePoint);
|
||
}
|
||
dataSourceTeam.DataSourcePoints = dataSourcePoints;
|
||
dataSourceTeams.Add(dataSourceTeam);
|
||
}
|
||
//for (int i = 1; i < dt.Columns.Count; i++)
|
||
//{
|
||
// Model.DataSourceTeam dataSourceTeam = new Model.DataSourceTeam();
|
||
// dataSourceTeam.DataPointName = dt.Columns[i].ToString();
|
||
// List<Model.DataSourcePoint> dataSourcePoints = new List<Model.DataSourcePoint>();
|
||
// for (int j = 0; j < dt.Rows.Count; j++)
|
||
// {
|
||
// Model.DataSourcePoint dataSourcePoint = new Model.DataSourcePoint();
|
||
// dataSourcePoint.PointText = dt.Rows[j][0].ToString();
|
||
// dataSourcePoint.PointValue = dt.Rows[j][i].ToString();
|
||
// dataSourcePoints.Add(dataSourcePoint);
|
||
// }
|
||
// dataSourceTeam.DataSourcePoints = dataSourcePoints;
|
||
// dataSourceTeams.Add(dataSourceTeam);
|
||
//}
|
||
dataSourceChart.DataSourceTeams = dataSourceTeams;
|
||
return dataSourceChart;
|
||
}
|
||
|
||
#region 关闭弹出窗
|
||
/// <summary>
|
||
/// 关闭弹出窗
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
protected void Window1_Close(object sender, WindowCloseEventArgs e)
|
||
{
|
||
//SqlParameter[] valuesgjsx = new SqlParameter[]
|
||
// {
|
||
// new SqlParameter("@UserId", this.CurrUser.UserId),
|
||
// };
|
||
//DataTable dtgjsx = BLL.SQLHelper.GetDataTableRunProc("GJSX_SpGJSXDesktop", valuesgjsx);
|
||
//this.gvGJSX.DataSource = dtgjsx;
|
||
//this.gvGJSX.DataBind();
|
||
}
|
||
#endregion
|
||
|
||
protected void gvNotice_RowCommand(object sender, GridCommandEventArgs e)
|
||
{
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 创建Chart图形
|
||
/// </summary>
|
||
/// <param name="dataSourceChart">Chart类</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].ToolTip = "#VALX,#VALY";
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|