From b950596667b4b9400e38233941153bcfc21c88c4 Mon Sep 17 00:00:00 2001
From: 6c <420680616@qq.com>
Date: 星期五, 26 九月 2025 09:27:08 +0800
Subject: [PATCH] 请求历史特殊处理-兼容历史core,采用setTable方法设置表名

---
 product-server-data-center/src/main/java/com/product/data/center/service/SpDealService.java |   55 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 45 insertions(+), 10 deletions(-)

diff --git a/product-server-data-center/src/main/java/com/product/data/center/service/SpDealService.java b/product-server-data-center/src/main/java/com/product/data/center/service/SpDealService.java
index 3857fe2..76bd893 100644
--- a/product-server-data-center/src/main/java/com/product/data/center/service/SpDealService.java
+++ b/product-server-data-center/src/main/java/com/product/data/center/service/SpDealService.java
@@ -18,6 +18,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -172,12 +173,13 @@
                                     // 妫�鏌ユ槸鍚︽墍鏈夎〃閮藉瓨鍦紝鑻ユ槸涓嶅瓨鍦紝閭d箞鍒涘缓
                                     checkTableIfNoThenCreate(monthMap.keySet(), reportTableNamePrefix, createTableService);
 
-                                    String querySql = joinReportDbQuerySql(monthMap, reportTableNamePrefix, sourceInfo);
+                                    String querySql = joinReportDbQuerySql(monthMap, reportTableNamePrefix, sourceInfo, singleSubDbTableInfoObj.getString("auto_field"));
                                     DataTableEntity reportDbExistsDte = reportDbe.getDao().getList(querySql);
                                     for (int i = 0; i < reportDbExistsDte.getRows(); i++) {
                                         FieldSetEntity reportDbExistsFse = reportDbExistsDte.getFieldSetEntity(i);
                                         for (Map<String, FieldSetEntity> singleMonthMap : monthMap.values()) {
-                                            singleMonthMap.remove(reportDbExistsFse.getString("pre_master_key"));
+                                            singleMonthMap.remove(formatNumberString(reportDbExistsFse.getString("pre_master_key")));
+                                            singleMonthMap.remove(formatNumberString(reportDbExistsFse.getString(singleSubDbTableInfoObj.getString("auto_field"))));
                                         }
                                     }
                                     for (Map.Entry<String, Map<String, FieldSetEntity>> entry : monthMap.entrySet()) {
@@ -210,6 +212,30 @@
     }
 
     /**
+     * 鍒ゆ柇瀛楃涓叉槸鍚︿负鏁板瓧锛堟暣鏁版垨灏忔暟锛夛紝濡傛灉鏄紝鍒欏幓鎺夋湯灏惧浣欑殑0锛堝彲鑳藉悓鏃跺幓鎺夊皬鏁扮偣锛�
+     * @param str 杈撳叆瀛楃涓�
+     * @return 鏍煎紡鍖栧悗鐨勫瓧绗︿覆锛屽鏋滀笉鏄暟瀛楀垯杩斿洖鍘熷瓧绗︿覆
+     */
+    private String formatNumberString(String str) {
+        if (str == null) {
+            return null;
+        }
+
+        try {
+            // 浣跨敤 BigDecimal 瑙f瀽锛屽畠鑳藉鐞嗘暣鏁般�佸皬鏁般�佺瀛﹁鏁版硶绛�
+            BigDecimal bd = new BigDecimal(str);
+            // 鍘绘帀鏈熬鐨勯浂
+            bd = bd.stripTrailingZeros();
+
+            // 杞崲涓哄瓧绗︿覆锛堜娇鐢� toPlainString 閬垮厤绉戝璁℃暟娉曪級
+            return bd.toPlainString();
+        } catch (NumberFormatException e) {
+            // 濡傛灉涓嶆槸鏈夋晥鏁板瓧锛岃繑鍥炲師瀛楃涓�
+            return str;
+        }
+    }
+
+    /**
      * 璁板綍閿欒鏃ュ織
      * @param waitInsertDte 绛夊緟鎻掑叆鐨勬暟鎹甦te
      * @param e             閿欒
@@ -223,7 +249,8 @@
             DataTableEntity logDte = new DataTableEntity();
             for (int i = 0; i < waitInsertDte.getRows(); i++) {
                 FieldSetEntity singlePageDataFse = waitInsertDte.getFieldSetEntity(i);
-                FieldSetEntity logFse = new FieldSetEntity("product_sys_sp_deal_log");
+                FieldSetEntity logFse = new FieldSetEntity();
+                logFse.setTableName("product_sys_sp_deal_log");
                 logFse.setValue("content", BaseUtil.fieldSetEntityToJson(singlePageDataFse).toJSONString());
                 logFse.setValue("error", errorInfo);
                 logFse.setValue("group_uuid", groupUUID);
@@ -232,7 +259,8 @@
             }
             baseDao.add(logDte);
         } else {
-            FieldSetEntity logFse = new FieldSetEntity("product_sys_sp_deal_log");
+            FieldSetEntity logFse = new FieldSetEntity();
+            logFse.setTableName("product_sys_sp_deal_log");
             logFse.setValue("content", "闈炴暟鎹鐞嗛樁娈靛嚭閿�");
             logFse.setValue("error", errorInfo);
             logFse.setValue("group_uuid", groupUUID);
@@ -315,7 +343,8 @@
             }
         }
 
-        FieldSetEntity newDictFse = new FieldSetEntity(CmnConst.PRODUCT_SYS_DICT);
+        FieldSetEntity newDictFse = new FieldSetEntity();
+        newDictFse.setTableName(CmnConst.PRODUCT_SYS_DICT);
         newDictFse.setValue("dict_name", DICT_NAME_REQUEST_HISTORY);
         newDictFse.setValue("is_used", 1);
         newDictFse.setValue("sequence", 1);
@@ -357,18 +386,24 @@
      * @param monthMap              鏈堜唤map
      * @param reportTableNamePrefix 鎶ヨ〃搴撹〃鍚嶅墠缂�
      * @param sourceInfo            閲囬泦琛╥d
-     * @return  鎶ヨ〃搴撴煡璇㈣鍙�
+     * @param primaryKeyField       涓婚敭瀛楁
+     * @return 鎶ヨ〃搴撴煡璇㈣鍙�
      */
-    private String joinReportDbQuerySql(Map<String, Map<String, FieldSetEntity>> monthMap, String reportTableNamePrefix, String sourceInfo) {
+    private String joinReportDbQuerySql(Map<String, Map<String, FieldSetEntity>> monthMap, String reportTableNamePrefix, String sourceInfo, String primaryKeyField) {
         StringBuilder sql = new StringBuilder(128);
-        String model = "SELECT * FROM %s_%s WHERE source_info='%s' AND %s";
+        String model1 = "SELECT * FROM %s_%s WHERE source_info='%s' AND %s\n";
+        String model2 = "SELECT * FROM %s_%s WHERE %s\n";
         for (Map.Entry<String, Map<String, FieldSetEntity>> entry : monthMap.entrySet()) {
             String month = entry.getKey();
             Set<String> masterKeySet = entry.getValue().keySet();
             if (sql.length() > 0) {
-                sql.append("\nUNION ALL\n");
+                sql.append("UNION ALL\n");
             }
-            sql.append(String.format(model, reportTableNamePrefix, month, sourceInfo, BaseUtil.buildQuestionMarkFilter("pre_master_key", masterKeySet.toArray(), true)));
+            String checkPreMasterKeyPart = BaseUtil.buildQuestionMarkFilter("pre_master_key", masterKeySet.toArray(), true);
+            String checkPrimaryKeyPart =  BaseUtil.buildQuestionMarkFilter(primaryKeyField, masterKeySet.toArray(), true);
+            sql.append(String.format(model1, reportTableNamePrefix, month, sourceInfo, checkPreMasterKeyPart));
+            sql.append("UNION ALL\n");
+            sql.append(String.format(model2, reportTableNamePrefix, month, checkPrimaryKeyPart));
         }
         return sql.toString();
     }

--
Gitblit v1.9.2