From 033a226ec8b0492a8c8fbf4c21b22a380cd258e4 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Thu, 11 Jun 2026 18:47:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor(X-Pack):=20=E5=AF=B9=E6=9D=83=E9=99=90?= =?UTF-8?q?=E4=BD=93=E7=B3=BB=E8=BF=9B=E8=A1=8C=E9=87=8D=E6=9E=84-17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/listener/InitSqlListener.java | 48 +++++++------------ .../system/manage/SysParameterManage.java | 13 ++--- .../java/io/dataease/initSql/Version.java | 16 +++++-- 3 files changed, 34 insertions(+), 43 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/listener/InitSqlListener.java b/core/core-backend/src/main/java/io/dataease/listener/InitSqlListener.java index 1edf6a9cc3..b8247b1b25 100644 --- a/core/core-backend/src/main/java/io/dataease/listener/InitSqlListener.java +++ b/core/core-backend/src/main/java/io/dataease/listener/InitSqlListener.java @@ -29,6 +29,9 @@ public class InitSqlListener implements ApplicationRunner { @Override public void run(ApplicationArguments args) { + List versionRecords = deStandaloneVersionRepository.findRecords(); + boolean isUpgrade = !CollectionUtils.isEmpty(versionRecords); + List sqlBlocks = new ArrayList<>(); Map beansOfType = SpringContextUtil.getApplicationContext().getBeansOfType(SqlBlock.class); sqlBlocks.addAll(beansOfType.entrySet().stream().map(Map.Entry::getValue).toList()); @@ -38,11 +41,21 @@ public class InitSqlListener implements ApplicationRunner { String versionGroup = block.getVersionGroup(); groupedSqlBlocks.computeIfAbsent(versionGroup, k -> new ArrayList<>()).add(block); } - for (String versionGroup : groupedSqlBlocks.keySet()) { - List toMigrateSqlBlocks = groupedSqlBlocks.get(versionGroup); + + if (isUpgrade) { + executeGroups(groupedSqlBlocks, "upgrade"); + } else { + executeGroups(groupedSqlBlocks, "1", "2", "3"); + } + } + + private void executeGroups(Map> groupedSqlBlocks, String... groups) { + for (String group : groups) { + List toMigrateSqlBlocks = groupedSqlBlocks.get(group); + if (toMigrateSqlBlocks == null) continue; toMigrateSqlBlocks.sort(versionComparator); int versionRank = findLastRank(); - DeStandaloneVersion lastVersion = getLastVersion(versionGroup); + DeStandaloneVersion lastVersion = getLastVersion(group); if (lastVersion == null) { for (SqlBlock sqlBlock : toMigrateSqlBlocks) { versionRank++; @@ -98,33 +111,6 @@ public class InitSqlListener implements ApplicationRunner { return null; } - private Comparator versionComparator = new Comparator() { - @Override - public int compare(SqlBlock sb1, SqlBlock sb2) { - Version v1 = sb1.getVersion(); - Version v2 = sb2.getVersion(); - - int i = 0; - while (i < v1.getParts().size() || i < v2.getParts().size()) { - if (i < v1.getParts().size() && i < v2.getParts().size()) { - int thisPart = Integer.parseInt(v1.getParts().get(i)); - int otherPart = Integer.parseInt(v2.getParts().get(i)); - if (thisPart != otherPart) { - return thisPart - otherPart; - } - } else if (i < v1.getParts().size()) { - if (Integer.parseInt(v1.getParts().get(i)) != 0) { - return 1; - } - } else { - if (Integer.parseInt(v2.getParts().get(i)) != 0) { - return -1; - } - } - i++; - } - return 0; - } - }; + private Comparator versionComparator = (sb1, sb2) -> sb1.getVersion().compareTo(sb2.getVersion()); } diff --git a/core/core-backend/src/main/java/io/dataease/system/manage/SysParameterManage.java b/core/core-backend/src/main/java/io/dataease/system/manage/SysParameterManage.java index 57953faef2..736ba40918 100644 --- a/core/core-backend/src/main/java/io/dataease/system/manage/SysParameterManage.java +++ b/core/core-backend/src/main/java/io/dataease/system/manage/SysParameterManage.java @@ -17,6 +17,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -42,14 +43,10 @@ public class SysParameterManage { private DatasourceServer datasourceServer; public String singleVal(String key) { - Specification spec = (root, query, cb) -> { - List predicates = new ArrayList<>(); - predicates.add(cb.equal(root.get("pkey"), key)); - return cb.and(predicates.toArray(new Predicate[0])); - }; - CoreSysSetting sysSetting = coreSysSettingRepository.findOne(spec).orElse(null); - if (ObjectUtils.isNotEmpty(sysSetting)) { - return sysSetting.getPval(); + Specification spec = (root, query, cb) -> cb.equal(root.get("pkey"), key); + List list = coreSysSettingRepository.findAll(spec, PageRequest.of(0, 1)).toList(); + if (CollectionUtils.isNotEmpty(list)) { + return list.getFirst().getPval(); } return null; } diff --git a/sdk/common/src/main/java/io/dataease/initSql/Version.java b/sdk/common/src/main/java/io/dataease/initSql/Version.java index 9aff5e0e4a..efb008b486 100644 --- a/sdk/common/src/main/java/io/dataease/initSql/Version.java +++ b/sdk/common/src/main/java/io/dataease/initSql/Version.java @@ -19,22 +19,30 @@ public class Version implements Comparable { return Arrays.asList(version.split("\\.")); } + private static int parsePart(String s) { + try { + return Integer.parseInt(s); + } catch (NumberFormatException e) { + return 0; + } + } + @Override public int compareTo(Version other) { int i = 0; while (i < parts.size() || i < other.parts.size()) { if (i < parts.size() && i < other.parts.size()) { - int thisPart = Integer.parseInt(parts.get(i)); - int otherPart = Integer.parseInt(other.parts.get(i)); + int thisPart = parsePart(parts.get(i)); + int otherPart = parsePart(other.parts.get(i)); if (thisPart != otherPart) { return thisPart - otherPart; } } else if (i < parts.size()) { - if (Integer.parseInt(parts.get(i)) != 0) { + if (parsePart(parts.get(i)) != 0) { return 1; } } else { - if (Integer.parseInt(other.parts.get(i)) != 0) { + if (parsePart(other.parts.get(i)) != 0) { return -1; } }