Просмотр исходного кода

修复了GC中上传相同文件无法覆盖计算的问题

wzp 3 месяцев назад
Родитель
Сommit
56d69fa5b0
1 измененных файлов: 35 добавлений и 35 удалений
  1. 35
    35
      Front/back/GC/GCcompute.py

+ 35
- 35
Front/back/GC/GCcompute.py Просмотреть файл

@@ -217,6 +217,7 @@ def calculate_period_differences(old_hdiffs, result_height_differences):
217 217
 def insert_records_to_output_table(db_path, file_name, dis_ass, new_hdiff, correction_numbers, period_differences):
218 218
     with sqlite3.connect(db_path) as conn:
219 219
         cursor = conn.cursor()
220
+
220 221
         # 查询 GC_Input_Point 表中的数据
221 222
         query = """
222 223
             SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_RLen, TableName
@@ -225,50 +226,49 @@ def insert_records_to_output_table(db_path, file_name, dis_ass, new_hdiff, corre
225 226
         """
226 227
         cursor.execute(query, (file_name,))
227 228
         records = cursor.fetchall()
228
-        # 检查是否存在相同的 TableName
229
-        check_query = """
230
-            SELECT COUNT(*)
231
-            FROM GC_Output_Point
232
-            WHERE TableName = ?
233
-        """
234
-        cursor.execute(check_query, (file_name,))
235
-        count = cursor.fetchone()[0]
229
+
236 230
         # 获取最长数组的长度
237 231
         max_length = max(len(dis_ass), len(new_hdiff), len(correction_numbers), len(period_differences))
232
+
238 233
         # 填充缺失值
239 234
         dis_ass = dis_ass + [None] * (max_length - len(dis_ass))
240 235
         new_hdiff = new_hdiff + [None] * (max_length - len(new_hdiff))
241 236
         correction_numbers = correction_numbers + [None] * (max_length - len(correction_numbers))
242 237
         period_differences = period_differences + [None] * (max_length - len(period_differences))
243
-        if count > 0:
244
-            # 更新操作
245
-            update_query = """
246
-                UPDATE GC_Output_Point
247
-                SET Dis_Ass = ?, New_HDiff = ?, Correct_Factor = ?, Period_Diff = ?
238
+
239
+        # 遍历记录并更新或插入数据
240
+        for record, deformation_result, height_difference, correction, period_diff in zip(records, dis_ass, new_hdiff, correction_numbers, period_differences):
241
+            # 检查是否存在相同的 New_ID 和 TableName
242
+            check_query = """
243
+                SELECT COUNT(*)
244
+                FROM GC_Output_Point
248 245
                 WHERE New_ID = ? AND TableName = ?
249 246
             """
250
-            updated_records = []
251
-            for record, deformation_result, height_difference, correction, period_diff in zip(records, dis_ass,
252
-                                                                                              new_hdiff,
253
-                                                                                              correction_numbers,
254
-                                                                                              period_differences):
255
-                updated_record = [deformation_result, height_difference, correction, period_diff, record[0], file_name]
256
-                updated_records.append(updated_record)
257
-            cursor.executemany(update_query, updated_records)
258
-        else:
259
-            # 插入操作
260
-            insert_query = """
261
-                INSERT INTO GC_Output_Point (New_ID, New_ResultName, New_SPName, New_EPName, New_RLen, TableName, Dis_Ass, New_HDiff, Correct_Factor, Period_Diff)
262
-                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
263
-            """
264
-            updated_records = []
265
-            for record, deformation_result, height_difference, correction, period_diff in zip(records, dis_ass,
266
-                                                                                              new_hdiff,
267
-                                                                                              correction_numbers,
268
-                                                                                              period_differences):
269
-                updated_record = list(record) + [deformation_result, height_difference, correction, period_diff]
270
-                updated_records.append(updated_record)
271
-            cursor.executemany(insert_query, updated_records)
247
+            cursor.execute(check_query, (record[0], file_name))
248
+            count = cursor.fetchone()[0]
249
+
250
+            if count > 0:
251
+                # 更新操作,以 GC_Input_Point 中的数据为准
252
+                update_query = """
253
+                    UPDATE GC_Output_Point
254
+                    SET New_ResultName = ?, New_SPName = ?, New_EPName = ?, New_RLen = ?, 
255
+                        Dis_Ass = ?, New_HDiff = ?, Correct_Factor = ?, Period_Diff = ?
256
+                    WHERE New_ID = ? AND TableName = ?
257
+                """
258
+                updated_record = [record[1], record[2], record[3], record[4],
259
+                                 deformation_result, height_difference, correction, period_diff,
260
+                                 record[0], file_name]
261
+                cursor.execute(update_query, updated_record)
262
+            else:
263
+                # 插入操作
264
+                insert_query = """
265
+                    INSERT INTO GC_Output_Point (New_ID, New_ResultName, New_SPName, New_EPName, New_RLen, TableName, Dis_Ass, New_HDiff, Correct_Factor, Period_Diff)
266
+                    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
267
+                """
268
+                updated_record = [record[0], record[1], record[2], record[3], record[4], file_name,
269
+                                 deformation_result, height_difference, correction, period_diff]
270
+                cursor.execute(insert_query, updated_record)
271
+
272 272
         conn.commit()
273 273
 
274 274
 

Загрузка…
Отмена
Сохранить