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