You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
326 lines
16 KiB
326 lines
16 KiB
using ESRI.ArcGIS.Carto; |
|
using ESRI.ArcGIS.Controls; |
|
using ESRI.ArcGIS.esriSystem; |
|
using ESRI.ArcGIS.Geodatabase; |
|
using KGIS.Framework.DBOperator; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.Platform; |
|
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.Reflection; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
using DicTypeEnum = KGIS.Framework.Platform.DicTypeEnum; |
|
|
|
namespace Kingo.Plugin.General.View |
|
{ |
|
/// <summary> |
|
/// 内业预处理结果 |
|
/// </summary> |
|
public partial class UCNYProcessingResults : UserControl, IElementInfo, INotifyPropertyChanged |
|
{ |
|
private List<DataDicTionary> ListYPDLData { get; set; } |
|
private NYYSInfo NYYSInfo { get; set; } |
|
private TaskPackage taskPackage { get; set; } |
|
public bool IsReadOnly { get; set; } |
|
private IEngineEditor engineEditor = new EngineEditorClass(); |
|
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 event EventHandler CloseViewHandler; |
|
public event PropertyChangedEventHandler PropertyChanged; |
|
private void OnPropertyChanged(string propertyName) |
|
{ |
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); |
|
} |
|
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 UCNYProcessingResults() |
|
{ |
|
InitializeComponent(); |
|
DevExpress.Xpf.Core.ThemeManager.SetTheme(this, DevExpress.Xpf.Core.Theme.Office2013LightGray); |
|
this.Title = "内业预处理结果"; |
|
List<KeyValue> listSF = new List<KeyValue>() |
|
{ |
|
new KeyValue(){ CodeInt=1, Name="是"}, |
|
new KeyValue(){ CodeInt=0, Name="否"} |
|
}; |
|
this.comBoxSF.ItemsSource = listSF; |
|
this.Loaded += (s, e) => |
|
{ |
|
ListYPDLData = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.DLBM); |
|
if (ListYPDLData == null) return; |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "12", NAME = "其他土地", DisplayName = "12-其他土地" }); |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "11", NAME = "水域及水利设施用地", DisplayName = "11-水域及水利设施用地" }); |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "10", NAME = "交通运输用地", DisplayName = "10-交通运输用地" }); |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "20", NAME = "建设用地", DisplayName = "20-建设用地" }); |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "04", NAME = "草地", DisplayName = "04-草地" }); |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "03", NAME = "林地", DisplayName = "03-林地" }); |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "02", NAME = "种植园用地", DisplayName = "02-种植园用地" }); |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "01", NAME = "耕地", DisplayName = "01-耕地" }); |
|
ListYPDLData.Insert(1, new DataDicTionary() { CODE = "00", NAME = "湿地", DisplayName = "00-湿地" }); |
|
ListYPDLData.Add(new DataDicTionary() { CODE = "1301", NAME = "临时用地", DisplayName = "1301-临时用地" }); |
|
ListYPDLData.Add(new DataDicTionary() { CODE = "1302", NAME = "光伏板区", DisplayName = "1302-光伏板区" }); |
|
ListYPDLData.Add(new DataDicTionary() { CODE = "1303", NAME = "推土区", DisplayName = "1303-推土区" }); |
|
ListYPDLData.Add(new DataDicTionary() { CODE = "1304", NAME = "拆除未尽区", DisplayName = "1304-拆除未尽区" }); |
|
txt_Box.ItemsSource = ListYPDLData; |
|
}; |
|
} |
|
public void ShowPanel() |
|
{ |
|
showDetail = true; |
|
Platform.Instance.OpenView(this, false); |
|
} |
|
public void ClosePanel() |
|
{ |
|
showDetail = false; |
|
Platform.Instance.CloseView(this); |
|
} |
|
public void ClosePanelInvoke() |
|
{ |
|
CloseViewHandler?.Invoke(this, null); |
|
} |
|
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; |
|
} |
|
} |
|
public void BindData(object obj) |
|
{ |
|
IRDBHelper rdbHelper = null; |
|
try |
|
{ |
|
NYYSInfo nYYSInfo = obj as NYYSInfo; |
|
if (nYYSInfo != null) |
|
{ |
|
this.NYYSInfo = nYYSInfo; |
|
this.taskPackage = nYYSInfo.TaskPackages; |
|
if (nYYSInfo.BingDataType == DTBDataTypeEnum.NYYCL) |
|
{ |
|
//nYYSInfo.IsReadOnly = false; |
|
txt_Box.IsReadOnly = false; |
|
comBoxSF.IsReadOnly = false; |
|
txtYPSM.IsReadOnly = false; |
|
} |
|
else if (nYYSInfo.BingDataType == DTBDataTypeEnum.DTBSL) |
|
{ |
|
this.DataContext = null; |
|
this.DataContext = this.NYYSInfo; |
|
} |
|
else |
|
{ |
|
if (taskPackage == null || string.IsNullOrWhiteSpace(taskPackage.PackageTempPath) || !System.IO.File.Exists(taskPackage.PackageTempPath)) |
|
{ |
|
this.DataContext = null; |
|
return; |
|
} |
|
nYYSInfo.IsReadOnly = true; |
|
txt_Box.IsReadOnly = true; |
|
comBoxSF.IsReadOnly = true; |
|
txtYPSM.IsReadOnly = true; |
|
rdbHelper = RDBFactory.CreateDbHelper($"{taskPackage.PackageTempPath}{(MapsManager.Instance.CurrProjectInfo as ProjectInfo).Pathpassword}", DatabaseType.SQLite); |
|
if (!rdbHelper.TableIsExist("nyysresult")) |
|
{ |
|
this.DataContext = this.NYYSInfo; |
|
return; |
|
} |
|
DataTable dataTable = rdbHelper.ExecuteDatatable("nyysresult", $"select * from nyysresult where tbbsm='{NYYSInfo.WYRWTB.TBBSM}'", true); |
|
this.NYYSInfo.NYYSResult = new NYYSResult(); |
|
if (dataTable != null && dataTable.Rows.Count > 0) |
|
{ |
|
this.NYYSInfo.NYYSResult = KGIS.Framework.Utils.Utility.TBToList.ConvertEntity<NYYSResult>(dataTable.Rows[0]); |
|
} |
|
else |
|
{ |
|
this.NYYSInfo.NYYSResult = new NYYSResult() |
|
{ |
|
TBBSM = this.NYYSInfo.WYRWTB.TBBSM, |
|
YPRY = (MapsManager.Instance.CurrProjectInfo as ProjectInfo).UserName, |
|
YPSJ = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), |
|
SFXYWY = 1 |
|
}; |
|
} |
|
} |
|
} |
|
this.DataContext = this.NYYSInfo; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug($"{ex.Message}"); |
|
LogAPI.Debug($"{ex.Source}"); |
|
} |
|
finally |
|
{ |
|
if (rdbHelper != null) |
|
{ |
|
rdbHelper.DisConnect(); |
|
} |
|
} |
|
} |
|
public void SaveEdit() |
|
{ |
|
IRDBHelper rdbHelper = null; |
|
try |
|
{ |
|
if (taskPackage == null) return; |
|
if (NYYSInfo.BingDataType != DTBDataTypeEnum.NYYCL) return; |
|
//if (engineEditor == null) |
|
//{ |
|
// engineEditor = new EngineEditorClass(); |
|
//} |
|
//if (engineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing) |
|
//{ |
|
// if (engineEditor.HasEdits()) |
|
// { |
|
// engineEditor.StopEditing(true); |
|
// //throw new Exception("当前地图编辑未保存,请先保存编辑!"); |
|
// } |
|
//} |
|
//if (string.IsNullOrWhiteSpace((MapsManager.Instance.CurrProjectInfo as ProjectInfo).UserName)) |
|
//{ |
|
// throw new Exception("未获取到当前用户信息,请先进行用户信息设置!"); |
|
//} |
|
if (this.NYYSInfo.NYYSResult.SFXYWY != 0 && this.NYYSInfo.NYYSResult.SFXYWY != 1) |
|
{ |
|
throw new Exception("请选择是否需要外业!"); |
|
} |
|
if (!string.IsNullOrWhiteSpace(this.NYYSInfo.NYYSResult.NYYPDL) && ListYPDLData.FirstOrDefault(X => X.DisplayName.Equals(this.NYYSInfo.NYYSResult.NYYPDL)) == null) |
|
{ |
|
throw new Exception("预判地类输入不正确!"); |
|
} |
|
if (this.NYYSInfo.NYYSResult.SFXYWY == 0) |
|
{ |
|
if (this.NYYSInfo.NYYSResult.NYYPDL == null) |
|
{ |
|
throw new Exception("“是否外业”选择为“否”时,“预判地类”必须选择!"); |
|
} |
|
if (this.NYYSInfo.NYYSResult.NYYPDL != "09" && this.NYYSInfo.NYYSResult.NYYPDL.Length < 4) |
|
{ |
|
throw new Exception("“是否外业”选择为“否”时,“预判地类”不能选择一级类!"); |
|
} |
|
} |
|
if (string.IsNullOrWhiteSpace(this.NYYSInfo.NYYSResult.YPRY)) |
|
{ |
|
this.NYYSInfo.NYYSResult.YPRY = (MapsManager.Instance.CurrProjectInfo as ProjectInfo).UserName ?? "建库人员"; |
|
} |
|
if (this.NYYSInfo.WYSketch != null) |
|
{ |
|
foreach (var item in this.NYYSInfo.WYSketch) |
|
{ |
|
if (string.IsNullOrWhiteSpace(item.BZMS)) |
|
{ |
|
throw new Exception("标注描述不能为空,无法保存!"); |
|
} |
|
} |
|
} |
|
// 内业预审信息保存 |
|
rdbHelper = RDBFactory.CreateDbHelper($"{taskPackage.PackageTempPath}{(MapsManager.Instance.CurrProjectInfo as ProjectInfo).Pathpassword}", DatabaseType.SQLite); |
|
rdbHelper.BeginTransaction(); |
|
//内业预审结果保存 |
|
if (NYYSInfo.WYRWTB != null) |
|
{ |
|
rdbHelper.ExecuteNonQueryWithException("delete from NYYSResult where TBBSM='" + NYYSInfo.WYRWTB.TBBSM + "'", CommandType.Text); |
|
string excuteSQL = string.Format("INSERT INTO NYYSResult (TBBSM, NYYPDL, SFXYWY, YPSM, YPRY, YPSJ) VALUES('{0}', '{1}', {2}, '{3}', '{4}', '{5}');", this.NYYSInfo.WYRWTB.TBBSM, this.NYYSInfo.NYYSResult.NYYPDL, this.NYYSInfo.NYYSResult.SFXYWY, this.NYYSInfo.NYYSResult.YPSM, (MapsManager.Instance.CurrProjectInfo as ProjectInfo).UserName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); |
|
rdbHelper.ExecuteNonQueryWithException(excuteSQL, CommandType.Text); |
|
rdbHelper.Commit(); |
|
} |
|
if (NYYSInfo.WYRWTB != null) |
|
{ |
|
IFeatureLayer featureL = MapsManager.Instance.MapService.GetFeatureLayerByName("ZZTB"); |
|
int NYYPDL_Index = featureL.FeatureClass.FindField("NYYPDL"); |
|
int SFXYWY_Index = featureL.FeatureClass.FindField("SFXYWY"); |
|
int YPSM_Index = featureL.FeatureClass.FindField("YPSM"); |
|
int YPRY_Index = featureL.FeatureClass.FindField("YPRY"); |
|
int YPSJ_Index = featureL.FeatureClass.FindField("YPSJ"); |
|
if (NYYPDL_Index == -1 || YPRY_Index == -1 || YPSM_Index == -1) return; |
|
IQueryFilter queryFilter = new QueryFilterClass() |
|
{ |
|
WhereClause = "TBBSM='" + NYYSInfo.WYRWTB.TBBSM + "'", |
|
}; |
|
IFeatureCursor featureCursor = featureL.FeatureClass.Update(queryFilter, false); |
|
IFeature ZZTBF = featureCursor.NextFeature(); |
|
if (ZZTBF == null) return; |
|
ZZTBF.Value[NYYPDL_Index] = NYYSInfo.NYYSResult.NYYPDL; |
|
ZZTBF.Value[SFXYWY_Index] = NYYSInfo.NYYSResult.SFXYWY; |
|
ZZTBF.Value[YPSM_Index] = NYYSInfo.NYYSResult.YPSM; |
|
ZZTBF.Value[YPRY_Index] = NYYSInfo.NYYSResult.YPRY; |
|
ZZTBF.Value[YPSJ_Index] = NYYSInfo.NYYSResult.YPSJ; |
|
featureCursor.UpdateFeature(ZZTBF); |
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("预处理外业信息填写保存异常:" + ex); |
|
if (rdbHelper != null) |
|
{ |
|
rdbHelper.Rollback(); |
|
rdbHelper.ExecuteNonQueryWithException("delete from NYYSResult where TBBSM='" + NYYSInfo.WYRWTB.TBBSM + "'", CommandType.Text); |
|
} |
|
throw ex; |
|
} |
|
finally |
|
{ |
|
if (rdbHelper != null) |
|
rdbHelper.DisConnect(); |
|
} |
|
|
|
} |
|
private void LayoutControl_LostFocus(object sender, RoutedEventArgs e) |
|
{ |
|
if ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) != null) |
|
{ |
|
(MapsManager.Instance.CurrProjectInfo as ProjectInfo).EnableShortcut = true; |
|
} |
|
} |
|
private void LayoutControl_GotFocus(object sender, RoutedEventArgs e) |
|
{ |
|
if ((MapsManager.Instance.CurrProjectInfo as ProjectInfo) != null) |
|
{ |
|
(MapsManager.Instance.CurrProjectInfo as ProjectInfo).EnableShortcut = false; |
|
} |
|
} |
|
} |
|
|
|
public class KeyValue |
|
{ |
|
public string Code { get; set; } |
|
public int CodeInt { get; set; } |
|
public string Name { get; set; } |
|
} |
|
}
|
|
|