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.
		
		
		
		
		
			
		
			
				
					
					
						
							2881 lines
						
					
					
						
							127 KiB
						
					
					
				
			
		
		
	
	
							2881 lines
						
					
					
						
							127 KiB
						
					
					
				using DevExpress.Spreadsheet; | 
						|
using KGIS.Framework.DBOperator; | 
						|
using KGIS.Framework.Maps; | 
						|
using KGIS.Framework.Platform; | 
						|
using KGIS.Framework.Utils; | 
						|
using KGIS.Framework.Utils.Helper; | 
						|
using KGIS.Framework.Utils.Utility; | 
						|
using Kingo.PluginServiceInterface; | 
						|
using Kingo.PluginServiceInterface.Model; | 
						|
using KUI.Windows; | 
						|
using System; | 
						|
using System.Collections.Generic; | 
						|
using System.Collections.ObjectModel; | 
						|
using System.ComponentModel; | 
						|
using System.Data; | 
						|
using System.Diagnostics; | 
						|
using System.IO; | 
						|
using System.Linq; | 
						|
using System.Threading; | 
						|
using System.Windows; | 
						|
using System.Windows.Controls; | 
						|
using System.Windows.Input; | 
						|
using System.Windows.Media; | 
						|
namespace Kingo.Plugin.DataDictionary.Views | 
						|
{ | 
						|
    /// <summary> | 
						|
    /// FrmDicManage.xaml 的交互逻辑 | 
						|
    /// </summary> | 
						|
    public partial class FrmDicManage : BaseWindow | 
						|
    { | 
						|
        #region 全局变量 | 
						|
        private string connStr = string.Empty; | 
						|
        string Cold = null; | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 导入权属单位集合 | 
						|
        /// </summary> | 
						|
        private List<QSDWinformation> ListQsdwEntity = null; | 
						|
        /// <summary> | 
						|
        /// 权属单位集合-原始数据 | 
						|
        /// </summary> | 
						|
        private List<QSDWinformation> ExcelLists = null; | 
						|
 | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 处理掉的权属集合 | 
						|
        /// </summary> | 
						|
        private List<QSDWinformation> RemoveQsdwEntity = null; | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 当前工程数据库连接 | 
						|
        /// </summary> | 
						|
        private string dbPath = string.Empty; | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 省级代码 | 
						|
        /// </summary> | 
						|
        KeyValuePair<string, string> ShengInfo { get; set; } | 
						|
 | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 市级代码 | 
						|
        /// </summary> | 
						|
        KeyValuePair<string, string> ShiInfo { get; set; } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 县级代码 | 
						|
        /// </summary> | 
						|
        KeyValuePair<string, string> XianInfo { get; set; } | 
						|
        /// <summary> | 
						|
        /// 省级代码 | 
						|
        /// </summary> | 
						|
        List<QSDWinformation> ShengInfo2 { get; set; } | 
						|
 | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 市级代码 | 
						|
        /// </summary> | 
						|
        List<QSDWinformation> ShiInfo2 { get; set; } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 县级代码 | 
						|
        /// </summary> | 
						|
        List<QSDWinformation> XianInfo2 { get; set; } | 
						|
 | 
						|
        public static FrmDicManage frmDicManage = new FrmDicManage(); | 
						|
 | 
						|
        private string XJFid = null; | 
						|
        private string FJFid = null; | 
						|
        #endregion | 
						|
        public FrmDicManage() | 
						|
        { | 
						|
            InitializeComponent(); | 
						|
            this.CustomToolTip = "权属代码可右键导入EXCEL(软件提供EXCEL模板)"; | 
						|
            ListQsdwEntity = new List<QSDWinformation>(); | 
						|
            RemoveQsdwEntity = new List<QSDWinformation>(); | 
						|
            ExcelLists = new List<QSDWinformation>(); | 
						|
            dbPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetDicDataPath(); | 
						|
            Init(); | 
						|
            frmDicManage = this; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 初始化 | 
						|
        /// </summary> | 
						|
        private void Init() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                LoadTree(); | 
						|
                btnDetailAdd.IsEnabled = false; | 
						|
                btnDetailEdit.IsEnabled = false; | 
						|
                btnDetailDel.IsEnabled = false; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug("字典界面初始化失败:" + ex.Message); | 
						|
                MessageHelper.ShowError("字典界面初始化失败:" + ex.Message); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 加载数据 | 
						|
        /// </summary> | 
						|
        /// <param name="treeNodss"></param> | 
						|
        /// <param name="IsParent"></param> | 
						|
        public void LoadTree() | 
						|
        { | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            try | 
						|
            { | 
						|
                rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                if (rdbHelper == null) | 
						|
                { | 
						|
                    throw new Exception("数据库连接打开失败:" + dbPath); | 
						|
                } | 
						|
                DataTable dicType = rdbHelper.ExecuteDatatable("Sys_DicType", " SELECT * FROM Sys_DicType ORDER BY paixu ", true); | 
						|
                ObservableCollection<TreeNode> itemList = new ObservableCollection<TreeNode>(); | 
						|
                DataTable dt = rdbHelper.ExecuteDatatable("Sys_DicManage", "SELECT * FROM Sys_DicManage ORDER BY paixu", true); | 
						|
                foreach (DataRow item in dicType.Rows) | 
						|
                { | 
						|
                    TreeNode node = new TreeNode() | 
						|
                    { | 
						|
                        Name = item["NAME"].ToString(), | 
						|
                        Paixu = Convert.ToInt32(item["paixu"]), | 
						|
                        IsExpanded = true, | 
						|
                        Icon = "pack://application:,,,/Kingo.Plugin.DataDictionary;component/Resources/zrz.png", | 
						|
                        IsParent = true, | 
						|
                        Data = item | 
						|
                    }; | 
						|
                    node.Nodes = new ObservableCollection<TreeNode>(); | 
						|
                    foreach (DataRow drvitem in dt.Rows) | 
						|
                    { | 
						|
                        TreeNode childNodeItem = new TreeNode();//树节点赋值属性 | 
						|
                        childNodeItem.Name = drvitem["NAME"].ToString(); | 
						|
                        childNodeItem.Paixu = Convert.ToInt32(drvitem["PAIXU"]); | 
						|
                        childNodeItem.IsExpanded = true; | 
						|
                        childNodeItem.Data = drvitem; | 
						|
                        childNodeItem.Icon = "pack://application:,,,/Kingo.Plugin.DataDictionary;component/Resources/zrz.png"; | 
						|
 | 
						|
                        if (childNodeItem.Name == "权属代码") | 
						|
                        { | 
						|
                            QSXZchildNodeItem = childNodeItem; | 
						|
                            childNodeItem.cMenu = new ContextMenu(); | 
						|
                            MenuItem tmpitem = new MenuItem(); | 
						|
                            tmpitem.Header = "导入Excel"; | 
						|
                            tmpitem.Click += (s, e) => | 
						|
                            { | 
						|
                                var excelfileurl = string.Empty; | 
						|
                                //弹出文件选择对话框 | 
						|
                                var openFileDialog = new Microsoft.Win32.OpenFileDialog() | 
						|
                                { | 
						|
                                    Filter = "Excel Files(*.xlsx)|*.xlsx" | 
						|
                                }; | 
						|
                                var result = openFileDialog.ShowDialog(); | 
						|
                                if (result == true) | 
						|
                                { | 
						|
                                    ImportExcel(openFileDialog.FileName); | 
						|
                                } | 
						|
                            }; | 
						|
                            childNodeItem.cMenu.Items.Add(tmpitem); | 
						|
                            tmpitem = new MenuItem(); | 
						|
                            tmpitem.Header = "导出样式表"; | 
						|
                            tmpitem.Click += (s, e) => | 
						|
                            { | 
						|
                                var excelfileurl = ""; | 
						|
                                //弹出文件选择对话框 | 
						|
                                var saveFileDialog = new Microsoft.Win32.SaveFileDialog() | 
						|
                                { | 
						|
                                    Filter = "Excel Files(*.xlsx)|*.xlsx" | 
						|
                                }; | 
						|
                                var result = saveFileDialog.ShowDialog(); | 
						|
                                if (result.Value) | 
						|
                                { | 
						|
                                    excelfileurl = saveFileDialog.FileName; | 
						|
                                    var sourcesfile = AppDomain.CurrentDomain.BaseDirectory + @"工作空间\模板\字典模板\权属单位代码样式表.xlsx"; | 
						|
                                    if (System.IO.File.Exists(sourcesfile)) | 
						|
                                    { | 
						|
                                        try | 
						|
                                        { | 
						|
                                            System.IO.File.Copy(sourcesfile, excelfileurl, true); | 
						|
                                            if (MessageHelper.ShowYesNoAndTips("样式表导出成功,是否打开?") == System.Windows.Forms.DialogResult.Yes) | 
						|
                                            { | 
						|
                                                Process.Start(excelfileurl); | 
						|
                                            } | 
						|
                                        } | 
						|
                                        catch (Exception ex) | 
						|
                                        { | 
						|
                                            MessageHelper.ShowError("导出样式表失败,错误信息:" + ex.Message); | 
						|
                                        } | 
						|
                                    } | 
						|
                                    else | 
						|
                                    { | 
						|
                                        MessageHelper.ShowError("样式表文件不存在,导出失败!"); | 
						|
                                    } | 
						|
                                } | 
						|
                            }; | 
						|
                            childNodeItem.cMenu.Items.Add(tmpitem); | 
						|
                        } | 
						|
                        node.Nodes.Add(childNodeItem); | 
						|
                    } | 
						|
                    itemList.Add(node); | 
						|
                } | 
						|
                this.tvTypes.ItemsSource = null; | 
						|
                this.tvTypes.ItemsSource = itemList; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("数据加载异常!" + ex.Message); | 
						|
                LogAPI.Debug("LoadTree异常:" + ex.Message); | 
						|
                LogAPI.Debug("LoadTree异常:" + ex.StackTrace); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 返回指示文件是否已被其它程序使用的布尔值 | 
						|
        /// </summary> | 
						|
        /// <param name="fileFullName">文件的完全限定名,例如:“C:\MyFile.txt”。</param> | 
						|
        /// <returns>如果文件已被其它程序使用,则为 true;否则为 false。</returns> | 
						|
        public Boolean FileIsUsed(String fileFullName) | 
						|
        { | 
						|
            Boolean result = false; | 
						|
            //判断文件是否存在,如果不存在,直接返回 false | 
						|
            if (!System.IO.File.Exists(fileFullName)) | 
						|
            { | 
						|
                result = false; | 
						|
            } | 
						|
            else | 
						|
            { | 
						|
                //如果文件存在,则继续判断文件是否已被其它程序使用 | 
						|
                //逻辑:尝试执行打开文件的操作,如果文件已经被其它程序使用,则打开失败,抛出异常,根据此类异常可以判断文件是否已被其它程序使用。 | 
						|
                System.IO.FileStream fileStream = null; | 
						|
                try | 
						|
                { | 
						|
                    fileStream = System.IO.File.Open(fileFullName, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.None); | 
						|
                    result = false; | 
						|
                } | 
						|
                catch (System.IO.IOException) | 
						|
                { | 
						|
                    result = true; | 
						|
                } | 
						|
                catch (System.Exception) | 
						|
                { | 
						|
                    result = true; | 
						|
                } | 
						|
                finally | 
						|
                { | 
						|
                    if (fileStream != null) | 
						|
                    { | 
						|
                        fileStream.Close(); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            return result; | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 处理字典数据(区分县级与村级权属代码) | 
						|
        /// </summary> | 
						|
        private void Run() | 
						|
        { | 
						|
            ListQsdwEntity.ForEach(item => | 
						|
            { | 
						|
                if (string.IsNullOrWhiteSpace(item.ZLDWDM) == false && string.IsNullOrWhiteSpace(item.Qsdwdm) == false) | 
						|
                { | 
						|
                    if (item.ZLDWDM.Length == 12) | 
						|
                    { | 
						|
                        item.ZLDWDM = item.ZLDWDM.PadRight(19, '0'); | 
						|
                    } | 
						|
                    if (item.ZLDWDM.Length != 19) | 
						|
                    { | 
						|
                        item.HasCheck = false; | 
						|
                    } | 
						|
                    if (item.Qsdwdm.Length == 12) | 
						|
                    { | 
						|
                        item.Qsdwdm = item.Qsdwdm.PadRight(19, '0'); | 
						|
                    } | 
						|
                    if (item.Qsdwdm.Length != 19) | 
						|
                    { | 
						|
                        item.HasCheck = false; | 
						|
                    } | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    item.HasCheck = false; | 
						|
                } | 
						|
            }); | 
						|
 | 
						|
            List<QSDWinformation> remove = ListQsdwEntity.FindAll(f => f.HasCheck == false); | 
						|
            for (int i = 0; i < remove.Count; i++) | 
						|
            { | 
						|
                RemoveQsdwEntity.Add(remove[i]); | 
						|
                ListQsdwEntity.Remove(remove[i]); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private string QsdmID = null; | 
						|
        private List<QSDWinformation> ListQsdm = null; | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 处理字典数据 | 
						|
        /// </summary> | 
						|
        /// <param name="XJCode"></param> | 
						|
        /// <param name="XJName"></param> | 
						|
        public void OrderBy(string XJCode, string XJName) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (ListQsdwEntity != null && ListQsdwEntity.Count > 0) | 
						|
                { | 
						|
                    string XJName_Temp = string.Empty; | 
						|
                    ListQsdm = new List<QSDWinformation>(); | 
						|
                    var GroupEntity = ListQsdwEntity.Where(x => x.ZLDWDM.Length == 19).GroupBy(x => x.ZLDWDM.Substring(0, 9)).Select(x => x.Key).ToList(); | 
						|
                    string skajh = string.Empty; | 
						|
                    if (ListQsdwEntity.FirstOrDefault(x => x.Qsdwmc == "部队") != null) | 
						|
                        skajh = ListQsdwEntity.FirstOrDefault(x => x.Qsdwmc == "部队").Qsdwdm; | 
						|
                    if (ListQsdwEntity.FirstOrDefault(x => x.Qsdwdm == XJCode.PadRight(19, '0')) != null) | 
						|
                        XJName_Temp = ListQsdwEntity.FirstOrDefault(x => x.Qsdwdm == XJCode.PadRight(19, '0')).Qsdwmc; | 
						|
                    foreach (var item in GroupEntity)//截取乡镇权属代码 | 
						|
                    { | 
						|
                        QSDWinformation Qsdm = new QSDWinformation(); | 
						|
                        Qsdm.ZLDWDM = item; | 
						|
                        Qsdm.Qsdwdm = item; | 
						|
                        if (item == XJCode.PadRight(9, '0') && XJName_Temp != XJName)//特殊状况(非飞入地,且与当前县级权属代码一致) | 
						|
                        { | 
						|
                            Qsdm.Qsdwmc = XJName_Temp; | 
						|
                            Qsdm.Zldwmc = XJName_Temp; | 
						|
                            Qsdm.ListQsdwInfor = null; | 
						|
                            ListQsdm.Add(Qsdm); | 
						|
                            continue; | 
						|
                        } | 
						|
                        string sXian_Temp1 = ""; | 
						|
                        if (ExcelLists != null && ExcelLists.Count > 0) | 
						|
                        { | 
						|
                            for (int i = 0; i < ExcelLists.Count(); i++) | 
						|
                            { | 
						|
                                if (ExcelLists[i].ZLDWDM == item.ToString()) | 
						|
                                { | 
						|
                                    sXian_Temp1 = ExcelLists[i].Qsdwmc; | 
						|
                                    break; | 
						|
                                } | 
						|
                                else | 
						|
                                { | 
						|
                                    continue; | 
						|
                                } | 
						|
                            } | 
						|
                            Qsdm.Qsdwmc = string.IsNullOrWhiteSpace(sXian_Temp1) == true ? ExcelLists.FirstOrDefault(p => p.ZLDWDM.PadRight(19, '0').Substring(0, 9) == item.ToString()).Qsdwmc : sXian_Temp1; | 
						|
                        } | 
						|
 | 
						|
                        string sXian_Temp2 = ""; | 
						|
                        if (ExcelLists != null && ExcelLists.Count > 0) | 
						|
                        { | 
						|
                            for (int i = 0; i < ExcelLists.Count(); i++) | 
						|
                            { | 
						|
                                if (ExcelLists[i].ZLDWDM == item.ToString()) | 
						|
                                { | 
						|
                                    sXian_Temp2 = ExcelLists[i].Zldwmc; | 
						|
                                    break; | 
						|
                                } | 
						|
                                else | 
						|
                                { | 
						|
                                    continue; | 
						|
                                } | 
						|
                            } | 
						|
 | 
						|
                            Qsdm.Zldwmc = string.IsNullOrWhiteSpace(sXian_Temp2) == true ? ExcelLists.FirstOrDefault(p => p.ZLDWDM.PadRight(19, '0').Substring(0, 9) == item.ToString()).Zldwmc : sXian_Temp2; | 
						|
                        } | 
						|
 | 
						|
                        List<QSDWinformation> ListCjQsdm = new List<QSDWinformation>(); | 
						|
                        var CJGroupEntity = ListQsdwEntity.Where(x => x.HasCheck).GroupBy(x => x.ZLDWDM.Substring(0, 12)).OrderBy(x => x.Key).Select(x => x.Key).Distinct().ToList(); | 
						|
                        var tmpcjglist = CJGroupEntity.Where(x => x.Substring(0, 9) == item).ToList(); | 
						|
                        foreach (var CJitem in tmpcjglist)//截取村级权属代码 | 
						|
                        { | 
						|
                            QSDWinformation CjQsdm = new QSDWinformation(); | 
						|
                            CjQsdm.Qsdwdm = ExcelLists.FirstOrDefault(p => | 
						|
                            { | 
						|
                                bool result = false; | 
						|
                                if (p.ZLDWDM.Length > 12) | 
						|
                                { | 
						|
                                    result = p.ZLDWDM.Substring(0, 12) == CJitem.ToString(); | 
						|
                                } | 
						|
                                return result; | 
						|
                            }).Qsdwdm; | 
						|
                            CjQsdm.ZLDWDM = ExcelLists.FirstOrDefault(p => | 
						|
                            { | 
						|
                                bool result = false; | 
						|
                                if (p.ZLDWDM.Length > 12) | 
						|
                                { | 
						|
                                    result = p.ZLDWDM.Substring(0, 12) == CJitem.ToString(); | 
						|
                                } | 
						|
                                return result; | 
						|
                            }).ZLDWDM; | 
						|
                            CjQsdm.Qsdwmc = ExcelLists.FirstOrDefault(p => | 
						|
                            { | 
						|
                                bool result = false; | 
						|
                                if (p.ZLDWDM.Length > 12) | 
						|
                                { | 
						|
                                    result = p.ZLDWDM.Substring(0, 12) == CJitem.ToString(); | 
						|
                                } | 
						|
                                return result; | 
						|
                            }).Qsdwmc; | 
						|
                            CjQsdm.Zldwmc = ExcelLists.FirstOrDefault(p => | 
						|
                            { | 
						|
                                bool result = false; | 
						|
                                if (p.ZLDWDM.Length > 12) | 
						|
                                { | 
						|
                                    result = p.ZLDWDM.Substring(0, 12) == CJitem.ToString(); | 
						|
                                } | 
						|
                                return result; | 
						|
                            }).Zldwmc; | 
						|
                            #region | 
						|
                            var cjlist = ListQsdwEntity.Where(x => x.ZLDWDM.StartsWith(CJitem)).ToList(); | 
						|
                            var keylist = cjlist.Select(x => x.ZLDWDM).Distinct().ToList(); | 
						|
                            foreach (var citem in keylist) | 
						|
                            { | 
						|
                                List<QSDWinformation> ListCjDMQsdm = new List<QSDWinformation>(); | 
						|
                                var CJDMGroupEntity = ListQsdwEntity.Where(x => x.HasCheck).GroupBy(x => x.Qsdwdm).Select(x => x.Key).Distinct().ToList(); | 
						|
                                var tmpglist = CJDMGroupEntity.Where(x => x.Substring(0, 12) == CJitem).ToList(); | 
						|
                                foreach (var CJDMitem in tmpglist)//获取村级代码 | 
						|
                                { | 
						|
                                    var cjkeylist = ListQsdwEntity.Where(x => x.HasCheck && x.Qsdwdm == CJDMitem).Distinct().ToList(); | 
						|
                                    foreach (var itemsD in cjkeylist)//获取村级小组权属代码名称 | 
						|
                                    { | 
						|
                                        var cu = ListCjDMQsdm.Count(x => x.Qsdwdm == CJDMitem && x.Qsdwmc == itemsD.Qsdwmc); | 
						|
                                        if (cu == 0) | 
						|
                                        { | 
						|
                                            QSDWinformation CjDMQsdm = new QSDWinformation(); | 
						|
                                            CjDMQsdm.Qsdwdm = CJDMitem; | 
						|
                                            CjDMQsdm.Qsdwmc = itemsD.Qsdwmc; | 
						|
                                            ListCjDMQsdm.Add(CjDMQsdm); | 
						|
                                        } | 
						|
                                    } | 
						|
                                } | 
						|
                                CjQsdm.ListQsdwInfor = ListCjDMQsdm; | 
						|
                            } | 
						|
                            ListCjQsdm.Add(CjQsdm); | 
						|
                            #endregion | 
						|
                        } | 
						|
                        Qsdm.ListQsdwInfor = ListCjQsdm; | 
						|
                        ListQsdm.Add(Qsdm); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex.Message); | 
						|
                throw ex; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 检查数据库是否已经存在权属单位代码字典 | 
						|
        /// </summary> | 
						|
        private void CheckExist(TreeNode selectnode) | 
						|
        { | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            DataRow selectitemrow = selectnode.Data as DataRow; | 
						|
            try | 
						|
            { | 
						|
                rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                if (rdbHelper == null) | 
						|
                { | 
						|
                    throw new Exception("打开数据库连接失败!"); | 
						|
                } | 
						|
                rdbHelper.BeginTransaction(); | 
						|
                DataTable dtDict = rdbHelper.ExecuteDatatable("Sys_DicType", "select * from Sys_DicManage where NAME='权属代码'", true); | 
						|
 | 
						|
                //数据库已存在 | 
						|
                if (dtDict != null && dtDict.Rows.Count > 0) | 
						|
                { | 
						|
                    QsdmID = dtDict.Rows[0]["ID"].ToString(); | 
						|
                    DataTable dtDetail = rdbHelper.ExecuteDatatable("Sys_DicDetail", "select * from Sys_DicDetail where OWNERDIC='" + QsdmID + "'", true); | 
						|
                    if (dtDetail != null && dtDetail.Rows.Count > 0) | 
						|
                    { | 
						|
                        this.ShowLoading("正在导入字典......", 0, 0); | 
						|
                        //先删除数据库已存在的字典 | 
						|
                        int insertCount = rdbHelper.ExecuteSQL("DELETE FROM Sys_DicManage WHERE NAME = '权属代码' AND TYPE=1"); | 
						|
 | 
						|
                        if (insertCount < 0) | 
						|
                        { | 
						|
                            throw new Exception("删除已存在字典失败!"); | 
						|
                        } | 
						|
                        insertCount = rdbHelper.ExecuteSQL("DELETE FROM Sys_DicDetail WHERE OWNERDIC = '" + QsdmID + "'"); | 
						|
                        if (insertCount < 0) | 
						|
                        { | 
						|
                            throw new Exception("删除已存在字典失败!"); | 
						|
                        } | 
						|
                        //插入Sys_DicManage表 | 
						|
                        insertCount = rdbHelper.ExecuteSQL("INSERT INTO Sys_DicManage (NAME,ALIASNAME,TYPE,REMARK,PAIXU)" + "VALUES ('权属代码','QSDM',1,'',0)"); | 
						|
                        if (insertCount < 0) | 
						|
                        { | 
						|
                            throw new Exception("导入字典失败!"); | 
						|
                        } | 
						|
                    } | 
						|
                } | 
						|
                else//数据库不存在权属单位代码字典 | 
						|
                { | 
						|
                    this.ShowLoading("正在导入字典......", 0, 0); | 
						|
                    //插入Sys_DicManage表 | 
						|
                    int insertCount = rdbHelper.ExecuteSQL("INSERT INTO Sys_DicManage (NAME,ALIASNAME,TYPE,REMARK,PAIXU)" + "VALUES ('权属代码','QSDM',1,'',0)"); | 
						|
                    if (insertCount < 0) | 
						|
                    { | 
						|
                        throw new Exception("导入字典失败!"); | 
						|
                    } | 
						|
                } | 
						|
                InserDataDic(rdbHelper); | 
						|
                //修改原因:不需要将字典保存到工程文件中  修改人:高山  修改时间:2019.09.21 | 
						|
                //SaveProjectDic(); | 
						|
                if (FJFid != null) | 
						|
                { | 
						|
                    selectitemrow["id"] = FJFid; | 
						|
                } | 
						|
                rdbHelper.Commit(); | 
						|
                //从新加载树 | 
						|
                LoadChildTree(selectnode); | 
						|
                this.CloseLoading(); | 
						|
                MessageHelper.ShowTips("导入字典成功!"); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                rdbHelper.Rollback(); | 
						|
                this.CloseLoading(); | 
						|
                MessageHelper.ShowError(ex.Message); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                this.CloseLoading(); | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        public bool InserDataLsitSon(IRDBHelper rdbHelper, string pParendXZQDM = "") | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (ListQsdm != null && ListQsdm.Count > 0) | 
						|
                { | 
						|
                    foreach (var item in ListQsdm) | 
						|
                    { | 
						|
                        if (!string.IsNullOrWhiteSpace(pParendXZQDM) && !item.Qsdwdm.StartsWith(pParendXZQDM)) | 
						|
                            continue; | 
						|
                        string strSql = string.Format("insert into Sys_DicDetail(PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)  VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", XJFid, item.Zldwmc, item.ZLDWDM, FJFid, "", 0); | 
						|
                        if (rdbHelper.ExecuteSQL(strSql) > 0) | 
						|
                        { | 
						|
                            DataTable dts = rdbHelper.ExecuteDatatable("XjTable", string.Format("select id from Sys_DicDetail where  PID='{0}' and NAME='{1}' and CODE='{2}' and OWNERDIC='{3}'", XJFid, item.Zldwmc, item.ZLDWDM, FJFid), true); | 
						|
                            if (item.ListQsdwInfor == null) continue;//特殊情况 | 
						|
                            foreach (var CJitem in item.ListQsdwInfor) | 
						|
                            { | 
						|
                                if (dts == null || dts.Rows.Count <= 0) | 
						|
                                { | 
						|
                                    continue; | 
						|
                                } | 
						|
                                string strSqlCJ = string.Format("insert into Sys_DicDetail(PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)  VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", dts.Rows[0]["ID"].ToString(), CJitem.Zldwmc, CJitem.ZLDWDM, FJFid, "", 0); | 
						|
                                if (rdbHelper.ExecuteSQL(strSqlCJ) <= 0) | 
						|
                                { | 
						|
                                    continue; | 
						|
                                } | 
						|
                                DataTable dtCJDM = rdbHelper.ExecuteDatatable("CJDMTables", string.Format("select id from Sys_DicDetail where  PID='{0}' and NAME='{1}' and CODE='{2}' and OWNERDIC='{3}'", dts.Rows[0]["ID"].ToString(), CJitem.Zldwmc, CJitem.ZLDWDM, FJFid), true); | 
						|
                                if (CJitem.ListQsdwInfor == null || CJitem.ListQsdwInfor.Count == 0) | 
						|
                                { | 
						|
                                    continue; | 
						|
                                } | 
						|
                                if (CJitem.ListQsdwInfor == null) continue;//特殊情况 | 
						|
                                foreach (var CJDMitem in CJitem.ListQsdwInfor) | 
						|
                                { | 
						|
                                    string CJDMstrSql = string.Format("insert into Sys_DicDetail(PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)  VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", dtCJDM.Rows[0]["ID"].ToString(), CJDMitem.Qsdwmc, CJDMitem.Qsdwdm, FJFid, "", 0); | 
						|
                                    if (rdbHelper.ExecuteSQL(CJDMstrSql) < 1) | 
						|
                                    { | 
						|
                                        return false; | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                    return true; | 
						|
                } | 
						|
                return false; ; | 
						|
            } | 
						|
            catch (Exception e) | 
						|
            { | 
						|
                // rdbHelper.Rollback(); | 
						|
                return false; | 
						|
                throw e; | 
						|
            } | 
						|
            finally | 
						|
            { } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 插入字典数据 | 
						|
        /// </summary> | 
						|
        /// <param name="rdbHelper">数据库连接</param> | 
						|
        private void InserDataDic(IRDBHelper rdbHelper) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                DataTable QuerySon = rdbHelper.ExecuteDatatable("QuerySon", "SELECT ID FROM Sys_DicManage WHERE NAME='权属代码'", false); | 
						|
                string strSql = string.Empty; | 
						|
                if (QuerySon == null || QuerySon.Rows.Count <= 0) | 
						|
                    return; | 
						|
                foreach (var item in ShengInfo2) | 
						|
                { | 
						|
                    if (!string.IsNullOrWhiteSpace(item.Qsdwdm)) | 
						|
                    { | 
						|
                        strSql = string.Format("insert into Sys_DicDetail (PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)" + "VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", "", item.Qsdwmc.Trim(), item.Qsdwdm, QuerySon.Rows[0]["ID"].ToString(), "", 0); | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        strSql = string.Format("insert into Sys_DicDetail (PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)" + "VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", "", item.Qsdwmc.Trim(), item.Qsdwmc, QuerySon.Rows[0]["ID"].ToString(), "", 0); | 
						|
                    } | 
						|
                    int insertCount = rdbHelper.ExecuteSQL(strSql); | 
						|
                    if (insertCount <= 0) return; | 
						|
                    DataTable QueryQSSon = null; | 
						|
                    if (!string.IsNullOrWhiteSpace(item.Qsdwdm)) | 
						|
                    { | 
						|
                        QueryQSSon = rdbHelper.ExecuteDatatable("QueryQS", string.Format("SELECT ID FROM Sys_DicDetail WHERE NAME='{0}' AND PID='' AND CODE='{1}' AND OWNERDIC='{2}'", item.Qsdwmc.Trim(), item.Qsdwdm, QuerySon.Rows[0]["ID"].ToString()), true); | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        QueryQSSon = rdbHelper.ExecuteDatatable("QueryQS", string.Format("SELECT ID FROM Sys_DicDetail WHERE NAME='{0}' AND PID='' AND CODE='{1}' AND OWNERDIC='{2}'", item.Qsdwmc.Trim(), item.Qsdwmc.Trim(), QuerySon.Rows[0]["ID"].ToString()), true); | 
						|
                    } | 
						|
                    if (QueryQSSon == null || QueryQSSon.Rows.Count <= 0) return; | 
						|
                    foreach (var shi in ShiInfo2) | 
						|
                    { | 
						|
                        if (!string.IsNullOrWhiteSpace(shi.Qsdwdm)) | 
						|
                        { | 
						|
                            strSql = string.Format("insert into Sys_DicDetail (PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)" + "VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", QueryQSSon.Rows[0]["ID"].ToString(), shi.Qsdwmc.Trim(), shi.Qsdwdm, QuerySon.Rows[0]["ID"].ToString(), "", 0); | 
						|
                        } | 
						|
                        else | 
						|
                        { | 
						|
                            strSql = string.Format("insert into Sys_DicDetail (PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)" + "VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", QueryQSSon.Rows[0]["ID"].ToString(), shi.Qsdwmc.Trim(), shi.Qsdwmc.Trim(), QuerySon.Rows[0]["ID"].ToString(), "", 0); | 
						|
                        } | 
						|
                        insertCount = rdbHelper.ExecuteSQL(strSql); | 
						|
                        if (insertCount <= 0) return; | 
						|
                        DataTable QueryQSSons = null; | 
						|
                        if (!string.IsNullOrWhiteSpace(shi.Qsdwdm)) | 
						|
                        { | 
						|
                            QueryQSSons = rdbHelper.ExecuteDatatable("QueryQSs", string.Format("SELECT ID FROM Sys_DicDetail WHERE NAME='{0}' AND PID='{1}' AND CODE='{2}' AND OWNERDIC='{3}'", shi.Qsdwmc.Trim(), QueryQSSon.Rows[0]["ID"].ToString(), shi.Qsdwdm, QuerySon.Rows[0]["ID"].ToString()), true); | 
						|
                        } | 
						|
                        else | 
						|
                        { | 
						|
                            QueryQSSons = rdbHelper.ExecuteDatatable("QueryQSs", string.Format("SELECT ID FROM Sys_DicDetail WHERE NAME='{0}' AND PID='{1}' AND CODE='{2}' AND OWNERDIC='{3}'", shi.Qsdwmc.Trim(), QueryQSSon.Rows[0]["ID"].ToString(), shi.Qsdwdm.Trim(), QuerySon.Rows[0]["ID"].ToString()), true); | 
						|
                        } | 
						|
                        if (QueryQSSons == null || QueryQSSons.Rows.Count <= 0) return; | 
						|
                        foreach (var xian in XianInfo2) | 
						|
                        { | 
						|
                            if (!string.IsNullOrWhiteSpace(xian.Qsdwdm)) | 
						|
                            { | 
						|
                                strSql = string.Format("insert into Sys_DicDetail (PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)" + "VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", QueryQSSons.Rows[0]["ID"].ToString(), xian.Qsdwmc.Trim(), xian.Qsdwdm, QuerySon.Rows[0]["ID"].ToString(), "", 0); | 
						|
                            } | 
						|
                            else | 
						|
                            { | 
						|
                                strSql = string.Format("insert into Sys_DicDetail (PID,NAME,CODE,OWNERDIC,REMARK,PAIXU)" + "VALUES ('{0}','{1}','{2}','{3}','{4}',{5})", QueryQSSons.Rows[0]["ID"].ToString(), xian.Qsdwmc.Trim(), xian.Qsdwmc.Trim(), QuerySon.Rows[0]["ID"].ToString(), "", 0); | 
						|
                            } | 
						|
                            insertCount = rdbHelper.ExecuteSQL(strSql); | 
						|
                            if (insertCount <= 0) return; | 
						|
                            DataTable QueryQSSonsd = null; | 
						|
                            if (xian.Qsdwdm != "") | 
						|
                            { | 
						|
                                QueryQSSonsd = rdbHelper.ExecuteDatatable("QueryQSsd", string.Format("SELECT ID FROM Sys_DicDetail WHERE NAME='{0}' AND PID='{1}' AND CODE='{2}' AND OWNERDIC='{3}'", xian.Qsdwmc.Trim(), QueryQSSons.Rows[0]["ID"].ToString(), xian.Qsdwdm, QuerySon.Rows[0]["ID"].ToString()), true); | 
						|
                            } | 
						|
                            else | 
						|
                            { | 
						|
                                QueryQSSonsd = rdbHelper.ExecuteDatatable("QueryQSsd", string.Format("SELECT ID FROM Sys_DicDetail WHERE NAME='{0}' AND PID='{1}' AND CODE='{2}' AND OWNERDIC='{3}'", xian.Qsdwmc.Trim(), QueryQSSons.Rows[0]["ID"].ToString(), xian.Qsdwmc.Trim(), QuerySon.Rows[0]["ID"].ToString()), true); | 
						|
                            } | 
						|
                            if (QueryQSSonsd != null && QueryQSSonsd.Rows.Count > 0) | 
						|
                            { | 
						|
                                XJFid = QueryQSSonsd.Rows[0]["ID"].ToString(); | 
						|
                                FJFid = QuerySon.Rows[0]["ID"].ToString(); | 
						|
                                InserDataLsitSon(rdbHelper, xian.Qsdwdm); | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                throw ex; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 左侧字典树选择改变事件 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void tvProperties_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) | 
						|
        { | 
						|
            TreeNode item = this.tvTypes.SelectedItem as TreeNode; | 
						|
            LoadChildTree(item); | 
						|
        } | 
						|
 | 
						|
        private void LoadChildTree(TreeNode item) | 
						|
        { | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            try | 
						|
            { | 
						|
                this.btnAdd.IsEnabled = true; | 
						|
                txtDicName.Text = string.Empty; | 
						|
                txtCode.Text = string.Empty; | 
						|
                txtAliasName.Text = string.Empty; | 
						|
                txtParentName.Text = string.Empty; | 
						|
                txtRemark.Text = string.Empty; | 
						|
                tvDicDetail.ItemsSource = null; | 
						|
 | 
						|
 | 
						|
                if (item == null || item.Data == null || (item.Data as DataRow) == null) | 
						|
                    return; | 
						|
                DataRow drv = item.Data as DataRow; | 
						|
                txtDicName.Text = drv["Name"] == null ? "" : drv["Name"].ToString(); | 
						|
                txtRemark.Text = drv["REMARK"] == null ? "" : drv["REMARK"].ToString(); | 
						|
                txtAliasName.Text = drv["ALIASNAME"] == null ? "" : drv["ALIASNAME"].ToString(); | 
						|
                if (item.IsParent == false) | 
						|
                { | 
						|
                    this.btnAdd.IsEnabled = false; | 
						|
                    txtDicID.Text = drv["ID"] == null ? "" : drv["ID"].ToString(); | 
						|
 | 
						|
                    rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                    if (rdbHelper == null) | 
						|
                    { | 
						|
                        throw new Exception("数据库连接打开失败:" + dbPath); | 
						|
                    } | 
						|
                    DataTable dtDict = rdbHelper.ExecuteDatatable("Sys_DicType", "SELECT * FROM Sys_DicType WHERE ID = " + drv["TYPE"].ToString(), true); | 
						|
                    if (dtDict != null && dtDict.Rows.Count > 0) | 
						|
                    { | 
						|
                        txtParentName.Text = dtDict.Rows[0]["NAME"].ToString(); | 
						|
                    } | 
						|
                    //绑定树 | 
						|
                    LoadChildTree(drv); | 
						|
                    btnDetailAdd.IsEnabled = true; | 
						|
                    btnDetailEdit.IsEnabled = true; | 
						|
                    btnDetailDel.IsEnabled = true; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    btnDetailAdd.IsEnabled = false; ; | 
						|
                    btnDetailEdit.IsEnabled = false; | 
						|
                    btnDetailDel.IsEnabled = false; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("显示字典详情异常:" + ex.Message); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 加载左侧选中字典的子节点 | 
						|
        /// </summary> | 
						|
        /// <param name="drv"></param> | 
						|
        /// <param name="IsDic"></param> | 
						|
        private void LoadChildTree(DataRow drv) | 
						|
        { | 
						|
            if (drv == null) | 
						|
                return; | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            try | 
						|
            { | 
						|
                rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                if (rdbHelper == null) | 
						|
                { | 
						|
                    throw new Exception("数据库连接打开失败:" + dbPath); | 
						|
                } | 
						|
                DataTable dtDic = rdbHelper.ExecuteDatatable("Sys_DicDetail", string.Format("SELECT * FROM Sys_DicDetail WHERE OWNERDIC='{0}' ORDER BY PAIXU", drv["ID"]), true); | 
						|
                ObservableCollection<DicTreeNode> itemList = new ObservableCollection<DicTreeNode>(); | 
						|
                DicTreeNode node = new DicTreeNode() | 
						|
                { | 
						|
                    Name = drv["NAME"] == null ? "" : drv["NAME"].ToString(), | 
						|
                    Paixu = Convert.ToInt32(drv["paixu"]), | 
						|
                    Icon = "pack://application:,,,/Kingo.Plugin.DataDictionary;component/Resources/zrz.png", | 
						|
                    IsExpanded = true, | 
						|
                    IsParent = true, | 
						|
                    Data = drv | 
						|
                }; | 
						|
                node.Nodes = new ObservableCollection<DicTreeNode>(); | 
						|
                DataRow[] dataRow = dtDic.Select("PID IS NULL OR PID=''", "PAIXU,CODE ASC"); | 
						|
                if (dataRow != null || dataRow.Count() > 0) | 
						|
                { | 
						|
                    foreach (DataRow dr in dataRow) | 
						|
                    { | 
						|
                        DicTreeNode subNodeItem = new DicTreeNode() | 
						|
                        { | 
						|
                            Name = "[" + dr["CODE"].ToString() + "]" + dr["NAME"].ToString(), | 
						|
                            Paixu = Convert.ToInt32(dr["paixu"]), | 
						|
                            IsExpanded = true, | 
						|
                            Icon = "pack://application:,,,/Kingo.Plugin.DataDictionary;component/Resources/zrz.png", | 
						|
                            Data = dr | 
						|
                        }; | 
						|
                        if (dr["ID"] != null && !string.IsNullOrWhiteSpace(dr["ID"].ToString())) | 
						|
                        { | 
						|
                            GetSubDic(subNodeItem, dr["ID"].ToString(), dtDic); | 
						|
                        } | 
						|
                        node.Nodes.Add(subNodeItem); | 
						|
                    } | 
						|
                } | 
						|
                itemList.Add(node); | 
						|
                this.tvDicDetail.ItemsSource = itemList; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("数据加载异常!" + ex.Message); | 
						|
                LogAPI.Debug(ex); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private void GetSubDic(DicTreeNode treeNode, string id, DataTable dt) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                treeNode.Nodes = new ObservableCollection<DicTreeNode>(); | 
						|
                DataRow[] drs = null; | 
						|
                if (dt.Columns.Contains("CODE")) | 
						|
                { | 
						|
                    drs = dt.Select(" PID= '" + id + "'", "PAIXU,CODE ASC"); | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    drs = dt.Select(" PID= '" + id + "'", "PAIXU ASC"); | 
						|
                } | 
						|
                if (drs == null || drs.Count() <= 0) | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
                foreach (DataRow dr in drs) | 
						|
                { | 
						|
                    DicTreeNode subNodeItem = new DicTreeNode() | 
						|
                    { | 
						|
                        Name = "[" + dr["CODE"].ToString() + "]" + dr["NAME"].ToString(), | 
						|
                        Paixu = Convert.ToInt32(dr["paixu"]), | 
						|
                        IsExpanded = false, | 
						|
                        Icon = "pack://application:,,,/Kingo.Plugin.DataDictionary;component/Resources/zrz.png", | 
						|
                        Data = dr | 
						|
                    }; | 
						|
                    if (dr["ID"] == null || string.IsNullOrWhiteSpace(dr["ID"].ToString())) | 
						|
                    { | 
						|
                        continue; ; | 
						|
                    } | 
						|
                    GetSubDic(subNodeItem, dr["ID"].ToString(), dt); | 
						|
                    treeNode.Nodes.Add(subNodeItem); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                throw ex; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        //关闭 | 
						|
        private void btnClose_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            this.Close(); | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 添加字典(左侧树添加) | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void btnAdd_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                ParentTable = null; | 
						|
                txtNames = null; | 
						|
                txtParent = false; | 
						|
                int IndexInfo = 0; | 
						|
                //白明雅 2018-12-28 bug13997 | 
						|
                DicTreeNode item = GetDicTreeNodeByTreeNode(this.tvTypes.SelectedItem as TreeNode); | 
						|
                //DicTreeNode item = this.tvTypes.SelectedItem as DicTreeNode; | 
						|
                if (item == null) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请选择节点!"); | 
						|
                    return; | 
						|
                } | 
						|
                for (int i = 0; i < this.tvTypes.Items.Count; i++) | 
						|
                { | 
						|
                    if (item.Name.Trim() == (GetDicTreeNodeByTreeNode(this.tvTypes.Items[i] as TreeNode)).Name.Trim()) | 
						|
                    { | 
						|
                        IndexInfo = i + 1; | 
						|
                        break; | 
						|
                    } | 
						|
                } | 
						|
                DataDicEdit main = new DataDicEdit(IndexInfo); | 
						|
                main.actionUpdate = action_Update; | 
						|
                main.Height = 410; | 
						|
                main.Width = 550; | 
						|
                main.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; | 
						|
                //关闭窗体之后刷新tree控件 | 
						|
                bool temp = main.ShowInMainWindow(true).Value; | 
						|
                if (!temp) | 
						|
                { | 
						|
                    //CustomLogAPI.WriteSystemOperationLog("数据新增", this.Title); | 
						|
                    if (txtNames == null) | 
						|
                    { | 
						|
                        return; | 
						|
                    } | 
						|
                    if (item == null || ((item != null) && txtParent)) | 
						|
                    { | 
						|
                        //白明雅 2018-12-28 bug13997 | 
						|
                        //ObservableCollection<DicTreeNode> treeNodes = this.tvTypes.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                        ObservableCollection<DicTreeNode> treeNodes = IEnumerableToDicTreeNode(this.tvTypes.ItemsSource.Cast<TreeNode>()); | 
						|
                        treeNodes.Add(txtNames); | 
						|
                        var paixu = treeNodes.OrderBy(x => x.Paixu).ToList(); | 
						|
                        if (paixu != null) | 
						|
                        { | 
						|
                            treeNodes.Clear(); | 
						|
                            foreach (var itemd in paixu) | 
						|
                            { | 
						|
                                treeNodes.Add(itemd); | 
						|
                            } | 
						|
                            return; | 
						|
                        } | 
						|
                    } | 
						|
                    if (item == null || txtParent)//判断是否是父节点 | 
						|
                    { | 
						|
                        return; | 
						|
                    } | 
						|
                    //当前对主Treeview二级菜单进行操作 白明雅 2018-12-28 | 
						|
                    //ObservableCollection<DicTreeNode> itemsd = this.tvTypes.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                    ObservableCollection<DicTreeNode> itemsd = IEnumerableToDicTreeNode(this.tvTypes.ItemsSource.Cast<TreeNode>()); | 
						|
                    if (ParentTable != null && ParentTable.Rows.Count > 0) | 
						|
                    { | 
						|
                        foreach (var items in itemsd) | 
						|
                        { | 
						|
                            DataRow itemData = items.Data as DataRow; | 
						|
                            if (itemData == null || itemData["ID"].ToString() != ParentTable.Rows[0]["ID"].ToString()) | 
						|
                            { | 
						|
                                continue; | 
						|
                            } | 
						|
                            if (item.Nodes == null) | 
						|
                            { | 
						|
                                ObservableCollection<DicTreeNode> Nodesd = new ObservableCollection<DicTreeNode>(); | 
						|
                                Nodesd.Add(txtNames); | 
						|
                                items.Nodes = Nodesd; | 
						|
                                break; | 
						|
                            } | 
						|
                            else | 
						|
                            { | 
						|
                                items.Nodes.Add(txtNames); | 
						|
                                var paixus = items.Nodes.OrderBy(p => p.Paixu).ToArray(); | 
						|
                                if (paixus != null) | 
						|
                                { | 
						|
                                    items.Nodes.Clear(); | 
						|
                                    foreach (var itemd in paixus) | 
						|
                                    { | 
						|
                                        items.Nodes.Add(itemd); | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                        } | 
						|
                        LoadTree(); | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        //当前对根目录(第一级)菜单进行操作 白明雅 2018-12-28 | 
						|
                        //ObservableCollection<DicTreeNode> treeNodes = this.tvTypes.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                        ObservableCollection<DicTreeNode> treeNodes = IEnumerableToDicTreeNode(this.tvTypes.ItemsSource.Cast<TreeNode>()); | 
						|
                        treeNodes.Add(txtNames); | 
						|
                        treeNodes.OrderBy(x => x.Paixu).ToList(); | 
						|
                        ObservableCollection<DicTreeNode> treeNo = new ObservableCollection<DicTreeNode>(); | 
						|
                        var sortedOC = from items in treeNodes | 
						|
                                       orderby items.Paixu | 
						|
                                       select items; | 
						|
                        foreach (var i in sortedOC) | 
						|
                        { | 
						|
                            treeNo.Add(i); | 
						|
                        } | 
						|
                        this.tvTypes.ItemsSource = treeNo; | 
						|
                    } | 
						|
                    //修改原因:不需要将字典保存到工程文件中  修改人:高山  修改时间:2019.09.21 | 
						|
                    //SaveProjectDic(); | 
						|
 | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("添加节点异常:" + ex.Message); | 
						|
            } | 
						|
 | 
						|
        } | 
						|
 | 
						|
        DicTreeNode txtNames = null; | 
						|
        bool txtParent = false; | 
						|
        //保存父节点信息 | 
						|
        DataTable ParentTable = null; | 
						|
        /// <summary> | 
						|
        /// 增加父级节点更新方法 | 
						|
        /// </summary> | 
						|
        /// <param name="ss"></param> | 
						|
        /// <param name="ssd"></param> | 
						|
        void action_Update(bool ParentName, DicTreeNode treeNodes, string fjdID) | 
						|
        { | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            ParentTable = null; | 
						|
            try | 
						|
            { | 
						|
                if (fjdID == null) | 
						|
                    return; | 
						|
                if (fjdID != "") | 
						|
                { | 
						|
                    rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                    if (rdbHelper == null) | 
						|
                    { | 
						|
                        throw new Exception("数据库连接打开失败:" + dbPath); | 
						|
                    } | 
						|
                    DataTable dtCat = rdbHelper.ExecuteDatatable("Sys_DicType", "select * from Sys_DicType where id=" + fjdID + " order by paixu", true); | 
						|
                    if (dtCat != null && dtCat.Rows.Count > 0) | 
						|
                    { | 
						|
                        ParentTable = dtCat; | 
						|
                    } | 
						|
                } | 
						|
                txtParent = ParentName; | 
						|
                txtNames = treeNodes; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        /// <summary> | 
						|
        /// 由于SelectedItem转换DicTreeNode失败,加此方法,用于手动转换 | 
						|
        /// </summary> | 
						|
        /// <param name="tree">要转换的树节点</param> | 
						|
        /// <returns>转换后的DicTreeNode</returns> | 
						|
        /// 白明雅 2018-12-27 | 
						|
        private DicTreeNode GetDicTreeNodeByTreeNode(TreeNode tree) | 
						|
        { | 
						|
            if (tree == null) | 
						|
            { | 
						|
                return null; | 
						|
            } | 
						|
            IList<TreeNode> treeNodes = tree.Nodes; | 
						|
            ObservableCollection<DicTreeNode> dicTreeNodes = new ObservableCollection<DicTreeNode>(); | 
						|
            if (treeNodes != null) | 
						|
            { | 
						|
                foreach (TreeNode item in treeNodes) | 
						|
                { | 
						|
                    dicTreeNodes.Add(GetDicTreeNodeByTreeNode(item)); | 
						|
                } | 
						|
            } | 
						|
            DicTreeNode node = new DicTreeNode() | 
						|
            { | 
						|
                Icon = tree.Icon, | 
						|
                Data = tree.Data, | 
						|
                Checked = tree.Checked, | 
						|
                cMenu = tree.cMenu, | 
						|
                Name = tree.Name, | 
						|
                Nodes = dicTreeNodes, | 
						|
                IsExpanded = tree.IsExpanded, | 
						|
                IsOpenEdit = tree.IsOpenEdit, | 
						|
                IsParent = tree.IsParent, | 
						|
                Paixu = (int)tree.Paixu | 
						|
            }; | 
						|
 | 
						|
            return node; | 
						|
        } | 
						|
        /// <summary> | 
						|
        /// 根据TreeNode数组转化为DicTreeNode数组 | 
						|
        /// </summary> | 
						|
        /// <param name="tree"></param> | 
						|
        /// <returns></returns> | 
						|
        /// 白明雅 2018-12-27  | 
						|
        private DicTreeNode[] GetDicTreeNodeListByTreeNode(TreeNode[] tree) | 
						|
        { | 
						|
            DicTreeNode[] dicTrees = new DicTreeNode[tree.Length]; | 
						|
            for (int i = 0; i < tree.Length; i++) | 
						|
            { | 
						|
                dicTrees[i] = GetDicTreeNodeByTreeNode(tree[i]); | 
						|
            } | 
						|
            return dicTrees; | 
						|
        } | 
						|
        /// <summary> | 
						|
        /// ItemsSource转化ObservableCollection<DicTreeNode> | 
						|
        /// </summary> | 
						|
        /// <param name="treeNodes">this.tvTypes.ItemsSource.Cast<TreeNode>()</param> | 
						|
        /// <returns>ObservableCollection<DicTreeNode></returns> | 
						|
        /// 白明雅 2018-12-27 | 
						|
        private ObservableCollection<DicTreeNode> IEnumerableToDicTreeNode(IEnumerable<TreeNode> treeNodes) | 
						|
        { | 
						|
            //IEnumerable<TreeNode> treeNodes = this.tvTypes.ItemsSource.Cast<TreeNode>(); | 
						|
            TreeNode treeNode = treeNodes.First<TreeNode>() as TreeNode; | 
						|
            DicTreeNode dicTree = GetDicTreeNodeByTreeNode(treeNode); | 
						|
            ObservableCollection<DicTreeNode> UpdateNode = new ObservableCollection<DicTreeNode>(); | 
						|
            UpdateNode.Add(dicTree); | 
						|
            return UpdateNode; | 
						|
        } | 
						|
        //父节点编辑 | 
						|
        private void btnEdit_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                txtNames = null; | 
						|
                //白明雅 2018-12-27 bug13997 | 
						|
                TreeNode obj = this.tvTypes.SelectedItem as TreeNode; | 
						|
                DicTreeNode item = GetDicTreeNodeByTreeNode(obj); | 
						|
                //---------------------------- | 
						|
                //父窗体中子节点修改 | 
						|
                if (item == null || item.Data == null) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请先选中需要编辑的节点!"); | 
						|
                    return; | 
						|
                } | 
						|
                DataDicEdit main = new DataDicEdit(0, true); | 
						|
                main.Height = 410; | 
						|
                main.Width = 550; | 
						|
                main.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; | 
						|
                main.actionUpdate = action_Update; | 
						|
                main.IsParent = item.IsParent; | 
						|
                DataRow drv = item.Data as DataRow; | 
						|
                main.InitPage(drv); | 
						|
                bool temp = main.ShowInMainWindow(true).Value; | 
						|
                //关闭窗体之后刷新tree控件 | 
						|
                if (!temp) | 
						|
                { | 
						|
                    if (txtNames == null) | 
						|
                    { | 
						|
                        return; | 
						|
                    } | 
						|
                    //白明雅 2018-12-27 bug13997 | 
						|
                    ObservableCollection<DicTreeNode> UpdateNode = IEnumerableToDicTreeNode(this.tvTypes.ItemsSource.Cast<TreeNode>()); | 
						|
                    //------------------------------------ | 
						|
                    //白明雅 2018-12-27 转换失败 换上面方法 | 
						|
                    //ObservableCollection<DicTreeNode> UpdateNode = this.tvTypes.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                    if (item.IsParent) | 
						|
                    { | 
						|
                        int index; | 
						|
                        while ((index = UpdateNode.FindIndex(o => o == item)) >= 0) | 
						|
                        { | 
						|
                            UpdateNode[index].Name = txtNames.Name; | 
						|
                            UpdateNode[index].Data = txtNames.Data; | 
						|
                            UpdateNode[index].Paixu = txtNames.Paixu; | 
						|
                            DataRow drvS = UpdateNode[index].Data as DataRow; | 
						|
                            txtDicName.Text = drvS["Name"].ToString(); | 
						|
                            txtCode.Text = ""; | 
						|
                            txtAliasName.Text = drvS["ALIASNAME"].ToString(); | 
						|
                            txtRemark.Text = drvS["REMARK"].ToString(); | 
						|
                            var paixu = UpdateNode.OrderBy(x => x.Paixu).ToList(); | 
						|
                            if (paixu != null) | 
						|
                            { | 
						|
                                UpdateNode.Clear(); | 
						|
                                foreach (var itemd in paixu) | 
						|
                                { | 
						|
                                    UpdateNode.Add(itemd); | 
						|
                                } | 
						|
                                // this.tvTypes.ItemsSource = treeNodes; | 
						|
                            } | 
						|
                            break; | 
						|
                        } | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        foreach (var items in UpdateNode) | 
						|
                        { | 
						|
                            DataRow drvs = items.Data as DataRow; | 
						|
                            if (drvs["ID"].ToString() == drv["TYPE"].ToString()) | 
						|
                            { | 
						|
                                items.Nodes.Remove(item); | 
						|
                                break; | 
						|
                            } | 
						|
                        } | 
						|
                        foreach (var items in UpdateNode) | 
						|
                        { | 
						|
                            DataRow updateTree = txtNames.Data as DataRow; | 
						|
                            DataRow drvs = items.Data as DataRow; | 
						|
                            if (drvs["ID"].ToString() == updateTree["TYPE"].ToString()) | 
						|
                            { | 
						|
                                if (items.Nodes == null) | 
						|
                                { | 
						|
                                    ObservableCollection<DicTreeNode> NewUpdateNode = new ObservableCollection<DicTreeNode>(); | 
						|
                                    NewUpdateNode.Add(txtNames); | 
						|
                                    items.Nodes = NewUpdateNode; | 
						|
                                } | 
						|
                                else | 
						|
                                { | 
						|
                                    items.Nodes.Add(txtNames); | 
						|
                                } | 
						|
                                var paixu = (items.Nodes).OrderBy(x => x.Paixu).ToList(); | 
						|
                                if (paixu != null) | 
						|
                                { | 
						|
                                    items.Nodes.Clear(); | 
						|
                                    foreach (var itemd in paixu) | 
						|
                                    { | 
						|
                                        items.Nodes.Add(itemd); | 
						|
                                    } | 
						|
                                } | 
						|
                                break; | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                } | 
						|
                //修改原因:不需要将字典保存到工程文件中  修改人:高山  修改时间:2019.09.21 | 
						|
                //SaveProjectDic(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("父节点编辑异常,请重试:" + ex.Message); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        //父节点删除 | 
						|
        private void btnDel_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            try | 
						|
            { | 
						|
                //白明雅 2018-12-17 bug13997 | 
						|
                TreeNode node = this.tvTypes.SelectedItem as TreeNode; | 
						|
                DicTreeNode item = GetDicTreeNodeByTreeNode(node); | 
						|
                //------------------ | 
						|
                //DicTreeNode item = this.tvTypes.SelectedItem as DicTreeNode; | 
						|
                if (item == null) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请您选择要删除的节点!"); | 
						|
                    return; | 
						|
                } | 
						|
                if (MessageHelper.ShowYesNoAndWarning("您确认要删除【" + item.Name + "】节点!") == System.Windows.Forms.DialogResult.No) | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
 | 
						|
                DataRow drv = item.Data as DataRow; | 
						|
                if (drv == null) | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
                string pid = drv["id"].ToString(); | 
						|
                rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                if (rdbHelper == null) | 
						|
                { | 
						|
                    throw new Exception("数据库连接打开失败:" + dbPath); | 
						|
                } | 
						|
                string strSql = string.Empty; | 
						|
                if (item.IsParent) | 
						|
                { | 
						|
                    string sIDS = string.Empty; | 
						|
                    int res = -1; | 
						|
                    DataTable dtDic = rdbHelper.ExecuteDatatable("Sys_DicManage", string.Format("select * from Sys_DicManage where TYPE={0} ", pid), false); | 
						|
                    foreach (DataRow dritem in dtDic.Rows) | 
						|
                    { | 
						|
                        sIDS += string.Format("'{0}',", dritem["ID"]); | 
						|
                    } | 
						|
                    if (!string.IsNullOrEmpty(sIDS)) | 
						|
                    { | 
						|
                        //首先删除子项 | 
						|
                        strSql = "delete from Sys_DicDetail where OWNERDIC in (" + sIDS.TrimEnd(',') + ")"; | 
						|
                        res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text); | 
						|
                        if (res < 0) | 
						|
                        { | 
						|
                            MessageHelper.ShowError("删除子项出错,请联系技术人员!"); | 
						|
                            return; | 
						|
                        } | 
						|
                        //删除子项 | 
						|
                        strSql = string.Format("delete from Sys_DicManage where TYPE={0} ", pid); | 
						|
                        res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text); | 
						|
                        if (res < 0) | 
						|
                        { | 
						|
                            MessageHelper.ShowError("删除子项出错,请联系技术人员!"); | 
						|
                            return; | 
						|
                        } | 
						|
                    } | 
						|
                    //然后删除本身 | 
						|
                    strSql = string.Format("delete from Sys_DicType where ID={0} ", pid); | 
						|
                    res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text); | 
						|
 | 
						|
                    //白明雅 2018-12-27 bug13997 手动转换ObservableCollection<DicTreeNode> | 
						|
                    ObservableCollection<DicTreeNode> UpdateNode = IEnumerableToDicTreeNode(this.tvTypes.ItemsSource.Cast<TreeNode>()); | 
						|
                    if (res > 0) | 
						|
                    { | 
						|
                        this.txtDicName.Text = ""; | 
						|
                        this.txtAliasName.Text = ""; | 
						|
                        this.txtCode.Text = ""; | 
						|
                        this.txtParentName.Text = ""; | 
						|
                        Thread.Sleep(700); | 
						|
                        ObservableCollection<DicTreeNode> items = UpdateNode; | 
						|
                        items.Remove(item); | 
						|
                        // loadTree(); | 
						|
                        this.tvDicDetail.ItemsSource = null; | 
						|
                    } | 
						|
                    //----------------------------------- | 
						|
 | 
						|
 | 
						|
                    #region 白明雅 2018-12-27 原来方法 | 
						|
                    //if (res > 0) | 
						|
                    //{ | 
						|
                    //    this.txtDicName.Text = ""; | 
						|
                    //    this.txtAliasName.Text = ""; | 
						|
                    //    this.txtCode.Text = ""; | 
						|
                    //    this.txtParentName.Text = ""; | 
						|
                    //    Thread.Sleep(700); | 
						|
                    //    ObservableCollection<DicTreeNode> items = this.tvTypes.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                    //    items.Remove(item); | 
						|
                    //    // loadTree(); | 
						|
                    //    this.tvDicDetail.ItemsSource = null; | 
						|
                    //} | 
						|
                    #endregion | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    //首先删除子项 | 
						|
                    strSql = "delete from Sys_DicDetail where OWNERDIC='" + pid + "'"; | 
						|
                    int res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text); | 
						|
                    if (res < 0) | 
						|
                    { | 
						|
                        MessageHelper.ShowError("删除子项出错,请联系技术人员!"); | 
						|
                        return; | 
						|
                    } | 
						|
                    //然后删除本身 | 
						|
                    strSql = "delete from Sys_DicManage where id=" + pid; | 
						|
                    res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text); | 
						|
                    if (res > 0) | 
						|
                    { | 
						|
                        this.txtDicName.Text = ""; | 
						|
                        this.txtAliasName.Text = ""; | 
						|
                        this.txtCode.Text = ""; | 
						|
                        this.txtParentName.Text = ""; | 
						|
                        //白明雅 2018-12-28 bug13997 | 
						|
                        //ObservableCollection<DicTreeNode> items = this.tvTypes.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                        ObservableCollection<DicTreeNode> items = IEnumerableToDicTreeNode(this.tvTypes.ItemsSource.Cast<TreeNode>()); | 
						|
                        DataRow DataView = item.Data as DataRow; | 
						|
                        foreach (var Treeitem in items) | 
						|
                        { | 
						|
                            DataRow DataRow = Treeitem.Data as DataRow; | 
						|
                            if (DataRow["ID"].ToString() == DataView["TYPE"].ToString()) | 
						|
                            { | 
						|
                                Treeitem.Nodes.Remove(item); | 
						|
                                break; | 
						|
                            } | 
						|
                        } | 
						|
                        Thread.Sleep(700); | 
						|
                        this.tvDicDetail.ItemsSource = null; | 
						|
                    } | 
						|
                } | 
						|
                //修改原因:不需要将字典保存到工程文件中  修改人:高山  修改时间:2019.09.21 | 
						|
                //SaveProjectDic(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex); | 
						|
                MessageHelper.ShowTips("数据加载异常!" + ex.Message); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
                LoadTree(); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private void ActionChe(bool Parent, DicTreeNode treeNods, string Str) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (Str != "") | 
						|
                { | 
						|
                    Cold = Str; | 
						|
                    txtNames = treeNods; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    txtNames = treeNods; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex); | 
						|
                throw; | 
						|
            } | 
						|
 | 
						|
        } | 
						|
 | 
						|
        //字典子项新增 | 
						|
        private void btnDetailAdd_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                Cold = null; | 
						|
                txtNames = null; | 
						|
                //获取选中节点 | 
						|
                //白明雅 2018-12-27 bug13997 | 
						|
                TreeNode node = this.tvTypes.SelectedItem as TreeNode; | 
						|
                DicTreeNode item = GetDicTreeNodeByTreeNode(node); | 
						|
                //------------------------ | 
						|
                //DicTreeNode item = this.tvTypes.SelectedItem as DicTreeNode; | 
						|
                if (item == null || item.Data == null) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请先选择正确的父节点!"); | 
						|
                    return; | 
						|
                } | 
						|
                //详细字典值 | 
						|
                DicTreeNode DetailItem = this.tvDicDetail.SelectedItem as DicTreeNode; | 
						|
                DicTreeNode TvTypesItem = GetDicTreeNodeByTreeNode(this.tvTypes.SelectedItem as TreeNode); // this.tvTypes.SelectedItem as DicTreeNode; | 
						|
 | 
						|
                DataRow drv = item.Data as DataRow; | 
						|
                DataDicDetailEdit main = new DataDicDetailEdit(TvTypesItem.Name); | 
						|
                main.ActionChecked = ActionChe; | 
						|
                main.Width = 500; | 
						|
                main.Height = 350; | 
						|
                main.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; | 
						|
                if (DetailItem != null && DetailItem.Data != null && !DetailItem.IsParent) | 
						|
                { | 
						|
                    main.DrvNode = DetailItem.Data as DataRow; | 
						|
                } | 
						|
                main.OWNERDIC = drv["ID"].ToString(); | 
						|
                //关闭窗体之后刷新tree控件 | 
						|
                if (!main.ShowInMainWindow(true).Value) | 
						|
                { | 
						|
                    if (txtNames == null) | 
						|
                        return; | 
						|
                    if (Cold == null) | 
						|
                    { | 
						|
                        ObservableCollection<DicTreeNode> itemTree = this.tvDicDetail.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                        DicTreeNode itemsd = itemTree[0]; | 
						|
                        if (itemsd.Nodes == null) | 
						|
                        { | 
						|
                            ObservableCollection<DicTreeNode> ergod = new ObservableCollection<DicTreeNode>(); | 
						|
                            ergod.Add(txtNames); | 
						|
                            itemsd.Nodes = ergod; | 
						|
                        } | 
						|
                        else | 
						|
                        { | 
						|
                            itemsd.Nodes.Add(txtNames); | 
						|
                            var paixu = (itemsd.Nodes).OrderBy(x => x.Paixu).ToList(); | 
						|
                            if (paixu != null) | 
						|
                            { | 
						|
                                itemsd.Nodes.Clear(); | 
						|
                                foreach (var itemd in paixu) | 
						|
                                { | 
						|
                                    itemsd.Nodes.Add(itemd); | 
						|
                                } | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        ObservableCollection<DicTreeNode> itemTree = this.tvDicDetail.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                        ObservableCollection<DicTreeNode> list = itemTree[0].Nodes as ObservableCollection<DicTreeNode>; | 
						|
                        foreach (var itemsd in list) | 
						|
                        { | 
						|
                            DataRow DataRowSubnode = itemsd.Data as DataRow;//保存当前Treevie对象遍历后的节点 | 
						|
                            DataRow Datarows = txtNames.Data as DataRow;//保存新增节点 | 
						|
                            if (DataRowSubnode["ID"].ToString() == Cold) | 
						|
                            { | 
						|
                                if (itemsd.Nodes == null) | 
						|
                                { | 
						|
                                    ObservableCollection<DicTreeNode> ergod = new ObservableCollection<DicTreeNode>(); | 
						|
                                    ergod.Add(txtNames); | 
						|
                                    itemsd.Nodes = ergod; | 
						|
                                } | 
						|
                                else | 
						|
                                { | 
						|
                                    itemsd.Nodes.Add(txtNames); | 
						|
                                    var paixu = (itemsd.Nodes).OrderBy(x => x.Paixu).ToList(); | 
						|
                                    if (paixu != null) | 
						|
                                    { | 
						|
                                        itemsd.Nodes.Clear(); | 
						|
                                        foreach (var itemd in paixu) | 
						|
                                        { | 
						|
                                            itemsd.Nodes.Add(itemd); | 
						|
                                        } | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                            else if (itemsd.Nodes != null && itemsd.Nodes.Count > 0) | 
						|
                            { | 
						|
                                ergodicSubnode(itemsd.Nodes, Cold); | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                    //修改原因:不需要将字典保存到工程文件中  修改人:高山  修改时间:2019.09.21 | 
						|
                    //SaveProjectDic(); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("新增节点异常!" + ex.Message); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 遍历子节点增加节点 | 
						|
        /// </summary> | 
						|
        private void ergodicSubnode(ObservableCollection<DicTreeNode> ergodic, string Pid) | 
						|
        { | 
						|
            foreach (var item in ergodic) | 
						|
            { | 
						|
                DataRow DataRowSubnode = item.Data as DataRow;//保存当前Treevie对象遍历后的节点 | 
						|
                if (DataRowSubnode["ID"].ToString() == Pid) | 
						|
                { | 
						|
                    if (item.Nodes == null) | 
						|
                    { | 
						|
                        ObservableCollection<DicTreeNode> ergod = new ObservableCollection<DicTreeNode>(); | 
						|
                        ergod.Add(txtNames); | 
						|
                        item.Nodes = (ergod); | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        item.Nodes.Add(txtNames); | 
						|
                        var paixu = (item.Nodes).OrderBy(x => x.Paixu).ToList(); | 
						|
                        if (paixu != null) | 
						|
                        { | 
						|
                            item.Nodes.Clear(); | 
						|
                            foreach (var itemd in paixu) | 
						|
                            { | 
						|
                                item.Nodes.Add(itemd); | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                    return; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    if (item.Nodes != null && item.Nodes.Count > 0) | 
						|
                    { | 
						|
                        ergodicSubnode(item.Nodes, Pid); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 遍历子节点删除数据 | 
						|
        /// </summary> | 
						|
        /// <param name="ergodic"></param> | 
						|
        /// <param name="Pid"></param> | 
						|
        private void ergodicSubnodeDelete(ObservableCollection<DicTreeNode> ergodic, DicTreeNode itemud, string Pid) | 
						|
        { | 
						|
            foreach (var item in ergodic) | 
						|
            { | 
						|
                DataRow DataRowSubnode = item.Data as DataRow;//保存当前Treevie对象遍历后的节点 | 
						|
                if (DataRowSubnode["ID"].ToString() == Pid) | 
						|
                { | 
						|
                    if (item.Nodes != null) | 
						|
                    { | 
						|
                        item.Nodes.Remove(itemud); | 
						|
                        var paixu = (item.Nodes).OrderBy(x => x.Paixu).ToList(); | 
						|
                        if (paixu != null) | 
						|
                        { | 
						|
                            item.Nodes.Clear(); | 
						|
                            foreach (var itemd in paixu) | 
						|
                            { | 
						|
                                item.Nodes.Add(itemd); | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                    return; | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    if (item.Nodes != null && item.Nodes.Count > 0) | 
						|
                    { | 
						|
                        ergodicSubnodeDelete(item.Nodes, itemud, Pid); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        public List<string> sQSCodeList; | 
						|
        public List<string> sQSNameList; | 
						|
        public bool GetExcelAllRecord(Workbook the_workbook) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                sQSCodeList = new List<string>(); | 
						|
                sQSNameList = new List<string>(); | 
						|
 | 
						|
                bool exitload = false; | 
						|
                var rowindex = 1; | 
						|
                var worksheet = the_workbook.Worksheets[0]; | 
						|
                while (!exitload) | 
						|
                { | 
						|
                    if (string.IsNullOrWhiteSpace(worksheet.Rows[rowindex][0].DisplayText)) | 
						|
                    { | 
						|
                        if (rowindex < 5) | 
						|
                        { | 
						|
                            rowindex++; | 
						|
                            continue; | 
						|
                        } | 
						|
                        exitload = true; | 
						|
                        break; | 
						|
                    } | 
						|
                    if (rowindex == 1) | 
						|
                    { | 
						|
                        if (worksheet.Rows[rowindex][0].DisplayText != "权属单位代码" || worksheet.Rows[rowindex][1].DisplayText != "权属单位名称") | 
						|
                        { | 
						|
                            MessageHelper.ShowError("文件内容解析错误,请选择正确格式内容的权属样式文件!"); | 
						|
                            exitload = true; | 
						|
                            return false; | 
						|
                        } | 
						|
                    } | 
						|
                    if (rowindex > 1) | 
						|
                    { | 
						|
                        sQSCodeList.Add(worksheet.Rows[rowindex][0].Value.ToString()); | 
						|
                        sQSNameList.Add(worksheet.Rows[rowindex][1].DisplayText); | 
						|
                    } | 
						|
                    rowindex++; | 
						|
                } | 
						|
                return true; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug("获取权属信息异常: " + ex + " ; "); | 
						|
                sQSCodeList = new List<string>(); | 
						|
                sQSNameList = new List<string>(); | 
						|
                return false; | 
						|
            } | 
						|
        } | 
						|
        public bool JudgeExistQDCode(string sQSCode) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (string.IsNullOrWhiteSpace(sQSCode) == true) | 
						|
                { | 
						|
                    return false; | 
						|
                } | 
						|
 | 
						|
                if (sQSCodeList == null || sQSCodeList.Count() <= 0) | 
						|
                { | 
						|
                    return false; | 
						|
                } | 
						|
 | 
						|
                bool bJudge_ = false; | 
						|
                for (int i = 0; i < sQSCodeList.Count; i++) | 
						|
                { | 
						|
                    if (sQSCodeList[i] == sQSCode) | 
						|
                    { | 
						|
                        bJudge_ = true; | 
						|
                        break; | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        continue; | 
						|
                    } | 
						|
                } | 
						|
 | 
						|
                return bJudge_; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug("验证是否存在权属代码( " + sQSCode + " ) 时异常: " + ex + " ; "); | 
						|
                return false; | 
						|
            } | 
						|
        } | 
						|
        /// <summary> | 
						|
        /// 字典子项编辑 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void btnDetailEdit_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                txtNames = null; | 
						|
                Cold = null; | 
						|
                //判断子项是否有选中值 | 
						|
                DicTreeNode item = this.tvDicDetail.SelectedItem as DicTreeNode; | 
						|
                if (item == null || item.Data == null) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请先选中需要编辑的节点!"); | 
						|
                    return; | 
						|
                } | 
						|
                DataRow drv = item.Data as DataRow; | 
						|
                if (drv == null) | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
                if (!drv.Table.Columns.Contains("OWNERDIC")) | 
						|
                { | 
						|
                    DataDicEdit DataMain = new DataDicEdit(1); | 
						|
                    DataMain.Width = 550; | 
						|
                    DataMain.Height = 410; | 
						|
                    DataMain.actionUpdate = action_Update; | 
						|
                    DataMain.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; | 
						|
                    DataMain.IsParent = item.IsParent; | 
						|
                    DataMain.InitPage(drv); | 
						|
                    //关闭窗体之后刷新tree控件 | 
						|
                    if (!DataMain.ShowInMainWindow(true).Value) | 
						|
                    { | 
						|
                        if (txtNames == null && Cold == null) | 
						|
                        { | 
						|
                            return; | 
						|
                        } | 
						|
                        ObservableCollection<DicTreeNode> ListTree = tvDicDetail.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                        DicTreeNode TreesNode = ListTree[0]; | 
						|
                        TreesNode.Name = txtNames.Name; | 
						|
                        TreesNode.Data = txtNames.Data; | 
						|
                        DataRow treesData = TreesNode.Data as DataRow; | 
						|
                        txtDicName.Text = treesData["Name"].ToString(); | 
						|
                        txtCode.Text = ""; | 
						|
                        txtAliasName.Text = treesData["ALIASNAME"].ToString(); | 
						|
                        txtRemark.Text = treesData["REMARK"].ToString(); | 
						|
                        //白明雅 2018-12-28  | 
						|
                        DicTreeNode TreesNodes = GetDicTreeNodeByTreeNode(tvTypes.SelectedItem as TreeNode); | 
						|
                        TreesNodes.Name = txtNames.Name; | 
						|
                        TreesNodes.Data = txtNames.Data; | 
						|
                        TreesNodes.Paixu = Convert.ToInt32(treesData["PAIXU"]); | 
						|
                    } | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    DataDicDetailEdit main = new DataDicDetailEdit(txtParentName.Text); | 
						|
                    main.Width = 500; | 
						|
                    main.Height = 350; | 
						|
                    main.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; | 
						|
                    main.OWNERDIC = drv["OWNERDIC"].ToString(); | 
						|
                    main.ActionChecked = ActionChe; | 
						|
                    main.InitPage(drv); | 
						|
                    //关闭窗体之后刷新tree控件 | 
						|
                    if (!main.ShowInMainWindow(true).Value) | 
						|
                    { | 
						|
                        if (txtNames == null && Cold == null) | 
						|
                        { | 
						|
                            return; | 
						|
                        } | 
						|
                        if (Cold == null) | 
						|
                        { | 
						|
                            ObservableCollection<DicTreeNode> items = this.tvDicDetail.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                            DicTreeNode treeNodes = items[0] as DicTreeNode;//当前目录中根目录节点 | 
						|
                            if (string.IsNullOrWhiteSpace(drv["PID"].ToString().Trim())) | 
						|
                            { | 
						|
                                DataRow treeNodeData = treeNodes.Data as DataRow;//将根目录节点转成DataRow | 
						|
                                DataRow treeView = txtNames.Data as DataRow; | 
						|
                                foreach (var itemData in treeNodes.Nodes) | 
						|
                                { | 
						|
                                    DataRow temData = itemData.Data as DataRow;//当前第一次子目录对象 | 
						|
                                    if (temData["OWNERDIC"].ToString() == treeNodeData["ID"].ToString() && drv["ID"].ToString().Trim() == temData["ID"].ToString().Trim()) | 
						|
                                    { | 
						|
                                        DataRow temDatas = itemData.Data as DataRow; | 
						|
                                        itemData.Name = txtNames.Name; | 
						|
                                        itemData.Paixu = txtNames.Paixu; | 
						|
                                        itemData.Data = txtNames.Data; | 
						|
                                        txtDicName.Text = temDatas["Name"].ToString(); | 
						|
                                        txtCode.Text = temDatas["CODE"].ToString(); | 
						|
                                        txtAliasName.Text = ""; | 
						|
                                        txtRemark.Text = temDatas["REMARK"].ToString(); | 
						|
                                        var paixu = treeNodes.Nodes.OrderBy(x => x.Paixu).ToList(); | 
						|
                                        if (paixu != null) | 
						|
                                        { | 
						|
                                            treeNodes.Nodes.Clear(); | 
						|
                                            foreach (var itemd in paixu) | 
						|
                                            { | 
						|
                                                treeNodes.Nodes.Add(itemd); | 
						|
                                            } | 
						|
                                        } | 
						|
                                        break; | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                        } | 
						|
                        else | 
						|
                        { | 
						|
                            ObservableCollection<DicTreeNode> items = this.tvDicDetail.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                            DicTreeNode treeNodes = items[0] as DicTreeNode;//当前目录中根目录节点 | 
						|
                            if (string.IsNullOrWhiteSpace(drv["PID"].ToString().Trim())) | 
						|
                            { | 
						|
                                DataRow treeNodeData = treeNodes.Data as DataRow;//将根目录节点转成DataRow | 
						|
                                treeNodes.Nodes.Remove(item); | 
						|
                                items = this.tvDicDetail.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                                treeNodes = items[0] as DicTreeNode; | 
						|
                                DataRow treeView = txtNames.Data as DataRow; | 
						|
                                foreach (var itemData in treeNodes.Nodes) | 
						|
                                { | 
						|
                                    DataRow temData = itemData.Data as DataRow;//当前第一次子目录对象 | 
						|
                                    if (temData["ID"].ToString() == Cold) | 
						|
                                    { | 
						|
                                        if (itemData.Nodes != null) | 
						|
                                        { | 
						|
                                            itemData.Nodes.Add(txtNames); | 
						|
                                        } | 
						|
                                        else | 
						|
                                        { | 
						|
                                            ObservableCollection<DicTreeNode> itemsList = new ObservableCollection<DicTreeNode>(); | 
						|
                                            itemsList.Add(txtNames); | 
						|
                                            itemData.Nodes = itemsList; | 
						|
                                        } | 
						|
                                        break; | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                            else | 
						|
                            { | 
						|
                                foreach (var itemNodes in treeNodes.Nodes) | 
						|
                                { | 
						|
                                    DataRow temData = itemNodes.Data as DataRow;//当前第一次子目录对象 | 
						|
                                    if (temData["ID"].ToString() == drv["ID"].ToString()) | 
						|
                                    { | 
						|
                                        itemNodes.Name = txtNames.Name; | 
						|
                                        itemNodes.Data = txtNames.Data; | 
						|
                                        itemNodes.Paixu = txtNames.Paixu; | 
						|
                                        DataRow temDatas = itemNodes.Data as DataRow; | 
						|
                                        txtDicName.Text = temDatas["Name"].ToString(); | 
						|
                                        txtCode.Text = ""; | 
						|
                                        txtAliasName.Text = temDatas["CODE"].ToString(); | 
						|
                                        txtRemark.Text = temDatas["REMARK"].ToString(); | 
						|
                                        var paixu = treeNodes.Nodes.OrderBy(x => x.Paixu).ToList(); | 
						|
                                        if (paixu != null) | 
						|
                                        { | 
						|
                                            treeNodes.Nodes.Clear(); | 
						|
                                            foreach (var itemd in paixu) | 
						|
                                            { | 
						|
                                                treeNodes.Nodes.Add(itemd); | 
						|
                                            } | 
						|
                                        } | 
						|
                                        break; | 
						|
                                    } | 
						|
                                    else if (itemNodes.Nodes != null && itemNodes.Nodes.Count > 0) | 
						|
                                    { | 
						|
                                        updateDicTree(itemNodes, drv["ID"].ToString()); | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                } | 
						|
                //修改原因:不需要将字典保存到工程文件中  修改人:高山  修改时间:2019.09.21 | 
						|
                //SaveProjectDic(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("数据加载异常!" + ex.Message); | 
						|
                LogAPI.Debug(ex); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private void updateDicTree(DicTreeNode tree, string UpdatID) | 
						|
        { | 
						|
            foreach (var item in tree.Nodes) | 
						|
            { | 
						|
                DataRow temData = item.Data as DataRow;//当前第一次子目录对象 | 
						|
                if (temData["ID"].ToString() == UpdatID) | 
						|
                { | 
						|
                    item.Name = txtNames.Name; | 
						|
                    item.Data = txtNames.Data; | 
						|
                    item.Paixu = txtNames.Paixu; | 
						|
                    DataRow temDatas = item.Data as DataRow; | 
						|
                    txtDicName.Text = temDatas["Name"].ToString(); | 
						|
                    txtCode.Text = ""; | 
						|
                    txtAliasName.Text = temDatas["CODE"].ToString(); | 
						|
                    txtRemark.Text = temDatas["REMARK"].ToString(); | 
						|
                    var paixu = tree.Nodes.OrderBy(x => x.Paixu).ToList(); | 
						|
                    if (paixu != null) | 
						|
                    { | 
						|
                        tree.Nodes.Clear(); | 
						|
                        foreach (var itemd in paixu) | 
						|
                        { | 
						|
                            tree.Nodes.Add(itemd); | 
						|
                        } | 
						|
                    } | 
						|
                    break; | 
						|
                } | 
						|
                else if (item.Nodes != null && item.Nodes.Count > 0) | 
						|
                { | 
						|
                    updateDicTree(item, UpdatID); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        //字典子项删除 | 
						|
        private void btnDetailDel_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            try | 
						|
            { | 
						|
                //删除子项需要级联删除下属的所有子项 | 
						|
                DicTreeNode item = this.tvDicDetail.SelectedItem as DicTreeNode; | 
						|
                if (item == null) | 
						|
                { | 
						|
                    MessageHelper.ShowTips("请您选择要删除的节点!"); | 
						|
                    return; | 
						|
                } | 
						|
                if (MessageHelper.ShowYesNoAndWarning("您确认要删除【" + item.Name + "】节点?") == System.Windows.Forms.DialogResult.No) | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
                DataRow drv = item.Data as DataRow; | 
						|
                if (drv == null) | 
						|
                { | 
						|
                    if (item.Nodes.Count > 0) | 
						|
                    { | 
						|
                        MessageHelper.ShowWarning("您选择的是根节点,如果想删除请在根目录下删除"); | 
						|
                    } | 
						|
                    return; | 
						|
                } | 
						|
                string pid = drv["id"].ToString(); | 
						|
                rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                if (rdbHelper == null) | 
						|
                { | 
						|
                    throw new Exception("数据库连接打开失败:" + dbPath); | 
						|
                } | 
						|
                string strSql = string.Empty; | 
						|
                //判断是否根节点删除 | 
						|
                if (item.IsParent) | 
						|
                { | 
						|
                    //首先删除子项 | 
						|
                    strSql = "delete from Sys_DicDetail where OWNERDIC='" + pid + "'"; | 
						|
                    int res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text); | 
						|
                    if (res < 0) | 
						|
                    { | 
						|
                        MessageHelper.ShowError("删除子项出错,请联系技术人员!"); | 
						|
                        return; | 
						|
                    } | 
						|
                    //然后删除本身 | 
						|
                    strSql = "delete from Sys_DicManage where id=" + pid; | 
						|
                    res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text); | 
						|
                    if (res > 0) | 
						|
                    { | 
						|
                        Thread.Sleep(1000); | 
						|
                        this.txtDicName.Text = ""; | 
						|
                        this.txtAliasName.Text = ""; | 
						|
                        this.txtCode.Text = ""; | 
						|
                        this.txtParentName.Text = ""; | 
						|
                        //ObservableCollection<DicTreeNode> itemTree = this.tvTypes.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                        //item = this.tvTypes.SelectedItem as DicTreeNode; | 
						|
                        //白明雅 2018-12-28 | 
						|
                        ObservableCollection<DicTreeNode> itemTree = IEnumerableToDicTreeNode(this.tvTypes.ItemsSource.Cast<TreeNode>()); | 
						|
                        item = GetDicTreeNodeByTreeNode(this.tvTypes.SelectedItem as TreeNode); | 
						|
                        if (item != null) | 
						|
                        { | 
						|
                            foreach (var items in itemTree) | 
						|
                            { | 
						|
                                DataRow drvs = items.Data as DataRow; | 
						|
                                if (drvs["ID"].ToString() == drv["TYPE"].ToString()) | 
						|
                                { | 
						|
                                    items.Nodes.Remove(item); | 
						|
                                    break; | 
						|
                                } | 
						|
                                else | 
						|
                                { | 
						|
 | 
						|
                                } | 
						|
                            } | 
						|
                        } | 
						|
                        this.tvDicDetail.ItemsSource = null; | 
						|
                        LoadTree();//白明雅 2018-12-28 | 
						|
                    } | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    string ids = ForeachGetID(pid, rdbHelper) + pid; | 
						|
                    //执行删除操作 | 
						|
                    strSql = "delete from Sys_DicDetail where id in (" + ids + ")"; | 
						|
                    int res = rdbHelper.ExecuteNonQuery(strSql, CommandType.Text); | 
						|
                    if (res > 0) | 
						|
                    { | 
						|
                        this.txtDicName.Text = ""; | 
						|
                        this.txtAliasName.Text = ""; | 
						|
                        this.txtCode.Text = ""; | 
						|
                        this.txtParentName.Text = ""; | 
						|
                        ObservableCollection<DicTreeNode> itemTree = this.tvDicDetail.ItemsSource as ObservableCollection<DicTreeNode>; | 
						|
                        DicTreeNode drvs = itemTree[0] as DicTreeNode; | 
						|
                        if (drvs != null) | 
						|
                        { | 
						|
                            DataRow drvsds = drvs.Data as DataRow; | 
						|
                            if (drvsds != null) | 
						|
                            { | 
						|
                                if (string.IsNullOrWhiteSpace(drv["PID"].ToString())) | 
						|
                                { | 
						|
                                    drvs.Nodes.Remove(item); | 
						|
                                } | 
						|
                                else | 
						|
                                { | 
						|
                                    foreach (var items in drvs.Nodes) | 
						|
                                    { | 
						|
                                        DataRow drvsd = items.Data as DataRow; | 
						|
                                        if (drvsd["ID"].ToString() == drv["PID"].ToString()) | 
						|
                                        { | 
						|
                                            items.Nodes.Remove(item); | 
						|
                                            break; | 
						|
                                        } | 
						|
                                        else if (items.Nodes != null && items.Nodes.Count > 0) | 
						|
                                        { | 
						|
                                            ergodicSubnodeDelete(items.Nodes, item, drv["PID"].ToString()); | 
						|
                                        } | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                        } | 
						|
                    } | 
						|
                    Thread.Sleep(1000); | 
						|
                } | 
						|
                //SaveProjectDic(); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("数据加载异常!" + ex.Message); | 
						|
                LogAPI.Debug(ex); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        //递归获取ID,一直到根节点 | 
						|
        private string ForeachGetID(string ID, IRDBHelper rdbHelper) | 
						|
        { | 
						|
            string ids = string.Empty; | 
						|
            DataTable dt = rdbHelper.ExecuteDatatable("Sys_DicDetail", string.Format("select * from Sys_DicDetail where PID='{0}'", ID), true); | 
						|
            if (dt != null && dt.Rows.Count > 0) | 
						|
            { | 
						|
                foreach (DataRow item in dt.Rows) | 
						|
                { | 
						|
                    string id = item["ID"].ToString(); | 
						|
                    ids += id + "," + ForeachGetID(id, rdbHelper); | 
						|
                } | 
						|
                return ids; | 
						|
            } | 
						|
            else | 
						|
            { | 
						|
                return ""; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 代码及名称树状菜单点击事件 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void tvDicDetail_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) | 
						|
        { | 
						|
            DicTreeNode item = this.tvDicDetail.SelectedItem as DicTreeNode; | 
						|
            SetChangedItem(item); | 
						|
        } | 
						|
 | 
						|
        private void SetChangedItem(DicTreeNode item) | 
						|
        { | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            try | 
						|
            { | 
						|
                txtDicName.Text = string.Empty; | 
						|
                txtCode.Text = string.Empty; | 
						|
                txtRemark.Text = string.Empty; | 
						|
                txtDicID.Text = string.Empty; | 
						|
                txtAliasName.Text = string.Empty; | 
						|
                txtParentName.Text = string.Empty; | 
						|
                if (item == null || item.Data == null || (item.Data as DataRow) == null) | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
                rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                if (rdbHelper == null) | 
						|
                { | 
						|
                    throw new Exception("数据库连接打开失败:" + dbPath); | 
						|
                } | 
						|
                DataRow drv = item.Data as DataRow; | 
						|
                txtDicName.Text = drv["Name"] == null ? "" : drv["Name"].ToString(); | 
						|
                if (drv.Table.Columns.Contains("CODE")) | 
						|
                { | 
						|
                    txtCode.Text = drv["CODE"] == null ? "" : drv["CODE"].ToString(); | 
						|
                } | 
						|
                txtDicID.Text = drv["ID"] == null ? "" : drv["ID"].ToString(); | 
						|
                txtRemark.Text = drv["REMARK"] == null ? "" : drv["REMARK"].ToString(); | 
						|
 | 
						|
                #region 获取父级名称,代码 | 
						|
                string QuerySQL = string.Empty; | 
						|
                if (item.IsParent) | 
						|
                { | 
						|
                    txtAliasName.Text = drv["ALIASNAME"] == null ? "" : drv["ALIASNAME"].ToString(); | 
						|
                    if (drv.Table.Columns.Contains("TYPE") && drv["TYPE"] != null && !string.IsNullOrWhiteSpace(drv["TYPE"].ToString())) | 
						|
                    { | 
						|
                        QuerySQL = "SELECT * FROM Sys_DicType WHERE ID= " + drv["TYPE"].ToString(); | 
						|
                    } | 
						|
                } | 
						|
                else | 
						|
                { | 
						|
                    if (drv.Table.Columns.Contains("PID") && drv["PID"] != null && !string.IsNullOrWhiteSpace(drv["PID"].ToString())) | 
						|
                    { | 
						|
                        QuerySQL = "SELECT * FROM Sys_DicDetail WHERE ID = " + drv["PID"].ToString(); | 
						|
                    } | 
						|
                    else if (drv.Table.Columns.Contains("OWNERDIC") && drv["OWNERDIC"] != null && !string.IsNullOrWhiteSpace(drv["OWNERDIC"].ToString())) | 
						|
                    { | 
						|
                        QuerySQL = "SELECT * FROM Sys_DicManage WHERE ID = " + drv["OWNERDIC"].ToString(); | 
						|
                    } | 
						|
                } | 
						|
                if (string.IsNullOrWhiteSpace(QuerySQL)) | 
						|
                { | 
						|
                    return; | 
						|
                } | 
						|
                DataTable dtDict = rdbHelper.ExecuteDatatable("Sys_DicType", QuerySQL, false); | 
						|
                if (dtDict != null && dtDict.Rows.Count > 0) | 
						|
                { | 
						|
                    string parentName = "["; | 
						|
                    if (dtDict.Columns.Contains("CODE")) | 
						|
                    { | 
						|
                        parentName += dtDict.Rows[0]["CODE"] == null ? "" : dtDict.Rows[0]["CODE"].ToString(); | 
						|
                    } | 
						|
                    else if (dtDict.Columns.Contains("ID")) | 
						|
                    { | 
						|
                        parentName += dtDict.Rows[0]["ID"] == null ? "" : dtDict.Rows[0]["ID"].ToString(); | 
						|
                    } | 
						|
                    parentName += "]"; | 
						|
                    if (dtDict.Columns.Contains("NAME")) | 
						|
                    { | 
						|
                        parentName += dtDict.Rows[0]["NAME"] == null ? "" : dtDict.Rows[0]["NAME"].ToString(); | 
						|
                    } | 
						|
                    txtParentName.Text = parentName; | 
						|
                } | 
						|
                #endregion | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                MessageHelper.ShowError("数据加载异常!" + ex.Message); | 
						|
                LogAPI.Debug(ex); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 保存字典 | 
						|
        /// </summary> | 
						|
        private void SaveProjectDic() | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                string dicPaht = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetDicDataPath(); | 
						|
                if (!string.IsNullOrWhiteSpace(dicPaht)) | 
						|
                { | 
						|
                    string tempPath = System.IO.Path.GetTempPath(); | 
						|
                    string dbPath = System.IO.Path.Combine(tempPath, "dic.back"); | 
						|
                    File.Copy(dicPaht, dbPath); | 
						|
                    FileInfo dicfileInfo = new FileInfo(dbPath); | 
						|
                    using (System.IO.FileStream dicStream = dicfileInfo.Open(FileMode.Open, FileAccess.Read, FileShare.None)) | 
						|
                    { | 
						|
                        byte[] dicByte = new byte[dicStream.Length]; | 
						|
                        dicStream.Read(dicByte, 0, dicByte.Length); | 
						|
                        dicStream.Close(); | 
						|
                        File.Delete(dbPath); | 
						|
                        string base64 = Convert.ToBase64String(dicByte); | 
						|
                        (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).DicData = base64; | 
						|
                    } | 
						|
                    //(MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).Save(); | 
						|
                    Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" }); | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug("保存字典失败:" + ex.Message); | 
						|
                throw new Exception("保存字典失败:" + ex.Message); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 字典导入 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void btnDicImport_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                FrmDicManageImport frm = new FrmDicManageImport | 
						|
                { | 
						|
                    WindowStartupLocation = WindowStartupLocation.CenterScreen | 
						|
                }; | 
						|
                frm.ShowInMainWindow(true); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex); | 
						|
                MessageHelper.ShowError("字典导入出现错误,可能的原因是:" + ex.Message); | 
						|
            } | 
						|
        } | 
						|
        /// <summary> | 
						|
        /// 字典导出 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void btnDicExport_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                FrmDicManageExport frm = new FrmDicManageExport | 
						|
                { | 
						|
                    WindowStartupLocation = WindowStartupLocation.CenterScreen | 
						|
                }; | 
						|
                frm.ShowInMainWindow(true); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex); | 
						|
                MessageHelper.ShowError("字典导出出现错误,可能的原因是:" + ex.Message); | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 生成权属字典 | 
						|
        /// </summary> | 
						|
        /// <param name="sender"></param> | 
						|
        /// <param name="e"></param> | 
						|
        private void btnCreateDicNew_Click(object sender, RoutedEventArgs e) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                KBGNewDataManage main = new KBGNewDataManage(); | 
						|
                main.Refresh = LoadTree; | 
						|
                main.Width = 700; | 
						|
                main.Height = 470; | 
						|
                main.WindowStartupLocation = WindowStartupLocation.CenterScreen; | 
						|
                main.ShowInMainWindow(false); | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex); | 
						|
                MessageHelper.ShowError("生成权属代码字典出现错误,可能的原因是:" + ex.Message); | 
						|
            } | 
						|
        } | 
						|
        private void BaseWindow_Closed(object sender, EventArgs e) | 
						|
        { | 
						|
            /* | 
						|
             * 根据国家标准库做出调整,删除ZJLX表 | 
						|
             * 白明雅 2019-01-28 注释下列代码 | 
						|
             * KGIS.Common.Utility.DicAPI.GetDicTypeID(KGIS.Common.Enum.DicTypeEnum.ZJLX, true); | 
						|
             */ | 
						|
            //重新获取字典 | 
						|
            GetAllDic(); | 
						|
        } | 
						|
        private List<DataDicTionary> GetAllDic() | 
						|
        { | 
						|
            DataTable dt = null; | 
						|
            List<DataDicTionary> result = new List<DataDicTionary>(); | 
						|
            IRDBHelper rdbHelper = null; | 
						|
            try | 
						|
            { | 
						|
                string dbPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetDicDataPath(); | 
						|
                if (!string.IsNullOrWhiteSpace(dbPath)) | 
						|
                { | 
						|
                    rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); | 
						|
                    string strSQL = "select * from Sys_DicDetail"; | 
						|
                    dt = rdbHelper.ExecuteDatatable("Dic", strSQL, true); | 
						|
                    if (dt != null) | 
						|
                    { | 
						|
                        //Bug-12137 霍岩 2018-11-14 使用CODE字段按顺序排序 | 
						|
                        result = TBToList.ToList<DataDicTionary>(dt).OrderBy(x => x.CODE).ToList(); | 
						|
                        result.ForEach(x => x.DisplayName = x.CODE + "-" + x.NAME); | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug(ex); | 
						|
            } | 
						|
            finally | 
						|
            { | 
						|
                if (rdbHelper != null) | 
						|
                { | 
						|
                    rdbHelper.DisConnect(); | 
						|
                } | 
						|
                if (dt != null) | 
						|
                { | 
						|
                    dt.Clear(); | 
						|
                    dt.Dispose(); | 
						|
                } | 
						|
            } | 
						|
            return result; | 
						|
        } | 
						|
        private void tvTypes_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) | 
						|
        { | 
						|
            var treeViewItem = VisualUpwardSearch<TreeViewItem>(e.OriginalSource as DependencyObject) as TreeViewItem; | 
						|
            if (treeViewItem != null) | 
						|
            { | 
						|
                treeViewItem.Focus(); | 
						|
                e.Handled = true; | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        static DependencyObject VisualUpwardSearch<T>(DependencyObject source) | 
						|
        { | 
						|
            while (source != null && source.GetType() != typeof(T)) | 
						|
                source = VisualTreeHelper.GetParent(source); | 
						|
 | 
						|
            return source; | 
						|
        } | 
						|
 | 
						|
        public TreeNode QSXZchildNodeItem { get; set; } | 
						|
        public void ImportExcel(string excelfileurl) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                if (FileIsUsed(excelfileurl)) | 
						|
                { | 
						|
                    MessageHelper.ShowWarning("文件被占用,请关闭占用文件的相关程序,或者选择其他文件!"); | 
						|
                    return; | 
						|
                } | 
						|
                IRDBHelper rdbHelper = null; | 
						|
 | 
						|
                string Path = System.IO.Path.GetDirectoryName((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetProjFilePath()) + @"\BGTJ.sqlite"; | 
						|
                rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + Path, DatabaseType.SQLite); | 
						|
                if (rdbHelper == null) | 
						|
                { | 
						|
                    throw new Exception("打开数据库连接失败!"); | 
						|
                } | 
						|
                DataTable dtDict = rdbHelper.ExecuteDatatable("Sys_DicType", "select * from Sys_DicManage where NAME='权属代码'", true); | 
						|
                //数据库已存在 | 
						|
                if (dtDict != null && dtDict.Rows.Count > 0) | 
						|
                { | 
						|
                    QsdmID = dtDict.Rows[0]["ID"].ToString(); | 
						|
                    DataTable dtDetail = rdbHelper.ExecuteDatatable("Sys_DicDetail", "select * from Sys_DicDetail where OWNERDIC='" + QsdmID + "'", true); | 
						|
                    if (dtDetail == null || dtDetail.Rows.Count == 0 || MessageHelper.ShowYesNoAndTips("确定要导入吗?导入将覆盖现有字典数据!") == System.Windows.Forms.DialogResult.Yes) | 
						|
                    { | 
						|
                        ListQsdwEntity.Clear(); | 
						|
                        RemoveQsdwEntity.Clear(); | 
						|
                        ExcelLists.Clear(); | 
						|
                        Workbook workbook = new Workbook(); | 
						|
                        using (FileStream stream = new FileStream(excelfileurl, FileMode.Open)) | 
						|
                        { | 
						|
                            workbook.LoadDocument(stream, DocumentFormat.OpenXml);//打开exe表格 | 
						|
                        } | 
						|
                        bool exitload = false; | 
						|
                        var rowindex = 1; | 
						|
                        var worksheet = workbook.Worksheets[0]; | 
						|
                        //文件解析失败,直接退出 | 
						|
                        if (!GetExcelAllRecord(workbook)) return; | 
						|
 | 
						|
                        if (sQSCodeList == null || sQSCodeList.Count <= 0 || | 
						|
                            sQSNameList == null || sQSNameList.Count <= 0) | 
						|
                        { | 
						|
                            MessageHelper.ShowWarning("信息获取异常!"); | 
						|
                            return; | 
						|
                        } | 
						|
                        while (!exitload) | 
						|
                        { | 
						|
                            if (string.IsNullOrWhiteSpace(worksheet.Rows[rowindex][0].DisplayText)) | 
						|
                            { | 
						|
                                if (rowindex < 5) | 
						|
                                { | 
						|
                                    rowindex++; | 
						|
                                    continue; | 
						|
                                } | 
						|
                                exitload = true; | 
						|
                                break; | 
						|
                            } | 
						|
                            if (rowindex > 1) | 
						|
                            { | 
						|
                                QSDWinformation QsdwEntity = new QSDWinformation(); | 
						|
                                //模板-权属代码需是12位 | 
						|
                                if (worksheet.Rows[rowindex][0].Value.ToString().PadRight(12, '0').IndexOf("0000000000") == 2) | 
						|
                                { | 
						|
                                    QsdwEntity.Qsdwdm = worksheet.Rows[rowindex][0].Value.ToString().Substring(0, 2);//省 | 
						|
                                } | 
						|
                                else if (worksheet.Rows[rowindex][0].Value.ToString().PadRight(12, '0').IndexOf("00000000") == 4) | 
						|
                                { | 
						|
                                    QsdwEntity.Qsdwdm = worksheet.Rows[rowindex][0].Value.ToString().Substring(0, 4);//市 | 
						|
                                } | 
						|
                                else if (worksheet.Rows[rowindex][0].Value.ToString().PadRight(12, '0').IndexOf("000000") == 6 && worksheet.Rows[rowindex][0].Value.ToString().Length <= 6) | 
						|
                                { | 
						|
                                    QsdwEntity.Qsdwdm = worksheet.Rows[rowindex][0].Value.ToString().Substring(0, 6);//区 | 
						|
                                } | 
						|
                                else if (worksheet.Rows[rowindex][0].Value.ToString().Length == 9 && worksheet.Rows[rowindex][0].Value.ToString().EndsWith("000"))//特殊情况 | 
						|
                                { | 
						|
                                    QsdwEntity.Qsdwdm = worksheet.Rows[rowindex][0].Value.ToString().PadRight(19, '0'); | 
						|
                                    QsdwEntity.Qsdwmc = worksheet.Rows[rowindex][1].DisplayText; | 
						|
                                    QsdwEntity.ZLDWDM = QsdwEntity.Qsdwdm; | 
						|
                                    QsdwEntity.Zldwmc = QsdwEntity.Qsdwmc; | 
						|
                                    QsdwEntity.HasCheck = true; | 
						|
                                    ListQsdwEntity.Add(QsdwEntity); | 
						|
                                    ExcelLists = new List<QSDWinformation>(ListQsdwEntity); | 
						|
                                    rowindex++; | 
						|
                                    continue; | 
						|
                                } | 
						|
                                else | 
						|
                                { | 
						|
                                    QsdwEntity.Qsdwdm = worksheet.Rows[rowindex][0].Value.ToString();//村 | 
						|
                                } | 
						|
                                //QsdwEntity.Qsdwdm = worksheet.Rows[rowindex][0].Value.ToString(); | 
						|
                                if (QsdwEntity.Qsdwdm.Length == 19) | 
						|
                                { | 
						|
                                    if (QsdwEntity.Qsdwdm.EndsWith("00000000000000000")) | 
						|
                                    { | 
						|
                                        QsdwEntity.Qsdwdm = QsdwEntity.Qsdwdm.Substring(0, 2); | 
						|
                                    } | 
						|
                                    else if (QsdwEntity.Qsdwdm.EndsWith("000000000000000")) | 
						|
                                    { | 
						|
                                        QsdwEntity.Qsdwdm = QsdwEntity.Qsdwdm.Substring(0, 4); | 
						|
                                    } | 
						|
                                    else if (QsdwEntity.Qsdwdm.EndsWith("0000000000000")) | 
						|
                                    { | 
						|
                                        //判断是否存在配套的上一级(9位村/街道)数据 | 
						|
                                        //有:不处理,原版数据 | 
						|
                                        //没有:在判断是否所有的数据中是否存在6位本记录外同6位编码的县级; | 
						|
                                        //  有:不处理,成为飞入地; | 
						|
                                        //  没有:截取成6位; | 
						|
                                        string sTemp_1 = QsdwEntity.Qsdwdm; | 
						|
                                        if (JudgeExistQDCode(sTemp_1.Substring(0, 6) + "000") == true) | 
						|
                                        { | 
						|
                                            QsdwEntity.Qsdwdm = sTemp_1; | 
						|
                                        } | 
						|
                                        else | 
						|
                                        { | 
						|
                                            if (JudgeExistQDCode(sTemp_1.Substring(0, 6)) == true) | 
						|
                                            { | 
						|
                                                QsdwEntity.Qsdwdm = sTemp_1; | 
						|
                                            } | 
						|
                                            else | 
						|
                                            { | 
						|
                                                QsdwEntity.Qsdwdm = sTemp_1.Substring(0, 6); | 
						|
                                            } | 
						|
                                        } | 
						|
                                    } | 
						|
                                    else if (QsdwEntity.Qsdwdm.EndsWith("0000000000")) | 
						|
                                    { | 
						|
                                        QsdwEntity.Qsdwdm = QsdwEntity.Qsdwdm.Substring(0, 9); | 
						|
                                    } | 
						|
                                } | 
						|
                                QsdwEntity.Qsdwmc = worksheet.Rows[rowindex][1].DisplayText; | 
						|
                                QsdwEntity.ZLDWDM = QsdwEntity.Qsdwdm; | 
						|
                                QsdwEntity.Zldwmc = QsdwEntity.Qsdwmc; | 
						|
                                QsdwEntity.HasCheck = true; | 
						|
                                ListQsdwEntity.Add(QsdwEntity); | 
						|
                                ExcelLists = new List<QSDWinformation>(ListQsdwEntity); | 
						|
                            } | 
						|
                            rowindex++; | 
						|
                        } | 
						|
                        if (ListQsdwEntity.Count > 0) | 
						|
                        { | 
						|
                            ///获取省市县信息 | 
						|
                            var shengcode = ListQsdwEntity.Where(x => x.ZLDWDM.Length == 2).FirstOrDefault(); | 
						|
                            ShengInfo = new KeyValuePair<string, string>(shengcode == null ? ListQsdwEntity.First().ZLDWDM.PadRight(12, '0').Substring(0, 2).ToString() : shengcode.ZLDWDM, shengcode == null ? "省" : shengcode.Zldwmc); | 
						|
                            ShengInfo2 = ListQsdwEntity.Where(x => x.ZLDWDM.Length == 2).ToList<QSDWinformation>();//插入循环的数据 | 
						|
 | 
						|
                            var shicode = ListQsdwEntity.Where(x => x.ZLDWDM.Length == 4).FirstOrDefault(); | 
						|
                            ShiInfo = new KeyValuePair<string, string>(shicode == null ? ListQsdwEntity.First().ZLDWDM.PadRight(12, '0').Substring(0, 4).ToString() : shicode.ZLDWDM, shicode == null ? "市" : shicode.Zldwmc); | 
						|
                            ShiInfo2 = ListQsdwEntity.Where(x => x.ZLDWDM.Length == 4).ToList<QSDWinformation>(); | 
						|
 | 
						|
                            var xiancode = ListQsdwEntity.Where(x => x.ZLDWDM.Length == 6).FirstOrDefault(); | 
						|
                            XianInfo = new KeyValuePair<string, string>(xiancode == null ? ListQsdwEntity.First().ZLDWDM.PadRight(12, '0').Substring(0, 6).ToString() : xiancode.ZLDWDM, xiancode == null ? "县" : xiancode.Zldwmc); | 
						|
                            XianInfo2 = ListQsdwEntity.Where(x => x.ZLDWDM.Length == 6).ToList<QSDWinformation>(); | 
						|
                            #region 2020.04.01  飞入地与县同级显示 | 
						|
                            var XianInfolist = ListQsdwEntity.Where(x => x.ZLDWDM.Length == 19).GroupBy(x => x.ZLDWDM.PadRight(12, '0').Substring(0, 6)).Select(x => x.Key).ToList(); | 
						|
                            List<QSDWinformation> Xianlist = new List<QSDWinformation>(); | 
						|
                            string sTemp_ = ""; | 
						|
                            if (XianInfo2 != null && XianInfo2.Count() > 0) | 
						|
                            { | 
						|
                                foreach (var tt in XianInfo2) | 
						|
                                { | 
						|
                                    sTemp_ += tt.ZLDWDM + ","; | 
						|
                                } | 
						|
                            } | 
						|
 | 
						|
                            if (string.IsNullOrWhiteSpace(sTemp_) == false) | 
						|
                            { | 
						|
                                sTemp_ = sTemp_.TrimStart(',').TrimEnd(','); | 
						|
                                sTemp_ = "," + sTemp_ + ","; | 
						|
                                foreach (var xian in XianInfolist) | 
						|
                                { | 
						|
                                    if (sTemp_.Contains(xian) == true) | 
						|
                                    { | 
						|
                                        continue; | 
						|
                                    } | 
						|
                                    else | 
						|
                                    { | 
						|
                                        if (ListQsdwEntity != null && ListQsdwEntity.Count() > 0) | 
						|
                                        { | 
						|
                                            for (int u = 0; u < ListQsdwEntity.Count(); u++) | 
						|
                                            { | 
						|
                                                if (ListQsdwEntity[u].ZLDWDM.Length > 6 && ListQsdwEntity[u].ZLDWDM.PadRight(12, '0').Substring(0, 6) == xian) | 
						|
                                                { | 
						|
                                                    Xianlist.Add(ListQsdwEntity[u]); | 
						|
                                                } | 
						|
                                                else | 
						|
                                                { | 
						|
                                                    continue; | 
						|
                                                } | 
						|
                                            } | 
						|
                                        } | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                            else | 
						|
                            { | 
						|
                                foreach (var xian in XianInfolist) | 
						|
                                { | 
						|
                                    var xianinfo = ListQsdwEntity.Where( | 
						|
                                    x => | 
						|
                                    { | 
						|
                                        bool bresult = false; | 
						|
                                        if (x.ZLDWDM.Length > 6 && x.ZLDWDM.PadRight(12, '0').Substring(0, 6) == xian) | 
						|
                                        { | 
						|
                                            bresult = true; | 
						|
                                        } | 
						|
                                        if (x.ZLDWDM == XianInfo.Key) | 
						|
                                        { | 
						|
                                            bresult = true; | 
						|
                                        } | 
						|
                                        return bresult; | 
						|
                                    }).FirstOrDefault(); | 
						|
                                    Xianlist.Add(xianinfo); | 
						|
                                } | 
						|
                            } | 
						|
                            //XianInfo2 = Xianlist; | 
						|
 | 
						|
                            //2020-7-15 | 
						|
                            List<QSDWinformation> XianInfo2_ = new List<QSDWinformation>(); | 
						|
                            if (XianInfo2 == null || XianInfo2.Count() <= 0) | 
						|
                            { | 
						|
                                XianInfo2 = Xianlist; | 
						|
                            } | 
						|
                            else | 
						|
                            { | 
						|
                                if (Xianlist != null && Xianlist.Count() > 0) | 
						|
                                { | 
						|
                                    bool bIsExistMark = false; | 
						|
                                    for (int i = 0; i < Xianlist.Count(); i++) | 
						|
                                    { | 
						|
                                        bIsExistMark = false; | 
						|
                                        for (int j = 0; j < XianInfo2.Count(); j++) | 
						|
                                        { | 
						|
                                            if (XianInfo2[j].ZLDWDM == Xianlist[i].ZLDWDM) | 
						|
                                            { | 
						|
                                                bIsExistMark = true; | 
						|
                                                break; | 
						|
                                            } | 
						|
                                            else | 
						|
                                            { | 
						|
                                                continue; | 
						|
                                            } | 
						|
                                        } | 
						|
 | 
						|
                                        if (bIsExistMark == true) | 
						|
                                        { | 
						|
                                            continue; | 
						|
                                        } | 
						|
                                        else | 
						|
                                        { | 
						|
                                            XianInfo2_.Add(Xianlist[i]); | 
						|
                                        } | 
						|
                                    } | 
						|
                                } | 
						|
                                if (XianInfo2_ != null && XianInfo2_.Count() > 0) | 
						|
                                { | 
						|
                                    for (int k = 0; k < XianInfo2_.Count(); k++) | 
						|
                                    { | 
						|
                                        XianInfo2.Add(XianInfo2_[k]); | 
						|
                                    } | 
						|
                                } | 
						|
                            } | 
						|
                            #endregion | 
						|
                            Run(); | 
						|
                            OrderBy(XianInfo.Key, XianInfo.Value); | 
						|
                            CheckExist(QSXZchildNodeItem);//childNodeItem左项子级目录 | 
						|
                        } | 
						|
                    } | 
						|
 | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                LogAPI.Debug("ImportExcel异常:" + ex.Message); | 
						|
                LogAPI.Debug("ImportExcel异常:" + ex.StackTrace); | 
						|
                throw ex; | 
						|
            } | 
						|
        } | 
						|
    } | 
						|
    public class TreeNode | 
						|
    { | 
						|
        #region Property | 
						|
 | 
						|
        private string _Text; | 
						|
        /// <summary> | 
						|
        /// 显示的文本值 | 
						|
        /// </summary> | 
						|
        public string Name | 
						|
        { | 
						|
            get { return this._Text; } | 
						|
            set { this._Text = value; } | 
						|
        } | 
						|
        private ContextMenu _cMenu; | 
						|
        public ContextMenu cMenu | 
						|
        { | 
						|
            get { return this._cMenu; } | 
						|
            set { this._cMenu = value; } | 
						|
        } | 
						|
        private bool? _Checked; | 
						|
        /// <summary> | 
						|
        /// 是否选中 | 
						|
        /// </summary> | 
						|
        public bool? Checked | 
						|
        { | 
						|
            get { return this._Checked; } | 
						|
            set { this._Checked = value; } | 
						|
        } | 
						|
 | 
						|
        private bool _IsExpanded; | 
						|
        /// <summary> | 
						|
        /// 是否展开 | 
						|
        /// </summary> | 
						|
        public bool IsExpanded | 
						|
        { | 
						|
            get { return this._IsExpanded; } | 
						|
            set { this._IsExpanded = value; } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 节点图标:相对路径 | 
						|
        /// </summary> | 
						|
        public string Icon { get; set; } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 子节点,默认null | 
						|
        /// </summary> | 
						|
        public IList<TreeNode> Nodes { get; set; } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 该节点数据项,默认null | 
						|
        /// </summary> | 
						|
        public virtual object Data { get; set; } | 
						|
 | 
						|
        public virtual bool IsOpenEdit { get; set; } | 
						|
        public object Paixu { get; internal set; } | 
						|
        public bool IsParent { get; internal set; } | 
						|
 | 
						|
        #endregion | 
						|
 | 
						|
        #region NodeX-构造函数(初始化) | 
						|
 | 
						|
        /// <summary> | 
						|
        ///  NodeX-构造函数(初始化) | 
						|
        /// </summary> | 
						|
        public TreeNode() | 
						|
        { | 
						|
            this.Name = string.Empty; | 
						|
            this.Icon = string.Empty; | 
						|
            this.Checked = false; | 
						|
 | 
						|
        } | 
						|
 | 
						|
        #endregion | 
						|
    } | 
						|
    public class DicTreeNode : System.ComponentModel.INotifyPropertyChanged | 
						|
    { | 
						|
        #region Property | 
						|
        public event PropertyChangedEventHandler PropertyChanged; | 
						|
        private string _Text; | 
						|
        /// <summary> | 
						|
        /// 显示的文本值 | 
						|
        /// </summary> | 
						|
        public string Text | 
						|
        { | 
						|
            get { return this._Text; } | 
						|
            set | 
						|
            { | 
						|
                this._Text = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Text")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        private string _Name; | 
						|
        public string Name | 
						|
        { | 
						|
            get { return this._Name; } | 
						|
            set | 
						|
            { | 
						|
                this._Name = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        private ContextMenu _cMenu; | 
						|
        public ContextMenu cMenu | 
						|
        { | 
						|
            get { return this._cMenu; } | 
						|
            set | 
						|
            { | 
						|
                this._cMenu = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("cMenu")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        private bool? _Checked; | 
						|
        /// <summary> | 
						|
        /// 是否选中 | 
						|
        /// </summary> | 
						|
        public bool? Checked | 
						|
        { | 
						|
            get { return this._Checked; } | 
						|
            set | 
						|
            { | 
						|
                this._Checked = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Checked")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        private bool _IsExpanded; | 
						|
 | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 是否展开 | 
						|
        /// </summary> | 
						|
        public bool IsExpanded | 
						|
        { | 
						|
            get { return this._IsExpanded; } | 
						|
            set | 
						|
            { | 
						|
                this._IsExpanded = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsExpanded")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 节点图标:相对路径 | 
						|
        /// </summary> | 
						|
        private string _Icon; | 
						|
        public string Icon | 
						|
        { | 
						|
            get { return this._Icon; } | 
						|
            set | 
						|
            { | 
						|
                this._Icon = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Icon")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        /// <summary> | 
						|
        /// 是否父节点 | 
						|
        /// </summary> | 
						|
        private bool _IsParent; | 
						|
        public bool IsParent | 
						|
        { | 
						|
            get { return this._IsParent; } | 
						|
            set | 
						|
            { | 
						|
                this._IsParent = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsParent")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        /// <summary> | 
						|
        /// 子节点,默认null | 
						|
        /// </summary> | 
						|
        private ObservableCollection<DicTreeNode> _Nodes; | 
						|
        public ObservableCollection<DicTreeNode> Nodes | 
						|
        { | 
						|
            get { return this._Nodes; } | 
						|
            set | 
						|
            { | 
						|
                this._Nodes = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Nodes")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        private int _Paixu; | 
						|
        public int Paixu | 
						|
        { | 
						|
            get { return this._Paixu; } | 
						|
            set | 
						|
            { | 
						|
                this._Paixu = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Paixu")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        /// <summary> | 
						|
        /// 该节点数据项,默认null | 
						|
        /// </summary> | 
						|
        private object _Data; | 
						|
        public object Data | 
						|
        { | 
						|
            get { return this._Data; } | 
						|
            set | 
						|
            { | 
						|
                this._Data = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Data")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
        private bool _IsOpenEdit; | 
						|
        public bool IsOpenEdit | 
						|
        { | 
						|
            get { return this._IsOpenEdit; } | 
						|
            set | 
						|
            { | 
						|
                this._IsOpenEdit = value; | 
						|
                if (this.PropertyChanged != null) | 
						|
                { | 
						|
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsOpenEdit")); | 
						|
                } | 
						|
            } | 
						|
        } | 
						|
 | 
						|
        #endregion | 
						|
 | 
						|
        #region NodeX-构造函数(初始化) | 
						|
 | 
						|
        /// <summary> | 
						|
        ///  NodeX-构造函数(初始化) | 
						|
        /// </summary> | 
						|
        public DicTreeNode() | 
						|
        { | 
						|
            this.Name = string.Empty; | 
						|
            this.Icon = string.Empty; | 
						|
            this.Checked = false; | 
						|
            this.IsParent = false; | 
						|
 | 
						|
        } | 
						|
 | 
						|
        #endregion | 
						|
    } | 
						|
} |