ZHJA_HJGL/HJGL_ZH/FineUIPro.Web/common/main.aspx.cs

342 lines
18 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.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";
}
}
}
}