From b81c466cd32be4307e3df35312a492d882d46b29 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 30 六月 2023 20:27:53 +0800
Subject: [PATCH] 解决CPT数据重复发布失败

---
 ExportMap/cs/SGUtils.cs |   41 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/ExportMap/cs/SGUtils.cs b/ExportMap/cs/SGUtils.cs
index 21d1d7e..37b7c31 100644
--- a/ExportMap/cs/SGUtils.cs
+++ b/ExportMap/cs/SGUtils.cs
@@ -73,12 +73,14 @@
             Tools.SetIsModel(args, list);
             MoveFiles(list);
 
-            string names = GetNames(list);
+            //string names = GetNames(list);
+            string sql = getSql(list);
             for (int i = 0; i < 61; i++)
             {
                 Thread.Sleep(3000);
 
-                List<SpatialItem> items = SelectItems(names);
+                //List<SpatialItem> items = SelectItems(names);
+                List<SpatialItem> items = SelectItemsBySql(sql);
                 if (null == items || items.Count == 0) continue;
 
                 return InsertInto(list, items, args);
@@ -87,6 +89,35 @@
             return null;
         }
 
+        /// <summary>
+        /// 鑾峰彇鏌ヨSQL
+        /// </summary>
+        private string getSql(List<SysMeta> metas)
+        {
+            List<string> list = new List<string>();
+            foreach (SysMeta meta in metas)
+            {
+                list.Add("Name like '%_" + meta.name + "'");
+            }
+
+            string filters = string.Join(" or ", list);
+
+
+            return string.Format("select id, Name, RelativePath, LayerName, DataSourceId, Description from SpatialItems where {0} order by id desc", filters);
+        }
+
+        /// <summary>
+        /// 鏌ヨSG鏁版嵁椤�
+        /// </summary>
+        private List<SpatialItem> SelectItemsBySql(string sql)
+        {
+            DataTable dt = SQLiteHelper.GetDataTable(sql);
+            List<SpatialItem> list = ModelHandler.FillModel<SpatialItem>(dt);
+
+            return list;
+        }
+
+        #region 搴熷純 *
         /// <summary>
         /// 鏌ヨSG鏁版嵁椤�
         /// </summary>
@@ -113,6 +144,7 @@
 
             return string.Join(",", list);
         }
+        #endregion
 
         /// <summary>
         /// 绉婚櫎绌烘枃浠�
@@ -155,8 +187,9 @@
             List<int> ids = new List<int>();
             foreach (SysMeta meta in list)
             {
-                IEnumerable<SpatialItem> iterator = from item in items where item.Name.Equals(meta.id + "_" + meta.name) select item;
-                if (null == iterator) return ids;
+                //IEnumerable<SpatialItem> iterator = from item in items where item.Name.Equals(meta.id + "_" + meta.name) select item;
+                IEnumerable<SpatialItem> iterator = from item in items where item.Name.Contains("_" + meta.name) select item;
+                if (null == iterator || 0 == iterator.Count()) return ids;
 
                 meta.verid = iterator.First().id;
                 int pubid = InsertToDB(meta, args);

--
Gitblit v1.9.3