feat: 部门岗位角色标识改用 organization_code,缺编码阻断提交
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
--
|
||||
-- 覆盖 0630 九类线下审批涉及的部门与岗位:
|
||||
-- 部门:场馆部、运营管理部、安全运保部、财务部(均为新建,不复用历史部门)
|
||||
-- 部门岗位:dept_leader_<orgId>(负责人)、dept_deputy_<orgId>(分管领导)
|
||||
-- 部门岗位:dept_leader_<orgCode>(负责人)、dept_deputy_<orgCode>(分管领导)
|
||||
-- 租户岗位:approval_archivist(收文员)、approval_general_manager(总经理/主要领导)、
|
||||
-- approval_cashier(出纳)、approval_typist(录入员)、approval_issuer(发放人)
|
||||
--
|
||||
@@ -41,8 +41,7 @@ SELECT @root_id, '运营管理部', '运营管理部', 'APPROVAL_OPS',
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND (organization_code = 'APPROVAL_OPS' OR organization_name = '运营管理部')
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0 AND organization_code = 'APPROVAL_OPS'
|
||||
);
|
||||
|
||||
INSERT INTO sys_organization
|
||||
@@ -54,8 +53,7 @@ SELECT @root_id, '安全运保部', '安全运保部', 'APPROVAL_SAFETY',
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND (organization_code = 'APPROVAL_SAFETY' OR organization_name IN ('安全运保部', '运保部'))
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0 AND organization_code = 'APPROVAL_SAFETY'
|
||||
);
|
||||
|
||||
INSERT INTO sys_organization
|
||||
@@ -67,98 +65,94 @@ SELECT @root_id, '财务部', '财务部', 'APPROVAL_FINANCE',
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND (organization_code = 'APPROVAL_FINANCE' OR organization_name = '财务部')
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0 AND organization_code = 'APPROVAL_FINANCE'
|
||||
);
|
||||
|
||||
SET @venue_id := (
|
||||
SELECT organization_id FROM sys_organization
|
||||
SET @venue_code := (
|
||||
SELECT organization_code FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0 AND organization_code = 'APPROVAL_VENUE'
|
||||
ORDER BY organization_id LIMIT 1
|
||||
);
|
||||
SET @ops_id := (
|
||||
SELECT organization_id FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND (organization_code = 'APPROVAL_OPS' OR organization_name = '运营管理部')
|
||||
SET @ops_code := (
|
||||
SELECT organization_code FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0 AND organization_code = 'APPROVAL_OPS'
|
||||
ORDER BY organization_id LIMIT 1
|
||||
);
|
||||
SET @safety_id := (
|
||||
SELECT organization_id FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND (organization_code = 'APPROVAL_SAFETY' OR organization_name IN ('安全运保部', '运保部'))
|
||||
SET @safety_code := (
|
||||
SELECT organization_code FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0 AND organization_code = 'APPROVAL_SAFETY'
|
||||
ORDER BY organization_id LIMIT 1
|
||||
);
|
||||
SET @finance_id := (
|
||||
SELECT organization_id FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND (organization_code = 'APPROVAL_FINANCE' OR organization_name = '财务部')
|
||||
SET @finance_code := (
|
||||
SELECT organization_code FROM sys_organization
|
||||
WHERE tenant_id = @tenant_id AND deleted = 0 AND organization_code = 'APPROVAL_FINANCE'
|
||||
ORDER BY organization_id LIMIT 1
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------- 部门负责人(或签)
|
||||
INSERT INTO sys_role (role_name, role_code, comments, sort_number, tenant_id, deleted)
|
||||
SELECT '场馆部负责人', CONCAT('dept_leader_', @venue_id), '审批种子:场馆部负责人,多人或签', 901, @tenant_id, 0
|
||||
SELECT '场馆部负责人', CONCAT('dept_leader_', @venue_code), '审批种子:场馆部负责人,多人或签', 901, @tenant_id, 0
|
||||
FROM DUAL
|
||||
WHERE @venue_id IS NOT NULL AND NOT EXISTS (
|
||||
WHERE @venue_code IS NOT NULL AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND role_code = CONCAT('dept_leader_', @venue_id)
|
||||
AND role_code = CONCAT('dept_leader_', @venue_code)
|
||||
);
|
||||
|
||||
INSERT INTO sys_role (role_name, role_code, comments, sort_number, tenant_id, deleted)
|
||||
SELECT '运营管理部负责人', CONCAT('dept_leader_', @ops_id), '审批种子:运营管理部负责人,多人或签', 902, @tenant_id, 0
|
||||
SELECT '运营管理部负责人', CONCAT('dept_leader_', @ops_code), '审批种子:运营管理部负责人,多人或签', 902, @tenant_id, 0
|
||||
FROM DUAL
|
||||
WHERE @ops_id IS NOT NULL AND NOT EXISTS (
|
||||
WHERE @ops_code IS NOT NULL AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND role_code = CONCAT('dept_leader_', @ops_id)
|
||||
AND role_code = CONCAT('dept_leader_', @ops_code)
|
||||
);
|
||||
|
||||
INSERT INTO sys_role (role_name, role_code, comments, sort_number, tenant_id, deleted)
|
||||
SELECT '安全运保部负责人', CONCAT('dept_leader_', @safety_id), '审批种子:安全运保部负责人,多人或签', 903, @tenant_id, 0
|
||||
SELECT '安全运保部负责人', CONCAT('dept_leader_', @safety_code), '审批种子:安全运保部负责人,多人或签', 903, @tenant_id, 0
|
||||
FROM DUAL
|
||||
WHERE @safety_id IS NOT NULL AND NOT EXISTS (
|
||||
WHERE @safety_code IS NOT NULL AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND role_code = CONCAT('dept_leader_', @safety_id)
|
||||
AND role_code = CONCAT('dept_leader_', @safety_code)
|
||||
);
|
||||
|
||||
INSERT INTO sys_role (role_name, role_code, comments, sort_number, tenant_id, deleted)
|
||||
SELECT '财务部负责人', CONCAT('dept_leader_', @finance_id), '审批种子:财务部负责人,多人或签', 904, @tenant_id, 0
|
||||
SELECT '财务部负责人', CONCAT('dept_leader_', @finance_code), '审批种子:财务部负责人,多人或签', 904, @tenant_id, 0
|
||||
FROM DUAL
|
||||
WHERE @finance_id IS NOT NULL AND NOT EXISTS (
|
||||
WHERE @finance_code IS NOT NULL AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND role_code = CONCAT('dept_leader_', @finance_id)
|
||||
AND role_code = CONCAT('dept_leader_', @finance_code)
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------- 部门分管领导(二期使用,或签)
|
||||
INSERT INTO sys_role (role_name, role_code, comments, sort_number, tenant_id, deleted)
|
||||
SELECT '场馆部分管领导', CONCAT('dept_deputy_', @venue_id), '审批种子:场馆部分管领导,多人或签', 911, @tenant_id, 0
|
||||
SELECT '场馆部分管领导', CONCAT('dept_deputy_', @venue_code), '审批种子:场馆部分管领导,多人或签', 911, @tenant_id, 0
|
||||
FROM DUAL
|
||||
WHERE @venue_id IS NOT NULL AND NOT EXISTS (
|
||||
WHERE @venue_code IS NOT NULL AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND role_code = CONCAT('dept_deputy_', @venue_id)
|
||||
AND role_code = CONCAT('dept_deputy_', @venue_code)
|
||||
);
|
||||
|
||||
INSERT INTO sys_role (role_name, role_code, comments, sort_number, tenant_id, deleted)
|
||||
SELECT '运营管理部分管领导', CONCAT('dept_deputy_', @ops_id), '审批种子:运营管理部分管领导,多人或签', 912, @tenant_id, 0
|
||||
SELECT '运营管理部分管领导', CONCAT('dept_deputy_', @ops_code), '审批种子:运营管理部分管领导,多人或签', 912, @tenant_id, 0
|
||||
FROM DUAL
|
||||
WHERE @ops_id IS NOT NULL AND NOT EXISTS (
|
||||
WHERE @ops_code IS NOT NULL AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND role_code = CONCAT('dept_deputy_', @ops_id)
|
||||
AND role_code = CONCAT('dept_deputy_', @ops_code)
|
||||
);
|
||||
|
||||
INSERT INTO sys_role (role_name, role_code, comments, sort_number, tenant_id, deleted)
|
||||
SELECT '安全运保部分管领导', CONCAT('dept_deputy_', @safety_id), '审批种子:安全运保部分管领导,多人或签', 913, @tenant_id, 0
|
||||
SELECT '安全运保部分管领导', CONCAT('dept_deputy_', @safety_code), '审批种子:安全运保部分管领导,多人或签', 913, @tenant_id, 0
|
||||
FROM DUAL
|
||||
WHERE @safety_id IS NOT NULL AND NOT EXISTS (
|
||||
WHERE @safety_code IS NOT NULL AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND role_code = CONCAT('dept_deputy_', @safety_id)
|
||||
AND role_code = CONCAT('dept_deputy_', @safety_code)
|
||||
);
|
||||
|
||||
INSERT INTO sys_role (role_name, role_code, comments, sort_number, tenant_id, deleted)
|
||||
SELECT '财务部分管领导', CONCAT('dept_deputy_', @finance_id), '审批种子:财务部分管领导,多人或签', 914, @tenant_id, 0
|
||||
SELECT '财务部分管领导', CONCAT('dept_deputy_', @finance_code), '审批种子:财务部分管领导,多人或签', 914, @tenant_id, 0
|
||||
FROM DUAL
|
||||
WHERE @finance_id IS NOT NULL AND NOT EXISTS (
|
||||
WHERE @finance_code IS NOT NULL AND NOT EXISTS (
|
||||
SELECT 1 FROM sys_role WHERE tenant_id = @tenant_id AND deleted = 0
|
||||
AND role_code = CONCAT('dept_deputy_', @finance_id)
|
||||
AND role_code = CONCAT('dept_deputy_', @finance_code)
|
||||
);
|
||||
|
||||
-- ---------------------------------------------------------------- 租户岗位(或签)
|
||||
|
||||
@@ -186,7 +186,23 @@ public final class ApprovalConstants {
|
||||
return STATUS_ARCHIVED.equals(status) ? "单据已归档,不能修改" : "当前状态不可修改";
|
||||
}
|
||||
|
||||
public static String departmentLeaderRoleCode(Integer organizationId) {
|
||||
return organizationId == null ? null : "dept_leader_" + organizationId;
|
||||
/**
|
||||
* 部门岗位角色标识:后缀取启用组织的 organization_code。
|
||||
* 部门未配置编码时返回 null,由调用方阻断并提示。
|
||||
*/
|
||||
public static String departmentLeaderRoleCode(String organizationCode) {
|
||||
return departmentRoleCode("dept_leader_", organizationCode);
|
||||
}
|
||||
|
||||
public static String departmentDeputyRoleCode(String organizationCode) {
|
||||
return departmentRoleCode("dept_deputy_", organizationCode);
|
||||
}
|
||||
|
||||
private static String departmentRoleCode(String prefix, String organizationCode) {
|
||||
if (organizationCode == null) {
|
||||
return null;
|
||||
}
|
||||
String code = organizationCode.trim();
|
||||
return code.isEmpty() ? null : prefix + code;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,8 +161,11 @@ public class ApprovalInstanceService {
|
||||
if (organization == null) {
|
||||
throw new BusinessException("未归属部门,无法提交");
|
||||
}
|
||||
List<ApprovalUserVO> leaders = directoryService.listRoleMembers(
|
||||
ApprovalConstants.departmentLeaderRoleCode(organizationId));
|
||||
String leaderRoleCode = ApprovalConstants.departmentLeaderRoleCode(organization.getOrganizationCode());
|
||||
if (leaderRoleCode == null) {
|
||||
throw new BusinessException("部门未配置编码,无法提交");
|
||||
}
|
||||
List<ApprovalUserVO> leaders = directoryService.listRoleMembers(leaderRoleCode);
|
||||
if (leaders.isEmpty()) {
|
||||
throw new BusinessException("报送部门负责人角色缺配");
|
||||
}
|
||||
@@ -193,13 +196,17 @@ public class ApprovalInstanceService {
|
||||
if (acceptOrgId == null || acceptOrgId <= 0) {
|
||||
throw new BusinessException("请选择受理部门");
|
||||
}
|
||||
if (directoryService.listRoleMembers(ApprovalConstants.departmentLeaderRoleCode(acceptOrgId)).isEmpty()) {
|
||||
throw new BusinessException("受理部门负责人角色缺配");
|
||||
}
|
||||
ApprovalOrganizationVO acceptOrganization = directoryService.getOrganization(acceptOrgId);
|
||||
if (acceptOrganization == null) {
|
||||
throw new BusinessException("受理部门已停用");
|
||||
}
|
||||
String leaderRoleCode = ApprovalConstants.departmentLeaderRoleCode(acceptOrganization.getOrganizationCode());
|
||||
if (leaderRoleCode == null) {
|
||||
throw new BusinessException("受理部门未配置编码");
|
||||
}
|
||||
if (directoryService.listRoleMembers(leaderRoleCode).isEmpty()) {
|
||||
throw new BusinessException("受理部门负责人角色缺配");
|
||||
}
|
||||
return acceptOrganization;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.gxwebsoft.approval.param.ApprovalTaskDispatchParam;
|
||||
import com.gxwebsoft.approval.support.ApprovalApprover;
|
||||
import com.gxwebsoft.approval.support.ApprovalNode;
|
||||
import com.gxwebsoft.approval.vo.ApprovalAssignVO;
|
||||
import com.gxwebsoft.approval.vo.ApprovalOrganizationVO;
|
||||
import com.gxwebsoft.approval.vo.ApprovalUserVO;
|
||||
import com.gxwebsoft.common.core.exception.BusinessException;
|
||||
import com.gxwebsoft.common.system.entity.User;
|
||||
@@ -545,9 +546,9 @@ public class ApprovalTaskService {
|
||||
}
|
||||
switch (resolver) {
|
||||
case RESOLVER_REPORTER_ORG_LEADER:
|
||||
return roleApprovers(ApprovalConstants.departmentLeaderRoleCode(instance.getReportOrgId()));
|
||||
return departmentLeaderApprovers(instance.getReportOrgId());
|
||||
case RESOLVER_ACCEPT_ORG_LEADER:
|
||||
return roleApprovers(ApprovalConstants.departmentLeaderRoleCode(instance.getAcceptOrgId()));
|
||||
return departmentLeaderApprovers(instance.getAcceptOrgId());
|
||||
case RESOLVER_ARCHIVIST:
|
||||
return roleApprovers(ApprovalConstants.ROLE_ARCHIVIST);
|
||||
case RESOLVER_REPORTER:
|
||||
@@ -561,6 +562,17 @@ public class ApprovalTaskService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 部门负责人审批人:按部门 organization_code 解析角色;部门或编码缺失时返回空列表,
|
||||
* 节点保持缺配状态,等待管理员补配置。
|
||||
*/
|
||||
private List<ApprovalApprover> departmentLeaderApprovers(Integer organizationId) {
|
||||
ApprovalOrganizationVO organization = directoryService.getOrganization(organizationId);
|
||||
String roleCode = organization == null
|
||||
? null : ApprovalConstants.departmentLeaderRoleCode(organization.getOrganizationCode());
|
||||
return roleCode == null ? Collections.emptyList() : roleApprovers(roleCode);
|
||||
}
|
||||
|
||||
private List<Integer> confirmCandidateIds(ApprovalInstance instance) {
|
||||
List<Integer> ids = new ArrayList<>();
|
||||
if (instance.getReporterId() != null) {
|
||||
|
||||
@@ -136,6 +136,24 @@ class ApprovalCompletionDraftIT {
|
||||
assertThat(bizNo(instanceId)).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsSubmitWhenDepartmentCodeMissing() throws Exception {
|
||||
Integer noCodeOrg = data.createOrganization("无编码部门" + data.uniqueSuffix(), 136);
|
||||
data.clearOrganizationCode(noCodeOrg);
|
||||
ApprovalTestData.TestUser noCodeReporter =
|
||||
data.createUser("无编码报送人" + data.uniqueSuffix(), noCodeOrg);
|
||||
long instanceId = createCompletion(noCodeReporter, noCodeOrg, TENANT, "无编码单据");
|
||||
|
||||
mockMvc.perform(authed(post("/api/approval/instance/" + instanceId + "/submit"),
|
||||
noCodeReporter, noCodeOrg, TENANT, SUBMIT))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.code").value(1))
|
||||
.andExpect(jsonPath("$.message").value(org.hamcrest.Matchers.containsString("部门未配置编码")));
|
||||
|
||||
assertThat(instanceStatus(instanceId)).isEqualTo("DRAFT");
|
||||
assertThat(bizNo(instanceId)).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsSubmitWhenDepartmentLeaderRoleMissing() throws Exception {
|
||||
long instanceId = createCompletion(reporter, organizationId, TENANT, "缺负责人");
|
||||
@@ -263,7 +281,7 @@ class ApprovalCompletionDraftIT {
|
||||
int otherTenant = 10023;
|
||||
Integer otherOrg = data.createOrganization("外租户部门" + data.uniqueSuffix(), 136, otherTenant);
|
||||
ApprovalTestData.TestUser otherReporter = data.createUser("外租户报送人" + data.uniqueSuffix(), otherOrg, otherTenant);
|
||||
ApprovalTestData.TestRole otherLeaderRole = data.createRole("dept_leader_" + otherOrg, "外租户负责人", otherTenant);
|
||||
ApprovalTestData.TestRole otherLeaderRole = data.createRole(data.leaderRoleCode(otherOrg), "外租户负责人", otherTenant);
|
||||
ApprovalTestData.TestUser otherLeader = data.createUser("外租户负责人" + data.uniqueSuffix(), otherOrg, otherTenant);
|
||||
data.bindTenant(otherLeader.userId, otherLeaderRole.roleId, otherTenant);
|
||||
ApprovalTestData.TestRole otherArchivistRole = data.createRole("approval_archivist", "外租户收文员", otherTenant);
|
||||
@@ -476,7 +494,7 @@ class ApprovalCompletionDraftIT {
|
||||
}
|
||||
|
||||
private List<ApprovalTestData.TestUser> grantDepartmentLeader(int orgId, int tenant, int memberCount) {
|
||||
ApprovalTestData.TestRole role = data.createRole("dept_leader_" + orgId, "部门负责人", tenant);
|
||||
ApprovalTestData.TestRole role = data.createRole(data.leaderRoleCode(orgId), "部门负责人", tenant);
|
||||
List<ApprovalTestData.TestUser> members = new ArrayList<>();
|
||||
for (int i = 0; i < memberCount; i++) {
|
||||
ApprovalTestData.TestUser member = data.createUser("负责人" + data.uniqueSuffix(), orgId, tenant);
|
||||
|
||||
@@ -69,7 +69,7 @@ class ApprovalConfirmArchiveIT {
|
||||
organizationId = data.createOrganization("归档部门" + data.uniqueSuffix(), 136, TENANT);
|
||||
reporter = data.createUser("归档报送人" + data.uniqueSuffix(), organizationId, TENANT);
|
||||
ApprovalTestData.TestRole leaderRole =
|
||||
data.createRole("dept_leader_" + organizationId, "部门负责人", TENANT);
|
||||
data.createRole(data.leaderRoleCode(organizationId), "部门负责人", TENANT);
|
||||
leader = data.createUser("归档负责人" + data.uniqueSuffix(), organizationId, TENANT);
|
||||
data.bindTenant(leader.userId, leaderRole.roleId, TENANT);
|
||||
|
||||
|
||||
@@ -368,8 +368,8 @@ class ApprovalCoordinationIT {
|
||||
@Test
|
||||
void allowsSamePersonToHandleBothApprovalNodes() throws Exception {
|
||||
ApprovalTestData.TestUser both = data.createUser("双部门负责人" + data.uniqueSuffix(), reportOrgId);
|
||||
ApprovalTestData.TestRole reportRole = data.createRole("dept_leader_" + reportOrgId, "部门负责人");
|
||||
ApprovalTestData.TestRole acceptRole = data.createRole("dept_leader_" + acceptOrgId, "部门负责人");
|
||||
ApprovalTestData.TestRole reportRole = data.createRole(data.leaderRoleCode(reportOrgId), "部门负责人");
|
||||
ApprovalTestData.TestRole acceptRole = data.createRole(data.leaderRoleCode(acceptOrgId), "部门负责人");
|
||||
data.bind(both.userId, reportRole.roleId);
|
||||
data.bind(both.userId, acceptRole.roleId);
|
||||
grantArchivist();
|
||||
@@ -523,7 +523,7 @@ class ApprovalCoordinationIT {
|
||||
}
|
||||
|
||||
private List<ApprovalTestData.TestUser> grantDepartmentLeader(int orgId, int memberCount) {
|
||||
ApprovalTestData.TestRole role = data.createRole("dept_leader_" + orgId, "部门负责人");
|
||||
ApprovalTestData.TestRole role = data.createRole(data.leaderRoleCode(orgId), "部门负责人");
|
||||
List<ApprovalTestData.TestUser> members = new ArrayList<>();
|
||||
for (int i = 0; i < memberCount; i++) {
|
||||
ApprovalTestData.TestUser member = data.createUser("协调负责人" + data.uniqueSuffix(), orgId);
|
||||
|
||||
@@ -79,12 +79,12 @@ class ApprovalDispatchIT {
|
||||
reporter = data.createUser("派单报送人" + data.uniqueSuffix(), reportOrgId, TENANT);
|
||||
|
||||
ApprovalTestData.TestRole reportLeaderRole =
|
||||
data.createRole("dept_leader_" + reportOrgId, "报送部门负责人", TENANT);
|
||||
data.createRole(data.leaderRoleCode(reportOrgId), "报送部门负责人", TENANT);
|
||||
reportLeader = data.createUser("派单报送负责人" + data.uniqueSuffix(), reportOrgId, TENANT);
|
||||
data.bindTenant(reportLeader.userId, reportLeaderRole.roleId, TENANT);
|
||||
|
||||
ApprovalTestData.TestRole acceptLeaderRole =
|
||||
data.createRole("dept_leader_" + acceptOrgId, "受理部门负责人", TENANT);
|
||||
data.createRole(data.leaderRoleCode(acceptOrgId), "受理部门负责人", TENANT);
|
||||
acceptLeader = data.createUser("派单受理负责人" + data.uniqueSuffix(), acceptOrgId, TENANT);
|
||||
data.bindTenant(acceptLeader.userId, acceptLeaderRole.roleId, TENANT);
|
||||
acceptMember = data.createUser("派单受理成员" + data.uniqueSuffix(), acceptOrgId, TENANT);
|
||||
|
||||
@@ -66,7 +66,7 @@ class ApprovalPcTodoIT {
|
||||
organizationId = data.createOrganization("PC待办部门" + data.uniqueSuffix(), 136);
|
||||
reporter = data.createUser("PC报送人" + data.uniqueSuffix(), organizationId);
|
||||
ApprovalTestData.TestRole leaderRole =
|
||||
data.createRole("dept_leader_" + organizationId, "部门负责人");
|
||||
data.createRole(data.leaderRoleCode(organizationId), "部门负责人");
|
||||
leader = data.createUser("PC负责人" + data.uniqueSuffix(), organizationId);
|
||||
data.bind(leader.userId, leaderRole.roleId);
|
||||
ApprovalTestData.TestRole archivistRole = data.createRole("approval_archivist", "收文员");
|
||||
|
||||
@@ -319,7 +319,7 @@ class ApprovalQueryIT {
|
||||
}
|
||||
|
||||
private void grantDepartmentLeader() {
|
||||
ApprovalTestData.TestRole role = data.createRole("dept_leader_" + reportOrgId, "部门负责人");
|
||||
ApprovalTestData.TestRole role = data.createRole(data.leaderRoleCode(reportOrgId), "部门负责人");
|
||||
ApprovalTestData.TestUser leader = data.createUser("负责人" + data.uniqueSuffix(), reportOrgId);
|
||||
data.bind(leader.userId, role.roleId);
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ class ApprovalTaskIT {
|
||||
organizationId = data.createOrganization("任务部门" + data.uniqueSuffix(), 136);
|
||||
reporter = data.createUser("任务报送人" + data.uniqueSuffix(), organizationId);
|
||||
ApprovalTestData.TestRole leaderRole =
|
||||
data.createRole("dept_leader_" + organizationId, "部门负责人");
|
||||
data.createRole(data.leaderRoleCode(organizationId), "部门负责人");
|
||||
leader = data.createUser("任务负责人" + data.uniqueSuffix(), organizationId);
|
||||
data.bind(leader.userId, leaderRole.roleId);
|
||||
ApprovalTestData.TestRole archivistRole = data.createRole("approval_archivist", "收文员");
|
||||
@@ -167,7 +167,7 @@ class ApprovalTaskIT {
|
||||
ApprovalTestData.TestUser second =
|
||||
data.createUser("第二负责人" + data.uniqueSuffix(), organizationId);
|
||||
Integer leaderRoleId = data.server().queryForObject("SELECT role_id FROM sys_role WHERE role_code = ? AND tenant_id = ?",
|
||||
Integer.class, "dept_leader_" + organizationId, TENANT);
|
||||
Integer.class, data.leaderRoleCode(organizationId), TENANT);
|
||||
data.bind(second.userId, leaderRoleId);
|
||||
|
||||
long instanceId = createAndSubmit("或签取消");
|
||||
@@ -243,7 +243,7 @@ class ApprovalTaskIT {
|
||||
@Test
|
||||
void allowsReporterToApproveOwnTask() throws Exception {
|
||||
Integer leaderRoleId = data.server().queryForObject("SELECT role_id FROM sys_role WHERE role_code = ? AND tenant_id = ?",
|
||||
Integer.class, "dept_leader_" + organizationId, TENANT);
|
||||
Integer.class, data.leaderRoleCode(organizationId), TENANT);
|
||||
data.bind(reporter.userId, leaderRoleId);
|
||||
|
||||
long instanceId = createAndSubmit("自审单据");
|
||||
|
||||
@@ -80,10 +80,11 @@ public class ApprovalTestData {
|
||||
}
|
||||
|
||||
public Integer createOrganization(String name, int parentId, int tenantId) {
|
||||
String code = "T_" + uniqueSuffix();
|
||||
Integer id = insert(server,
|
||||
"INSERT INTO sys_organization (organization_name, parent_id, organization_type, deleted, tenant_id) "
|
||||
+ "VALUES (?, ?, 'dept', 0, ?)",
|
||||
name, parentId, tenantId);
|
||||
"INSERT INTO sys_organization (organization_name, organization_code, parent_id, organization_type, deleted, tenant_id) "
|
||||
+ "VALUES (?, ?, ?, 'dept', 0, ?)",
|
||||
name, code, parentId, tenantId);
|
||||
organizationIds.add(id);
|
||||
return id;
|
||||
}
|
||||
@@ -92,6 +93,20 @@ public class ApprovalTestData {
|
||||
return createOrganization(name, parentId, TestAuthentication.TENANT_ID);
|
||||
}
|
||||
|
||||
public String organizationCode(Integer organizationId) {
|
||||
return server.queryForObject(
|
||||
"SELECT organization_code FROM sys_organization WHERE organization_id = ?",
|
||||
String.class, organizationId);
|
||||
}
|
||||
|
||||
public String leaderRoleCode(Integer organizationId) {
|
||||
return "dept_leader_" + organizationCode(organizationId);
|
||||
}
|
||||
|
||||
public void clearOrganizationCode(int organizationId) {
|
||||
server.update("UPDATE sys_organization SET organization_code = NULL WHERE organization_id = ?", organizationId);
|
||||
}
|
||||
|
||||
public void disableOrganization(int organizationId) {
|
||||
server.update("UPDATE sys_organization SET deleted = 1 WHERE organization_id = ?", organizationId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user