diff --git a/pom.xml b/pom.xml
index 71dc27a..464aaff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,11 +120,17 @@
spring-boot-starter-web
+
+ org.postgresql
+ postgresql
+ runtime
+
com.mysql
mysql-connector-j
runtime
+
org.projectlombok
lombok
diff --git a/src/main/java/com/mini/capi/biz/controller/DbConfigController.java b/src/main/java/com/mini/capi/biz/controller/DbConfigController.java
new file mode 100644
index 0000000..175a396
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/controller/DbConfigController.java
@@ -0,0 +1,18 @@
+package com.mini.capi.biz.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+@RestController
+@RequestMapping("/biz/dbConfig")
+public class DbConfigController {
+
+}
diff --git a/src/main/java/com/mini/capi/biz/controller/SyncTaskController.java b/src/main/java/com/mini/capi/biz/controller/SyncTaskController.java
new file mode 100644
index 0000000..6693a6a
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/controller/SyncTaskController.java
@@ -0,0 +1,18 @@
+package com.mini.capi.biz.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+@RestController
+@RequestMapping("/biz/syncTask")
+public class SyncTaskController {
+
+}
diff --git a/src/main/java/com/mini/capi/biz/domain/DbConfig.java b/src/main/java/com/mini/capi/biz/domain/DbConfig.java
new file mode 100644
index 0000000..082c8a2
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/domain/DbConfig.java
@@ -0,0 +1,94 @@
+package com.mini.capi.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+@Getter
+@Setter
+@TableName("biz_db_config")
+public class DbConfig implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("create_time")
+ private LocalDateTime createTime;
+
+ @TableId(value = "db_id", type = IdType.AUTO)
+ private String dbId;
+
+ @TableField("db_type")
+ private String dbType;
+
+ @TableField("db_name")
+ private String dbName;
+
+ @TableField("host")
+ private String host;
+
+ @TableField("port")
+ private Integer port;
+
+ @TableField("username")
+ private String username;
+
+ @TableField("password")
+ private String password;
+
+ @TableField("driver_class")
+ private String driverClass;
+
+ @TableField("url_template")
+ private String urlTemplate;
+
+ @TableField("is_active")
+ private Boolean isActive;
+
+ @TableField("update_time")
+ private LocalDateTime updateTime;
+
+ /**
+ * 租户id
+ */
+ @TableField("f_tenant_id")
+ private String fTenantId;
+
+ /**
+ * 流程id
+ */
+ @TableField("f_flow_id")
+ private String fFlowId;
+
+ /**
+ * 流程任务主键
+ */
+ @TableField("f_flow_task_id")
+ private String fFlowTaskId;
+
+ /**
+ * 流程任务状态
+ */
+ @TableField("f_flow_state")
+ private Integer fFlowState;
+
+
+ // 生成数据库连接URL
+ public String getJdbcUrl() {
+ return urlTemplate.replace("{host}", host)
+ .replace("{port}", port.toString())
+ .replace("{dbName}", dbName);
+ }
+}
diff --git a/src/main/java/com/mini/capi/biz/domain/SyncTask.java b/src/main/java/com/mini/capi/biz/domain/SyncTask.java
new file mode 100644
index 0000000..eb6e3f3
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/domain/SyncTask.java
@@ -0,0 +1,89 @@
+package com.mini.capi.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+@Getter
+@Setter
+@TableName("biz_sync_task")
+public class SyncTask implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("create_time")
+ private LocalDateTime createTime;
+
+ @TableId(value = "task_id", type = IdType.AUTO)
+ private String taskId;
+
+ @TableField("task_name")
+ private String taskName;
+
+ @TableField("source_db_id")
+ private String sourceDbId;
+
+ @TableField("target_db_id")
+ private String targetDbId;
+
+ @TableField("source_table")
+ private String sourceTable;
+
+ @TableField("target_table")
+ private String targetTable;
+
+ @TableField("sync_type")
+ private String syncType;
+
+ @TableField("increment_column")
+ private String incrementColumn;
+
+ @TableField("cron_expression")
+ private String cronExpression;
+
+ @TableField("is_active")
+ private Boolean isActive;
+
+ @TableField("last_sync_time")
+ private LocalDateTime lastSyncTime;
+
+ @TableField("update_time")
+ private LocalDateTime updateTime;
+
+ /**
+ * 租户id
+ */
+ @TableField("f_tenant_id")
+ private String fTenantId;
+
+ /**
+ * 流程id
+ */
+ @TableField("f_flow_id")
+ private String fFlowId;
+
+ /**
+ * 流程任务主键
+ */
+ @TableField("f_flow_task_id")
+ private String fFlowTaskId;
+
+ /**
+ * 流程任务状态
+ */
+ @TableField("f_flow_state")
+ private Integer fFlowState;
+}
diff --git a/src/main/java/com/mini/capi/biz/mapper/DbConfigMapper.java b/src/main/java/com/mini/capi/biz/mapper/DbConfigMapper.java
new file mode 100644
index 0000000..deacc92
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/mapper/DbConfigMapper.java
@@ -0,0 +1,16 @@
+package com.mini.capi.biz.mapper;
+
+import com.mini.capi.biz.domain.DbConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+public interface DbConfigMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/mini/capi/biz/mapper/SyncTaskMapper.java b/src/main/java/com/mini/capi/biz/mapper/SyncTaskMapper.java
new file mode 100644
index 0000000..758cbe1
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/mapper/SyncTaskMapper.java
@@ -0,0 +1,16 @@
+package com.mini.capi.biz.mapper;
+
+import com.mini.capi.biz.domain.SyncTask;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+public interface SyncTaskMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/mini/capi/biz/service/DbConfigService.java b/src/main/java/com/mini/capi/biz/service/DbConfigService.java
new file mode 100644
index 0000000..e524686
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/service/DbConfigService.java
@@ -0,0 +1,16 @@
+package com.mini.capi.biz.service;
+
+import com.mini.capi.biz.domain.DbConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+public interface DbConfigService extends IService {
+
+}
diff --git a/src/main/java/com/mini/capi/biz/service/SyncTaskService.java b/src/main/java/com/mini/capi/biz/service/SyncTaskService.java
new file mode 100644
index 0000000..7b5bd79
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/service/SyncTaskService.java
@@ -0,0 +1,16 @@
+package com.mini.capi.biz.service;
+
+import com.mini.capi.biz.domain.SyncTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+public interface SyncTaskService extends IService {
+
+}
diff --git a/src/main/java/com/mini/capi/biz/service/impl/DbConfigServiceImpl.java b/src/main/java/com/mini/capi/biz/service/impl/DbConfigServiceImpl.java
new file mode 100644
index 0000000..59e3413
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/service/impl/DbConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mini.capi.biz.service.impl;
+
+import com.mini.capi.biz.domain.DbConfig;
+import com.mini.capi.biz.mapper.DbConfigMapper;
+import com.mini.capi.biz.service.DbConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+@Service
+public class DbConfigServiceImpl extends ServiceImpl implements DbConfigService {
+
+}
diff --git a/src/main/java/com/mini/capi/biz/service/impl/SyncTaskServiceImpl.java b/src/main/java/com/mini/capi/biz/service/impl/SyncTaskServiceImpl.java
new file mode 100644
index 0000000..c0180c3
--- /dev/null
+++ b/src/main/java/com/mini/capi/biz/service/impl/SyncTaskServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mini.capi.biz.service.impl;
+
+import com.mini.capi.biz.domain.SyncTask;
+import com.mini.capi.biz.mapper.SyncTaskMapper;
+import com.mini.capi.biz.service.SyncTaskService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author gaoxq
+ * @since 2025-08-26
+ */
+@Service
+public class SyncTaskServiceImpl extends ServiceImpl implements SyncTaskService {
+
+}
diff --git a/src/main/java/com/mini/capi/config/DataSourceConfig.java b/src/main/java/com/mini/capi/config/DataSourceConfig.java
new file mode 100644
index 0000000..600b874
--- /dev/null
+++ b/src/main/java/com/mini/capi/config/DataSourceConfig.java
@@ -0,0 +1,23 @@
+package com.mini.capi.config;
+
+import com.mini.capi.biz.domain.DbConfig;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
+
+import javax.sql.DataSource;
+
+public class DataSourceConfig {
+
+ public static DataSource createDataSource(DbConfig dbConfig) {
+ DriverManagerDataSource dataSource = new DriverManagerDataSource();
+ dataSource.setDriverClassName(dbConfig.getDriverClass());
+ dataSource.setUrl(dbConfig.getJdbcUrl());
+ dataSource.setUsername(dbConfig.getUsername());
+ dataSource.setPassword(dbConfig.getPassword());
+ return dataSource;
+ }
+
+ public static JdbcTemplate createJdbcTemplate(DbConfig dbConfig) {
+ return new JdbcTemplate(createDataSource(dbConfig));
+ }
+}
diff --git a/src/main/java/com/mini/capi/job/taskDbSync.java b/src/main/java/com/mini/capi/job/taskDbSync.java
new file mode 100644
index 0000000..e3e77e1
--- /dev/null
+++ b/src/main/java/com/mini/capi/job/taskDbSync.java
@@ -0,0 +1,64 @@
+package com.mini.capi.job;
+
+import com.mini.capi.biz.domain.DbConfig;
+import com.mini.capi.biz.domain.SyncTask;
+import com.mini.capi.biz.service.DbConfigService;
+import com.mini.capi.biz.service.SyncTaskService;
+import com.mini.capi.config.DataSourceConfig;
+import com.mini.capi.model.ApiResult;
+import com.mini.capi.utils.vToken;
+import jakarta.annotation.Resource;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+
+@RestController
+@RequestMapping("/Sys/dbs")
+public class taskDbSync {
+
+
+ @Resource
+ private SyncTaskService syncTaskService;
+
+ @Resource
+ private DbConfigService dbConfigService;
+
+
+ private static final int BATCH_SIZE = 1000;
+
+ private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
+
+
+ @GetMapping("/getTaskSyncDbInfo")
+ public ApiResult> jobSyncTask(String token) {
+ if (vToken.isValidToken(token)) {
+ String dsValue = LocalDate.now().format(DATE_FORMATTER);
+ List syncTasks = syncTaskService.list();
+ for (SyncTask task : syncTasks) {
+ DbConfig sourceDbConfig = dbConfigService.getById(task.getSourceDbId());
+ DbConfig targetDbConfig = dbConfigService.getById(task.getTargetDbId());
+ JdbcTemplate sourceJdbc = DataSourceConfig.createJdbcTemplate(sourceDbConfig);
+ JdbcTemplate targetJdbc = DataSourceConfig.createJdbcTemplate(targetDbConfig);
+
+
+
+
+
+
+ }
+ return ApiResult.success();
+ }
+ return ApiResult.error();
+ }
+
+}
diff --git a/src/main/java/com/mini/capi/mybatis/demo.java b/src/main/java/com/mini/capi/mybatis/demo.java
index 9132fb0..597fc2f 100644
--- a/src/main/java/com/mini/capi/mybatis/demo.java
+++ b/src/main/java/com/mini/capi/mybatis/demo.java
@@ -29,7 +29,7 @@ public class demo {
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper"));
})
.strategyConfig(builder -> {
- builder.addInclude("biz_municipalities,biz_api_doc,biz_api_param")
+ builder.addInclude("biz_sync_task,biz_db_config")
.addTablePrefix("biz_")
.entityBuilder()
.enableLombok()
diff --git a/src/main/resources/mapper/DbConfigMapper.xml b/src/main/resources/mapper/DbConfigMapper.xml
new file mode 100644
index 0000000..6188274
--- /dev/null
+++ b/src/main/resources/mapper/DbConfigMapper.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ create_time, db_id, db_type, db_name, host, port, username, password, driver_class, url_template, is_active, update_time, f_tenant_id, f_flow_id, f_flow_task_id, f_flow_state
+
+
+
diff --git a/src/main/resources/mapper/SyncTaskMapper.xml b/src/main/resources/mapper/SyncTaskMapper.xml
new file mode 100644
index 0000000..0a4bc9c
--- /dev/null
+++ b/src/main/resources/mapper/SyncTaskMapper.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ create_time, task_id, task_name, source_db_id, target_db_id, source_table, target_table, sync_type, increment_column, cron_expression, is_active, last_sync_time, update_time, f_tenant_id, f_flow_id, f_flow_task_id, f_flow_state
+
+
+