From 429c016661516986c737f74951ed2cfae18ed984 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Wed, 31 Jul 2024 21:29:55 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E5=90=8E=E7=AB=AF-?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BB=93=E5=BA=93=E5=90=8C=E6=AD=A5=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=BA=BA=E5=B7=A5=E5=B9=B2=E9=A2=84=E7=BB=88=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1213114991738880]后端-数据仓库同步支持人工干预终止 http://192.168.0.96:8090/demo/rdm.html#/task-detail/939050947543040/939050947543050/1213114991738880 --- .../mapper/DataWarehouseDataSourceMapper.java | 5 +++ .../mapper/DataWarehouseDataSourceMapper.xml | 21 +++++++++++- .../datawarehouse/dto/DataSourceVo.java | 32 ++++++++++++++++++- .../framework/datawarehouse/enums/Status.java | 1 + .../service/DataSourceServiceImpl.java | 7 ++-- .../datawarehouse/ReportDataSourceJob.java | 5 +++ .../changelog/2024-07-31/neatlogic_tenant.sql | 5 +++ .../changelog/2024-07-31/version.json | 10 ++++++ .../resources/framework/sqlscript/ddl.sql | 5 ++- 9 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/neatlogic/resources/framework/changelog/2024-07-31/neatlogic_tenant.sql create mode 100644 src/main/resources/neatlogic/resources/framework/changelog/2024-07-31/version.json diff --git a/src/main/java/neatlogic/framework/datawarehouse/dao/mapper/DataWarehouseDataSourceMapper.java b/src/main/java/neatlogic/framework/datawarehouse/dao/mapper/DataWarehouseDataSourceMapper.java index b56d20878..ff53cf089 100644 --- a/src/main/java/neatlogic/framework/datawarehouse/dao/mapper/DataWarehouseDataSourceMapper.java +++ b/src/main/java/neatlogic/framework/datawarehouse/dao/mapper/DataWarehouseDataSourceMapper.java @@ -20,6 +20,7 @@ import neatlogic.framework.datawarehouse.dto.DataSourceParamVo; import neatlogic.framework.datawarehouse.dto.DataSourceVo; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; public interface DataWarehouseDataSourceMapper { @@ -79,6 +80,10 @@ public interface DataWarehouseDataSourceMapper { void resetReportDataSourceStatus(); + void updateDataSourceJobTimeById(DataSourceVo dataSourceVo); + + void updateDataSourceNextFireTimeById(@Param("id") Long id, @Param("nextFireTime") Date nextFireTime); + void deleteReportDataSourceById(Long id); //void deleteReportDataSourceConditionByDataSourceId(Long dataSourceId); diff --git a/src/main/java/neatlogic/framework/datawarehouse/dao/mapper/DataWarehouseDataSourceMapper.xml b/src/main/java/neatlogic/framework/datawarehouse/dao/mapper/DataWarehouseDataSourceMapper.xml index 0af246f72..7e6b5875f 100644 --- a/src/main/java/neatlogic/framework/datawarehouse/dao/mapper/DataWarehouseDataSourceMapper.xml +++ b/src/main/java/neatlogic/framework/datawarehouse/dao/mapper/DataWarehouseDataSourceMapper.xml @@ -174,7 +174,10 @@ along with this program. If not, see .--> expire_count as expireCount, expire_unit as expireUnit, cron_expression as cronExpression, - is_active as isActive + is_active as isActive, + last_fire_time as lastFireTime, + last_finish_time as lastFinishTime, + next_fire_time as nextFireTime from datawarehouse_datasource order by id desc @@ -350,6 +353,22 @@ along with this program. If not, see .--> where id = #{id} + + UPDATE `datawarehouse_datasource` + SET + `last_fire_time` = #{lastFireTime}, + `last_finish_time` = #{lastFinishTime}, + `next_fire_time` = #{nextFireTime} + WHERE `id` = #{id} + + + + UPDATE `datawarehouse_datasource` + SET + `next_fire_time` = #{nextFireTime} + WHERE `id` = #{id} + + insert into datawarehouse_datasource_param (id, datasource_id, name, label, default_value) diff --git a/src/main/java/neatlogic/framework/datawarehouse/dto/DataSourceVo.java b/src/main/java/neatlogic/framework/datawarehouse/dto/DataSourceVo.java index 7ff3dd7a6..085b83b26 100644 --- a/src/main/java/neatlogic/framework/datawarehouse/dto/DataSourceVo.java +++ b/src/main/java/neatlogic/framework/datawarehouse/dto/DataSourceVo.java @@ -30,6 +30,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Optional; @@ -81,7 +82,12 @@ public class DataSourceVo extends BasePageVo { private List paramList = new ArrayList<>();//需要默认值为空数组,避免空指针异常 @EntityField(name = "nfdd.datasourcevo.entityfield.name.dbtype", type = ApiParamType.STRING) private String dbType; - + @EntityField(name = "common.lastfiretime", type = ApiParamType.LONG) + private Date lastFireTime; + @EntityField(name = "common.lastfinishtime", type = ApiParamType.LONG) + private Date lastFinishTime; + @EntityField(name = "common.nextfiretime", type = ApiParamType.LONG) + private Date nextFireTime; public DataSourceVo() { @@ -338,4 +344,28 @@ public class DataSourceVo extends BasePageVo { public void setDbType(String dbType) { this.dbType = dbType; } + + public Date getLastFireTime() { + return lastFireTime; + } + + public void setLastFireTime(Date lastFireTime) { + this.lastFireTime = lastFireTime; + } + + public Date getLastFinishTime() { + return lastFinishTime; + } + + public void setLastFinishTime(Date lastFinishTime) { + this.lastFinishTime = lastFinishTime; + } + + public Date getNextFireTime() { + return nextFireTime; + } + + public void setNextFireTime(Date nextFireTime) { + this.nextFireTime = nextFireTime; + } } diff --git a/src/main/java/neatlogic/framework/datawarehouse/enums/Status.java b/src/main/java/neatlogic/framework/datawarehouse/enums/Status.java index e52cbc9f4..2581351ac 100644 --- a/src/main/java/neatlogic/framework/datawarehouse/enums/Status.java +++ b/src/main/java/neatlogic/framework/datawarehouse/enums/Status.java @@ -21,6 +21,7 @@ import neatlogic.framework.util.I18n; public enum Status { DOING("doing", new I18n("同步数据中")), DONE("done", new I18n("同步完成")), + ABORTED("aborted", new I18n("同步已中止")), FAILED("failed", new I18n("同步失败")); private final String value; diff --git a/src/main/java/neatlogic/framework/datawarehouse/service/DataSourceServiceImpl.java b/src/main/java/neatlogic/framework/datawarehouse/service/DataSourceServiceImpl.java index cbdb28695..800f656d5 100644 --- a/src/main/java/neatlogic/framework/datawarehouse/service/DataSourceServiceImpl.java +++ b/src/main/java/neatlogic/framework/datawarehouse/service/DataSourceServiceImpl.java @@ -40,6 +40,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -216,10 +217,12 @@ public class DataSourceServiceImpl implements DataSourceService { .withCron(dataSourceVo.getCronExpression()) .addData("datasourceId", dataSourceVo.getId()) .build(); - if (StringUtils.isNotBlank(dataSourceVo.getCronExpression())) { - schedulerManager.loadJob(jobObject); + if (Objects.equals(dataSourceVo.getIsActive(), 1) && StringUtils.isNotBlank(dataSourceVo.getCronExpression())) { + Date nextFireTime = schedulerManager.loadJob(jobObject); + dataSourceMapper.updateDataSourceNextFireTimeById(dataSourceVo.getId(), nextFireTime); } else { schedulerManager.unloadJob(jobObject); + dataSourceMapper.updateDataSourceNextFireTimeById(dataSourceVo.getId(), null); } } diff --git a/src/main/java/neatlogic/module/framework/scheduler/datawarehouse/ReportDataSourceJob.java b/src/main/java/neatlogic/module/framework/scheduler/datawarehouse/ReportDataSourceJob.java index 3adf062ca..8a4f70219 100644 --- a/src/main/java/neatlogic/module/framework/scheduler/datawarehouse/ReportDataSourceJob.java +++ b/src/main/java/neatlogic/module/framework/scheduler/datawarehouse/ReportDataSourceJob.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.sql.SQLException; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -90,6 +91,10 @@ public class ReportDataSourceJob extends JobBase { Long datasourceId = (Long) jobObject.getData("datasourceId"); DataSourceVo reportDataSourceVo = reportDataSourceMapper.getDataSourceById(datasourceId); reportDataSourceService.executeReportDataSource(reportDataSourceVo); + reportDataSourceVo.setLastFireTime(context.getFireTime()); + reportDataSourceVo.setLastFinishTime(new Date()); + reportDataSourceVo.setNextFireTime(context.getNextFireTime()); + reportDataSourceMapper.updateDataSourceJobTimeById(reportDataSourceVo); } diff --git a/src/main/resources/neatlogic/resources/framework/changelog/2024-07-31/neatlogic_tenant.sql b/src/main/resources/neatlogic/resources/framework/changelog/2024-07-31/neatlogic_tenant.sql new file mode 100644 index 000000000..84166c546 --- /dev/null +++ b/src/main/resources/neatlogic/resources/framework/changelog/2024-07-31/neatlogic_tenant.sql @@ -0,0 +1,5 @@ +ALTER TABLE `datawarehouse_datasource` + CHANGE `status` `status` ENUM('doing','done','failed','aborted') CHARSET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '同步状态', + ADD COLUMN `last_fire_time` TIMESTAMP(3) NULL COMMENT '最后一次激活时间' AFTER `db_type`, + ADD COLUMN `last_finish_time` TIMESTAMP(3) NULL COMMENT '最后一次完成时间' AFTER `last_fire_time`, + ADD COLUMN `next_fire_time` TIMESTAMP(3) NULL COMMENT '下一次激活时间' AFTER `last_finish_time`; \ No newline at end of file diff --git a/src/main/resources/neatlogic/resources/framework/changelog/2024-07-31/version.json b/src/main/resources/neatlogic/resources/framework/changelog/2024-07-31/version.json new file mode 100644 index 000000000..402a9b591 --- /dev/null +++ b/src/main/resources/neatlogic/resources/framework/changelog/2024-07-31/version.json @@ -0,0 +1,10 @@ +{ + "content":[ + { + "type":"新增功能", + "detail":[ + {"msg":"1.数据仓库同步支持人工干预终止"} + ] + } + ] +} diff --git a/src/main/resources/neatlogic/resources/framework/sqlscript/ddl.sql b/src/main/resources/neatlogic/resources/framework/sqlscript/ddl.sql index 65db70dcb..c3d6131df 100644 --- a/src/main/resources/neatlogic/resources/framework/sqlscript/ddl.sql +++ b/src/main/resources/neatlogic/resources/framework/sqlscript/ddl.sql @@ -105,10 +105,13 @@ CREATE TABLE IF NOT EXISTS `datawarehouse_datasource` ( `mode` enum('replace','append') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新模式,追加或替换', `expire_count` int NULL DEFAULT NULL COMMENT '过期数值', `module_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属模块', - `status` enum('doing','done','failed') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步状态', + `status` enum('doing','done','failed','aborted') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步状态', `data_count` int NULL DEFAULT NULL COMMENT '数据量', `expire_unit` enum('minute','hour','day','month','year') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '过期单位', `db_type` enum('mysql','mongodb') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'mysql' COMMENT '数据库类型', + `last_fire_time` timestamp(3) NULL DEFAULT NULL COMMENT '最后一次激活时间', + `last_finish_time` timestamp(3) NULL DEFAULT NULL COMMENT '最后一次完成时间', + `next_fire_time` timestamp(3) NULL DEFAULT NULL COMMENT '下一次激活时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_name`(`name`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据仓库-数据源'; -- Gitee