diff --git a/de-xpack b/de-xpack
index 65a0bcf98f..9aae034886 160000
--- a/de-xpack
+++ b/de-xpack
@@ -1 +1 @@
-Subproject commit 65a0bcf98f60e2218f43306295509d3918dbe320
+Subproject commit 9aae0348868c253e8b6a6cc53f2250bcfab3d37c
diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/dto/DfExcelData.java b/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/dto/DfExcelData.java
index 939c24140e..bdb9d3001e 100644
--- a/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/dto/DfExcelData.java
+++ b/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/dto/DfExcelData.java
@@ -1,5 +1,6 @@
package io.dataease.api.xpack.dataFilling.dto;
+import io.dataease.extensions.datafilling.dto.ExtTableField;
import lombok.Data;
import lombok.experimental.Accessors;
diff --git a/sdk/common/pom.xml b/sdk/common/pom.xml
index 00c119a828..92d6c9f8dd 100644
--- a/sdk/common/pom.xml
+++ b/sdk/common/pom.xml
@@ -130,6 +130,12 @@
${project.version}
+
+ io.dataease
+ extensions-datafilling
+ ${project.version}
+
+
diff --git a/sdk/extensions/extensions-datafilling/pom.xml b/sdk/extensions/extensions-datafilling/pom.xml
new file mode 100644
index 0000000000..885584c309
--- /dev/null
+++ b/sdk/extensions/extensions-datafilling/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ io.dataease
+ extensions
+ ${dataease.version}
+
+
+ extensions-datafilling
+
+
+
+ io.dataease
+ extensions-datasource
+ ${dataease.version}
+
+
+
+
+ 21
+ 21
+ UTF-8
+
+
+
+
+ fit2cloud-public
+ Fit2cloud Public
+ https://repository.fit2cloud.com/repository/fit2cloud-public/
+
+
+
diff --git a/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/dto/ExtIndexField.java b/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/dto/ExtIndexField.java
new file mode 100644
index 0000000000..68a93fff6b
--- /dev/null
+++ b/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/dto/ExtIndexField.java
@@ -0,0 +1,34 @@
+package io.dataease.extensions.datafilling.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class ExtIndexField implements Serializable {
+ @Serial
+ private static final long serialVersionUID = -3169849285437114316L;
+
+ private String name;
+
+ private List columns;
+
+ private boolean removed;
+
+ @Data
+ @Builder
+ @AllArgsConstructor
+ @NoArgsConstructor
+ public static class ColumnSetting {
+ private String column;
+ private String order;
+ }
+}
diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/dto/ExtTableField.java b/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/dto/ExtTableField.java
similarity index 98%
rename from sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/dto/ExtTableField.java
rename to sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/dto/ExtTableField.java
index 4ca7bb5ea5..7f70ff23b8 100644
--- a/sdk/api/api-base/src/main/java/io/dataease/api/xpack/dataFilling/dto/ExtTableField.java
+++ b/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/dto/ExtTableField.java
@@ -1,4 +1,4 @@
-package io.dataease.api.xpack.dataFilling.dto;
+package io.dataease.extensions.datafilling.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
diff --git a/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/factory/ExtDDLProviderFactory.java b/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/factory/ExtDDLProviderFactory.java
new file mode 100644
index 0000000000..15d4553ce5
--- /dev/null
+++ b/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/factory/ExtDDLProviderFactory.java
@@ -0,0 +1,21 @@
+package io.dataease.extensions.datafilling.factory;
+
+import io.dataease.extensions.datasource.utils.SpringContextUtil;
+import io.dataease.extensions.datasource.vo.DatasourceConfiguration;
+import io.dataease.extensions.datafilling.provider.ExtDDLProvider;
+
+public class ExtDDLProviderFactory {
+
+ public static ExtDDLProvider getExtDDLProvider(String type) {
+ DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(type);
+ switch (datasourceType) {
+ case mysql:
+ case mariadb:
+ return SpringContextUtil.getApplicationContext().getBean("mysqlExtDDLProvider", ExtDDLProvider.class);
+
+ }
+ return null;
+ }
+
+
+}
diff --git a/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/provider/ExtDDLProvider.java b/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/provider/ExtDDLProvider.java
new file mode 100644
index 0000000000..853a10b5ac
--- /dev/null
+++ b/sdk/extensions/extensions-datafilling/src/main/java/io/dataease/extensions/datafilling/provider/ExtDDLProvider.java
@@ -0,0 +1,51 @@
+package io.dataease.extensions.datafilling.provider;
+
+
+import io.dataease.extensions.datasource.dto.TableField;
+import io.dataease.extensions.datafilling.dto.ExtIndexField;
+import io.dataease.extensions.datafilling.dto.ExtTableField;
+import io.dataease.extensions.datasource.dto.TableFieldWithValue;
+
+import java.util.List;
+
+/**
+ * 获取对应的sql
+ */
+public abstract class ExtDDLProvider {
+
+ public final String DEFAULT_DATE_FORMAT_STR = "yyyy-MM-dd HH:mm:ss";
+
+ public abstract boolean supportDataFilling();
+
+ public abstract String createTableSql(String table, List formFields);
+
+ public abstract String getTableFieldsSql(String table);
+
+ public abstract String addTableColumnSql(String table, List formFieldsToCreate, List formFieldsToModify);
+
+ public abstract String dropTableColumnSql(String table, List formFields);
+
+ public abstract String searchSql(String table, List formFields, String whereSql, long limit, long offset);
+
+ public abstract String searchColumnData(String table, String column, String order);
+
+ public abstract String countSql(String table, String whereSql);
+
+ public abstract String dropTableSql(String table);
+
+ public abstract List createTableIndexSql(String table, List indexFields);
+
+ public abstract List dropTableIndexSql(String table, List indexFields);
+
+ public abstract String deleteDataByIdsSql(String table, List pks);
+
+ public abstract String insertDataSql(String tableName, List fields, int count);
+
+ public abstract String updateDataByIdSql(String tableName, List fields, TableFieldWithValue pk);
+
+ public abstract String checkUniqueValueSql(String tableName, TableFieldWithValue field, TableFieldWithValue pk);
+
+ public abstract String whereSql(String tableName, List searchFields);
+
+ public abstract String getLowerCaseTaleNames();
+}
diff --git a/sdk/extensions/pom.xml b/sdk/extensions/pom.xml
index bea8c2f904..0c06ecec2c 100644
--- a/sdk/extensions/pom.xml
+++ b/sdk/extensions/pom.xml
@@ -13,6 +13,7 @@
extensions-view
extensions-datasource
+ extensions-datafilling
extensions