年度变更建库软件5.0版本
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.

327 lines
16 KiB

6 months ago
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; }
}
}