) context);
+
+ case SQL_CONFIG:
+ // context 应该是 sqlConfigId
+ return new DocTemplateSqlConfigFieldDataSourceProvider(sqlConfigProvider, (String) context);
+
+ default:
+ throw new IllegalArgumentException("不支持的数据源类型: " + sourceType);
+ }
+ }
+
+ /**
+ * 创建业务数据提供者
+ *
+ * @param businessType 业务类型
+ * @return 数据源提供者
+ */
+ private IDataSourceProvider createBusinessDataProvider(String businessType) {
+ if (businessType == null || businessType.trim().isEmpty()) {
+ throw new IllegalArgumentException("使用BUSINESS数据源时,businessType不能为空");
+ }
+
+ // 业务数据提供者的Bean名称约定:{businessType}DataProvider
+ // 示例:contractDataProvider、orderDataProvider、purchaseOrderDataProvider等
+ String providerBeanName = businessType + "DataProvider";
+
+ try {
+ IBusinessDataProvider businessDataProvider = applicationContext.getBean(
+ providerBeanName,
+ IBusinessDataProvider.class
+ );
+
+ log.debug("找到业务数据提供者: {}", providerBeanName);
+ return new DocTemplateBusinessFieldDataSourceProvider(businessDataProvider);
+
+ } catch (NoSuchBeanDefinitionException e) {
+ throw new IllegalArgumentException(
+ "未找到业务数据提供者: " + providerBeanName +
+ "(业务类型:" + businessType + ")" +
+ "。请确保实现了 " + IBusinessDataProvider.class.getSimpleName() +
+ " 接口并注册为名为 '" + providerBeanName + "' 的Spring Bean。", e);
+ }
+ }
+
+ /**
+ * 重载方法:不指定businessType时的调用
+ * 此时将使用templateName作为businessType(向后兼容)
+ *
+ * @param sourceType 数据源类型
+ * @param context 数据源上下文
+ * @param templateName 模板名称
+ * @return 数据源提供者实例
+ */
+ public IDataSourceProvider createProvider(
+ DocTemplateDataSourceType sourceType,
+ Object context,
+ String templateName) {
+ return createProvider(sourceType, context, templateName, templateName);
+ }
+}
\ No newline at end of file
diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/DocTemplateDataSourceType.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/DocTemplateDataSourceType.java
new file mode 100644
index 0000000..76c34e2
--- /dev/null
+++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/DocTemplateDataSourceType.java
@@ -0,0 +1,38 @@
+package com.zt.plat.module.base.service.doctemplate.render;
+
+/**
+ * 数据源类型枚举
+ *
+ * @author hwc
+ */
+public enum DocTemplateDataSourceType {
+ /**
+ * 标签默认值
+ */
+ DEFAULT("标签默认值"),
+
+ /**
+ * 业务策略
+ */
+ BUSINESS("业务策略"),
+
+ /**
+ * 前端入参
+ */
+ REQUEST("前端入参"),
+
+ /**
+ * SQL配置
+ */
+ SQL_CONFIG("SQL配置");
+
+ private final String description;
+
+ DocTemplateDataSourceType(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+}
\ No newline at end of file
diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/IBusinessDataProvider.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/IBusinessDataProvider.java
new file mode 100644
index 0000000..424a4da
--- /dev/null
+++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/IBusinessDataProvider.java
@@ -0,0 +1,30 @@
+package com.zt.plat.module.base.service.doctemplate.render;
+
+import java.util.Map;
+
+/**
+ * 业务数据提供者接口
+ * 不同的业务类型实现此接口来提供数据
+ *
+ * 命名约定:{业务类型}DataProvider
+ *
示例:
+ *
+ * - ContractDataProvider (合同数据提供者)
+ * - OrderDataProvider (订单数据提供者)
+ * - PurchaseOrderDataProvider (采购单数据提供者)
+ * - SalesOrderDataProvider (销售单数据提供者)
+ *
+ *
+ * @author hwc
+ */
+public interface IBusinessDataProvider {
+
+ /**
+ * 获取业务数据
+ *
+ * @param context 业务上下文(通常是业务ID,如contractId、orderId等)
+ * @param fieldNames 需要填充的字段名列表
+ * @return 字段值映射表
+ */
+ Map provideData(Object context, java.util.List fieldNames);
+}
\ No newline at end of file
diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/IDataSourceProvider.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/IDataSourceProvider.java
new file mode 100644
index 0000000..803c79b
--- /dev/null
+++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/IDataSourceProvider.java
@@ -0,0 +1,28 @@
+package com.zt.plat.module.base.service.doctemplate.render;
+
+import java.util.Map;
+
+/**
+ * 文档模板数据源提供者接口(策略模式)
+ * 所有数据源实现都遵循此接口
+ *
+ * @author hwc
+ */
+public interface IDataSourceProvider {
+
+ /**
+ * 获取指定字段的值
+ *
+ * @param context 上下文信息(内容因数据源类型而异)
+ * @param fieldNames 需要获取的字段名列表
+ * @return 字段值映射表
+ */
+ Map getData(Object context, java.util.List fieldNames);
+
+ /**
+ * 获取此数据源的类型
+ *
+ * @return 数据源类型
+ */
+ DocTemplateDataSourceType getType();
+}
\ No newline at end of file
diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/ISqlConfigProvider.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/ISqlConfigProvider.java
new file mode 100644
index 0000000..6fa14b8
--- /dev/null
+++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/doctemplate/render/ISqlConfigProvider.java
@@ -0,0 +1,20 @@
+package com.zt.plat.module.base.service.doctemplate.render;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * SQL配置数据提供者接口
+ *
+ * @author hwc
+ */
+public interface ISqlConfigProvider {
+
+ /**
+ * 查询SQL配置结果
+ *
+ * @param sqlConfigId SQL配置ID
+ * @return 查询结果列表,每个Map代表一行数据
+ */
+ List