From 526bf6c5cbe820227b190cf098d7709d52b0b59c Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 8 May 2024 17:56:13 +0800 Subject: [PATCH 1/8] =?UTF-8?q?perf(X-Pack):=20=E5=AE=9A=E6=97=B6=E6=8A=A5?= =?UTF-8?q?=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/commons/utils/CronUtils.java | 2 +- .../dataease/job/schedule/DeTaskExecutor.java | 14 +++++--------- .../job/schedule/DeXpackScheduleJob.java | 18 ++++++------------ de-xpack | 2 +- 4 files changed, 13 insertions(+), 23 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/commons/utils/CronUtils.java b/core/core-backend/src/main/java/io/dataease/commons/utils/CronUtils.java index 34116dc693..41c38ac9d0 100644 --- a/core/core-backend/src/main/java/io/dataease/commons/utils/CronUtils.java +++ b/core/core-backend/src/main/java/io/dataease/commons/utils/CronUtils.java @@ -34,7 +34,7 @@ public class CronUtils { return date; } - public static String cron() { + public static String tempCron() { Calendar instance = Calendar.getInstance(); instance.add(Calendar.SECOND, 5); return instance.get(Calendar.SECOND) + " " + diff --git a/core/core-backend/src/main/java/io/dataease/job/schedule/DeTaskExecutor.java b/core/core-backend/src/main/java/io/dataease/job/schedule/DeTaskExecutor.java index 083576fde7..a2f1f2ae22 100644 --- a/core/core-backend/src/main/java/io/dataease/job/schedule/DeTaskExecutor.java +++ b/core/core-backend/src/main/java/io/dataease/job/schedule/DeTaskExecutor.java @@ -10,8 +10,9 @@ import org.quartz.TriggerKey; import org.springframework.stereotype.Component; import java.util.Date; +import java.util.Map; -@Component +@Component("deTaskExecutor") public class DeTaskExecutor { protected static final String IS_TEMP_TASK = "isTempTask"; @@ -20,12 +21,7 @@ public class DeTaskExecutor { private ScheduleManager scheduleManager; @XpackInteract(value = "xpackTaskExecutor", replace = true) - public boolean execute(Long taskId) { - return false; - } - - @XpackInteract(value = "xpackTaskExecutor", replace = true) - public boolean executeTemplate(Long taskId) { + public boolean execute(Map taskData) { return false; } @@ -44,7 +40,7 @@ public class DeTaskExecutor { scheduleManager.addOrUpdateCronJob(jobKey, triggerKey, DeXpackScheduleJob.class, cron, new Date(startTime), end, jobDataMap); } - public void fireNow(Long taskId) throws Exception{ + public void fireNow(Long taskId) throws Exception { String key = taskId.toString(); JobKey jobKey = new JobKey(key, key); scheduleManager.fireNow(jobKey); @@ -56,7 +52,7 @@ public class DeTaskExecutor { TriggerKey triggerKey = new TriggerKey(key, key); JobDataMap jobDataMap = new JobDataMap(); jobDataMap.put(IS_TEMP_TASK, true); - String cron = CronUtils.cron(); + String cron = CronUtils.tempCron(); jobDataMap.put("taskId", taskId); scheduleManager.addOrUpdateCronJob(jobKey, triggerKey, DeXpackScheduleJob.class, cron, new Date(startTime), null, jobDataMap); } diff --git a/core/core-backend/src/main/java/io/dataease/job/schedule/DeXpackScheduleJob.java b/core/core-backend/src/main/java/io/dataease/job/schedule/DeXpackScheduleJob.java index 2b57f6cc2f..a8cf377930 100644 --- a/core/core-backend/src/main/java/io/dataease/job/schedule/DeXpackScheduleJob.java +++ b/core/core-backend/src/main/java/io/dataease/job/schedule/DeXpackScheduleJob.java @@ -1,5 +1,6 @@ package io.dataease.job.schedule; +import io.dataease.license.utils.LicenseUtil; import io.dataease.utils.CommonBeanFactory; import jakarta.annotation.Resource; import org.quartz.*; @@ -9,26 +10,19 @@ import java.util.Objects; @Component public class DeXpackScheduleJob implements Job { - @Resource - private DeTaskExecutor deTaskExecutor; + @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { Trigger trigger = jobExecutionContext.getTrigger(); JobKey jobKey = trigger.getJobKey(); JobDataMap jobDataMap = jobExecutionContext.getJobDetail().getJobDataMap(); - Long taskId = jobDataMap.getLong("taskId"); - boolean isTempTask = jobDataMap.getBoolean("isTempTask"); - boolean taskLoaded = false; - if (isTempTask) { - taskLoaded = deTaskExecutor.executeTemplate(taskId); - } else { - taskLoaded = deTaskExecutor.execute(taskId); - } + DeTaskExecutor deTaskExecutor = CommonBeanFactory.getBean(DeTaskExecutor.class); + assert deTaskExecutor != null; + LicenseUtil.validate(); + boolean taskLoaded = deTaskExecutor.execute(jobDataMap); if (!taskLoaded) { Objects.requireNonNull(CommonBeanFactory.getBean(ScheduleManager.class)).removeJob(jobKey, trigger.getKey()); } - - } } diff --git a/de-xpack b/de-xpack index 1ce831779b..b61bcfc732 160000 --- a/de-xpack +++ b/de-xpack @@ -1 +1 @@ -Subproject commit 1ce831779b69626bdb865b36454b7f91ce17eeb7 +Subproject commit b61bcfc7325c5d9a1f30564d27dab3f098ac228c From a39b32a6fe961d0de17317b44948a4e584b477e5 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Sat, 11 May 2024 18:30:01 +0800 Subject: [PATCH 2/8] =?UTF-8?q?perf(X-Pack):=20=E4=BC=98=E5=8C=96=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/drawer-filter/src/DrawerEnumFilter.vue | 3 ++- .../src/components/drawer-filter/src/DrawerFilter.vue | 1 + .../src/components/drawer-filter/src/DrawerTimeFilter.vue | 3 ++- .../src/components/drawer-filter/src/DrawerTreeFilter.vue | 1 + de-xpack | 2 +- .../src/main/java/io/dataease/api/report/ReportApi.java | 6 +++++- .../dataease/api/report/dto/ReportInstanceDelRequest.java | 2 ++ .../io/dataease/api/report/dto/ReportInstanceRequest.java | 2 ++ .../java/io/dataease/api/report/vo/ReportInstanceVO.java | 3 +++ .../java/io/dataease/api/permissions/user/api/UserApi.java | 4 ++++ 10 files changed, 23 insertions(+), 4 deletions(-) diff --git a/core/core-frontend/src/components/drawer-filter/src/DrawerEnumFilter.vue b/core/core-frontend/src/components/drawer-filter/src/DrawerEnumFilter.vue index ce21719bde..faed0b30cb 100644 --- a/core/core-frontend/src/components/drawer-filter/src/DrawerEnumFilter.vue +++ b/core/core-frontend/src/components/drawer-filter/src/DrawerEnumFilter.vue @@ -53,6 +53,7 @@ defineExpose({ diff --git a/core/core-frontend/src/store/modules/data-visualization/viewSelector.ts b/core/core-frontend/src/store/modules/data-visualization/viewSelector.ts new file mode 100644 index 0000000000..666d7c8adc --- /dev/null +++ b/core/core-frontend/src/store/modules/data-visualization/viewSelector.ts @@ -0,0 +1,57 @@ +import { defineStore } from 'pinia' +import { store } from '@/store/index' + +interface ViewSelectorState { + enable: boolean + viewIdList: string[] +} + +export const viewSelectorStore = defineStore('viewSelectorStore', { + state: (): ViewSelectorState => { + return { + enable: false, + viewIdList: [] + } + }, + getters: { + getEnable(): boolean { + return this.enable + }, + getViewIdList(): string[] { + return this.viewIdList + } + }, + actions: { + setEnable(enable: boolean) { + this.enable = enable + }, + remove(id?: string) { + let len = this.viewIdList.length + if (!len) { + return + } + if (!id) { + this.viewIdList = [] + return + } + while (len--) { + if (this.viewIdList[len] === id) { + this.viewIdList.splice(len, 1) + } + } + }, + add(id: string) { + if (!this.viewIdList.includes(id)) { + this.viewIdList.push(id) + } + }, + clear() { + this.enable = false + this.viewIdList = [] + } + } +}) + +export const useViewSelectorStoreWithOut = () => { + return viewSelectorStore(store) +} diff --git a/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue b/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue index 3a48d0d067..8b4c21b366 100644 --- a/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue +++ b/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue @@ -25,6 +25,10 @@ const props = defineProps({ type: Boolean, required: false, default: false + }, + isSelector: { + type: Boolean, + default: false } }) @@ -119,6 +123,7 @@ defineExpose({ :canvas-view-info="state.canvasViewInfoPreview" :dv-info="state.dvInfo" :cur-gap="state.curPreviewGap" + :is-selector="props.isSelector" > viewOption(@PathVariable("resourceId") Long resourceId); } diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/chart/vo/ViewSelectorVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/chart/vo/ViewSelectorVO.java new file mode 100644 index 0000000000..8bd68009c3 --- /dev/null +++ b/sdk/api/api-base/src/main/java/io/dataease/api/chart/vo/ViewSelectorVO.java @@ -0,0 +1,24 @@ +package io.dataease.api.chart.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class ViewSelectorVO implements Serializable { + @Serial + private static final long serialVersionUID = -7163837502596313691L; + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + private String title; + + private String type; + + @JsonSerialize(using = ToStringSerializer.class) + private Long pid; +} diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/report/ReportApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/report/ReportApi.java index 724b1a65d8..7d47125b8c 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/report/ReportApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/report/ReportApi.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.dataease.api.report.dto.*; import io.dataease.api.report.vo.ReportGridVO; +import io.dataease.api.report.vo.ReportInfoVO; import io.dataease.api.report.vo.ReportInstanceVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -57,7 +58,7 @@ public interface ReportApi { @Operation(summary = "查询详情") @GetMapping("/info/{taskId}") - ReportEditor info(@PathVariable("taskId") Long taskId); + ReportInfoVO info(@PathVariable("taskId") Long taskId); @Operation(summary = "查询日志列表") @Parameters({ diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java new file mode 100644 index 0000000000..b5796cec98 --- /dev/null +++ b/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java @@ -0,0 +1,57 @@ +package io.dataease.api.report.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +@Data +public class ReportInfoVO implements Serializable { + @Serial + private static final long serialVersionUID = 2287397931951305464L; + + @JsonSerialize(using = ToStringSerializer.class) + private Long taskId; + + private String name; + + private String title; + + private String content; + + private Integer rtid; + + @JsonSerialize(using = ToStringSerializer.class) + private Long rid; + + private Integer format; + + private List viewIdList; + + private Integer viewDataRange; + + private String pixel; + + private List reciFlagList; + + private List uidList; + + private List ridList; + + private List emailList; + + private List larkGroupList; + + private Integer extWaitTime; + + private Integer rateType; + + private String rateVal; + + private Long startTime; + + private Long endTime; +} From 5ee80f3270b888c34d798d1466453a017e9853c2 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 14 May 2024 18:32:40 +0800 Subject: [PATCH 6/8] =?UTF-8?q?perf(X-Pack):=20=E5=AE=9A=E6=97=B6=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E9=A1=B5=E9=9D=A2=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- de-xpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/de-xpack b/de-xpack index a9e1ee9f1a..f882c1de65 160000 --- a/de-xpack +++ b/de-xpack @@ -1 +1 @@ -Subproject commit a9e1ee9f1a3e6d64329abc0b195f46bcdd3a8992 +Subproject commit f882c1de65bb6ac13ec51a6038e15858e92314d0 From 3574d310c86daa18ffd42841f0bec14f1bef58a3 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 15 May 2024 17:51:43 +0800 Subject: [PATCH 7/8] =?UTF-8?q?perf(X-Pack):=20=E5=AE=9A=E6=97=B6=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E8=B6=85=E9=95=BF=E4=BB=AA=E8=A1=A8=E6=9D=BF=E6=88=AA?= =?UTF-8?q?=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data-visualization/canvas/DePreview.vue | 21 ++++++++++++++++--- .../views/chart/components/views/index.vue | 7 ++++++- de-xpack | 2 +- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/core/core-frontend/src/components/data-visualization/canvas/DePreview.vue b/core/core-frontend/src/components/data-visualization/canvas/DePreview.vue index 070ac231fc..67dc784914 100644 --- a/core/core-frontend/src/components/data-visualization/canvas/DePreview.vue +++ b/core/core-frontend/src/components/data-visualization/canvas/DePreview.vue @@ -12,6 +12,7 @@ import CanvasOptBar from '@/components/visualization/CanvasOptBar.vue' import { isMainCanvas } from '@/utils/canvasUtils' import { activeWatermark } from '@/components/watermark/watermark' import { personInfoApi } from '@/api/user' +import router from '@/router' const dvMainStore = dvMainStoreWithOut() const { pcMatrixCount, curComponent, mobileInPc } = storeToRefs(dvMainStore) @@ -89,7 +90,9 @@ const userInfo = ref(null) const dashboardActive = computed(() => { return dvInfo.value.type === 'dashboard' }) - +const isReport = computed(() => { + return !!router.currentRoute.value.query?.report +}) const canvasStyle = computed(() => { let style = {} if (canvasStyleData.value && canvasStyleData.value.width && isMainCanvas(canvasId.value)) { @@ -109,6 +112,12 @@ const canvasStyle = computed(() => { }) const getDownloadStatusMainHeight = () => { + if (!previewCanvas.value?.childNodes) { + nextTick(() => { + canvasStyle.value.height = getDownloadStatusMainHeight() + }) + return '100%' + } const children = previewCanvas.value.childNodes let maxHeight = 0 @@ -130,7 +139,7 @@ watch( } ) -const restore = () => { +const resetLayout = () => { if (downloadStatus.value) { return } @@ -156,6 +165,12 @@ const restore = () => { } }) } +const restore = () => { + if (isReport.value) { + return + } + resetLayout() +} const getShapeItemShowStyle = item => { return getShapeItemStyle(item, { @@ -223,7 +238,7 @@ const initWatermark = (waterDomId = 'preview-canvas-main') => { onMounted(() => { initRefreshTimer() - restore() + resetLayout() window.addEventListener('resize', restore) const erd = elementResizeDetectorMaker() erd.listenTo(document.getElementById(domId), () => { diff --git a/core/core-frontend/src/views/chart/components/views/index.vue b/core/core-frontend/src/views/chart/components/views/index.vue index f2f93c3c8c..b23431d3c2 100644 --- a/core/core-frontend/src/views/chart/components/views/index.vue +++ b/core/core-frontend/src/views/chart/components/views/index.vue @@ -599,7 +599,12 @@ const iconSize = computed(() => {