123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using WWPipeLine.MapBasic.Conditions;
- using WWPipeLine.MapBasic;
- using WeifenLuo.WinFormsUI.Docking;
- using SuperMap.Data;
- using SuperMap.Mapping;
- namespace WWPipeLine.MapTools.Conditions.EditGuanWang
- {
- public partial class GuanDianXian : ConditionPanel
- {
- Point2D newPoint = new Point2D(0, 0);
- GeoPoint newGeoPoint = null;
- Recordset _rdSelect = null;
- string yuanBSM = string.Empty;
- Recordset rdJSLKqsdh = null;
- Recordset rdJSLKzddh = null;
- public GuanDianXian()
- {
- this.ConditionPanelName = "点线联动";
- InitializeComponent();
- uilbRemark.Text = "首先在选择一个需要改动的管点。然后双击确认新管点位置。\r\n 点击“新管线预览”,确认无误后点击确定。";
- }
- protected override void OnLoad(EventArgs e)
- {
- ComsStatic.SetLayersIsSelectableFalse(ComsStatic.dvJSJDPT.Name, true);
- MapControl.MouseDoubleClick += MapControl_MouseDoubleClick;
- MapControl.GeometrySelected += MapControl_GeometrySelected;
- }
- private void MapControl_GeometrySelected(object sender, SuperMap.UI.GeometrySelectedEventArgs e)
- {
- Selection[] _selection = MapControl.Map.FindSelection(true);
- _rdSelect = _selection[0].ToRecordset();
- DatasetVector _dv = _rdSelect.Dataset as DatasetVector;
- if (_dv.Name != ComsStatic.dvJSJDPT.Name || _selection.Length != 1 || _selection[0].Count != 1)
- {
- Sunny.UI.UIMessageTip.ShowError("仅可以选择节点图层,仅可以选择一个节点"); return;
- }
- _rdSelect.MoveFirst();
- StringBuilder sb = new StringBuilder();
- yuanBSM = _rdSelect.GetFieldValue("bsm").ToString();
- sb.AppendFormat("{0}:{1}\r\n", "标识码", yuanBSM);
- sb.AppendFormat("{0}:{1}\r\n", "附属物", _rdSelect.GetFieldValue("fsw"));
- sb.AppendFormat("{0}:{1}\r\n", "X", _rdSelect.GetFieldValue("x"));
- sb.AppendFormat("{0}:{1}\r\n", "Y", _rdSelect.GetFieldValue("y"));
- uilbStart.Text = "原节点:" + sb.ToString();
- }
- private void MapControl_MouseDoubleClick(object sender, MouseEventArgs e)
- {
- newPoint = MapControl.Map.PixelToMap(new Point(e.X, e.Y));
- newGeoPoint = new GeoPoint(newPoint.X, newPoint.Y);
- int index = MapControl.Map.TrackingLayer.IndexOf("MapControl_MouseDoubleClick");
- if (index > -1) MapControl.Map.TrackingLayer.Remove(index);
- MapControl.Map.TrackingLayer.Add(newGeoPoint, "MapControl_MouseDoubleClick");
- StringBuilder sb = new StringBuilder();
- sb.AppendFormat("{0}:{1} ", "X", ComsStatic.StringToDouble(newPoint.X));
- sb.AppendFormat("{0}:{1}\r\n", "Y", ComsStatic.StringToDouble(newPoint.Y));
- uilbEnd.Text = "新节点:" + sb.ToString();
- }
- public override object Do(DockPanel dockPanel = null)
- {
- EditHistory m_EditHistory = new EditHistory();
- IsShowResultWindow = false;
- if (string.IsNullOrEmpty(yuanBSM) || newGeoPoint == null || (rdJSLKqsdh is null && rdJSLKzddh is null))
- {
- Sunny.UI.UIMessageTip.ShowError("请先选择原节点和新节点,然后点击“新管线预览”"); return false;
- }
- try
- {
- //1 增加新 节点
- Recordset rddvJSJDPT = ComsStatic.dvJSJDPT.GetRecordset(false, CursorType.Dynamic);
- m_EditHistory.Add(EditType.AddNew, rddvJSJDPT, true);
- rddvJSJDPT.AddNew(newGeoPoint);
- rddvJSJDPT.SetFieldValue("x", newGeoPoint.X);
- rddvJSJDPT.SetFieldValue("y", newGeoPoint.Y);
- Int32 objID = Int32.Parse(ComsStatic.GetMaxValue(ComsStatic.dvJSJDPT, "OBJECTID").ToString()) + 1;
- string _duandian = "JSJDPT" + objID;
- rddvJSJDPT.SetFieldValue("ms", 0);
- rddvJSJDPT.SetFieldValue("lrrq", DateTime.Now.ToLocalTime());
- rddvJSJDPT.SetFieldValue("enabled", 1);
- rddvJSJDPT.SetFieldValue("wth", _duandian);
- rddvJSJDPT.SetFieldValue("bsm", _duandian);
- rddvJSJDPT.SetFieldValue("fldm", "供水节点");
- rddvJSJDPT.SetFieldValue("objectid", objID);
- rddvJSJDPT.SetFieldValue("cqbh", "管线联动");
- if (rddvJSJDPT.Update())
- {
- }
- else
- {
- ComsStatic.EditHistoryUndo(m_EditHistory);
- Sunny.UI.UIMessageTip.ShowError("新节点新增 操作失败!"); return false;
- }
- if (rdJSLKqsdh.RecordCount > 0)//2 更改原管线的节点 起始点号
- {
- rdJSLKqsdh.MoveFirst();
- while (!rdJSLKqsdh.IsEOF)
- {
- rddvJSJDPT = ComsStatic.QueryRecordset(ComsStatic.dvJSJDPT, string.Format(" bsm='{0}'", rdJSLKqsdh.GetFieldValue("zddh")));
- Point2D p = new Point2D(ComsStatic.StringToDouble(rddvJSJDPT.GetFieldValue("X")), ComsStatic.StringToDouble(rddvJSJDPT.GetFieldValue("Y")));
- GeoLine newLine = new GeoLine(new Point2Ds(newPoint, p));
- m_EditHistory.Add(EditType.Modify, rdJSLKqsdh, true);
- rdJSLKqsdh.Edit();
- rdJSLKqsdh.SetFieldValue("qsdh", _duandian);
- rdJSLKqsdh.SetGeometry(newLine);
- if (rdJSLKqsdh.Update())
- { }
- else
- {
- ComsStatic.EditHistoryUndo(m_EditHistory);
- Sunny.UI.UIMessageTip.ShowError("终点点号不变,更新起始点号 操作失败!"); return false;
- }
- rdJSLKqsdh.MoveNext();
- }
- }
- if (rdJSLKzddh.RecordCount > 0)//3 更改原管线的节点 终点点号
- {
- rdJSLKzddh.MoveFirst();
- while (!rdJSLKzddh.IsEOF)
- {
- rddvJSJDPT = ComsStatic.QueryRecordset(ComsStatic.dvJSJDPT, string.Format(" bsm='{0}'", rdJSLKzddh.GetFieldValue("qsdh")));
- Point2D p = new Point2D(ComsStatic.StringToDouble(rddvJSJDPT.GetFieldValue("X")), ComsStatic.StringToDouble(rddvJSJDPT.GetFieldValue("Y")));
- GeoLine newLine = new GeoLine(new Point2Ds(p, newPoint));
- m_EditHistory.Add(EditType.Modify, rdJSLKzddh, true);
- rdJSLKzddh.Edit();
- rdJSLKzddh.SetFieldValue("zddh", _duandian);
- rdJSLKzddh.SetGeometry(newLine);
- if (rdJSLKzddh.Update())
- { }
- else
- {
- ComsStatic.EditHistoryUndo(m_EditHistory);
- Sunny.UI.UIMessageTip.ShowError("起始管点不变,更新终点管点 操作失败!"); return false;
- }
- rdJSLKzddh.MoveNext();
- }
- }
- //4 删除 原节点
- m_EditHistory.Add(EditType.Delete, _rdSelect, true);
- if (_rdSelect.DeleteAll())
- { }
- else
- {
- ComsStatic.EditHistoryUndo(m_EditHistory);
- Sunny.UI.UIMessageTip.ShowError("原节点删除失败!"); return false;
- }
- }
- catch
- {
- ComsStatic.EditHistoryUndo(m_EditHistory);
- Sunny.UI.UIMessageTip.ShowError("点线联动出错!"); return false;
- }
- MapControl.Map.Refresh();
- return true;
- }
- private void uibtnLianjie_Click(object sender, EventArgs e)//生成新的管线
- {
- if (string.IsNullOrEmpty(yuanBSM) || newGeoPoint is null)
- {
- Sunny.UI.UIMessageTip.ShowError("请先选择原节点和新节点"); return;
- }
- ComsStatic.TrackingLayerRemove("newLine");
- GeoLine newLine = null;
- rdJSLKqsdh = ComsStatic.QueryRecordsetDynamic(ComsStatic.dvJSLK, string.Format(" qsdh='{0}' ", yuanBSM));
- rdJSLKzddh = ComsStatic.QueryRecordsetDynamic(ComsStatic.dvJSLK, string.Format(" zddh='{0}' ", yuanBSM));
- Recordset rdJSJDPT = null;
- if (rdJSLKqsdh.RecordCount == 0 && rdJSLKzddh.RecordCount == 0) { Sunny.UI.UIMessageTip.ShowError("原节点未查询到管线信息!"); return; }
- if (rdJSLKqsdh.RecordCount != 0)
- {
- rdJSLKqsdh.MoveFirst();
- while (!rdJSLKqsdh.IsEOF)
- {
- rdJSJDPT = ComsStatic.QueryRecordset(ComsStatic.dvJSJDPT, string.Format(" bsm='{0}'", rdJSLKqsdh.GetFieldValue("zddh")));
- Point2D p = new Point2D(ComsStatic.StringToDouble(rdJSJDPT.GetFieldValue("X")), ComsStatic.StringToDouble(rdJSJDPT.GetFieldValue("Y")));
- newLine = new GeoLine(new Point2Ds(newPoint, p));
- newLine.Style = ComsStatic.geoStyle_Red_1mm_OpaqueRate;
- MapControl.Map.TrackingLayer.Add(newLine, "newLine");
- rdJSLKqsdh.MoveNext();
- }
- }
- if (rdJSLKzddh.RecordCount != 0)
- {
- rdJSLKzddh.MoveFirst();
- while (!rdJSLKzddh.IsEOF)
- {
- rdJSJDPT = ComsStatic.QueryRecordset(ComsStatic.dvJSJDPT, string.Format(" bsm='{0}'", rdJSLKzddh.GetFieldValue("qsdh")));
- Point2D p = new Point2D(ComsStatic.StringToDouble(rdJSJDPT.GetFieldValue("X")), ComsStatic.StringToDouble(rdJSJDPT.GetFieldValue("Y")));
- newLine = new GeoLine(new Point2Ds(newPoint, p));
- newLine.Style = ComsStatic.geoStyle_Red_1mm_OpaqueRate;
- MapControl.Map.TrackingLayer.Add(newLine, "newLine");
- rdJSLKzddh.MoveNext();
- }
- }
- MapControl.Map.Refresh();
- }
- private void uiButton2_Click(object sender, EventArgs e)
- {
- MapControl.Map.TrackingLayer.Clear(); MapControl.Map.RefreshEx(MapControl.Map.ViewBounds);
- rdJSLKqsdh = null; rdJSLKzddh = null; _rdSelect = null; newGeoPoint = null; yuanBSM = string.Empty;
- }
- public override void AfterClose()
- {
- ComsStatic.RecordsetDispose(_rdSelect); ComsStatic.RecordsetDispose(rdJSLKqsdh); ComsStatic.RecordsetDispose(rdJSLKzddh);
- MapControl.MouseDoubleClick -= MapControl_MouseDoubleClick;
- MapControl.GeometrySelected -= MapControl_GeometrySelected;
- base.AfterClose();
- }
- }
- }
|