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.
312 lines
13 KiB
312 lines
13 KiB
using ESRI.ArcGIS.Geodatabase; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.OpenData.Control; |
|
using KGIS.Framework.OpenData.Filter; |
|
using KGIS.Framework.OpenData.InterFace; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.Helper; |
|
using Kingo.PluginServiceInterface; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Diagnostics; |
|
using System.IO; |
|
using System.Linq; |
|
using System.Text.RegularExpressions; |
|
using System.Windows; |
|
|
|
namespace Kingo.Plugin.DLTB_IDG.View |
|
{ |
|
/// <summary> |
|
/// CreateQualityCheckView.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class CreateQualityCheckView : BaseWindow |
|
{ |
|
private ProjectInfo projectInfo = null; |
|
public CreateQualityCheckView() |
|
{ |
|
InitializeComponent(); |
|
this.Loaded += (s, e) => |
|
{ |
|
if (projectInfo == null) |
|
projectInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo; |
|
txtXZQCode.Text = projectInfo.CODE; |
|
#region 获取【变更成果】文件夹下面的最后一次生成的数据 |
|
if (projectInfo.BGResultPath != null) |
|
{ |
|
DirectoryInfo directoryInfo = new DirectoryInfo(projectInfo.BGResultPath); |
|
DirectoryInfo[] directoryInfos = directoryInfo.GetDirectories(); |
|
if (directoryInfos.Length > 0) |
|
{ |
|
foreach (var idirectory in directoryInfos.OrderByDescending(x => x.CreationTime)) |
|
{ |
|
if (idirectory.GetDirectories().Length == 0) |
|
{ |
|
try |
|
{ |
|
idirectory.Delete(); |
|
} |
|
catch { } |
|
} |
|
else |
|
{ |
|
btnResult.Text = idirectory.GetDirectories().FirstOrDefault().FullName; |
|
break; |
|
} |
|
} |
|
//判断成果路径下是否存在基础数据包 |
|
string JCKPath = btnResult.Text.ToString() + @"\基础数据包";//@"\更新数据包\原格式数据"; |
|
if (!Directory.Exists(JCKPath)) Directory.CreateDirectory(JCKPath); |
|
btnJCK.Text = JCKPath; |
|
} |
|
} |
|
#endregion |
|
}; |
|
} |
|
|
|
/// <summary> |
|
/// 基础数据路径 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void BtnXZQPath_Click(object sender, RoutedEventArgs e) |
|
{ |
|
btnJCK.Text = SelectPath(); |
|
} |
|
|
|
/// <summary> |
|
/// 坡度图路径 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void BtnPDQPath_Click(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
OpenDataDialog pDialog = new OpenDataDialog(); |
|
ISpatialDataObjectFilter pOFilter; |
|
pOFilter = new FilterDatasetsAndLayers(); |
|
pDialog.AddFilter(pOFilter, true); |
|
pDialog.Title = "选择导入的数据"; |
|
pDialog.AllowMultiSelect = false; |
|
pDialog.RestoreLocation = true; |
|
pDialog.StartLocation = pDialog.FinalLocation; |
|
System.Windows.Forms.DialogResult dialogResult = pDialog.ShowDialog(); |
|
if (dialogResult == System.Windows.Forms.DialogResult.OK && pDialog.Selection.Count != 0) |
|
{ |
|
foreach (ISpatialDataObject distObj in pDialog.Selection) |
|
{ |
|
if (distObj.DatasetType == esriDatasetType.esriDTFeatureClass) |
|
{ |
|
btnPDT.Text = distObj.FullName; |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("btnExternalData_Click异常:" + ex.Message); |
|
LogAPI.Debug("btnExternalData_Click异常:" + ex.StackTrace); |
|
} |
|
} |
|
|
|
private void BtnOK_Click(object sender, RoutedEventArgs e) |
|
{ |
|
//GT_QualityCallMiddleware.CallCreateQualityTask_GetControlArea s = null; |
|
//GT_QualityCallMiddleware.CallReQualityTaskFinishCheck s1 = null; |
|
//string strBGPath = @"E:\建库升级文档\国检软件调用测试\国检软件调用测试\王冠杰\福建省泉州市石狮市(350581)2022年度国土变更调查数据库更新成果"; |
|
//string strJCPath = @"E:\建库升级文档\国检软件调用测试\国检软件调用测试\王冠杰\福建省泉州市石狮市(350581)2022年度国土变更调查数据库更新成果\基础数据包"; |
|
string strBGPath = btnResult.Text; |
|
string strJCPath = btnJCK.Text; |
|
string strPDTPath = btnPDT.Text; |
|
if (string.IsNullOrWhiteSpace(strBGPath)) |
|
{ |
|
MessageHelper.ShowTips("待检成果库路径不可为空!"); |
|
return; |
|
} |
|
else if (string.IsNullOrWhiteSpace(strJCPath)) |
|
{ |
|
MessageHelper.ShowTips("基础数据路径不可为空!"); |
|
return; |
|
} |
|
|
|
//选择原格式数据,并复制 |
|
//CopyBasePackage(strJCPath); |
|
|
|
//string strBGFWPath = @"E:\建库升级文档\国检软件调用测试\国检软件调用测试\王冠杰\福建省泉州市石狮市(350581)2022年度国土变更调查数据库更新成果\350581石狮市变更范围成果"; |
|
//string strTaskOutputPath = @"E:\建库升级文档\国检软件调用测试\国检软件调用测试\王冠杰"; |
|
try |
|
{ |
|
btnOK.IsEnabled = false; |
|
btnCancel.IsEnabled = false; |
|
string XZQCode = projectInfo.CODE.Trim(); |
|
string strExeFile = @"C:\Program Files (x86)\2023年度国土变更调查县级数据库质量检查软件\2023年度变更调查质检软件\GT_QualityCallMiddleware.exe"; |
|
FileInfo fileInfo = new FileInfo(strExeFile); |
|
if (!fileInfo.Exists) |
|
{ |
|
//MessageHelper.ShowTips($"{strExeFile},默认安装路径未找到启动程序。"); |
|
MessageHelper.ShowTips("未能从默认安装路径找到国家质检软件启动程序,请手动选择国家质检软件“GT_QualityCallMiddleware.exe”路径。"); |
|
KGIS.Framework.Utils.Dialog.OpenFileDialog openFileDialog = new KGIS.Framework.Utils.Dialog.OpenFileDialog(); |
|
openFileDialog.Title = "选择国家质检软件"; |
|
openFileDialog.Filter = "Executable Files|*.exe"; |
|
openFileDialog.FileName = string.Empty; |
|
openFileDialog.FilterIndex = 1; |
|
if (openFileDialog.ShowDialog()) |
|
{ |
|
strExeFile = openFileDialog.FileName; |
|
fileInfo = new FileInfo(strExeFile); |
|
} |
|
else |
|
return; |
|
} |
|
//string strParams = string.Format("{0} \"{1}\" \"{2}\" \"{3}\" \"{4}\" \"{5}\" \"{6}\"", 14, strBGPath, "350581", strJCPath, "", "", "变更调查质检"); |
|
string strParams = string.Format("{0} \"{1}\" \"{2}\" \"{3}\" \"{4}\" \"{5}\" \"{6}\" \"{7}\"", 14, strBGPath, "", strJCPath, "", strPDTPath, "", "变更调查质检"); |
|
string strInfo = RunMutilProcess(strExeFile, strParams, GetCreateTaskReturnFolderProcessInfo); |
|
GetReturnFolderPath(strInfo); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("启动国家质检软件失败:" + ex.Message); |
|
LogAPI.Debug("启动国家质检软件失败:" + ex.StackTrace); |
|
MessageHelper.ShowError("启动国家质检软件失败" + ex.Message); |
|
} |
|
finally |
|
{ |
|
btnOK.IsEnabled = true; |
|
btnCancel.IsEnabled = true; |
|
} |
|
} |
|
|
|
#region 选择原格式数据,并复制 |
|
//private void CopyBasePackage(string basePackagePath) |
|
//{ |
|
// try |
|
// { |
|
// if (string.IsNullOrEmpty(basePackagePath)) return; |
|
// if (Directory.Exists(Path.Combine(basePackagePath, "原格式数据"))) |
|
// { |
|
// Directory.Delete(Path.Combine(basePackagePath, "原格式数据"), true); |
|
// } |
|
// CopyFolder(txtOriginalData.Text, Path.Combine(basePackagePath, "原格式数据", Path.GetFileName(txtOriginalData.Text))); |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// LogAPI.Debug("复制原格式数据 异常:" + ex); |
|
// } |
|
//} |
|
//private void CopyFolder(string sourceFolderPath, string destinationFolderPath) |
|
//{ |
|
// if (!Directory.Exists(destinationFolderPath)) |
|
// { |
|
// Directory.CreateDirectory(destinationFolderPath); |
|
// } |
|
|
|
// string[] files = Directory.GetFiles(sourceFolderPath); |
|
// foreach (string file in files) |
|
// { |
|
// string destinationFilePath = Path.Combine(destinationFolderPath, Path.GetFileName(file)); |
|
// File.Copy(file, destinationFilePath, true); |
|
// } |
|
|
|
// string[] subFolders = Directory.GetDirectories(sourceFolderPath); |
|
// foreach (string subFolder in subFolders) |
|
// { |
|
// string destinationSubFolderPath = Path.Combine(destinationFolderPath, Path.GetFileName(subFolder)); |
|
// CopyFolder(subFolder, destinationSubFolderPath); |
|
// } |
|
//} |
|
#endregion |
|
|
|
private void BtnCancel_Click(object sender, RoutedEventArgs e) |
|
{ |
|
this.Close(); |
|
} |
|
|
|
private string SelectPath() |
|
{ |
|
KGIS.Framework.Utils.Dialog.FolderBrowserDialog pBrowser = new KGIS.Framework.Utils.Dialog.FolderBrowserDialog |
|
{ |
|
ShowNewFolderButton = true |
|
}; |
|
if (pBrowser.ShowDialog() == System.Windows.Forms.DialogResult.OK) |
|
{ |
|
if (string.IsNullOrWhiteSpace(pBrowser.SelectedPath)) return ""; |
|
return pBrowser.SelectedPath; |
|
} |
|
else |
|
return ""; |
|
} |
|
private static string GetReturnFolderPath(string strInfo) |
|
{ |
|
if (string.IsNullOrWhiteSpace(strInfo)) return null; |
|
List<string> Arr = Regex.Split(strInfo.ToString(), "%&%", RegexOptions.IgnoreCase).ToList(); |
|
if (Arr[0] == "成功") |
|
{ |
|
return Arr[1]; |
|
} |
|
else |
|
{ |
|
return null; |
|
} |
|
} |
|
|
|
private delegate bool GetProcessWriteInfoDelegate(string strLog); |
|
private static string RunMutilProcess(string strExePath, string strParams, GetProcessWriteInfoDelegate pGetProcessWriteInfoDelegate) |
|
{ |
|
Process pProcess = new Process(); |
|
pProcess.StartInfo.FileName = strExePath; |
|
pProcess.StartInfo.Arguments = strParams; |
|
pProcess.StartInfo.UseShellExecute = false; |
|
pProcess.StartInfo.RedirectStandardOutput = true; |
|
pProcess.StartInfo.RedirectStandardInput = true; |
|
pProcess.Start(); |
|
while (true) |
|
{ |
|
if (!pProcess.HasExited) |
|
{ |
|
string strOutputTxt = pProcess.StandardOutput.ReadLine(); |
|
if (strOutputTxt != null) |
|
{ |
|
if (pGetProcessWriteInfoDelegate.Invoke(strOutputTxt)) |
|
{ |
|
return strOutputTxt; |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
break; |
|
} |
|
} |
|
return null; |
|
} |
|
|
|
private static bool GetCreateTaskReturnFolderProcessInfo(string strInfo) |
|
{ |
|
if (!strInfo.Contains("%&%")) |
|
{ |
|
return false; |
|
} |
|
else |
|
{ |
|
return true; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 待检成果路径 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void BtnResultPath_Click(object sender, RoutedEventArgs e) |
|
{ |
|
btnResult.Text = SelectPath(); |
|
} |
|
|
|
//选择原格式数据 |
|
private void BtnTxtOriginalDataPath_Click(object sender, RoutedEventArgs e) |
|
{ |
|
//txtOriginalData.Text = SelectPath(); |
|
} |
|
} |
|
}
|
|
|