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