using KGIS.Framework.Maps; using KGIS.Framework.Utils; using KGIS.Framework.Utils.Helper; using Kingo.Plugin.YJJK.ModelEntity; using Kingo.PluginServiceInterface; using Kingo.PluginServiceInterface.Model; using System; using System.IO; using System.Linq; using System.Windows; using System.Windows.Controls; namespace Kingo.Plugin.YJJK.View { /// /// FrmResultsExportForBG.xaml 的交互逻辑 /// public partial class ViewCGDC_CG : UserControl, IWizardFramework { public object Parameter { get; set; } private string m_strDescription = "按照国家数据库提交规则,生成相应的增量成果数据包"; public string Description { get { return m_strDescription; } set { m_strDescription = value; } } private string m_strCaption = "成果导出"; public string Caption { get { return m_strCaption; } set { m_strCaption = value; } } private bool m_bIsFinalSuccess = false; public bool IsFinalSuccess { get { return m_bIsFinalSuccess; } set { m_bIsFinalSuccess = value; } } private bool m_IsSkip = false; public bool IsSkip { get { return m_IsSkip; } set { m_IsSkip = value; } } ExportBGViewModel exportBGViewModel = null; public ViewCGDC_CG() { try { InitializeComponent(); if ((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ProjSuffix == ".KBG") { exportBGViewModel = new ExportBGViewModel(); DataContext = exportBGViewModel; if (MapsManager.Instance.MapService.GetProjectInfo() is ProjectInfo project) { if (System.IO.Directory.Exists(project.BGResultPath)) { //PluginServiceInterface.CommonHelper.DelectDir(project.BGResultPath); exportBGViewModel.OutDir = project.BGResultPath; } } } } catch (Exception ex) { LogAPI.Debug("一键成果导出 异常: " + ex + " ; "); } } private void btnSelectDir_Click(object sender, RoutedEventArgs e) { try { System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); folderBrowserDialog.Description = "请选择文件夹路径"; folderBrowserDialog.ShowNewFolderButton = true; if (!string.IsNullOrWhiteSpace(Properties.Settings.Default.LastSelectedFolder) && System.IO.Directory.Exists(Properties.Settings.Default.LastSelectedFolder)) { folderBrowserDialog.SelectedPath = Properties.Settings.Default.LastSelectedFolder; } else { folderBrowserDialog.RootFolder = Environment.SpecialFolder.Desktop; } if (folderBrowserDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } Properties.Settings.Default.LastSelectedFolder = folderBrowserDialog.SelectedPath.ToString(); Properties.Settings.Default.Save(); if (string.IsNullOrWhiteSpace(folderBrowserDialog.SelectedPath)) { return; } txtOutDir.Text = folderBrowserDialog.SelectedPath; } catch (System.Exception ex) { LogAPI.Debug("一键变更成果导出 期间 选择保存目录 时失败,异常原因: " + ex + " ; "); } } private void btnSelectNCData_Click(object sender, RoutedEventArgs e) { try { MessageHelper.ShowTips("请选择基础数据汇总表格,如:.../基础数据包/汇总表格"); System.Windows.Forms.FolderBrowserDialog folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); folderBrowserDialog.Description = "请选择文件夹路径"; folderBrowserDialog.ShowNewFolderButton = true; if (!string.IsNullOrWhiteSpace(Properties.Settings.Default.LastSelectedFolder) && System.IO.Directory.Exists(Properties.Settings.Default.LastSelectedFolder)) { folderBrowserDialog.SelectedPath = Properties.Settings.Default.LastSelectedFolder; } else { folderBrowserDialog.RootFolder = Environment.SpecialFolder.Desktop; } if (folderBrowserDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } Properties.Settings.Default.LastSelectedFolder = folderBrowserDialog.SelectedPath.ToString(); Properties.Settings.Default.Save(); if (string.IsNullOrWhiteSpace(folderBrowserDialog.SelectedPath)) { return; } txtNCData.Text = folderBrowserDialog.SelectedPath; } catch (System.Exception ex) { LogAPI.Debug("一键变更成果导出 期间 选择基础数据 时失败,异常原因: " + ex + " ; "); } } public bool Execute() { try { if (exportBGViewModel.Items == null) return false; exportBGViewModel.ExcelToDataTable(); exportBGViewModel.OutDataRootDir = exportBGViewModel.Items[0].Name; if (!string.IsNullOrEmpty(exportBGViewModel.OutDir)) { string path = Path.Combine(exportBGViewModel.OutDir, DateTime.Now.ToString("yyyyMMddHHmmssfff")); if (!Directory.Exists(path)) Directory.CreateDirectory(path); exportBGViewModel.OutDir = path; } exportBGViewModel.CreateCatalogDir(exportBGViewModel.Items); if (exportBGViewModel.Items[0] != null && exportBGViewModel.Items[0].SubCatalog != null) { ResultsCatalog resultsCatalog = exportBGViewModel.Items[0].SubCatalog.FirstOrDefault(a => a.Name == "基础数据包"); if (resultsCatalog != null) CopyBasePackage(resultsCatalog.Path); } } catch (Exception ex) { LogAPI.Debug("导出失败:" + ex.Message); return false; } return true; } private void CopyBasePackage(string basePackagePath) { try { if (string.IsNullOrEmpty(txtNCData.Text) || string.IsNullOrEmpty(exportBGViewModel.OutDir)) return; //CopyFolder(txtNCData.Text, Path.Combine(exportBGViewModel.OutDir, basePackagePath, "汇总表格")); CopyFolder(txtNCData.Text, Path.Combine(exportBGViewModel.OutDir, basePackagePath)); } catch (Exception ex) { //LogAPI.Debug("复制汇总表格 异常:" + 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); } } public void Intializing(bool IsSkip = false) { if (IsSkip) { m_IsSkip = IsSkip; if (Parameter is IDGParameter) { if ((Parameter as IDGParameter).ExtParam.Contains(this)) (Parameter as IDGParameter).ExtParam.Remove(this); } } else { if (Parameter is IDGParameter) { if (!(Parameter as IDGParameter).ExtParam.Contains(this)) (Parameter as IDGParameter).ExtParam.Add(this); } } } public bool Validating() { try { if (string.IsNullOrWhiteSpace(txtOutDir.Text)) { MessageHelper.ShowWarning("请选择输出目录!"); m_bIsFinalSuccess = false; return m_bIsFinalSuccess; } if (string.IsNullOrWhiteSpace(txtNCData.Text)) { if (MessageHelper.ShowYesNoAndTips("年初报表数据未选择,将不会生成报表数据,是否继续执行?") != System.Windows.Forms.DialogResult.Yes) { m_bIsFinalSuccess = false; return m_bIsFinalSuccess; } } m_bIsFinalSuccess = true; } catch (Exception ex) { LogAPI.Debug("一键变更成果导出 期间 选择基础数据 时失败,异常原因: " + ex + " ; "); } return m_bIsFinalSuccess; } public void Back() { } } }