diff --git a/core/core-backend/pom.xml b/core/core-backend/pom.xml
index 0c2596d5a1..615ba53b31 100644
--- a/core/core-backend/pom.xml
+++ b/core/core-backend/pom.xml
@@ -18,7 +18,21 @@
guava
${guava.version}
-
+
+ io.dataease
+ xpack-base
+ ${project.version}
+
+
+ io.dataease
+ xpack-permissions
+ ${project.version}
+
+
+ io.dataease
+ xpack-sync
+ ${project.version}
+
io.dataease
api-base
diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceTaskServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceTaskServer.java
index d147caedef..426e185381 100644
--- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceTaskServer.java
+++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceTaskServer.java
@@ -57,6 +57,7 @@ public class DatasourceTaskServer {
queryWrapper.eq("ds_id", dsId);
queryWrapper.eq("table_name", tableName);
queryWrapper.orderByDesc("start_time");
+ queryWrapper.last("limit 1");
List logs = coreDatasourceTaskLogMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(logs)) {
return logs.get(0);
@@ -192,6 +193,14 @@ public class DatasourceTaskServer {
datasourceTaskMapper.update(record, updateTaskWrapper);
}
+ public void cleanLog() {
+ long expTime = Long.parseLong("30") * 24L * 3600L * 1000L;
+ long threshold = System.currentTimeMillis() - expTime;
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.lt("start_time", threshold);
+ coreDatasourceTaskLogMapper.delete(queryWrapper);
+ }
+
public enum ScheduleType {
CRON, RIGHTNOW, SIMPLE_CRON, MANUAL
diff --git a/core/core-backend/src/main/java/io/dataease/job/schedule/CleanScheduler.java b/core/core-backend/src/main/java/io/dataease/job/schedule/CleanScheduler.java
index d1c8ecc3f5..375548ba09 100644
--- a/core/core-backend/src/main/java/io/dataease/job/schedule/CleanScheduler.java
+++ b/core/core-backend/src/main/java/io/dataease/job/schedule/CleanScheduler.java
@@ -1,5 +1,6 @@
package io.dataease.job.schedule;
+import io.dataease.datasource.server.DatasourceTaskServer;
import io.dataease.exportCenter.manage.ExportCenterManage;
import io.dataease.utils.LogUtil;
import jakarta.annotation.Resource;
@@ -11,6 +12,8 @@ public class CleanScheduler {
@Resource(name = "exportCenterManage")
private ExportCenterManage exportCenterManage;
+ @Resource(name = "datasourceTaskServer")
+ private DatasourceTaskServer datasourceTaskServer;
@Scheduled(cron = "0 0 0 * * ?")
public void clean() {
@@ -18,4 +21,11 @@ public class CleanScheduler {
exportCenterManage.cleanLog();
LogUtil.info("Execute export file cleaner success");
}
+
+ @Scheduled(cron = "0 0 0 * * ?")
+ public void cleanSyncLog() {
+ LogUtil.info("Start to clean sync log ...");
+ datasourceTaskServer.cleanLog();
+ LogUtil.info("End to clean sync log.");
+ }
}
diff --git a/core/core-backend/src/main/resources/application-standalone.yml b/core/core-backend/src/main/resources/application-standalone.yml
index dc736ca3a7..4503605f38 100644
--- a/core/core-backend/src/main/resources/application-standalone.yml
+++ b/core/core-backend/src/main/resources/application-standalone.yml
@@ -1,8 +1,8 @@
spring:
datasource:
- url: jdbc:mysql://localhost:3306/dataease?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
+ url: jdbc:mysql://123.57.152.118:3306/dataease?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
- password: 123456
+ password: Password123@mysql
messages:
basename: i18n/lic,i18n/core,i18n/permissions,i18n/xpack,i18n/sync
flyway:
diff --git a/core/core-backend/src/main/resources/db/migration/V2.10.4__ddl.sql b/core/core-backend/src/main/resources/db/migration/V2.10.4__ddl.sql
index 66edf3f1fd..af9304a0e4 100644
--- a/core/core-backend/src/main/resources/db/migration/V2.10.4__ddl.sql
+++ b/core/core-backend/src/main/resources/db/migration/V2.10.4__ddl.sql
@@ -1,3 +1,4 @@
UPDATE `visualization_background` SET `name` = 'Board10' WHERE `id` = 'dark_1';
UPDATE `visualization_subject` SET `name` = 'chart.light_theme' WHERE `id` = '10001';
UPDATE `visualization_subject` SET `name` = 'chart.dark_theme' WHERE `id` = '10002';
+CREATE INDEX idx_dataset_table_task_log_A ON core_datasource_task_log(ds_id, table_name, start_time);
diff --git a/core/core-frontend/src/components/plugin/src/index.vue b/core/core-frontend/src/components/plugin/src/index.vue
index 5b56d5a364..915304f1c8 100644
--- a/core/core-frontend/src/components/plugin/src/index.vue
+++ b/core/core-frontend/src/components/plugin/src/index.vue
@@ -108,47 +108,7 @@ defineExpose({
invokeMethod
})
onMounted(async () => {
- const key = 'xpack-model-distributed'
- let distributed = false
- if (wsCache.get(key) === null) {
- const res = await xpackModelApi()
- const resData = isNull(res.data) ? 'null' : res.data
- wsCache.set('xpack-model-distributed', resData)
- distributed = res.data
- } else {
- distributed = wsCache.get(key)
- }
- if (isNull(distributed)) {
- setTimeout(() => {
- emits('loadFail')
- loading.value = false
- }, 1000)
- return
- }
- if (distributed) {
- if (window['DEXPack']) {
- const xpack = await window['DEXPack'].mapping[attrs.jsname]
- plugin.value = xpack.default
- } else if (!window._de_xpack_not_loaded) {
- window._de_xpack_not_loaded = true
- window['VueDe'] = Vue
- window['AxiosDe'] = axios
- window['PiniaDe'] = Pinia
- window['vueRouterDe'] = router
- window['MittAllDe'] = useEmitt().emitter.all
- window['I18nDe'] = i18n
- window['EchartsDE'] = echarts
- if (!window.tinymce) {
- window.tinymce = tinymce
- }
- loadDistributed().then(async res => {
- new Function(res.data)()
- useEmitt().emitter.emit('load-xpack')
- })
- }
- } else {
- loadComponent()
- }
+ loadComponent()
})
diff --git a/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue b/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue
index 81c52f79d0..3bf362903a 100644
--- a/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue
+++ b/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue
@@ -243,12 +243,12 @@ const callbackExportSuc = () => {
const downLoadAll = () => {
if (multipleSelection.value.length === 0) {
tableData.value.forEach(item => {
- window.open(PATH_URL + '/exportCenter/download/' + item.id, openType)
+ window.open(PATH_URL + '/exportCenter/download/' + item.id)
})
return
}
multipleSelection.value.map(ele => {
- window.open(PATH_URL + '/exportCenter/download/' + ele.id, openType)
+ window.open(PATH_URL + '/exportCenter/download/' + ele.id)
})
}
const showMsg = item => {
diff --git a/core/core-frontend/src/websocket/index.ts b/core/core-frontend/src/websocket/index.ts
index 583e26e553..874f21ef3b 100644
--- a/core/core-frontend/src/websocket/index.ts
+++ b/core/core-frontend/src/websocket/index.ts
@@ -45,6 +45,7 @@ export default {
if (!prefix.endsWith('/')) {
prefix += '/'
}
+ console.log('newSockJS')
const socket = new SockJS(prefix + 'websocket?userId=' + wsCache.get('user.uid'))
stompClient = Stomp.over(socket)
const heads = {
diff --git a/de-xpack b/de-xpack
index ab307ea0a7..3bc8d0b376 160000
--- a/de-xpack
+++ b/de-xpack
@@ -1 +1 @@
-Subproject commit ab307ea0a740d14949acac08da652df6e7ae82b2
+Subproject commit 3bc8d0b3767818d5ba49f13b7b72b7e82b4e2c27