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.
1880 lines
79 KiB
1880 lines
79 KiB
using System; |
|
using System.Collections; |
|
using System.Collections.Generic; |
|
using System.Data; |
|
using System.Linq; |
|
using System.Windows; |
|
using System.Windows.Input; |
|
using DevExpress.Xpf.Editors.Settings; |
|
using DevExpress.Xpf.Grid; |
|
using ESRI.ArcGIS.Carto; |
|
using ESRI.ArcGIS.Controls; |
|
using ESRI.ArcGIS.Geodatabase; |
|
using ESRI.ArcGIS.esriSystem; |
|
using KGIS.Framework.DBOperator; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.Platform; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Views; |
|
using KGIS.Framework.Utils.Helper; |
|
using KGIS.Framework.Utils.Interface; |
|
using KGIS.Framework.AE; |
|
using KGIS.Framework.AE.ExtensionMethod; |
|
using ReactiveUI; |
|
using ESRI.ArcGIS.Geometry; |
|
using ESRI.ArcGIS.Display; |
|
using ESRI.ArcGIS.DataSourcesGDB; |
|
using System.IO; |
|
using System.Runtime.InteropServices; |
|
using KGIS.Framework.AE.GPHelper; |
|
using KGIS.Framework.Platform.Helper; |
|
using System.Windows.Forms; |
|
using Kingo.Plugin.ResultsOfProof.Model; |
|
using Kingo.Plugin.ResultsOfProof.View.JZTBXX; |
|
using KGIS.Framework.Utils.ExtensionMethod; |
|
using Kingo.PluginServiceInterface; |
|
using Kingo.Plugin.ResultsOfProof.View.JZTBXX; |
|
using Newtonsoft.Json.Linq; |
|
using Newtonsoft.Json; |
|
using KUI.Windows; |
|
|
|
namespace Kingo.Plugin.ResultsOfProof.ViewModel |
|
{ |
|
public class BGJZTBListViewModel : ReactiveObject |
|
{ |
|
#region 变量 |
|
//切换工程后关闭Panel |
|
public Action ClosePanel; |
|
//用于定位 |
|
public IHookHelper m_hookHelper { get; set; } |
|
/// <summary> |
|
/// 刷新数据Timer |
|
/// </summary> |
|
private System.Timers.Timer RefreshTimer; |
|
|
|
// public IPlatform Platform { get; set; } |
|
|
|
/// <summary> |
|
/// 记录属性表是否正在刷新状态 |
|
/// </summary> |
|
private bool IsLoading = false; |
|
|
|
//Dictionary<string, int> dicFiled = new Dictionary<string, int>(); |
|
//选中数据总数 |
|
int SelectCount = 0; |
|
//用于导出Excel |
|
private List<DataColumnEx> lstDataColumnEx |
|
{ |
|
get; |
|
set; |
|
} |
|
/// <summary> |
|
/// 是否显示选中数据 |
|
/// </summary> |
|
private bool IsShowSelectData = false; |
|
/// <summary> |
|
/// 当前图层 |
|
/// </summary> |
|
private IFeatureClass SourceFeature |
|
{ |
|
get; |
|
set; |
|
} |
|
private DataTable _Data; |
|
/// <summary> |
|
/// 数据源集合 |
|
/// </summary> |
|
public DataTable Data |
|
{ |
|
get { return _Data; } |
|
set |
|
{ |
|
this.RaiseAndSetIfChanged(ref _Data, value); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 主键字段名称 |
|
/// </summary> |
|
private string KeyIDName = "OBJECTID"; |
|
|
|
/// <summary> |
|
/// 控件加载全部按钮是否可操作 |
|
/// </summary> |
|
private bool IsLoadComplate |
|
{ |
|
get |
|
{ |
|
return IsLoadComplate; |
|
} |
|
set |
|
{ |
|
//btnAll.IsEnabled = !value; |
|
|
|
} |
|
} |
|
|
|
|
|
private int count; |
|
/// <summary> |
|
/// 总数 |
|
/// </summary> |
|
public int Count { get { return count; } set { this.RaiseAndSetIfChanged(ref count, value); } } |
|
|
|
private int showNum; |
|
/// <summary> |
|
/// 当前显示数 |
|
/// </summary> |
|
public int ShowNum { get { return showNum; } set { this.RaiseAndSetIfChanged(ref showNum, value); } } |
|
|
|
private bool _f_gjdlbyz; |
|
/// <summary> |
|
/// 挂接地类不一致 |
|
/// </summary> |
|
public bool f_gjdlbyz { get { return _f_gjdlbyz; } set { this.RaiseAndSetIfChanged(ref _f_gjdlbyz, value); } } |
|
|
|
private bool _f_wgj; |
|
/// <summary> |
|
/// 未挂接 |
|
/// </summary> |
|
public bool f_wgj { get { return _f_wgj; } set { this.RaiseAndSetIfChanged(ref _f_wgj, value); } } |
|
|
|
private bool _f_gjdtb; |
|
/// <summary> |
|
/// 挂接多图斑 |
|
/// </summary> |
|
public bool f_gjdtb { get { return _f_gjdtb; } set { this.RaiseAndSetIfChanged(ref _f_gjdtb, value); } } |
|
|
|
private string queryWhere = string.Empty; |
|
/// <summary> |
|
/// 右键选中列名字 |
|
/// </summary> |
|
private string selectedFieldName = string.Empty; |
|
|
|
private IFeatureLayer JZTBFeatureLayer = null; |
|
private IFeatureLayer DLTBFeatureLayer = null; |
|
private IFeatureClassAPI DLTBAPI = null; |
|
|
|
private DataTable Data_WYHCFJ = null; |
|
|
|
private DataTable Data_NYHS = null; |
|
|
|
private IList currentSelectedItems = null; |
|
public IList CurrentSelectedItems { get { return currentSelectedItems; } set { this.RaiseAndSetIfChanged(ref currentSelectedItems, value); } } |
|
|
|
public DataRowView currentItem = null; |
|
public DataRowView CurrentItem { get { return currentItem; } set { this.RaiseAndSetIfChanged(ref currentItem, value); } } |
|
|
|
public bool IsMouseOver { get; set; } |
|
|
|
private int cmbTypeSelectedIndex = 0; |
|
public int CmbTypeSelectedIndex { get { return cmbTypeSelectedIndex; } set { this.RaiseAndSetIfChanged(ref cmbTypeSelectedIndex, value); } } |
|
|
|
private bool tableViewPrintSelectedRowsOnly = false; |
|
public bool TableViewPrintSelectedRowsOnly { get { return tableViewPrintSelectedRowsOnly; } set { this.RaiseAndSetIfChanged(ref tableViewPrintSelectedRowsOnly, value); } } |
|
#endregion |
|
|
|
#region GridControl命令 |
|
#region 输出Excel文档 |
|
public ReactiveCommand<object> ExportRelationCG { get; private set; } |
|
public ReactiveCommand<object> TBFJGetRelation { get; private set; } |
|
/// <summary> |
|
/// 关联图斑标识码 |
|
/// </summary> |
|
public ReactiveCommand<object> RelationTBBSMCmd { get; private set; } |
|
/// <summary> |
|
/// 人工校验 |
|
/// </summary> |
|
public ReactiveCommand<object> RGJYCmd { get; private set; } |
|
/// <summary> |
|
/// 导出举证图斑信息表 |
|
/// </summary> |
|
public ReactiveCommand<object> ExportJZTBXXBCmd { get; private set; } |
|
/// <summary> |
|
/// 条件过滤 |
|
/// </summary> |
|
public ReactiveCommand<object> FilterDataCmd { get; private set; } |
|
|
|
//public ReactiveCommand<object> ExportToXlsx { get; private set; } |
|
|
|
private string outputXlsxFilePath = null; |
|
public string OutputXlsxFilePath |
|
{ |
|
get { return outputXlsxFilePath; } |
|
set { this.RaiseAndSetIfChanged(ref outputXlsxFilePath, value); } |
|
} |
|
#endregion 输出Excel文档 |
|
|
|
//public ReactiveCommand<object> GridControlSelectAll { get; private set; } |
|
public ReactiveCommand<object> GridControlUnSelectAll { get; private set; } |
|
public ReactiveCommand<object> GridControlRefreshData { get; private set; } |
|
|
|
|
|
public ReactiveCommand<GridEventArgs> FilterChangedCommand { get; private set; } |
|
|
|
public ReactiveCommand<RoutedEventArgs> GridControlAutoGeneratedColumns { get; set; } |
|
|
|
public ReactiveCommand<CurrentItemChangedEventArgs> CurrentItemChangedCommand { get; private set; } |
|
|
|
public ReactiveCommand<GridSelectionChangedEventArgs> SelectionChangedCommand { get; private set; } |
|
public ReactiveCommand<RoutedEventArgs> EndSortingCommand { get; private set; } |
|
|
|
public ReactiveCommand<MouseButtonEventArgs> TableViewMouseLeftButtonUpCommand { get; private set; } |
|
|
|
#region 定位GridControl里面选中的图斑数据行 |
|
private int[] objectIDArray = null; |
|
public int[] ObjectIDArray |
|
{ |
|
get { return objectIDArray; } |
|
set { this.RaiseAndSetIfChanged(ref objectIDArray, value); } |
|
} |
|
public ReactiveCommand<object> GridControlFocusRow { get; private set; } |
|
|
|
#endregion 定位GridControl里面选中的图斑数据行 |
|
#endregion GridControl命令 |
|
|
|
private IRDBHelper dbHelper = null; |
|
|
|
public bool IsNotByPerson = false; |
|
/// <summary> |
|
/// 数据行总个数 |
|
/// </summary> |
|
public int RowCount = 0; |
|
/// <summary> |
|
/// 当前选中行索引 |
|
/// </summary> |
|
public int RowHandle = 1; |
|
private DataTable dtJZFJSource = null; |
|
private DataTable dtJZFJSource2 = null; |
|
|
|
private IRDBHelper sqlitehelper = null; |
|
private object Hook = null; |
|
public BGFrmJZTBXXBRelation frmJZTBXXB_RGJX = null; |
|
/// <summary> |
|
/// 上一条数据 |
|
/// </summary> |
|
public ReactiveCommand<object> PrevDataCmd { get; set; } |
|
/// <summary> |
|
/// 下一条数据 |
|
/// </summary> |
|
public ReactiveCommand<object> NextDataCmd { get; set; } |
|
/// <summary> |
|
/// 刷新数据 |
|
/// </summary> |
|
public ReactiveCommand<object> RefreshDataCmd { get; set; } |
|
|
|
public BGFrmGLBSMParameter frmGLBSMParameter = null; |
|
public decimal AreaRatio { get; set; } |
|
|
|
private int _PageSize; |
|
public int PageSize |
|
{ |
|
get { return _PageSize; } |
|
set { this.RaiseAndSetIfChanged(ref _PageSize, value); } |
|
} |
|
|
|
private int _CurrentIndex = -1; |
|
public int CurrentIndex |
|
{ |
|
get { return _CurrentIndex; } |
|
set { this.RaiseAndSetIfChanged(ref _CurrentIndex, value); } |
|
} |
|
private ICursor _Cursor = null; |
|
|
|
string mdbconnStr = ""; |
|
private IMapService _MapService { get; set; } |
|
IFeatureLayer dltbgxLayer = null; |
|
//IFeatureLayer dltbhrLayer = null; |
|
IFeatureLayer jcdltbLayer = null; |
|
private bool isRelationTBBSM = false; |
|
public BGJZTBListViewModel(object pHook) |
|
{ |
|
try |
|
{ |
|
PageSize = 200; |
|
Platform.Instance.NotifyMsgEven2 += NotifyMsg_NotifyMsgEven; |
|
Hook = pHook; |
|
_MapService = MapsManager.Instance.MapService; |
|
dltbgxLayer = _MapService.GetFeatureLayerByName("DLTBGX"); |
|
//dltbhrLayer = _MapService.GetFeatureLayerByName("DLTBHR"); |
|
jcdltbLayer = _MapService.GetFeatureLayerByLayerName("地类图斑"); |
|
JZTBFeatureLayer = _MapService.GetFeatureLayerByName("JCTB"); |
|
if (JZTBFeatureLayer != null) |
|
{ |
|
SourceFeature = JZTBFeatureLayer.FeatureClass; |
|
|
|
if (SourceFeature.Fields.FindField("JZDLBM") == -1) |
|
{ |
|
IFieldEdit _field = new FieldClass(); |
|
_field.Name_2 = "JZDLBM"; |
|
_field.AliasName_2 = "举证地类编码"; |
|
_field.Type_2 = esriFieldType.esriFieldTypeString; |
|
_field.Length_2 = 500; |
|
SourceFeature.AddField(_field); |
|
} |
|
if (SourceFeature.Fields.FindField("DYTBBSM") == -1) |
|
{ |
|
IFieldEdit _field = new FieldClass(); |
|
_field.Name_2 = "DYTBBSM"; |
|
_field.AliasName_2 = "对应图斑标识码"; |
|
_field.Type_2 = esriFieldType.esriFieldTypeString; |
|
_field.Length_2 = 255; |
|
SourceFeature.AddField(_field); |
|
} |
|
//if (SourceFeature.Fields.FindField("JZDKBH") == -1) |
|
//{ |
|
// IFieldEdit _field = new FieldClass(); |
|
// _field.Name_2 = "JZDKBH"; |
|
// _field.AliasName_2 = "举证地块编号"; |
|
// _field.Type_2 = esriFieldType.esriFieldTypeString; |
|
// SourceFeature.AddField(_field); |
|
//} |
|
if (SourceFeature.Fields.FindField("LJBZ") == -1) |
|
{ |
|
IFieldEdit _field = new FieldClass(); |
|
_field.Name_2 = "LJBZ"; |
|
_field.AliasName_2 = "类举标注"; |
|
_field.Type_2 = esriFieldType.esriFieldTypeString; |
|
_field.Length_2 = 255; |
|
SourceFeature.AddField(_field); |
|
} |
|
//ShowAddFileld(fields.FieldCount, "DYTBBSM", "对应图斑标识码"); |
|
//ShowAddFileld(fields.FieldCount + 1, "JZDKBH", "举证地块编号"); |
|
//ShowAddFileld(fields.FieldCount, "LJBZ", "类举标注"); |
|
if (Data == null) |
|
{ |
|
Data = new DataTable(); |
|
ConstructColumn(JZTBFeatureLayer.FeatureClass.Fields); |
|
} |
|
} |
|
isRelationTBBSM = false; |
|
//创建命令 |
|
CreateCommand(); |
|
InitTableView(); |
|
SelectFirstRow(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
finally |
|
{ |
|
//this.CloseLoading(); |
|
} |
|
} |
|
|
|
private void SelectFirstRow() |
|
{ |
|
try |
|
{ |
|
DataView view = new DataView(Data); |
|
DataRowView rowview = Data.DefaultView.Cast<DataRowView>().Where(a => a.Row.Table.Columns.Contains(KeyIDName)).FirstOrDefault(); |
|
CurrentItem = rowview; |
|
} |
|
catch (Exception eee) |
|
{ |
|
|
|
} |
|
|
|
|
|
} |
|
private void CopyFeatureClass(IFeatureClass pFromFeatureClass, IFeatureClass pToFeatureClass) |
|
{ |
|
try |
|
{ |
|
IFeatureCursor pFromFeatureCursor = pFromFeatureClass.Search(null, false); |
|
IFeatureCursor pToFeatureCursor = pToFeatureClass.Insert(true); |
|
IFeatureBuffer pFeatureBuffer = pToFeatureClass.CreateFeatureBuffer(); |
|
IFeature pFromFeature = pFromFeatureCursor.NextFeature(); |
|
while (pFromFeature != null) |
|
{ |
|
int IndexShape = pFeatureBuffer.Fields.FindField("Shape"); |
|
pFeatureBuffer.set_Value(IndexShape, pFromFeature); |
|
pFeatureBuffer.Shape = pFromFeature.Shape; |
|
pToFeatureCursor.InsertFeature(pFeatureBuffer); |
|
pFromFeature = pFromFeatureCursor.NextFeature(); |
|
pFeatureBuffer = pToFeatureClass.CreateFeatureBuffer(); |
|
} |
|
pToFeatureCursor.Flush(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
throw ex; |
|
} |
|
} |
|
private string TempGDBPath |
|
{ |
|
get |
|
{ |
|
string path = string.Empty; |
|
try |
|
{ |
|
string toDir = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath(), "TempCache"); |
|
path = System.IO.Path.Combine(toDir, "TempGDB.gdb"); |
|
if (!Directory.Exists(path)) |
|
{ |
|
string sourceDir = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath() + "工作空间\\模板\\临时文件\\TempGDB.gdb"); |
|
CopyDirectInfo(sourceDir, path); |
|
} |
|
} |
|
catch |
|
{ |
|
} |
|
return path; |
|
} |
|
} |
|
|
|
#region 数据筛选 |
|
private string CreateTempPath() |
|
{ |
|
//var Path = Directory.GetCurrentDirectory() + "\\Temp\\举证图斑临时数据.gdb"; |
|
|
|
string gdbFolder = Directory.GetCurrentDirectory() + "\\Temp\\举证成果临时数据"; |
|
if (!System.IO.Directory.Exists(gdbFolder)) |
|
{ |
|
System.IO.Directory.CreateDirectory(gdbFolder); |
|
} |
|
try |
|
{ |
|
DelectDir(gdbFolder);//能删除就删除 删除报错不处理 |
|
} |
|
catch |
|
{ } |
|
string mdbFileName = Guid.NewGuid().ToString() + ".gdb"; |
|
var Path = System.IO.Path.Combine(gdbFolder, mdbFileName); |
|
var TempGDBPath = System.IO.Path.Combine(SysAppPath.GetTemplatePath(), "TempGDB.gdb"); |
|
// var TempGDBPath = Env.Instance.TempMDB.TempGDBPath;//模板 |
|
if (Directory.Exists(Path)) |
|
{ |
|
Directory.Delete(Path, true); |
|
} |
|
Directory.CreateDirectory(Path); |
|
CopyDirectInfo(TempGDBPath, Path); |
|
return Path; |
|
} |
|
|
|
public static void DelectDir(string srcPath) |
|
{ |
|
try |
|
{ |
|
DirectoryInfo dir = new DirectoryInfo(srcPath); |
|
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录 |
|
foreach (FileSystemInfo i in fileinfo) |
|
{ |
|
if (i is DirectoryInfo) //判断是否文件夹 |
|
{ |
|
DirectoryInfo subdir = new DirectoryInfo(i.FullName); |
|
subdir.Delete(true); //删除子目录和文件 |
|
} |
|
else |
|
{ |
|
File.Delete(i.FullName); //删除指定文件 |
|
} |
|
} |
|
} |
|
catch (Exception e) |
|
{ |
|
throw; |
|
} |
|
} |
|
|
|
private static void CopyDirectInfo(string sourceDir, string toDir) |
|
{ |
|
if (!Directory.Exists(sourceDir)) |
|
{ |
|
throw new ApplicationException("未找到文件:" + sourceDir); |
|
} |
|
if (!Directory.Exists(toDir)) |
|
{ |
|
Directory.CreateDirectory(toDir); |
|
} |
|
DirectoryInfo directInfo = new DirectoryInfo(sourceDir); |
|
FileInfo[] filesInfos = directInfo.GetFiles(); |
|
foreach (FileInfo fileinfo in filesInfos) |
|
{ |
|
string fileName = fileinfo.Name; |
|
File.Copy(fileinfo.FullName, toDir + @"/" + fileName, true); |
|
} |
|
} |
|
/// <summary> |
|
/// 数据筛选 |
|
/// </summary> |
|
/// <param name="JC">基础数据</param> |
|
/// <param name="GX">更新数据</param> |
|
/// <param name="GXGC">更新过程层数据</param> |
|
/// <param name="BGQBSM">变更前标识码</param> |
|
/// <param name="BGHBSM">变更后标识码</param> |
|
/// <returns></returns> |
|
private void DLTB_Screen(string JC, string GX, string GXGC, string TempPath, string filePath) |
|
{ |
|
IFeatureLayer TempErase = null; |
|
IFeatureClass JCFC = null; |
|
IFeatureClass GXFC = null; |
|
IFeatureClass GXGCFC = null; |
|
IWorkspaceAPI wsAPI = null; |
|
IFeatureClassAPI sourceFcAPI = null; |
|
try |
|
{ |
|
JCFC = MapsManager.Instance.MapService.GetFeatureClassByName(JC);//基础数据 mdb |
|
GXGCFC = MapsManager.Instance.MapService.GetFeatureClassByName(GXGC);//变更过程gdb |
|
GXFC = MapsManager.Instance.MapService.GetFeatureClassByName(GX);//变更层gdb |
|
#region 擦除 |
|
GPParamClass paramClass = new GPParamClass() |
|
{ |
|
FirstFeatureLayer = new FeatureLayerClass() { FeatureClass = JCFC }, |
|
SecondFeatureLayer = new FeatureLayerClass() { FeatureClass = GXGCFC }, |
|
OutFeatureClassPath = $"{TempPath}\\{GXGC}", |
|
IsGetOutPutFeature = true, |
|
PreserveAttributes = "ALL" |
|
}; |
|
GeoprocessorHelper.EraseAnalysis(paramClass, ref TempErase); |
|
#endregion |
|
|
|
#region 合并 |
|
wsAPI = new WorkspaceAPI(TempPath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile); |
|
sourceFcAPI = wsAPI.OpenFeatureClass(GXGC); |
|
LoadFeatureClass(GXFC, sourceFcAPI.FeatureClass, null); |
|
#endregion |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
finally |
|
{ |
|
if (TempErase != null) |
|
Marshal.ReleaseComObject(TempErase); |
|
if (JCFC != null) |
|
Marshal.ReleaseComObject(JCFC); |
|
if (GXFC != null) |
|
Marshal.ReleaseComObject(GXFC); |
|
if (GXGCFC != null) |
|
Marshal.ReleaseComObject(GXGCFC); |
|
if (wsAPI != null) |
|
wsAPI.CloseWorkspace(); |
|
if (sourceFcAPI != null) |
|
sourceFcAPI.CloseFeatureClass(); |
|
} |
|
} |
|
public bool LoadFeatureClass(IFeatureClass inFeatureClass, IFeatureClass saveFeatureClass, IQueryFilter pQueryFilter) |
|
{ |
|
//生成两个要素类字段的对应表 |
|
Dictionary<int, int> pFieldsDict = new Dictionary<int, int>(); |
|
this.GetFCFieldsDirectory(inFeatureClass, saveFeatureClass, ref pFieldsDict); |
|
IFeatureCursor pinFeatCursor = inFeatureClass.Search(pQueryFilter, false); |
|
long nCount = inFeatureClass.FeatureCount(pQueryFilter); |
|
IFeature pinFeat = pinFeatCursor.NextFeature(); |
|
IFeatureCursor psaveFeatCursor = saveFeatureClass.Insert(true); |
|
//使用IFeatureBuffer在内存中产生缓存避免多次打开,关闭数据库 |
|
IFeatureBuffer psaveFeatBuf = null; |
|
IFeature psaveFeat = null; |
|
long n = 0; |
|
while (pinFeat != null) |
|
{ |
|
try |
|
{ |
|
psaveFeatBuf = saveFeatureClass.CreateFeatureBuffer(); |
|
psaveFeat = psaveFeatBuf as IFeature; |
|
if (inFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) |
|
{ |
|
IAnnotationFeature pAF = (IAnnotationFeature)pinFeat; |
|
IAnnotationFeature pNAF = (IAnnotationFeature)psaveFeat; |
|
if (pAF.Annotation != null) |
|
{ |
|
pNAF.Annotation = pAF.Annotation; |
|
} |
|
} |
|
psaveFeat.Shape = pinFeat.Shape; |
|
foreach (KeyValuePair<int, int> keyvalue in pFieldsDict) |
|
{ |
|
if (pinFeat.get_Value(keyvalue.Key).ToString() == "") |
|
{ |
|
if (psaveFeat.Fields.get_Field(keyvalue.Value).Type == esriFieldType.esriFieldTypeString) |
|
{ |
|
psaveFeat.set_Value(keyvalue.Value, ""); |
|
} |
|
else |
|
{ |
|
psaveFeat.set_Value(keyvalue.Value, 0); |
|
} |
|
} |
|
else |
|
{ |
|
psaveFeat.set_Value(keyvalue.Value, pinFeat.get_Value(keyvalue.Key)); |
|
} |
|
} |
|
psaveFeatCursor.InsertFeature(psaveFeatBuf); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
finally |
|
{ |
|
psaveFeat = null; |
|
n++; |
|
if (n % 2000 == 0) |
|
{ |
|
psaveFeatCursor.Flush(); |
|
} |
|
pinFeat = pinFeatCursor.NextFeature(); |
|
} |
|
} |
|
psaveFeatCursor.Flush(); |
|
Marshal.ReleaseComObject(psaveFeatCursor); |
|
Marshal.ReleaseComObject(psaveFeatBuf); |
|
Marshal.ReleaseComObject(pinFeatCursor); |
|
if (pinFeat != null) |
|
{ |
|
Marshal.ReleaseComObject(pinFeat); |
|
} |
|
if (psaveFeat != null) |
|
{ |
|
Marshal.ReleaseComObject(psaveFeat); |
|
} |
|
return true; |
|
} |
|
private void GetFCFieldsDirectory(IFeatureClass pFCold, IFeatureClass pFCnew, ref Dictionary<int, int> FieldsDictionary) |
|
{ |
|
for (int i = 0; i < pFCold.Fields.FieldCount; i++) |
|
{ |
|
string tmpstrold = pFCold.Fields.get_Field(i).Name.ToUpper(); |
|
switch (tmpstrold) |
|
{ |
|
case "OBJECTID": |
|
case "SHAPE": |
|
case "SHAPE_LENGTH": |
|
case "SHAPE_AREA": |
|
case "FID": |
|
{ |
|
//以上字段由系统自动生成 |
|
break; |
|
} |
|
default: |
|
{ |
|
for (int j = 0; j < pFCnew.Fields.FieldCount; j++) |
|
{ |
|
string tmpstrnew = pFCnew.Fields.get_Field(j).Name.ToUpper(); |
|
if (tmpstrold == tmpstrnew) |
|
{ |
|
FieldsDictionary.Add(i, j); |
|
break; |
|
} |
|
} |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
#endregion |
|
|
|
private void NotifyMsg_NotifyMsgEven(NotifyMsgPackage obj) |
|
{ |
|
try |
|
{ |
|
//接收来自内业会审详情视图的消息 |
|
if (obj.MsgType == "JZTBXXBRelationView") |
|
{ |
|
switch (obj.Content.ToString()) |
|
{ |
|
case "NextData": |
|
//下一条 |
|
NextDataCmd.Execute(null); |
|
break; |
|
case "PrevData": |
|
//上一条 |
|
PrevDataCmd.Execute(null); |
|
break; |
|
case "RefreshListData": |
|
RefreshDataCmd.Execute(null); |
|
RefreshSource(); |
|
break; |
|
default: |
|
break; |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex.Message); |
|
throw; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 构造列获取记录条数 |
|
/// </summary> |
|
/// <param name="Data"></param> |
|
/// <param name="fields"></param> |
|
private void ConstructColumn(IFields fields) |
|
{ |
|
if (fields != null) |
|
{ |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.get_Field(i); |
|
if (field.Name.ToUpper().StartsWith("SHAPE") || field.Name.ToUpper() == "TBFW") |
|
continue; |
|
if(field.Name.ToUpper() != "OBJECTID" && field.Name.ToUpper() != "XZQDM" && field.Name.ToUpper() != "BGDL" && field.Name.ToUpper() != "BSM" && field.Name.ToUpper() != "TBBH" && field.Name.ToUpper() != "DYTBBSM" && field.Name.ToUpper() != "JZDKBH" && field.Name.ToUpper() != "LJBZ" && field.Name.ToUpper() != "JZDLBM") |
|
continue; |
|
DataColumn col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", i); |
|
col.ColumnName = field.Name; |
|
col.Caption = field.AliasName; |
|
switch (field.Type) |
|
{ |
|
case esriFieldType.esriFieldTypeSmallInteger: |
|
col.DataType = typeof(short); |
|
break; |
|
case esriFieldType.esriFieldTypeInteger: |
|
col.DataType = typeof(int); |
|
break; |
|
case esriFieldType.esriFieldTypeSingle: |
|
break; |
|
case esriFieldType.esriFieldTypeDouble: |
|
col.DataType = typeof(double); |
|
break; |
|
case esriFieldType.esriFieldTypeString: |
|
col.DataType = typeof(string); |
|
break; |
|
case esriFieldType.esriFieldTypeDate: |
|
col.DataType = typeof(DateTime); |
|
break; |
|
case esriFieldType.esriFieldTypeOID: |
|
col.DataType = typeof(Int32); |
|
break; |
|
case esriFieldType.esriFieldTypeGeometry: |
|
break; |
|
case esriFieldType.esriFieldTypeBlob: |
|
break; |
|
case esriFieldType.esriFieldTypeRaster: |
|
break; |
|
case esriFieldType.esriFieldTypeGUID: |
|
break; |
|
case esriFieldType.esriFieldTypeGlobalID: |
|
break; |
|
case esriFieldType.esriFieldTypeXML: |
|
break; |
|
default: |
|
break; |
|
} |
|
col.ReadOnly = !field.Editable;//编辑状态启用默认是否可以编辑 |
|
Data.Columns.Add(col); |
|
Marshal.ReleaseComObject(field); |
|
} |
|
//ShowAddFileld(fields.FieldCount, "DYTBBSM", "对应图斑标识码"); |
|
//ShowAddFileld(fields.FieldCount + 1, "JZDKBH", "举证地块编号"); |
|
//ShowAddFileld(fields.FieldCount, "LJBZ", "类举标注"); |
|
} |
|
} |
|
private void ShowAddFileld(int index, string name, string aliasName) |
|
{ |
|
DataColumn newColumn = new DataColumn(); |
|
newColumn.ExtendedProperties.Add("index", index); |
|
newColumn.ColumnName = name; |
|
newColumn.Caption = aliasName; |
|
Data.Columns.Add(newColumn); |
|
} |
|
|
|
public void InitTableView() |
|
{ |
|
if (JZTBFeatureLayer == null) |
|
return; |
|
try |
|
{ |
|
Data.Rows.Clear(); |
|
string where = string.Empty; |
|
//if (f_gjdtb) |
|
//where += "& DYTBBSM like '%/%' "; |
|
if (f_gjdlbyz) |
|
where += "& JZDLBM <> BGDL "; |
|
if (f_wgj) |
|
where += "& DYTBBSM is null or DYTBBSM = '' "; |
|
where = where.Trim('&'); |
|
where = where.Replace("&", "or"); |
|
if (string.IsNullOrWhiteSpace(where)) |
|
where = "1=1"; |
|
|
|
IQueryFilter pFilter = new QueryFilterClass(); |
|
pFilter.WhereClause = where; |
|
using (ESRI.ArcGIS.ADF.ComReleaser com = new ESRI.ArcGIS.ADF.ComReleaser()) |
|
{ |
|
var index = 0; |
|
IFeatureClass pCurrentFeatureClass = JZTBFeatureLayer.FeatureClass; |
|
_Cursor = (pCurrentFeatureClass as ITable).Search(pFilter, true); |
|
IRow feature = null; |
|
int selectCount = 0; |
|
IDictionary<string, string> dicTBBH_DYTBBSMs = new Dictionary<string, string>(); |
|
int jztbybhIndex = pCurrentFeatureClass.Fields.FindField("TBBH"); |
|
int jzbsmIndex = pCurrentFeatureClass.Fields.FindField("DYTBBSM"); |
|
while ((feature = _Cursor.NextRow()) != null) |
|
{ |
|
if (f_gjdtb) |
|
{ |
|
GetSelectMoreDicTB(feature, jztbybhIndex, jzbsmIndex, out dicTBBH_DYTBBSMs, out selectCount); |
|
} |
|
} |
|
if (f_gjdtb) |
|
Count = selectCount; |
|
else |
|
Count = pCurrentFeatureClass.FeatureCount(pFilter); |
|
if (Count < PageSize) |
|
{ |
|
com.ManageLifetime(_Cursor); |
|
} |
|
_Cursor = (pCurrentFeatureClass as ITable).Search(pFilter, true); |
|
while ((feature = _Cursor.NextRow()) != null) |
|
{ |
|
if (f_gjdtb && !dicTBBH_DYTBBSMs[feature.Value[jztbybhIndex].ToString()].Contains("/")) continue;//筛选多个图斑 |
|
DataRow dr = Data.NewRow(); |
|
for (int i = 0; i < Data.Columns.Count; i++) |
|
{ |
|
object obj = feature.get_Value(pCurrentFeatureClass.FindField(Data.Columns[i].ColumnName)); |
|
if (obj == null) continue; |
|
else |
|
{ |
|
if ((obj.ToString()).Contains("1899/12/30 0:00:00")) |
|
{ |
|
obj = System.DBNull.Value; |
|
} |
|
} |
|
//字符串时,去空格,对应bug10473 |
|
if (obj is string) |
|
{ |
|
obj = obj.ToString().Trim(); |
|
} |
|
dr[i] = obj; |
|
} |
|
|
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(feature); |
|
index++; |
|
//if (PageSize != -1) |
|
//{ |
|
// if (index > PageSize) |
|
// break; |
|
//} |
|
CurrentIndex = 0; |
|
Data.Rows.Add(dr); |
|
} |
|
ShowNum = Data.Rows.Count; |
|
ShowLabContent(Data.Rows.Count); |
|
RowCount = Data.Rows.Count; |
|
if (RowCount > 0) |
|
{ |
|
RowHandle++;//初始化,默认第一行 |
|
//SetDetailViewData(Data.Rows[0]);//设置第一个举证信息选中 |
|
ISelectionSet pSelectionSet = (JZTBFeatureLayer as IFeatureSelection).SelectionSet; |
|
if (pSelectionSet.Count > 0 && m_hookHelper != null)//兼容空值 肖芮 2020-09-25 |
|
{ |
|
m_hookHelper.FocusMap.ClearSelection(); |
|
} |
|
List<int> oids = new List<int>(); |
|
oids.Add(Int32.Parse(Data.Rows[0]["OBJECTID"].ToString())); |
|
pSelectionSet.AddList(oids.Count, ref oids.ToArray()[0]); |
|
IMapControlDefault mapcontrol = MapsManager.Instance.MapService.Hook as IMapControlDefault; |
|
if (mapcontrol != null) |
|
{ |
|
mapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, mapcontrol.ActiveView.Extent); |
|
} |
|
|
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
throw ex; |
|
} |
|
finally |
|
{ |
|
} |
|
} |
|
|
|
private void GetSelectMoreDicTB(IRow feature, int jztbybhIndex, int jzbsmIndex, out IDictionary<string, string> dicTBBH_DYTBBSMs, out int selectCount) |
|
{ |
|
selectCount = 0; |
|
dicTBBH_DYTBBSMs = new Dictionary<string, string>(); |
|
string jztbybh = feature.Value[jztbybhIndex].ToString(); |
|
string jzbsm = feature.Value[jzbsmIndex].ToString(); |
|
if (!dicTBBH_DYTBBSMs.Keys.Contains(jztbybh)) |
|
{ |
|
dicTBBH_DYTBBSMs.Add(jztbybh, jzbsm); |
|
} |
|
else |
|
{ |
|
if (!dicTBBH_DYTBBSMs[jztbybh].Contains(jzbsm) && !string.IsNullOrWhiteSpace(jzbsm)) |
|
{ |
|
selectCount++; |
|
dicTBBH_DYTBBSMs[jztbybh] = string.Format(@"{0}/{1}", dicTBBH_DYTBBSMs[jztbybh], jzbsm); |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 显示查询数据量LabContent |
|
/// </summary> |
|
/// <param name="CurrentFindCount">当前查询到的数据量</param> |
|
private void ShowLabContent(int CurrentFindCount) |
|
{ |
|
try |
|
{ |
|
IQueryFilter pQueryFilter = new QueryFilterClass() |
|
{ |
|
WhereClause = "1=1 ", |
|
SubFields = KeyIDName |
|
}; |
|
if (this.SourceFeature != null) |
|
{ |
|
Count = (this.SourceFeature as ITable).RowCount(pQueryFilter); |
|
} |
|
else if (JZTBFeatureLayer.FeatureClass is ITable) |
|
{ |
|
Count = (JZTBFeatureLayer.FeatureClass as ITable).RowCount(pQueryFilter); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex.Message.ToString()); |
|
MessageHelper.ShowError(ex.Message.ToString()); |
|
} |
|
} |
|
|
|
|
|
/// <summary> |
|
/// 创建命令 |
|
/// </summary> |
|
private void CreateCommand() |
|
{ |
|
try |
|
{ |
|
PrevDataCmd = ReactiveCommand.Create(); |
|
NextDataCmd = ReactiveCommand.Create(); |
|
RefreshDataCmd = ReactiveCommand.Create(); |
|
GridControlUnSelectAll = ReactiveCommand.Create(); |
|
GridControlRefreshData = ReactiveCommand.Create(); |
|
GridControlFocusRow = ReactiveCommand.Create(); |
|
GridControlAutoGeneratedColumns = ReactiveCommand.Create<RoutedEventArgs>(); |
|
GridControlAutoGeneratedColumns.Subscribe(_ => |
|
{ |
|
var grid = (_.Source as GridControl); |
|
DataTable table = grid.ItemsSource as DataTable; |
|
if (table == null) |
|
return; |
|
foreach (GridColumn column in grid.Columns) |
|
{ |
|
if (table.Columns.Contains(column.FieldName)) |
|
{ |
|
string caption = table.Columns[column.FieldName].Caption; |
|
if (caption != null) |
|
{ |
|
column.EditSettings = new TextEditSettings() { HorizontalContentAlignment = EditSettingsHorizontalAlignment.Left }; |
|
column.Header = caption; |
|
} |
|
} |
|
} |
|
}); |
|
|
|
CurrentItemChangedCommand = ReactiveCommand.Create<CurrentItemChangedEventArgs>(); |
|
CurrentItemChangedCommand.Subscribe(_ => { GridControlCurrentItemChanged(_); }); |
|
|
|
SelectionChangedCommand = ReactiveCommand.Create<GridSelectionChangedEventArgs>(); |
|
SelectionChangedCommand.Subscribe(_ => { GridControlSelectionChanged(_); }); |
|
|
|
EndSortingCommand = ReactiveCommand.Create<RoutedEventArgs>(); |
|
EndSortingCommand.Subscribe(_ => { GridControlEndSorting(_); }); |
|
|
|
//关联图斑标识码 |
|
RelationTBBSMCmd = ReactiveCommand.Create(); |
|
RelationTBBSMCmd.Subscribe(_ => |
|
{ |
|
if (frmGLBSMParameter == null) |
|
{ |
|
frmGLBSMParameter = new BGFrmGLBSMParameter(); |
|
frmGLBSMParameter.Closed += FrmGLBSMParameter_Closed; |
|
} |
|
if (frmGLBSMParameter.ShowInMainWindow(true) == true) |
|
{ |
|
RelationTBBSM(); |
|
} |
|
}); |
|
//人机交互 |
|
RGJYCmd = ReactiveCommand.Create(); |
|
RGJYCmd.Subscribe(_ => |
|
{ |
|
if (CurrentItem != null) |
|
{ |
|
DataRow dr = CurrentItem.Row; |
|
int OID = (int)dr["OBJECTID"]; |
|
if (frmJZTBXXB_RGJX == null) |
|
{ |
|
frmJZTBXXB_RGJX = new BGFrmJZTBXXBRelation(Hook); |
|
frmJZTBXXB_RGJX.Closed += FrmJZTBXXB_RGJX_Closed; |
|
} |
|
frmJZTBXXB_RGJX.SetData(OID); |
|
frmJZTBXXB_RGJX.ShowInMainWindow(); |
|
} |
|
}); |
|
//导出举证图斑信息表 |
|
ExportJZTBXXBCmd = ReactiveCommand.Create(); |
|
ExportJZTBXXBCmd.Subscribe(_ => |
|
{ |
|
ExportJZTBXXB(); |
|
}); |
|
//导出举证图斑信息表 |
|
FilterDataCmd = ReactiveCommand.Create(); |
|
FilterDataCmd.Subscribe(_ => |
|
{ |
|
InitTableView(); |
|
}); |
|
|
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError(ex.Message); |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
|
|
private void FrmGLBSMParameter_Closed(object sender, EventArgs e) |
|
{ |
|
if (frmGLBSMParameter != null) |
|
{ |
|
AreaRatio = frmGLBSMParameter.AreaRatio; |
|
frmGLBSMParameter = null; |
|
} |
|
} |
|
|
|
private void FrmJZTBXXB_RGJX_Closed(object sender, EventArgs e) |
|
{ |
|
frmJZTBXXB_RGJX = null; |
|
} |
|
|
|
public void GridControlCurrentItemChanged(CurrentItemChangedEventArgs e) |
|
{ |
|
|
|
try |
|
{ |
|
if (IsNotByPerson) |
|
{ |
|
return; |
|
} |
|
if (CurrentItem == null) |
|
{ |
|
return; |
|
} |
|
if (!(CurrentItem as DataRowView).Row.Table.Columns.Contains(KeyIDName) && !(CurrentItem as DataRowView).Row.Table.Columns.Contains(KeyIDName)) |
|
return; |
|
List<int> oids = new List<int>(); |
|
DataRowView drv = CurrentItem as DataRowView; |
|
int oid = -1; |
|
if ((CurrentItem as DataRowView).Row.Table.Columns.Contains(KeyIDName)) |
|
{ |
|
int.TryParse(drv.Row[KeyIDName].ToString(), out oid); |
|
} |
|
ISelectionSet pSelectionSet = (JZTBFeatureLayer as IFeatureSelection).SelectionSet; |
|
if (pSelectionSet == null) |
|
{ |
|
return; |
|
} |
|
if (pSelectionSet.Count > 10000) |
|
{ |
|
m_hookHelper.FocusMap.ClearSelection(); |
|
} |
|
if (pSelectionSet.Count > 0 || oids.Count > 0) |
|
{ |
|
List<int> listRemoveObjectID = new List<int>(); |
|
IEnumIDs enumIDs = pSelectionSet.IDs; |
|
enumIDs.Reset(); |
|
int objectid = 0; |
|
while ((objectid = enumIDs.Next()) >= 0) |
|
{ |
|
if (oids.Contains(objectid)) |
|
{ |
|
oids.Remove(objectid); |
|
continue; |
|
} |
|
listRemoveObjectID.Add(objectid); |
|
} |
|
if (listRemoveObjectID.Count > 0) |
|
{ |
|
pSelectionSet.RemoveList(listRemoveObjectID.Count, ref listRemoveObjectID.ToArray()[0]); |
|
} |
|
} |
|
if (oids.Count > 0) |
|
{ |
|
pSelectionSet.AddList(oids.Count, ref oids.ToArray()[0]); |
|
} |
|
IFeature pfeature = JZTBFeatureLayer.FeatureClass.GetFeature(oid); |
|
if (pfeature != null) |
|
{ |
|
MoveToCenterBySelectFeature(m_hookHelper.Hook as IMapControlDefault, JZTBFeatureLayer as ILayer, pfeature, true); |
|
} |
|
//清空元素 |
|
m_hookHelper.ActiveView.GraphicsContainer.DeleteAllElements(); |
|
m_hookHelper.ActiveView.GraphicsContainer.Reset(); |
|
#region 高亮显示关联的三调图斑 |
|
int jkbsm_index = pfeature.Fields.FindField("BSM"); |
|
if (jkbsm_index != -1) |
|
{ |
|
string jkbsm = pfeature.Value[jkbsm_index].ToString(); |
|
IQueryFilter filter = new QueryFilterClass() |
|
{ |
|
WhereClause = string.Format(" bsm in ('{0}')", jkbsm.Replace(",", "','")) |
|
}; |
|
|
|
List<string> bsmlist = new List<string>(); |
|
IFeatureCursor cursor = dltbgxLayer.FeatureClass.Search(filter, true); |
|
IFeature f = null; |
|
int bsmIndex = dltbgxLayer.FeatureClass.Fields.FindField("BSM"); |
|
while ((f = cursor.NextFeature()) != null) |
|
{ |
|
string bsm = string.Empty; |
|
if (bsmIndex != -1) |
|
{ |
|
bsm = f.Value[bsmIndex].ToString(); |
|
bsmlist.Add(bsm); |
|
} |
|
DrawPolygonElement(f.ShapeCopy, bsm); |
|
} |
|
|
|
IFeatureCursor jccursor = jcdltbLayer.FeatureClass.Search(filter, true); |
|
IFeature jcf = null; |
|
int jcbsmIndex = jcdltbLayer.FeatureClass.Fields.FindField("BSM"); |
|
while ((jcf = jccursor.NextFeature()) != null) |
|
{ |
|
string bsm = string.Empty; |
|
if (jcbsmIndex != -1) |
|
{ |
|
bsm = jcf.Value[jcbsmIndex].ToString(); |
|
if (bsmlist.Contains(bsm)) |
|
{ |
|
continue; |
|
} |
|
} |
|
DrawPolygonElement(jcf.ShapeCopy, bsm); |
|
} |
|
} |
|
#endregion |
|
|
|
if (frmJZTBXXB_RGJX != null) |
|
frmJZTBXXB_RGJX.SetData((int)drv.Row["OBJECTID"]); |
|
|
|
string tbbh = drv.Row["TBBH"].ToString(); |
|
ProjectInfo project = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo; |
|
string dbpath = project.DBPath; |
|
string SourcePath = dbpath; |
|
if (!Directory.Exists(SourcePath)) |
|
{ |
|
LogAPI.Debug("举证标注信息文件, 不存在该路径:" + SourcePath); |
|
} |
|
DirectoryInfo FileDir = new DirectoryInfo(SourcePath); |
|
List<FileInfo> listFile = new List<FileInfo>(); |
|
listFile.AddRange(FileDir.GetFiles("*.db", SearchOption.AllDirectories)); |
|
if (listFile == null || listFile.Count == 0) return; |
|
List<DataDicTionary> qsDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM); |
|
if (qsDic != null) |
|
{ |
|
string code = project.CODE; |
|
string xianName = qsDic.FirstOrDefault(f => f.CODE == code).NAME; |
|
foreach (FileInfo item in listFile) |
|
{ |
|
if (item.Name.Contains("xianName")) |
|
{ |
|
dbpath = item.FullName; |
|
break; |
|
} |
|
} |
|
} |
|
if (!dbpath.EndsWith(".db")) |
|
return; |
|
if (!File.Exists(dbpath)) |
|
{ |
|
LogAPI.Debug("附件路径不存在:" + dbpath); |
|
MessageHelper.ShowError("附件路径异常!"); |
|
return; |
|
} |
|
//string where = string.Format("TBYBH = '{0}'", tbbh); |
|
DataTable dtFJ = SQLiteDBOperate.Instance.ExceDataTable(dbpath, string.Format("select longitude XZB,latitude YZB,psjd,fjmc,fjlx from FJ where tbbsm=(select bsm from tbjbxx where tbbh='{0}')", tbbh)); |
|
if (dtFJ == null) |
|
{ |
|
MessageHelper.ShowError("连接db数据库异常!"); |
|
return; |
|
} |
|
|
|
//添加方位角 |
|
if (dtFJ.Rows.Count != 0) |
|
{ |
|
foreach (DataRow dr in dtFJ.Rows) |
|
{ |
|
IPoint point = new PointClass() { X = dr["XZB"].ToDouble(), Y = dr["YZB"].ToDouble() }; |
|
ISpatialReferenceFactory NewSpatialReference = new SpatialReferenceEnvironmentClass(); |
|
point.SpatialReference = NewSpatialReference.CreateGeographicCoordinateSystem(4490); |
|
point.Project((JZTBFeatureLayer as IGeoDataset).SpatialReference); |
|
double psjd = dr["PSJD"].ToDouble(); |
|
string fjmc = dr["FJMC"].ToString(); |
|
string fjlx = dr["FJLX"].ToString(); |
|
DrawAnglePoint(point, psjd, fjmc, fjlx); |
|
} |
|
} |
|
m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, m_hookHelper.ActiveView.Extent); |
|
m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, m_hookHelper.ActiveView.Extent); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
|
|
} |
|
|
|
public static void MoveToCenterBySelectFeature(IMapControlDefault mapControl, ILayer pLayer, IFeature feature, bool enlarge = true) |
|
{ |
|
try |
|
{ |
|
if (mapControl.Map.SelectionCount > 0) |
|
{ |
|
mapControl.Map.ClearSelection(); |
|
} |
|
MoveToCenter(feature, mapControl, enlarge); |
|
mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, feature, mapControl.ActiveView.Extent); |
|
mapControl.Map.SelectFeature(pLayer, feature); |
|
mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, feature, mapControl.ActiveView.Extent); |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError("操作异常!异常信息:" + ex.Message); |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
|
|
public static void MoveToCenter(IFeature pFeature, IMapControlDefault mapControl, bool enlarge = true) |
|
{ |
|
try |
|
{ |
|
//Bug-13836 霍岩 2018-12-21 实例化ArcGIS的EnvelopeClass |
|
EnvelopeClass pEnvelope = new EnvelopeClass(); |
|
IEnvelope pEnvOfFeat = pFeature.Shape.Envelope; |
|
//投影到当前地图坐标系定位缩放到当前要素 |
|
pEnvOfFeat.Project(mapControl.SpatialReference); |
|
IUnitConverter pUnitConverter = new UnitConverterClass(); |
|
double dScale = pUnitConverter.ConvertUnits(50, esriUnits.esriMeters, mapControl.MapUnits); |
|
pEnvelope.PutCoords(pEnvOfFeat.XMin - dScale, pEnvOfFeat.YMin - dScale, pEnvOfFeat.XMax + dScale, pEnvOfFeat.YMax + dScale); |
|
|
|
if (enlarge) |
|
{ |
|
mapControl.ActiveView.Extent = pEnvelope; |
|
} |
|
|
|
mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, mapControl.ActiveView.Extent); |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError("操作异常!异常信息:" + ex.Message); |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
|
|
private void DrawPolygonElement(IGeometry pGeo, string pName) |
|
{ |
|
ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass(); |
|
pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSDiagonalCross; |
|
//设置线宽和线的颜色 |
|
ISimpleLineSymbol pLineSymbol = new SimpleLineSymbolClass(); |
|
pLineSymbol.Color = Symbol.GetRGBColor(255, 0, 0); |
|
pLineSymbol.Width = 1; |
|
pSimpleFillSymbol.Outline = pLineSymbol; |
|
PolygonElementClass element = new PolygonElementClass(); |
|
element.Name = pName; |
|
element.Symbol = pSimpleFillSymbol; |
|
element.Geometry = pGeo; |
|
IGraphicsLayer grapLayer = AddSubGraphicsLayer("TempDLTBGrapLayer"); |
|
(grapLayer as IGraphicsContainer).AddElement(element, 0); |
|
MapsManager.Instance.MapService.getAxMapControl().ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, MapsManager.Instance.MapService.getAxMapControl().ActiveView.Extent); |
|
} |
|
|
|
public IGraphicsLayer AddSubGraphicsLayer(string subgraphicsLayername) |
|
{ |
|
|
|
ICompositeGraphicsLayer pCompositeGLayer = MapsManager.Instance.MapService.getAxMapControl().Map.BasicGraphicsLayer as ICompositeGraphicsLayer; |
|
IGraphicsLayer pGLayer = null; |
|
try |
|
{ |
|
//查找是否已存在,如果不存在,跳转到catch内容. |
|
//如果查到不到,说明集合中并没有指定名称的graphicslayer |
|
pGLayer = pCompositeGLayer.FindLayer(subgraphicsLayername); |
|
} |
|
catch |
|
{ |
|
//若不存在,则添加一个指定名称的GraphicsLayer |
|
pGLayer = pCompositeGLayer.AddLayer(subgraphicsLayername, null); |
|
} |
|
|
|
return pGLayer; |
|
} |
|
|
|
public void GridControlSelectionChanged(DevExpress.Xpf.Grid.GridSelectionChangedEventArgs e) |
|
{ |
|
|
|
} |
|
|
|
public void GridControlEndSorting(RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
//Bug-16125 霍岩 2019-06-14 判断GridControl的SortInfo数量是否为0 |
|
GridControl gc = e.OriginalSource as GridControl; |
|
if (gc == null) |
|
return; |
|
if (gc.SortInfo.Count == 0) |
|
return; |
|
GridSortInfo sortInfo = gc.SortInfo[0]; |
|
DataColumn column = Data.Columns[sortInfo.FieldName]; |
|
if (column == null) |
|
{ |
|
throw new Exception("未获取到列!"); |
|
} |
|
string sort = " ASC"; |
|
if (sortInfo.SortOrder.ToString() == "Ascending") |
|
{ |
|
sort = " ASC"; |
|
} |
|
else |
|
{ |
|
sort = " DESC"; |
|
} |
|
Data.Select("1=1", sortInfo.FieldName + sort); |
|
e.Handled = false; |
|
return; |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError("数据排序失败:" + ex.Message); |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
|
|
|
|
public void RefreshSource() |
|
{ |
|
try |
|
{ |
|
InitTableView(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError("刷新属性表数据异常:" + ex.Message); |
|
} |
|
finally |
|
{ |
|
IsLoading = false; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 绘制方位角 |
|
/// </summary> |
|
/// <param name="pt"></param> |
|
/// <param name="angle"></param> |
|
private void DrawAnglePoint(IPoint point, double angle, string picName, string fjlx = "") |
|
{ |
|
try |
|
{ |
|
PictureMarkerSymbolClass picMarkerSymbol = new PictureMarkerSymbolClass(); |
|
picMarkerSymbol.Angle = -angle; |
|
picMarkerSymbol.Size = 28; |
|
|
|
string name = null; |
|
switch (fjlx) |
|
{ |
|
case "Y": |
|
name = "远景"; |
|
break; |
|
case "J": |
|
name = "近景"; |
|
break; |
|
case "T": |
|
name = "利用特征"; |
|
break; |
|
case "S": |
|
name = "扫描件"; |
|
break; |
|
default: |
|
name = "远景"; |
|
break; |
|
} |
|
picMarkerSymbol.CreateMarkerSymbolFromFile(esriIPictureType.esriIPictureBitmap, System.Windows.Forms.Application.StartupPath + "\\Images\\" + name + ".bmp"); |
|
IColor newColor = new RgbColorClass(); |
|
IRgbColor rgbColor = newColor as IRgbColor; |
|
rgbColor.Red = 255; |
|
rgbColor.Blue = 255; |
|
rgbColor.Green = 255; |
|
newColor.Transparency = 100; |
|
picMarkerSymbol.BackgroundColor = null; |
|
picMarkerSymbol.BitmapTransparencyColor = newColor; |
|
MarkerElementClass pMarkerAngleElement = new MarkerElementClass(); |
|
pMarkerAngleElement.Symbol = picMarkerSymbol; |
|
pMarkerAngleElement.Name = picName; |
|
IElement pElement; |
|
pElement = pMarkerAngleElement as IElement; |
|
pElement.Geometry = point; |
|
(this.m_hookHelper.ActiveView.GraphicsContainer as IGraphicsContainer).AddElement(pMarkerAngleElement, 2); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("绘制方位角失败:" + ex); |
|
} |
|
} |
|
|
|
IDictionary<string, string> dicJCBSM = new Dictionary<string, string>(); |
|
IDictionary<string, string> dicBSM = new Dictionary<string, string>(); |
|
/// <summary> |
|
/// 关联图斑标识码 |
|
/// </summary> |
|
private void RelationTBBSM() |
|
{ |
|
try |
|
{ |
|
isRelationTBBSM = true; |
|
bool isCreateNMK = false; |
|
if (jcdltbLayer == null || jcdltbLayer.FeatureClass == null || jcdltbLayer.FeatureClass.FeatureCount(null) == 0) |
|
{ |
|
MessageHelper.Show("未找到基础地类图斑层或基础地类图斑层为空!!"); |
|
return; |
|
} |
|
if (dltbgxLayer == null || dltbgxLayer.FeatureClass == null) |
|
{ |
|
MessageHelper.Show("未找到地类图斑更新层!!"); |
|
return; |
|
} |
|
if (JZTBFeatureLayer == null || JZTBFeatureLayer.FeatureClass == null || JZTBFeatureLayer.FeatureClass.FeatureCount(null) == 0) |
|
{ |
|
MessageHelper.Show("未找到举证成果层或举证成果层为空!!"); |
|
return; |
|
} |
|
dicJCBSM.Clear(); |
|
dicBSM.Clear(); |
|
this.ShowLoading("正在重算举证图斑面积……", 0, 0); |
|
ClearDataFields(); |
|
ExtensionShowWindow.MainWinForm.Enabled = false; |
|
IFeatureCursor up_cursor = JZTBFeatureLayer.FeatureClass.Update(null, true); |
|
IFeature feature = null; |
|
int tbmjIndex = JZTBFeatureLayer.FeatureClass.Fields.FindField("TBMJ"); |
|
int num = 0; |
|
int rowcount = JZTBFeatureLayer.FeatureClass.FeatureCount(null); |
|
if (tbmjIndex != -1) |
|
{ |
|
while ((feature = up_cursor.NextFeature()) != null) |
|
{ |
|
num++; |
|
if (num % 1000 != 0 || num != rowcount) |
|
{ |
|
this.UpdateMsg($"正在重算举证图斑面积中...【{num}/{rowcount}】"); |
|
} |
|
double area = feature.ShapeCopy.GetEllipseArea(); |
|
feature.set_Value(tbmjIndex, area * 0.0015); |
|
up_cursor.UpdateFeature(feature); |
|
Marshal.ReleaseComObject(feature); |
|
} |
|
} |
|
this.UpdateMsg("正在分析数据……"); |
|
|
|
#region 数据提取 |
|
string gdbFolder = Directory.GetCurrentDirectory() + "\\Temp\\BGJZTB"; |
|
if (!System.IO.Directory.Exists(gdbFolder)) |
|
{ |
|
System.IO.Directory.CreateDirectory(gdbFolder); |
|
} |
|
try |
|
{ |
|
DelectDir(gdbFolder);//能删除就删除 删除报错不处理 |
|
} |
|
catch |
|
{ } |
|
|
|
ProjectInfo prj = (ProjectInfo)MapsManager.Instance.CurrProjectInfo; |
|
string SourcePath = prj.NMDatabase; |
|
IWorkspaceAPI NmWsAPI = new WorkspaceAPI(SourcePath, KGIS.Framework.AE.Enum.WorkspaceTypeEnum.GDBFile); |
|
IFeatureLayer nmkFeatureLayer = null; |
|
if (NmWsAPI != null && NmWsAPI.CurrentWorkspace != null) |
|
{ |
|
try |
|
{ |
|
IFeatureClassAPI fcAPI = NmWsAPI.OpenFeatureClass("DLTB_NMK"); |
|
if (fcAPI != null) |
|
nmkFeatureLayer = new FeatureLayerClass() { FeatureClass = fcAPI.FeatureClass, Name = fcAPI.FeatureClass.AliasName }; |
|
} |
|
catch { } |
|
} |
|
if (nmkFeatureLayer == null) |
|
{ |
|
GPParamClass nmgPParamClass = new GPParamClass(); |
|
nmgPParamClass.FirstFeatureLayer = jcdltbLayer;//基础地类图斑要素类 |
|
nmgPParamClass.SecondFeatureLayer = dltbgxLayer;//地类图斑更新要素类 |
|
nmgPParamClass.OutFeatureClassPath = SourcePath + "\\" + "DLTB_NMK";//要添加的要素类图层 |
|
nmgPParamClass.IsGetOutPutFeature = true; |
|
GeoprocessorHelper.EraseAnalysis(nmgPParamClass, ref nmkFeatureLayer); |
|
|
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(dltbgxLayer.FeatureClass); |
|
fcAPI.FcToFc(nmkFeatureLayer.FeatureClass, null, false); |
|
|
|
isCreateNMK = true; |
|
} |
|
//修复几何 |
|
try |
|
{ |
|
GeoprocessorHelper.RepairGeo(JZTBFeatureLayer.FeatureClass, true); |
|
} |
|
catch { } |
|
IFeatureLayer nmkdltbAndjzcgLayey = null; |
|
GPParamClass gPParamClass = new GPParamClass(); |
|
gPParamClass.FirstFeatureLayer = nmkFeatureLayer; |
|
gPParamClass.GPType = EnumGPType.Intersect; |
|
gPParamClass.SecondFeatureLayer = JZTBFeatureLayer; |
|
gPParamClass.IsGetOutPutFeature = true; |
|
GeoprocessorHelper.IntersectAnalysis(gPParamClass, ref nmkdltbAndjzcgLayey); |
|
|
|
#endregion |
|
if (nmkdltbAndjzcgLayey != null) |
|
{ |
|
//按照压盖面积降序排列,目的:当一个举证图斑压盖多个三调图斑时,默认取压盖面积最大的图斑进行关联 |
|
IQueryFilter filter = new QueryFilterClass(); |
|
int dltbgxIndex = nmkdltbAndjzcgLayey.FeatureClass.Fields.FindField("FID_DLTB_NMK"); |
|
int jctbIndex = nmkdltbAndjzcgLayey.FeatureClass.Fields.FindField("FID_JCTB"); |
|
filter.WhereClause = "1=1 order by shape_area desc"; |
|
ICursor cursor = (nmkdltbAndjzcgLayey.FeatureClass as ITable).Search(filter, true); |
|
IRow row = null; |
|
IDictionary<string, string> dicJZDLBM = new Dictionary<string, string>(); |
|
int tbbsmIndex = nmkdltbAndjzcgLayey.FeatureClass.Fields.FindField("BSM"); |
|
int jztbybhIndex = nmkdltbAndjzcgLayey.FeatureClass.Fields.FindField("TBBH_1"); |
|
int sdtbmjIndex = nmkdltbAndjzcgLayey.FeatureClass.Fields.FindField("TBMJ"); |
|
int jztbmjIndex = nmkdltbAndjzcgLayey.FeatureClass.Fields.FindField("TBMJ_1"); |
|
int dlbmIndex = nmkdltbAndjzcgLayey.FeatureClass.Fields.FindField("DLBM"); |
|
int shapeAreaIndex = nmkdltbAndjzcgLayey.FeatureClass.Fields.FindField("SHAPE_AREA");//不确定 |
|
|
|
string tbbsm = string.Empty; |
|
double sdtbmj = 0.00; |
|
double shapeArea = 0.00; |
|
if (tbbsmIndex != -1 && jztbybhIndex != -1) |
|
{ |
|
while ((row = cursor.NextRow()) != null) |
|
{ |
|
if (row.Value[dltbgxIndex].ToString() == "-1" || row.Value[jctbIndex].ToString() == "-1") |
|
continue; |
|
tbbsm = row.Value[tbbsmIndex].ToString(); |
|
sdtbmj = row.Value[sdtbmjIndex].ToDouble() * 0.0015; |
|
shapeArea = row.Value[shapeAreaIndex].ToDouble() * 0.0015; |
|
|
|
double jztbmj = row.Value[jztbmjIndex].ToDouble(); |
|
string jztbybh = row.Value[jztbybhIndex].ToString(); |
|
string dlbm = row.Value[dlbmIndex].ToString(); |
|
//当压盖多个三调图斑时,如果压盖面积大于举证/三调图斑总面的百分之四十,则关联 |
|
if (shapeArea > (double)AreaRatio / 100 * jztbmj || shapeArea > (double)AreaRatio / 100 * sdtbmj) |
|
{ |
|
if (!dicBSM.Keys.Contains(tbbsm)) |
|
{ |
|
dicBSM.Add(tbbsm, jztbybh); |
|
} |
|
else |
|
{ |
|
if (!dicBSM[tbbsm].Contains(jztbybh) && !string.IsNullOrWhiteSpace(jztbybh)) |
|
{ |
|
dicBSM[tbbsm] = string.Format(@"{0}/{1}", dicBSM[tbbsm], jztbybh); |
|
} |
|
} |
|
if (!dicJZDLBM.Keys.Contains(jztbybh)) |
|
{ |
|
dicJZDLBM.Add(jztbybh, dlbm); |
|
} |
|
else |
|
{ |
|
if (!dicJZDLBM[jztbybh].Contains(dlbm) && !string.IsNullOrWhiteSpace(dlbm)) |
|
{ |
|
dicJZDLBM[jztbybh] = string.Format(@"{0}/{1}", dicJZDLBM[jztbybh], dlbm); |
|
} |
|
} |
|
|
|
} |
|
} |
|
} |
|
this.UpdateMsg("正在关联图斑标识码……"); |
|
int jcbhIndex = this.SourceFeature.Fields.FindField("TBBH"); |
|
int jkbsmIndex = this.SourceFeature.Fields.FindField("DYTBBSM"); |
|
int bsmIndex = this.SourceFeature.Fields.FindField("BSM"); |
|
int jzdlbmIndex = this.SourceFeature.Fields.FindField("JZDLBM"); |
|
int bzIndex = this.SourceFeature.Fields.FindField("LJBZ"); |
|
IFeatureCursor upjz_cursor = this.SourceFeature.Update(null, false); |
|
IFeature jzfeature = null; |
|
IFeature jzfeatureTemp = null; |
|
while ((jzfeatureTemp = upjz_cursor.NextFeature()) != null) |
|
{ |
|
string jcbh = jzfeatureTemp.get_Value(jcbhIndex).ToString(); |
|
string jkbsm = jzfeatureTemp.get_Value(jkbsmIndex).ToString(); |
|
string bsm = jzfeatureTemp.get_Value(bsmIndex).ToString(); |
|
if (!dicJCBSM.Keys.Contains(bsm)) |
|
{ |
|
dicJCBSM.Add(bsm, jcbh); |
|
} |
|
Marshal.ReleaseComObject(jzfeatureTemp); |
|
} |
|
upjz_cursor = this.SourceFeature.Update(null, false); |
|
//获取类举标注json信息 |
|
IDictionary<string, string> dicLJBZ = GetLJBZs(); |
|
|
|
while ((jzfeature = upjz_cursor.NextFeature()) != null) |
|
{ |
|
string jcbh = jzfeature.get_Value(jcbhIndex).ToString(); |
|
string jkbsm = jzfeature.get_Value(jkbsmIndex).ToString(); |
|
if (!dicBSM.Values.Contains(jcbh)) continue; |
|
var firstKey = dicBSM.FirstOrDefault(q => q.Value.Contains(jcbh)).Key; |
|
jzfeature.set_Value(jkbsmIndex, firstKey);//更新建库标识码 |
|
jzfeature.set_Value(jzdlbmIndex, dicJZDLBM[jcbh]);//更新举证地类编码 更新层地类编码 |
|
|
|
if (dicLJBZ != null && dicJCBSM != null) |
|
{ |
|
var firstKey1 = dicJCBSM.FirstOrDefault(q => dicBSM[firstKey].Contains(q.Value)).Key; |
|
string jubzValue = dicLJBZ.FirstOrDefault(a => a.Key == firstKey1).Value; |
|
string bz = ""; |
|
try |
|
{ |
|
if (jubzValue != null) |
|
{ |
|
JObject jo = (JObject)JsonConvert.DeserializeObject(jubzValue); |
|
bz = jo["BZ"].ToString(); |
|
} |
|
} |
|
catch (Exception e) |
|
{ |
|
} |
|
jzfeature.set_Value(bzIndex, bz); |
|
} |
|
else |
|
jzfeature.set_Value(bzIndex, null); |
|
|
|
upjz_cursor.UpdateFeature(jzfeature); |
|
Marshal.ReleaseComObject(jzfeature); |
|
} |
|
this.CloseLoading(); |
|
ExtensionShowWindow.MainWinForm.Enabled = true; |
|
MessageHelper.Show("关联图斑标识码成功。"); |
|
InitTableView();//刷新界面 |
|
|
|
DeleteTempFeatureLayer(nmkdltbAndjzcgLayey); |
|
if (isCreateNMK) |
|
DeleteTempFeatureLayer(nmkFeatureLayer); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("关联图斑标识码失败:" + ex.Message); |
|
MessageHelper.ShowError("关联图斑标识码失败!" + ex.Message); |
|
} |
|
finally |
|
{ |
|
this.CloseLoading(); |
|
ExtensionShowWindow.MainWinForm.Enabled = true; |
|
} |
|
} |
|
|
|
//删除临时文件 |
|
public static void DeleteTempFeatureLayer(IFeatureLayer pFeatureLayer) |
|
{ |
|
if (pFeatureLayer == null) return; |
|
try |
|
{ |
|
ITable tempTable = pFeatureLayer.FeatureClass as ITable; |
|
if (tempTable == null) return; |
|
IFeatureWorkspaceManage pWorkspaceManager = (pFeatureLayer.FeatureClass as FeatureClass).Workspace as IFeatureWorkspace as IFeatureWorkspaceManage; |
|
pWorkspaceManager.DeleteByName((IDatasetName)((IDataset)tempTable).FullName); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("删除临时文件异常:" + ex); |
|
} |
|
} |
|
|
|
private void ClearDataFields() |
|
{ |
|
try |
|
{ |
|
IFeatureCursor upjz_cursor = this.SourceFeature.Update(null, false); |
|
IFeature jzfeature = null; |
|
int dlbmIndex = this.SourceFeature.Fields.FindField("JZDLBM"); |
|
int bsmIndex = this.SourceFeature.Fields.FindField("DYTBBSM"); |
|
int bzIndex = this.SourceFeature.Fields.FindField("LJBZ"); |
|
while ((jzfeature = upjz_cursor.NextFeature()) != null) |
|
{ |
|
if (dlbmIndex != -1) |
|
jzfeature.set_Value(dlbmIndex, null); |
|
if (bsmIndex != -1) |
|
jzfeature.set_Value(bsmIndex, null); |
|
if (bzIndex != -1) |
|
jzfeature.set_Value(bzIndex, null); |
|
upjz_cursor.UpdateFeature(jzfeature); |
|
Marshal.ReleaseComObject(jzfeature); |
|
} |
|
InitTableView();//刷新界面 |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("清除字段信息异常:" + ex.Message); |
|
LogAPI.Debug(ex); |
|
return; |
|
} |
|
} |
|
|
|
private IDictionary<string, string> GetLJBZs() |
|
{ |
|
IDictionary<string, string> dic_BSMBZ = new Dictionary<string, string>(); |
|
try |
|
{ |
|
ProjectInfo prj = (ProjectInfo)MapsManager.Instance.CurrProjectInfo; |
|
string SourcePath = prj.DBPath; |
|
//string dirPath = System.IO.Path.Combine(prj.DBPath, "举证成果"); |
|
if (!Directory.Exists(SourcePath)) |
|
{ |
|
LogAPI.Debug("举证标注信息文件, 不存在该路径:" + SourcePath); |
|
return null; |
|
} |
|
DirectoryInfo FileDir = new DirectoryInfo(SourcePath); |
|
List<FileInfo> listFile = new List<FileInfo>(); |
|
listFile.AddRange(FileDir.GetFiles("*.db", SearchOption.AllDirectories)); |
|
DataTable DbPathdataTab = null; |
|
foreach (var file in listFile) |
|
{ |
|
DbPathdataTab = SQLiteDBOperate.Instance.ExceDataTable(file.FullName, $"select * from 'DCHSXX' "); |
|
if (DbPathdataTab != null) |
|
{ |
|
foreach (DataRow row in DbPathdataTab.Rows) |
|
{ |
|
string bsm = row["TBBSM"].ToTrim().ToString(); |
|
string KZXX = row["KZXX"].ToTrim().ToString(); |
|
dic_BSMBZ.Add(bsm, KZXX); |
|
} |
|
} |
|
} |
|
return dic_BSMBZ; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("读取举证标注信息文件 " + ex.Message); |
|
return null; |
|
} |
|
} |
|
|
|
private void ExportJZTBXXB() |
|
{ |
|
if (!isRelationTBBSM) |
|
{ |
|
MessageHelper.ShowWarning("请先执行挂接关联标识码后导出举证信息表!"); |
|
return; |
|
} |
|
try |
|
{ |
|
string code = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE; |
|
string ExportPath = ""; |
|
FolderBrowserDialog dialog = new FolderBrowserDialog(); |
|
DialogResult result = dialog.ShowDialog(); |
|
if (result == DialogResult.OK) |
|
{ |
|
ExportPath = dialog.SelectedPath; |
|
} |
|
else |
|
return; |
|
|
|
string sheng = ""; |
|
string shi = ""; |
|
string xian = ""; |
|
#region 获取省市县 |
|
List<DataDicTionary> qsDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM); |
|
if (qsDic == null) |
|
{ |
|
MessageHelper.ShowTips("请先生成权属单位代码字典,在进行导出!"); |
|
return; |
|
} |
|
DataDicTionary dic = qsDic.FirstOrDefault(f => f.CODE.Length == 2); |
|
if (dic != null) |
|
{ |
|
sheng = dic.NAME; |
|
} |
|
dic = qsDic.FirstOrDefault(f => f.CODE.Length == 4); |
|
if (dic != null) |
|
{ |
|
shi = dic.NAME; |
|
} |
|
dic = qsDic.FirstOrDefault(f => f.CODE == code); |
|
if (dic != null) |
|
{ |
|
xian = dic.NAME; |
|
} |
|
#endregion |
|
this.ShowLoading("正在导出举证图斑信息表,请稍等……", 0, 0); |
|
ExtensionShowWindow.MainWinForm.Enabled = false; |
|
string MDBTemplatePath = string.Format(@"{0}{1}\{2}\{3}\县举证信息表.mdb", SysAppPath.GetCurrentAppPath(), "工作空间", "模板", "电子手簿"); |
|
ExportPath = string.Format(string.Format(@"{0}\({1}){2}举证信息表.mdb", ExportPath, code, xian)); |
|
|
|
if (File.Exists(ExportPath)) |
|
{ |
|
File.Delete(ExportPath); |
|
} |
|
File.Copy(MDBTemplatePath, ExportPath); |
|
string connStr = SysConfigsOprator.GetDBConnectionByName("MDBOledbConnection"); |
|
string SourcePath = string.Format(connStr, ExportPath); |
|
|
|
//创建数据库连接 |
|
IRDBHelper dbHelper2 = RDBFactory.CreateDbHelper(SourcePath, DatabaseType.MSAccess); |
|
DataTable dtRST = dbHelper2.ExecuteDatatable("RST", "SELECT * FROM 举证信息表 WHERE 0 = 1", false); |
|
int id = 1; |
|
|
|
this.UpdateMsg("正在记录表格数据……"); |
|
|
|
int dlbmIndex = this.SourceFeature.Fields.FindField("TBBH"); |
|
int bsmIndex = this.SourceFeature.Fields.FindField("DYTBBSM"); |
|
int bzIndex = this.SourceFeature.Fields.FindField("LJBZ"); |
|
ICursor cursor = (this.SourceFeature as ITable).Search(null, true); |
|
IRow row = null; |
|
while ((row = cursor.NextRow()) != null) |
|
{ |
|
string jkbsm = row.get_Value(bsmIndex).ToString(); |
|
if (string.IsNullOrEmpty(jkbsm)) continue; |
|
string dkbh = null; |
|
if(dicBSM.Keys.Contains(jkbsm)) |
|
dkbh = dicBSM[jkbsm]; |
|
else |
|
dkbh = row.get_Value(dlbmIndex).ToString(); |
|
//类举标注 |
|
string ljbz = row.get_Value(bzIndex).ToString(); |
|
//写入表数据 |
|
DataRow dr = dtRST.NewRow(); |
|
dr["序号"] = id; |
|
dr["行政区划代码"] = code; |
|
dr["省名"] = sheng; |
|
dr["地市名"] = shi; |
|
dr["县名"] = xian; |
|
dr["对应图斑标识码"] = jkbsm; |
|
dr["举证地块编号"] = dkbh; |
|
dr["类举标注"] = ljbz; |
|
|
|
dtRST.Rows.Add(dr); |
|
id++; |
|
} |
|
this.UpdateMsg("正在写入表格数据……"); |
|
dbHelper2.SaveTable("RST", true); |
|
|
|
this.CloseLoading(); |
|
ExtensionShowWindow.MainWinForm.Enabled = true; |
|
MessageHelper.Show("导出成功。"); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("导出举证图斑信息表失败:" + ex.Message); |
|
LogAPI.Debug(ex); |
|
MessageHelper.ShowError("导出举证图斑信息表失败!" + ex.Message); |
|
} |
|
finally |
|
{ |
|
this.CloseLoading(); |
|
ExtensionShowWindow.MainWinForm.Enabled = true; |
|
} |
|
} |
|
|
|
|
|
} |
|
}
|
|
|