diff --git a/src/main/java/com/gxwebsoft/approval/service/ApprovalDirectoryService.java b/src/main/java/com/gxwebsoft/approval/service/ApprovalDirectoryService.java
index 0005653..c032296 100644
--- a/src/main/java/com/gxwebsoft/approval/service/ApprovalDirectoryService.java
+++ b/src/main/java/com/gxwebsoft/approval/service/ApprovalDirectoryService.java
@@ -1,6 +1,7 @@
package com.gxwebsoft.approval.service;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.gxwebsoft.approval.support.ApprovalTenantContext;
import com.gxwebsoft.approval.vo.ApprovalOrganizationVO;
import com.gxwebsoft.approval.vo.ApprovalUserVO;
@@ -20,6 +21,7 @@ import java.util.List;
* 所有 SQL 显式带 tenant_id。
*/
@Service
+@DS("server")
public class ApprovalDirectoryService {
private static final RowMapper ORGANIZATION_MAPPER = (resultSet, rowNum) -> {
diff --git a/src/main/java/com/gxwebsoft/approval/service/ApprovalFileService.java b/src/main/java/com/gxwebsoft/approval/service/ApprovalFileService.java
index c987404..102a855 100644
--- a/src/main/java/com/gxwebsoft/approval/service/ApprovalFileService.java
+++ b/src/main/java/com/gxwebsoft/approval/service/ApprovalFileService.java
@@ -1,6 +1,7 @@
package com.gxwebsoft.approval.service;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
+import com.baomidou.dynamic.datasource.annotation.DS;
import com.gxwebsoft.approval.support.ApprovalTenantContext;
import com.gxwebsoft.common.system.entity.FileRecord;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -24,6 +25,7 @@ import java.util.List;
* 不依赖文件管理权限,审批上传/详情均通过本服务复用既有文件记录。
*/
@Service
+@DS("server")
public class ApprovalFileService {
private static final RowMapper FILE_MAPPER = (resultSet, rowNum) -> {
diff --git a/src/test/java/com/gxwebsoft/approval/ApprovalCompletionDraftIT.java b/src/test/java/com/gxwebsoft/approval/ApprovalCompletionDraftIT.java
index 953aa0e..509b4c0 100644
--- a/src/test/java/com/gxwebsoft/approval/ApprovalCompletionDraftIT.java
+++ b/src/test/java/com/gxwebsoft/approval/ApprovalCompletionDraftIT.java
@@ -96,6 +96,19 @@ class ApprovalCompletionDraftIT {
.andExpect(jsonPath("$.data.list[0].bizNo").doesNotExist());
}
+ @Test
+ void publishesSingleFlowDefinitionPerTenant() throws Exception {
+ createCompletion(reporter, organizationId, TENANT, "流程一");
+ createCompletion(reporter, organizationId, TENANT, "流程二");
+
+ Integer count = data.countMaster("SELECT COUNT(*) FROM approval_flow_definition "
+ + "WHERE tenant_id = ? AND flow_code = 'completion' AND version = 1", TENANT);
+ assertThat(count).isEqualTo(1);
+ assertThat(data.queryMaster("SELECT nodes_json FROM approval_flow_definition "
+ + "WHERE tenant_id = ? AND flow_code = 'completion' AND version = 1", String.class, TENANT))
+ .contains("deptLeader").contains("confirm").contains("archive");
+ }
+
@Test
void validatesCompletionFields() throws Exception {
expectSaveFailure(body("", "实施单位", "10.00", "服务内容"), "名称不能为空");