293 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			293 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using System.Collections.Generic; | |||
|  | using System.Data; | |||
|  | using System.Data.SqlClient; | |||
|  | using System.Linq; | |||
|  | using BLL; | |||
|  | 
 | |||
|  | namespace FineUIPro.Web.CQMS.Check | |||
|  | { | |||
|  |     public partial class JointCheckChartStatistics : PageBase | |||
|  |     { | |||
|  |         #region 加载页面 | |||
|  |         /// <summary> | |||
|  |         /// 加载页面 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void Page_Load(object sender, EventArgs e) | |||
|  |         { | |||
|  |             if (!IsPostBack) | |||
|  |             { | |||
|  |                 this.txtStartRectificationTime.Text = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd"); | |||
|  |                 this.txtEndRectificationTime.Text = DateTime.Now.ToString("yyyy-MM-dd"); | |||
|  |             } | |||
|  |                 this.AnalyseData(); | |||
|  | 
 | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 统计 | |||
|  |         /// <summary> | |||
|  |         /// 统计分析 | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param>。 | |||
|  |         protected void BtnAnalyse_Click(object sender, EventArgs e) | |||
|  |         { | |||
|  |             this.AnalyseData(); | |||
|  |             PageContext.RegisterStartupScript(@" setTimeout(function () { rendChart(" + legend+","+xAxis+","+series+ ");},1000);  "); | |||
|  |            | |||
|  |         } | |||
|  |         public string legend = "[]"; | |||
|  |         public string xAxis="[]"; | |||
|  |         public string series="[]"; | |||
|  | 
 | |||
|  |         /// <summary> | |||
|  |         /// 统计方法 | |||
|  |         /// </summary> | |||
|  |         private void AnalyseData() | |||
|  |         { | |||
|  |             if (this.rblState.SelectedValue == "0") | |||
|  |             { | |||
|  | 
 | |||
|  | 
 | |||
|  |                 string strSql = @" select UnitId,unitName,
 | |||
|  |                              Sum(case when OK='0' then 1 else 0 end) as todo, | |||
|  |                              Sum(case when OK='1' then 1 else 0 end) as finish | |||
|  |                              from View_Check_JointCheckDetail  | |||
|  |                              where ProjectId=@ProjectId   | |||
|  |                             ";
 | |||
|  |                 if (!string.IsNullOrEmpty(this.txtStartRectificationTime.Text.Trim())) | |||
|  |                 { | |||
|  |                     strSql += " and CheckDate >='" + this.txtStartRectificationTime.Text.Trim() + "' "; | |||
|  |                 } | |||
|  |                 if (!string.IsNullOrEmpty(this.txtEndRectificationTime.Text.Trim())) | |||
|  |                 { | |||
|  |                     strSql += " and CheckDate <'" + DateTime.Parse(  this.txtEndRectificationTime.Text.Trim()).AddDays(1).ToString("yyyy-MM-dd") + "' "; | |||
|  |                 } | |||
|  |                 strSql += " group by UnitId,unitName "; | |||
|  |                 List<SqlParameter> listStr = new List<SqlParameter>(); | |||
|  |                 listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); | |||
|  | 
 | |||
|  |                 SqlParameter[] parameter = listStr.ToArray(); | |||
|  |                 DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); | |||
|  |                 legend = "[ \"未闭合\", \"已闭合\"]"; | |||
|  |                 xAxis = "["; | |||
|  | 
 | |||
|  |                  | |||
|  |                 string series2 = "["; | |||
|  |                 string series3 = "["; | |||
|  |                 foreach (DataRow dr in tb.Rows) | |||
|  |                 { | |||
|  |                     xAxis += "\"" + dr["unitName"].ToString() + "\","; | |||
|  |                     series2 += "" + dr["todo"].ToString() + ","; | |||
|  |                     series3 += "" + dr["finish"].ToString() + ","; | |||
|  | 
 | |||
|  | 
 | |||
|  |                 } | |||
|  |                 xAxis = xAxis.TrimEnd(','); | |||
|  |                 xAxis += "]"; | |||
|  |                 | |||
|  |                 series2 = series2.TrimEnd(','); | |||
|  |                 series2 += "]"; | |||
|  |                 series3 = series3.TrimEnd(','); | |||
|  |                 series3 += "]"; | |||
|  | 
 | |||
|  |                 series = @"[
 | |||
|  |                             { | |||
|  |                                 name: '未闭合', | |||
|  |                                 type: 'bar',  | |||
|  |                                 barWidth: 20, | |||
|  |                                 label: { | |||
|  |                                         show: true, | |||
|  |                                         position: 'top' | |||
|  |                                         }, | |||
|  |                                 emphasis: { | |||
|  |                                     focus: 'series' | |||
|  |                                 }, | |||
|  |                                 data: " + series2 + @" | |||
|  |                             }, | |||
|  |                             { | |||
|  |                                 name: '已闭合', | |||
|  |                                 type: 'bar',  | |||
|  |                                 label: { | |||
|  |                                         show: true, | |||
|  |                                         position: 'top' | |||
|  |                                         }, | |||
|  |                                 barWidth: 20, | |||
|  |                                 emphasis: { | |||
|  |                                     focus: 'series' | |||
|  |                                 }, | |||
|  |                                 data: " + series3 + @" | |||
|  |                             }]";
 | |||
|  | 
 | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 string strSql = @" select QuestionDef,QuestionTypeStr,
 | |||
|  |                              count(*) as count | |||
|  |                              from View_Check_JointCheckDetail  | |||
|  |                              where ProjectId=@ProjectId | |||
|  |                               ";
 | |||
|  |                 if (!string.IsNullOrEmpty(this.txtStartRectificationTime.Text.Trim())) | |||
|  |                 { | |||
|  |                     strSql += " and CheckDate >='" + this.txtStartRectificationTime.Text.Trim() + "' "; | |||
|  |                 } | |||
|  |                 if (!string.IsNullOrEmpty(this.txtEndRectificationTime.Text.Trim())) | |||
|  |                 { | |||
|  |                     strSql += " and CheckDate <'" + DateTime.Parse(this.txtEndRectificationTime.Text.Trim()).AddDays(1).ToString("yyyy-MM-dd") + "' "; | |||
|  |                 } | |||
|  |                 strSql += " group by QuestionDef,QuestionTypeStr "; | |||
|  |                 List<SqlParameter> listStr = new List<SqlParameter>(); | |||
|  |                 listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); | |||
|  | 
 | |||
|  |                 SqlParameter[] parameter = listStr.ToArray(); | |||
|  |                 DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); | |||
|  |                 Dictionary<string, Dictionary<string, string>> data = new Dictionary<string, Dictionary<string, string>>(); | |||
|  | 
 | |||
|  |                 legend = "["; | |||
|  |                 xAxis = "["; | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |                 HashSet<string> xdic = new HashSet<string>(); | |||
|  |                 HashSet<string> unitdic = new HashSet<string>(); | |||
|  | 
 | |||
|  |                 foreach (DataRow dr in tb.Rows) | |||
|  |                 { | |||
|  |                     //if (dr["QuestionDef"].ToString().Length > 20) | |||
|  |                     //{ | |||
|  |                     //    dr["QuestionDef"] = dr["QuestionDef"].ToString().Substring(0, 20); | |||
|  |                     //} | |||
|  |                     xdic.Add(dr["QuestionTypeStr"].ToString()); | |||
|  |                     unitdic.Add(dr["QuestionDef"].ToString()); | |||
|  |                     Dictionary<string, string> temp = null; | |||
|  |                     if (!data.ContainsKey(dr["QuestionDef"].ToString())) | |||
|  |                     { | |||
|  |                         data.Add(dr["QuestionDef"].ToString(), new Dictionary<string, string>()); | |||
|  |                     } | |||
|  |                     temp = data[dr["QuestionDef"].ToString()]; | |||
|  |                     if (!temp.ContainsKey(dr["QuestionTypeStr"].ToString())) | |||
|  |                     { | |||
|  |                         temp.Add(dr["QuestionTypeStr"].ToString(), "0"); | |||
|  |                     } | |||
|  | 
 | |||
|  |                     temp[dr["QuestionTypeStr"].ToString()] = dr["count"].ToString(); | |||
|  | 
 | |||
|  |                 } | |||
|  | 
 | |||
|  |                 foreach (string types in xdic) | |||
|  |                 { | |||
|  |                     xAxis += "\"" + types + "\","; | |||
|  |                 } | |||
|  |                 //xAxis = xAxis.TrimEnd(','); | |||
|  |                 xAxis += "]"; | |||
|  |                 //foreach (string types in unitdic) | |||
|  |                 //{ | |||
|  |                     | |||
|  |                      | |||
|  |                 //    legend += "\"" + types + "\","; | |||
|  |                 //} | |||
|  |                 //legend = legend.TrimEnd(','); | |||
|  |                 legend += "]"; | |||
|  |                 series = "["; | |||
|  |                 foreach (string unit in data.Keys) | |||
|  |                 { | |||
|  |                     string tempseries = ""; | |||
|  |                     foreach (string types in xdic) | |||
|  |                     { | |||
|  |                         if (data[unit].ContainsKey(types)) | |||
|  |                         { | |||
|  |                             tempseries += "" + data[unit][types] + ","; | |||
|  |                         } | |||
|  |                         else | |||
|  |                         { | |||
|  |                             tempseries += ","; | |||
|  |                         } | |||
|  |                     } | |||
|  |                     //stack: '未闭合', | |||
|  |                     series += @"{
 | |||
|  |                                 name: '"+ unit.Replace("\n","").Replace("\r", "") + @"', | |||
|  |                                 type: 'bar', | |||
|  |                                  | |||
|  |                                 barWidth: 10, | |||
|  |                                  | |||
|  |                                 label: { | |||
|  |                                             show: true, | |||
|  |                                             position: 'top' | |||
|  |                                         }, | |||
|  |                                 emphasis: { | |||
|  |                                     focus: 'series' | |||
|  |                                 }, | |||
|  |                                 data: [" + tempseries+ @"]  | |||
|  |                                 },";
 | |||
|  |                 } | |||
|  |                  | |||
|  |                  | |||
|  |                 series = series.TrimEnd(','); | |||
|  |                 series += "]"; | |||
|  |                 | |||
|  |                 | |||
|  | 
 | |||
|  |                  | |||
|  |             } | |||
|  | 
 | |||
|  |             //   this.ChartAccidentTime.CreateChart(BLL.ChartControlService.GetDataSourceChart(dtTime, "单位巡检分析", this.drpChartType.SelectedValue, 1130, 450, this.ckbShow.Checked)); | |||
|  |             //#endregion | |||
|  |             //} | |||
|  |             //else | |||
|  |             //{ | |||
|  |             //    #region 按检查项 | |||
|  | 
 | |||
|  |             //    ///按检查项 | |||
|  |             //    DataTable dtTime = new DataTable(); | |||
|  |             //    dtTime.Columns.Add("检查项", typeof(string)); | |||
|  |             //    dtTime.Columns.Add("总数量", typeof(string)); | |||
|  |             //    dtTime.Columns.Add("待整改", typeof(string)); | |||
|  |             //    dtTime.Columns.Add("已整改", typeof(string)); | |||
|  | 
 | |||
|  |             //    var types = from x in Funs.DB.HSSE_Hazard_HazardRegisterTypes where x.HazardRegisterType == "1" orderby x.TypeCode select x; | |||
|  |             //    foreach (var item in types) | |||
|  |             //    { | |||
|  |             //        DataRow rowTime = dtTime.NewRow(); | |||
|  |             //        Model.SpTDesktopItem newspItem = new Model.SpTDesktopItem(); | |||
|  |             //        rowTime["检查项"] = item.RegisterTypesName; | |||
|  |             //        var typeHazad = hazardRegisters.Where(x => x.RegisterTypesId == item.RegisterTypesId); | |||
|  |             //        rowTime["总数量"] = typeHazad.Count(); | |||
|  |             //        rowTime["待整改"] = typeHazad.Where(x => x.States == "1" || x.States == null).Count(); | |||
|  |             //        rowTime["已整改"] = typeHazad.Where(x => x.States == "3" || x.States == "2").Count(); | |||
|  |             //        dtTime.Rows.Add(rowTime); | |||
|  |             //    } | |||
|  | 
 | |||
|  |             //    //  this.ChartAccidentTime.CreateChart(BLL.ChartControlService.GetDataSourceChart(dtTime, "巡检问题分析", this.drpChartType.SelectedValue, 1100, 330, this.ckbShow.Checked)); | |||
|  | 
 | |||
|  |             //    #endregion | |||
|  |             //} | |||
|  |         } | |||
|  |         #endregion | |||
|  | 
 | |||
|  |         #region 图形 | |||
|  |         /// <summary> | |||
|  |         /// 图形变换  | |||
|  |         /// </summary> | |||
|  |         /// <param name="sender"></param> | |||
|  |         /// <param name="e"></param> | |||
|  |         protected void drpChartType_SelectedIndexChanged(object sender, EventArgs e) | |||
|  |         { | |||
|  |             this.AnalyseData(); | |||
|  |             PageContext.RegisterStartupScript(@"setTimeout(function () {  rendChart(" + legend + "," + xAxis + "," + series + ");}, 1000); "); | |||
|  | 
 | |||
|  | 
 | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void ckbShow_CheckedChanged(object sender, CheckedEventArgs e) | |||
|  |         { | |||
|  |             this.AnalyseData(); | |||
|  | 
 | |||
|  |             PageContext.RegisterStartupScript(@"setTimeout(function () { rendChart(" + legend + "," + xAxis + "," + series + ");}, 1000);"); | |||
|  | 
 | |||
|  |         } | |||
|  |         #endregion | |||
|  |     } | |||
|  | } |