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