using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Geodatabase; using KGIS.Framework.AE; using KGIS.Framework.AE.Enum; using KGIS.Framework.DBOperator; using KGIS.Framework.Maps; using KGIS.Framework.Utils; using KGIS.Framework.Utils.Helper; using KGIS.Framework.Views; using Kingo.PluginServiceInterface; using Kingo.PluginServiceInterface.Enums; using Kingo.PluginServiceInterface.Model; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Windows; using System.Windows.Controls; namespace Kingo.Plugin.General.View { /// /// 图斑基本信息 /// public partial class UCTBBasicInformation : UserControl, IElementInfo, INotifyPropertyChanged { public bool showDetail { get; set; } private int m_DataIndex { get; set; } private int m_DataCount { get; set; } #region 接口实现 public Guid ID { get; set; } public DockStyle DockAreas { get; set; } public System.Drawing.Size FloatSize { get; set; } public int DockWidth { get; set; } public int DockHeight { get; set; } public DockStyle DefaultArea { get; set; } public bool ShowCloseButton { get; set; } public bool ShowAutoHideButton { get; set; } public string Title { get; set; } public bool IsShowInMap { get; set; } public bool IsShow { get; set; } public int ShowIndex { get; set; } public bool ResetSize { get; set; } public bool AllowEdit { get; set; } #endregion public UCTBBasicInformation() { InitializeComponent(); DevExpress.Xpf.Core.ThemeManager.SetTheme(this, DevExpress.Xpf.Core.Theme.Office2013LightGray); this.Title = "图斑基本信息"; } private void TxtYPSM_GotFocus(object sender, RoutedEventArgs e) { if ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) != null) { (MapsManager.Instance.CurrProjectInfo as ProjectInfo).EnableShortcut = false; } } private void TxtYPSM_LostFocus(object sender, RoutedEventArgs e) { if ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) != null) { (MapsManager.Instance.CurrProjectInfo as ProjectInfo).EnableShortcut = true; } } private NYYSInfo NYYSInfo { get; set; } private TaskPackage taskPackage { get; set; } private IEngineEditor engineEditor = new EngineEditorClass(); public event PropertyChangedEventHandler PropertyChanged; public void BindData(object obj) { try { NYYSInfo nYYSInfo = obj as NYYSInfo; if (nYYSInfo == null) { this.DataContext = null; return; } this.NYYSInfo = nYYSInfo; this.taskPackage = nYYSInfo.TaskPackages; this.DataContext = null; switch (nYYSInfo.BingDataType) { case DTBDataTypeEnum.DTBJK: nYYSInfo.IsReadOnly = true; break; case DTBDataTypeEnum.DTBSL: nYYSInfo.IsReadOnly = true; break; case DTBDataTypeEnum.NYYCL: nYYSInfo.IsReadOnly = true; break; } this.DataContext = NYYSInfo; } catch (Exception ex) { LogAPI.Debug($"{ex.Message}"); LogAPI.Debug($"{ex.Source}"); } } public void SaveEdit() { //IRDBHelper rdbHelper = null; IWorkspaceAPI workspaceAPI = null; try { if (taskPackage == null) return; NYYSInfo = this.DataContext as NYYSInfo; if (NYYSInfo.BingDataType != DTBDataTypeEnum.NYYCL) return; //if (engineEditor == null) //{ // engineEditor = new EngineEditorClass(); //} //if (engineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing) //{ // if (engineEditor.HasEdits()) // { // engineEditor.StopEditing(true); // } //} //if (string.IsNullOrWhiteSpace((MapsManager.Instance.CurrProjectInfo as ProjectInfo).UserName)) //{ // throw new Exception("未获取到当前用户信息,请先进行用户信息设置!"); //} if (this.NYYSInfo.WYRWTB == null || string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.XZQDM) || this.NYYSInfo.WYRWTB.XZQDM.Length != 6) { if (this.NYYSInfo.WYRWTB != null && string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.XZQDM)) this.NYYSInfo.WYRWTB.XZQDM = GetCJDM(6); if (this.NYYSInfo.WYRWTB == null || string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.XZQDM) || this.NYYSInfo.WYRWTB.XZQDM.Length != 6) { throw new Exception("行政区代码为为空或不正确(行政区代码为6位)!"); } } //if (string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.XZDM) || this.NYYSInfo.WYRWTB.XZDM.Length != 9) //{ // if (string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.XZDM)) // this.NYYSInfo.WYRWTB.XZDM = GetCJDM(9); // if (string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.XZDM) || this.NYYSInfo.WYRWTB.XZDM.Length != 9) // throw new Exception("乡镇代码为空或不正确(乡镇代码为9位)!"); //} //if (string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.CJDM) || this.NYYSInfo.WYRWTB.CJDM.Length != 12) //{ // if (string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.CJDM)) // this.NYYSInfo.WYRWTB.CJDM = GetCJDM(12); // if (string.IsNullOrWhiteSpace(this.NYYSInfo.WYRWTB.CJDM) || this.NYYSInfo.WYRWTB.CJDM.Length != 12) // throw new Exception("村代码为空或不正确(村代码为12位)!"); //} workspaceAPI = new WorkspaceAPI(taskPackage.SchemeGDBPath, WorkspaceTypeEnum.GDBFile, true); //rdbHelper = RDBFactory.CreateDbHelper($"{taskPackage.PackageTempPath}{(MapsManager.Instance.CurrProjectInfo as ProjectInfo).Pathpassword}", DatabaseType.SQLite); //rdbHelper.BeginTransaction(); #region 自主变更图斑保存 try { if (this.NYYSInfo.WYRWTB != null && this.NYYSInfo.WYRWTB.SJLY.Equals("ZZBG")) { string updateSQL = string.Format("update ZZTB set xzqdm='{1}', xzdm='{2}', cjdm='{3}', jcbh='{4}', tblx='{5}', sjly='{6}', jcmj={7}, tbmj={8} where TBBSM='{0}'", this.NYYSInfo.WYRWTB.TBBSM, this.NYYSInfo.WYRWTB.XZQDM, this.NYYSInfo.WYRWTB.XZDM, this.NYYSInfo.WYRWTB.CJDM, this.NYYSInfo.WYRWTB.JCBH, this.NYYSInfo.WYRWTB.TBLX, "ZZBG", this.NYYSInfo.WYRWTB.JCMJ, this.NYYSInfo.WYRWTB.TBMJ); workspaceAPI.CurrentWorkspace.ExecuteSQL(updateSQL); //updateSQL = string.Format("update WYRW set xzqdm='{1}', xzdm='{2}', cjdm='{3}', jcbh='{4}', tblx='{5}', sjly='{6}', jcmj={7}, tbmj={8} where TBBSM='{0}'", this.NYYSInfo.WYRWTB.TBBSM, this.NYYSInfo.WYRWTB.XZQDM, this.NYYSInfo.WYRWTB.XZDM, this.NYYSInfo.WYRWTB.CJDM, this.NYYSInfo.WYRWTB.JCBH, this.NYYSInfo.WYRWTB.TBLX, "ZZBG", this.NYYSInfo.WYRWTB.JCMJ, this.NYYSInfo.WYRWTB.TBMJ); //rdbHelper.ExecuteNonQueryWithException(updateSQL, CommandType.Text); //rdbHelper.Commit(); } } catch (Exception ex) { throw new Exception("保存失败:" + ex.Message); } #endregion } catch (Exception ex) { LogAPI.Debug("自主变更图斑保存异常:" + ex); LogAPI.Debug("自主变更图斑保存异常:" + ex.StackTrace); throw ex; } //finally //{ // if (rdbHelper != null) // rdbHelper.DisConnect(); //} } /// /// 获取基础库行政区代码、乡镇代码及村代码 /// /// /// private string GetCJDM(int subDMLength) { //村级调查区 坐落单位代码 try { if (this.NYYSInfo == null || this.NYYSInfo.WYRWTB == null) return null; IFeatureLayer JCKFeatureLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("DLTB"); IFeatureLayer zztbFeatureLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("ZZTB"); if (zztbFeatureLayer == null || JCKFeatureLayer == null) return null; //var gx_CZCMJ = JCKFeatureLayer.FeatureClass.FindField("TBMJ");//TBDLMJ SHAPE_Area int index = JCKFeatureLayer.FeatureClass.Fields.FindField("ZLDWDM"); IQueryFilter queryFilter = new QueryFilterClass() { WhereClause = "TBBSM='" + this.NYYSInfo.WYRWTB.TBBSM + "'", }; IFeatureCursor featureCursor = zztbFeatureLayer.FeatureClass.Search(queryFilter, true); IFeature feature = featureCursor.NextFeature(); if (feature == null) return null; IFeature featureInterArea = null; List features = FeatureAPI.Identify(feature.ShapeCopy, JCKFeatureLayer); if (features != null && features.Count > 0) { //feature = features.OrderByDescending(x => x.Value[gx_CZCMJ]).FirstOrDefault(); if (features.Count == 1) { featureInterArea = features[0]; } else if (features.Count > 1) { double _area = -1; foreach (IFeature item in features) { double interArea = FeatureAPI.GetInterArea(feature.ShapeCopy, item.ShapeCopy); if (_area < interArea) { _area = interArea; featureInterArea = item; } } } if (featureInterArea != null && index > -1) { string zldwdm = featureInterArea.get_Value(index).ToString(); if (!string.IsNullOrEmpty(zldwdm) && zldwdm.Length > subDMLength) { return zldwdm.Substring(0, subDMLength); } } } return null; } catch (Exception ex) { LogAPI.Debug("UCTBBasicInformation.GetCJDM 异常:" + ex.Message); LogAPI.Debug("UCTBBasicInformation.GetCJDM 异常:" + ex.StackTrace); return null; } } } }