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 listStr = new List(); 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 dataSourceTeams = new List(); for (int i = 0; i < dt.Rows.Count; i++) { Model.DataSourceTeam dataSourceTeam = new Model.DataSourceTeam(); dataSourceTeam.DataPointName = "焊接工作量";//dt.Rows[i][0].ToString(); List dataSourcePoints = new List(); 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 dataSourcePoints = new List(); // 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 关闭弹出窗 /// /// 关闭弹出窗 /// /// /// 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) { } /// /// 创建Chart图形 /// /// Chart类 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"; } } } }