YuJing.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using SuperMap.Data;
  2. using SuperMap.Mapping;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Windows.Forms;
  8. using WWPipeLine.MapBasic;
  9. using WWPipeLine.MapBasic.Conditions;
  10. namespace WWPipeLine.MapTools.Conditions.AnalystToolBar
  11. {
  12. public class YuJing : BasicToolBar
  13. {
  14. GeoRegion m_geo = null;
  15. public YuJing() : base()
  16. {
  17. this.ConditionPanelName = "预警分析";
  18. var startDrawToolStripButton = new ToolStripButton()
  19. {
  20. DisplayStyle = ToolStripItemDisplayStyle.ImageAndText,
  21. Text = "绘制预警区域",
  22. Name = "StartDraw",
  23. AutoToolTip = false
  24. };
  25. var analystToolStripButton = new ToolStripButton()
  26. {
  27. DisplayStyle = ToolStripItemDisplayStyle.ImageAndText,
  28. Text = "分析",
  29. Name = "Analyst",
  30. AutoToolTip = false
  31. };
  32. base.ToolStrip.Items.Add(startDrawToolStripButton);
  33. base.ToolStrip.Items.Add(analystToolStripButton);
  34. startDrawToolStripButton.Click += StartDrawToolStripButton_Click;
  35. analystToolStripButton.Click += AnalystToolStripButton_Click;
  36. }
  37. private void AnalystToolStripButton_Click(object sender, EventArgs e)
  38. {
  39. if (m_geo is null) { Sunny.UI.UIMessageTip.ShowError("请先绘制预警区域"); return; }
  40. Recordset rdJSLK = dvJSLK_cp.Query(m_geo, 1, "1=1", CursorType.Static);
  41. if (rdJSLK is null)
  42. {
  43. Sunny.UI.UIMessageTip.ShowError("当前图层没有查询到数据"); return;
  44. }
  45. DataTable dt = MapBasic.ComsStatic.RecordsetToDataTable(rdJSLK);
  46. rdJSLK.Close(); rdJSLK.Dispose();
  47. DataTable dtNew = dt.DefaultView.ToTable(false, new string[] { "smid", "bsm", "qsdh", "zddh", "lx", "cz", "gj", "dzms", "msfs", "msrq", "qsdw", "cd" });
  48. DataColumn dataColumn;
  49. dataColumn = new DataColumn { ColumnName = "nxyj", Caption = "预警年限" }; dtNew.Columns.Add(dataColumn); dtNew.Columns["nxyj"].SetOrdinal(0);
  50. dataColumn = new DataColumn { ColumnName = "nxbz", Caption = "标准使用年限" }; dtNew.Columns.Add(dataColumn); dtNew.Columns["nxbz"].SetOrdinal(1);
  51. DataTable dtChaoChu = dtNew.Clone();
  52. DataTable dtQueShao = dtNew.Clone();
  53. DataTable dtYuJing = dtNew.Clone();
  54. Dictionary<string, object> dic = ComsStatic.getGuanXianPeiZhi("年限预警配置");
  55. string dicKey1 = "";
  56. string dicKey2 = "";
  57. int NianXianYuJing = 0;
  58. int NianXianBiaoZhun = 0;
  59. foreach (DataRow dr in dtNew.Rows)
  60. {
  61. NianXianYuJing = 0; NianXianBiaoZhun = 0;
  62. dicKey1 = dr["cz"].ToString() + "_gxyjnx";
  63. dicKey2 = dr["cz"].ToString() + "_gxbznx";
  64. if (dic.ContainsKey(dicKey1)) NianXianYuJing = MapBasic.ComsStatic.StringToInt(dic[dicKey1]);
  65. if (dic.ContainsKey(dicKey2)) NianXianBiaoZhun = MapBasic.ComsStatic.StringToInt(dic[dicKey2]);
  66. if (NianXianYuJing == 0 || NianXianBiaoZhun == 0)
  67. {
  68. dtQueShao.ImportRow(dr); continue;
  69. }
  70. dr["nxyj"] = NianXianYuJing; dr["nxbz"] = NianXianBiaoZhun;
  71. DateTime msrq = DateTime.Parse(dr["msrq"].ToString());
  72. //已经超过 标准年限
  73. if (DateTime.Now > msrq.AddYears(NianXianBiaoZhun))
  74. dtChaoChu.ImportRow(dr);
  75. //超过预警年限 未达到标准年限
  76. if (DateTime.Now > msrq.AddYears(NianXianYuJing) && DateTime.Now < msrq.AddYears(NianXianBiaoZhun))
  77. dtYuJing.ImportRow(dr);
  78. }
  79. DataSet ds = new DataSet();
  80. dtYuJing.TableName = string.Format("达到预警年限 {0}根", dtYuJing.Rows.Count); ds.Tables.Add(dtYuJing);
  81. dtChaoChu.TableName = string.Format("超出使用年限 {0}根", dtChaoChu.Rows.Count); ds.Tables.Add(dtChaoChu);
  82. dtQueShao.TableName = string.Format("缺少配置预警 {0}根", dtQueShao.Rows.Count); ds.Tables.Add(dtQueShao);
  83. AnalystResultTabControl from = new AnalystResultTabControl(ds, "预警分析结果");
  84. from.ShowDialog();
  85. this.CloseToolBar();
  86. }
  87. private void MapControl_Tracked(object sender, SuperMap.UI.TrackedEventArgs e)
  88. {
  89. if (e.Geometry is null) return;
  90. m_geo = e.Geometry.Clone() as GeoRegion;
  91. if (m_geo is null) { Sunny.UI.UIMessageTip.ShowError("查询区域绘制失败"); return; }
  92. m_geo.Style = ComsStatic.geoStyle_Red_1mm_OpaqueRate;
  93. MapControl.Map.TrackingLayer.Clear();
  94. MapControl.Map.TrackingLayer.Add(m_geo, "GeoRectangle");
  95. MapControl.Map.Refresh();
  96. }
  97. private void StartDrawToolStripButton_Click(object sender, EventArgs e)
  98. {
  99. MapControl.Map.TrackingLayer.Clear();
  100. MapControl.Action = SuperMap.UI.Action.CreatePolygon;
  101. MapControl.Tracked += MapControl_Tracked;
  102. }
  103. public override void AfterClose()
  104. {
  105. MapControl.Tracked -= MapControl_Tracked;
  106. base.AfterClose();
  107. }
  108. private void InitializeComponent()
  109. {
  110. this.SuspendLayout();
  111. //
  112. // ToolsConditions
  113. //
  114. this.Name = "ToolsConditions";
  115. this.ResumeLayout(false);
  116. }
  117. }
  118. }