From b9eb8cd99ffb40c7e899fd7daf7314d7423c74f9 Mon Sep 17 00:00:00 2001 From: new_new_new <8454518+new-twice@user.noreply.gitee.com> Date: Thu, 18 Jun 2026 02:19:26 +0000 Subject: [PATCH] =?UTF-8?q?!47=20refactor(flow):=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=83=A8=E9=97=A8ID=E5=92=8C=E8=A7=92?= =?UTF-8?q?=E8=89=B2ID=E8=87=B3=20OrgConfig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(flow): 统一管理部门ID和角色ID至 OrgConfig --- .../src/main/java/org/jeecg/OrgConfig.java | 31 +++++++++++ .../InspectCloseoutConstant.java | 7 --- .../inspectcloseout/InspectCloseoutFlow.java | 36 ++++++------ .../jeecg/inspectimprove/InspectConstant.java | 2 - .../inspectimprove/InspectImproveConfig.java | 2 - .../inspectimprove/InspectImproveFlow.java | 30 ++++------ .../java/org/jeecg/xispeak/XiSpeakConfig.java | 6 -- .../java/org/jeecg/xispeak/XiSpeakFlow.java | 34 ++++-------- .../xispeakfb/XiSpeakFeedbackConfig.java | 5 -- .../jeecg/xispeakfb/XiSpeakFeedbackFlow.java | 41 +++----------- .../src/main/resources/application-flow.yml | 21 ++++--- .../InspectCloseoutFlowTest.java | 55 ++++++++++--------- .../InspectImproveFlowTest.java | 45 ++++++++------- 13 files changed, 143 insertions(+), 172 deletions(-) create mode 100644 jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/OrgConfig.java diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/OrgConfig.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/OrgConfig.java new file mode 100644 index 0000000..79c290c --- /dev/null +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/OrgConfig.java @@ -0,0 +1,31 @@ +package org.jeecg; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties(prefix = "flow-biz.org") +public class OrgConfig { + + private Dept dept = new Dept(); + private Role role = new Role(); + + @Data + public static class Dept { + private String jj; + private String sld; + private String dq; + private String bg; + } + + @Data + public static class Role { + private String ld; + private String jjWorker; + private String sldJwsj; + private String sdwsj; + private String sdw; + } +} diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectcloseout/InspectCloseoutConstant.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectcloseout/InspectCloseoutConstant.java index 4d8d5b6..95834a2 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectcloseout/InspectCloseoutConstant.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectcloseout/InspectCloseoutConstant.java @@ -1,12 +1,5 @@ package org.jeecg.inspectcloseout; public class InspectCloseoutConstant { - public static final String JJ_DEPT_ID = "2054466800692432898"; - public static final String JJ_DEPT_LEADER_ROLE_ID = "2044680793306591234"; - public static final String JJ_DEPT_WORKER_ROLE_ID = "2047511967494213633"; - public static final String SLD_DEPT_ID = "2044677562460508161"; - public static final String SLD_JWSJ_ROLE_ID = "2063902766943363073"; - public static final String DQ_DEPT_ID = "2044677628281720834"; - public static final String DQ_DEPT_WORKER_ROLE_ID = "2047511967494213633"; public static final int ZERO_INDEX = 0; } diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectcloseout/InspectCloseoutFlow.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectcloseout/InspectCloseoutFlow.java index d854a7f..4dfea11 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectcloseout/InspectCloseoutFlow.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectcloseout/InspectCloseoutFlow.java @@ -5,8 +5,8 @@ import com.jeecg.weibo.exception.BusinessException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.jeecg.OrgConfig; import org.jeecg.common.system.api.ISysBaseAPI; -import org.jeecg.inspectimprove.InspectImproveConfig; import org.jeecg.modules.extbpm.process.common.expression.FlowNodeExpression; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -21,6 +21,7 @@ import java.util.stream.Collectors; public class InspectCloseoutFlow { private final InspectCloseoutConfig inspectCloseoutConfig; + private final OrgConfig orgConfig; private final FlowNodeExpression flowNodeExpression; private final ISysBaseAPI iSysBaseAPI; @@ -54,12 +55,10 @@ public class InspectCloseoutFlow { //流程表达式内用法 ${inspectImproveFlow.getJJDeptLdUserIdList()} public List getJJDeptLdUserIdList() { - - log.info("【巡视整改销号-流程表达式】查询部门角色用户列表, deptId: {}, roleId: {}", InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID); - List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.JJ_DEPT_ID, - InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID - ); + String deptId = orgConfig.getDept().getJj(); + String roleId = orgConfig.getRole().getLd(); + log.info("【巡视整改销号-流程表达式】查询部门角色用户列表, deptId: {}, roleId: {}", deptId, roleId); + List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, roleId); log.info("【巡视整改销号-流程表达式】查询到用户列表, userList: {}", userList); return userList; } @@ -76,20 +75,18 @@ public class InspectCloseoutFlow { //流程表达式内用法 ${inspectCloseoutFlow.getJJDeptLdWorkerIdList()} public List getJJDeptLdWorkerIdList() { - - log.info("【巡视整改销号-流程表达式】查询部门角色用户列表, deptId: {}, roleId: {}", InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID); - List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.JJ_DEPT_ID, - InspectCloseoutConstant.JJ_DEPT_WORKER_ROLE_ID - ); + String deptId = orgConfig.getDept().getJj(); + String roleId = orgConfig.getRole().getJjWorker(); + log.info("【巡视整改销号-流程表达式】查询部门角色用户列表, deptId: {}, roleId: {}", deptId, roleId); + List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, roleId); log.info("【巡视整改销号-流程表达式】查询到用户列表, userList: {}", userList); return userList; } //流程表达式内用法 ${inspectCloseoutFlow.getJWSJUser()} public String getJWSJUser() { - String deptId = InspectCloseoutConstant.SLD_DEPT_ID; - String roleId = InspectCloseoutConstant.SLD_JWSJ_ROLE_ID; + String deptId = orgConfig.getDept().getSld(); + String roleId = orgConfig.getRole().getSldJwsj(); log.info("【巡视整改销号-流程表达式】查询纪委书记用户, deptId: {}, roleId: {}", deptId, roleId); @@ -112,11 +109,10 @@ public class InspectCloseoutFlow { //流程表达式内用法 ${inspectCloseoutFlow.getDqDeptLdUserIdList()} public List getDqDeptLdUserIdList() { - log.info("【巡视整改销号-流程表达式】查询部门角色用户列表, deptId: {}, roleId: {}", InspectCloseoutConstant.DQ_DEPT_ID, InspectCloseoutConstant.DQ_DEPT_WORKER_ROLE_ID); - List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.DQ_DEPT_ID, - InspectCloseoutConstant.DQ_DEPT_WORKER_ROLE_ID - ); + String deptId = orgConfig.getDept().getDq(); + String roleId = orgConfig.getRole().getJjWorker(); + log.info("【巡视整改销号-流程表达式】查询部门角色用户列表, deptId: {}, roleId: {}", deptId, roleId); + List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, roleId); log.info("【巡视整改销号-流程表达式】查询到用户列表, userList: {}", userList); return userList; } diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectConstant.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectConstant.java index 86afbd7..e003e37 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectConstant.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectConstant.java @@ -9,8 +9,6 @@ public class InspectConstant { public static final String DQ_DEPT_LEADER_KEY = "dq_dept_leader"; public static final String IS_END_KEY = "is_end"; public static final String SUB_APPROVE_USER_KEY = "sub_approve_user"; - public static final String SLD_DEPT_ID = "2044677562460508161"; - public static final String SDWSJ_ROLE_ID = "2062796937607499777"; public static final String IS_NEED_LEADER_APPROVE_KEY = "is_need_leader_approve"; public static final String LEADER_APPROVE_USER_KEY = "leader_approve_user"; public static final int ZERO_INDEX = 0; diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectImproveConfig.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectImproveConfig.java index a17211c..da509b4 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectImproveConfig.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectImproveConfig.java @@ -35,7 +35,5 @@ public class InspectImproveConfig { private String workProgressKey; /** 完成状态 key */ private String completionStatusKey; - private String dqDeptId; - private String ldRoleId; } } diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectImproveFlow.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectImproveFlow.java index e188630..f831bb6 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectImproveFlow.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/inspectimprove/InspectImproveFlow.java @@ -7,13 +7,13 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.DelegateExecution; +import org.jeecg.OrgConfig; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectTaskService; import org.jeecg.modules.dj.inspectimprove.entity.DjInspectImprove; import org.jeecg.modules.dj.inspectimprove.service.IDjInspectImproveService; import org.jeecg.modules.extbpm.process.common.expression.FlowNodeExpression; -import org.jeecg.xispeak.XiSpeakConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -27,34 +27,28 @@ import java.util.stream.Collectors; public class InspectImproveFlow { private final InspectImproveConfig inspectImproveConfig; + private final OrgConfig orgConfig; private final IDjInspectImproveService djInspectImproveService; private final FlowNodeExpression flowNodeExpression; - private final XiSpeakConfig xiSpeakConfig; private final ISysBaseAPI iSysBaseAPI; private final IDqInspectTaskService dqInspectTaskService; private final RuntimeService runtimeService; //流程表达式内用法 ${inspectImproveFlow.getDqDeptLdUserIdList()} public List getDqDeptLdUserIdList() { - InspectImproveConfig.InspectImproveProperties props = inspectImproveConfig.getInspectImprove(); - if (props == null || !org.apache.shiro.util.StringUtils.hasText(props.getDqDeptId())) { - log.error("【巡视整改-流程表达式】流程配置缺失, key: flow-biz.inspect-improve.dq-dept-id"); - return Collections.emptyList(); - } + String deptId = orgConfig.getDept().getDq(); + String roleId = orgConfig.getRole().getLd(); - log.info("【巡视整改-流程表达式】查询部门角色用户列表, deptId: {}, roleId: {}", props.getDqDeptId(), props.getLdRoleId()); - List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - props.getDqDeptId(), - props.getLdRoleId() - ); + log.info("【巡视整改-流程表达式】查询部门角色用户列表, deptId: {}, roleId: {}", deptId, roleId); + List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, roleId); log.info("【巡视整改-流程表达式】查询到用户列表, userList: {}", userList); return userList; } // 流程表达式内用法 ${inspectImproveFlow.getSDWSJ()} public String getSDWSJ() { - String deptId = InspectConstant.SLD_DEPT_ID; - String roleId = InspectConstant.SDWSJ_ROLE_ID; + String deptId = orgConfig.getDept().getSld(); + String roleId = orgConfig.getRole().getSdwsj(); log.info("【巡视整改-流程表达式】开始查询所党委书记用户, deptId: {}, roleId: {}", deptId, roleId); @@ -147,15 +141,15 @@ public class InspectImproveFlow { } - InspectImproveConfig.InspectImproveProperties props = inspectImproveConfig.getInspectImprove(); - log.info("正在查询整改责任部门: {} 下的角色: {} 的领导列表", measureDeptId, props.getLdRoleId()); + String ldRoleId = orgConfig.getRole().getLd(); + log.info("正在查询整改责任部门: {} 下的角色: {} 的领导列表", measureDeptId, ldRoleId); List leaderList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( measureDeptId, - props.getLdRoleId() + ldRoleId ); if (leaderList == null || leaderList.isEmpty()) { - log.warn("【节点预警】整改责任部门: {} 下未配置角色: {} 的用户,审批人列表为空!", measureDeptId, props.getLdRoleId()); + log.warn("【节点预警】整改责任部门: {} 下未配置角色: {} 的用户,审批人列表为空!", measureDeptId, ldRoleId); return Collections.emptyList(); } diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeak/XiSpeakConfig.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeak/XiSpeakConfig.java index 41023d5..1906616 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeak/XiSpeakConfig.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeak/XiSpeakConfig.java @@ -16,10 +16,6 @@ public class XiSpeakConfig { @Data public static class XiSpeakProperties { - /** 对应 bg-dept-id */ - private String bgDeptId; - /** 对应 ld-role-id */ - private String ldRoleId; /** 对应 need-sdw-approve-code */ private String needSdwApproveCode; /** 对应 json-data-key */ @@ -28,8 +24,6 @@ public class XiSpeakConfig { private String implDeptKey; /** 对应impl-dept-collection-used*/ private String implDeptCollectionUsedKey; - /** 对应sdw-role-id*/ - private String sdwRoleId; /** 对应business-key*/ private String businessKey; /** 对应impl-dept-key-underscore-key*/ diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeak/XiSpeakFlow.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeak/XiSpeakFlow.java index a5ceb7c..59bfcba 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeak/XiSpeakFlow.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeak/XiSpeakFlow.java @@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.shiro.util.StringUtils; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.DelegateExecution; +import org.jeecg.OrgConfig; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.modules.bg.xispeak.entity.BgXiSpeak; @@ -26,6 +27,7 @@ import java.util.stream.Collectors; public class XiSpeakFlow { private final XiSpeakConfig xiSpeakConfig; + private final OrgConfig orgConfig; private final ISysBaseAPI iSysBaseAPI; private final RuntimeService runtimeService; private final FlowNodeExpression flowNodeExpression; @@ -33,34 +35,18 @@ public class XiSpeakFlow { //流程表达式内用法 ${xiSpeakFlow.getBgDeptLdUserIdList()} public List getBgDeptLdUserIdList() { - // 1. 安全获取配置,防止 NPE - XiSpeakConfig.XiSpeakProperties props = xiSpeakConfig.getXiSpeak(); - if (props == null || !StringUtils.hasText(props.getBgDeptId())) { - log.error("流程配置缺失: [flow-biz.xi-speak.bg-dept-id] 未在 YAML 中定义"); - return Collections.emptyList(); - } - - // 2. 调用接口获取数据 - log.info("正在查询部门: {} 下的角色: {} 的用户列表", props.getBgDeptId(), props.getLdRoleId()); - List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - props.getBgDeptId(), - props.getLdRoleId() - ); + String deptId = orgConfig.getDept().getBg(); + String roleId = orgConfig.getRole().getLd(); + log.info("正在查询部门: {} 下的角色: {} 的用户列表", deptId, roleId); + List userList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, roleId); log.info("查询到的用户为: {}", userList); return userList; } public List getSDWLeader() { - // 1. 安全获取配置,防止 NPE - XiSpeakConfig.XiSpeakProperties props = xiSpeakConfig.getXiSpeak(); - if (props == null || !StringUtils.hasText(props.getSdwRoleId())) { - log.error("流程配置缺失: [flow-biz.xi-speak.sdw-role-id] 未在 YAML 中定义"); - return Collections.emptyList(); - } - - // 2. 调用接口获取数据 - log.info("正在查询sdw:{}角色下的用户列表",props.getSdwRoleId()); - List userList = iSysBaseAPI.getUserByRoleIdLocalApi(props.getSdwRoleId()); + String roleId = orgConfig.getRole().getSdw(); + log.info("正在查询sdw:{}角色下的用户列表", roleId); + List userList = iSysBaseAPI.getUserByRoleIdLocalApi(roleId); log.info("查询到的用户为: {}", userList); return userList; } @@ -330,7 +316,7 @@ public class XiSpeakFlow { } public List getImplDeptLdsList(String deptId) { - return iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, xiSpeakConfig.getXiSpeak().getLdRoleId()); + return iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, orgConfig.getRole().getLd()); } public int getImplDeptLdsListLength(String deptId) { diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeakfb/XiSpeakFeedbackConfig.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeakfb/XiSpeakFeedbackConfig.java index 40d4e28..ca6740e 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeakfb/XiSpeakFeedbackConfig.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeakfb/XiSpeakFeedbackConfig.java @@ -1,7 +1,6 @@ package org.jeecg.xispeakfb; import lombok.Data; -import org.jeecg.xispeak.XiSpeakConfig; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -17,10 +16,6 @@ public class XiSpeakFeedbackConfig { @Data public static class XiSpeakPropertiesFb { - String deptId; String businessId; - String jjDeptId; - String jjWorkerRoleId; - String jjLeaderRoleId; } } diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeakfb/XiSpeakFeedbackFlow.java b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeakfb/XiSpeakFeedbackFlow.java index 5d8f15f..cb929e4 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeakfb/XiSpeakFeedbackFlow.java +++ b/jeecg-boot-module/jeecg-module-flow/src/main/java/org/jeecg/xispeakfb/XiSpeakFeedbackFlow.java @@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.DelegateExecution; +import org.jeecg.OrgConfig; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.modules.bg.xispeak.entity.BgXiSpeak; @@ -16,7 +17,6 @@ import org.jeecg.modules.bg.xispeak.entity.DeptApproveDetailMap; import org.jeecg.modules.bg.xispeak.service.IBgXiSpeakService; import org.jeecg.modules.tasktask.entity.TaskTask; import org.jeecg.modules.tasktask.service.ITaskTaskService; -import org.jeecg.xispeak.XiSpeakConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -30,6 +30,7 @@ import java.util.stream.Collectors; public class XiSpeakFeedbackFlow { private final XiSpeakFeedbackConfig xiSpeakFeedbackConfig; + private final OrgConfig orgConfig; private final ISysBaseAPI iSysBaseAPI; private final RuntimeService runtimeService; private final IBgXiSpeakService bgXiSpeakService; @@ -227,23 +228,10 @@ public class XiSpeakFeedbackFlow { * @example 表达式用法: ${XiSpeakFeedbackFlow.getJJDeptWorkerList()} */ public List getJJDeptWorkerList() { - // 1. 安全获取配置对象 - XiSpeakFeedbackConfig.XiSpeakPropertiesFb config = xiSpeakFeedbackConfig.getXiSpeakFb(); - if (config == null) { - log.error("xiSpeakFb 配置对象加载失败,请检查配置文件!"); - return Collections.emptyList(); - } + String deptId = orgConfig.getDept().getJj(); + String roleId = orgConfig.getRole().getJjWorker(); - String deptId = config.getJjDeptId(); - String roleId = config.getJjWorkerRoleId(); - - // 2. 参数合法性拦截 - if (StringUtils.isAnyBlank(deptId, roleId)) { - log.warn("xiSpeakFb 配置项不完整: deptId={}, roleId={}", deptId, roleId); - return Collections.emptyList(); - } - - // 3. 调用接口并处理结果 + // 2. 调用接口并处理结果 List workerList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, roleId); if (CollectionUtils.isEmpty(workerList)) { @@ -278,23 +266,10 @@ public class XiSpeakFeedbackFlow { * @example 表达式用法: ${XiSpeakFeedbackFlow.getJJDeptLeaderList()} */ public List getJJDeptLeaderList() { - // 1. 安全获取配置对象 - XiSpeakFeedbackConfig.XiSpeakPropertiesFb config = xiSpeakFeedbackConfig.getXiSpeakFb(); - if (config == null) { - log.error("xiSpeakFb 配置对象加载失败,请检查配置文件!"); - return Collections.emptyList(); - } + String deptId = orgConfig.getDept().getJj(); + String roleId = orgConfig.getRole().getLd(); - String deptId = config.getJjDeptId(); - String roleId = config.getJjLeaderRoleId (); - - // 2. 参数合法性拦截 - if (StringUtils.isAnyBlank(deptId, roleId)) { - log.warn("xiSpeakFb 配置项不完整: deptId={}, roleId={}", deptId, roleId); - return Collections.emptyList(); - } - - // 3. 调用接口并处理结果 + // 2. 调用接口并处理结果 List workerList = iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(deptId, roleId); if (CollectionUtils.isEmpty(workerList)) { diff --git a/jeecg-boot-module/jeecg-module-flow/src/main/resources/application-flow.yml b/jeecg-boot-module/jeecg-module-flow/src/main/resources/application-flow.yml index d2f5639..67c57af 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/main/resources/application-flow.yml +++ b/jeecg-boot-module/jeecg-module-flow/src/main/resources/application-flow.yml @@ -1,14 +1,23 @@ flow-biz: + org: + dept: + jj: "2054466800692432898" + sld: "2044677562460508161" + dq: "2044677628281720834" + bg: "2044677604785229826" + role: + ld: "2044680793306591234" + jj-worker: "2047511967494213633" + sld-jwsj: "2063902766943363073" + sdwsj: "2062796937607499777" + sdw: "2044676455280570370" xi-speak: - bg-dept-id: "2044677604785229826" - ld-role-id: "2044680793306591234" need-sdw-approve-code: "needSdwApproval" feedback-right-now-code: "feedback_right_now" json-data-key: "json_data" impl-dept-key: "implDept" impl-dept-key-underscore-key: "impl_dept" impl-dept-collection-used-key: "impl_dept_id" - sdw-role-id: "2044676455280570370" business-key: "business_id" dept-worker-key: "subApproveUser" xi-speak-fb-flowcode: "process_1778315114392" @@ -19,8 +28,6 @@ flow-biz: sdw-leader-list-key: "sdwLeaderList" is-end-key: "isEnd" inspect-improve: - dq-dept-id: "2044677628281720834" - ld-role-id: "2044680793306591234" business-key: "business_id" json-data-key: "json_data" form-url: "dj/inspectimprove/components/DjInspectImproveBPMForm" @@ -43,11 +50,7 @@ flow-biz: closeout-desc-key: "closeoutDesc" completion-status-key: "completionStatus" xi-speak-fb: - dept-id: "x" business-id: "business_id" - jj-dept-id: "2054466800692432898" - jj-worker-role-id: "2047511967494213633" - jj-leader-role-id: "2044680793306591234" diff --git a/jeecg-boot-module/jeecg-module-flow/src/test/java/org/jeecg/inspectcloseout/InspectCloseoutFlowTest.java b/jeecg-boot-module/jeecg-module-flow/src/test/java/org/jeecg/inspectcloseout/InspectCloseoutFlowTest.java index f59cc2e..f096372 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/test/java/org/jeecg/inspectcloseout/InspectCloseoutFlowTest.java +++ b/jeecg-boot-module/jeecg-module-flow/src/test/java/org/jeecg/inspectcloseout/InspectCloseoutFlowTest.java @@ -5,6 +5,7 @@ import static org.mockito.Mockito.*; import com.alibaba.fastjson.JSONObject; import com.jeecg.weibo.exception.BusinessException; +import org.jeecg.OrgConfig; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.inspectcloseout.InspectCloseoutConfig.InspectCloseoutProperties; import org.junit.jupiter.api.BeforeEach; @@ -23,11 +24,16 @@ class InspectCloseoutFlowTest { @Mock private InspectCloseoutConfig inspectCloseoutConfig; + @Mock + private OrgConfig orgConfig; + @Mock private ISysBaseAPI iSysBaseAPI; private InspectCloseoutFlow flow; private InspectCloseoutProperties props; + private OrgConfig.Dept dept; + private OrgConfig.Role role; @BeforeEach void setUp() { @@ -43,8 +49,19 @@ class InspectCloseoutFlowTest { props.setCompletionStatusKey("completionStatusKey"); lenient().when(inspectCloseoutConfig.getInspectCloseout()).thenReturn(props); + dept = new OrgConfig.Dept(); + dept.setJj("dept-jj"); + dept.setSld("dept-sld"); + dept.setDq("dept-dq"); + role = new OrgConfig.Role(); + role.setLd("role-ld"); + role.setJjWorker("role-jj-worker"); + role.setSldJwsj("role-sld-jwsj"); + lenient().when(orgConfig.getDept()).thenReturn(dept); + lenient().when(orgConfig.getRole()).thenReturn(role); + // FlowNodeExpression 未使用,传 null - flow = new InspectCloseoutFlow(inspectCloseoutConfig, null, iSysBaseAPI); + flow = new InspectCloseoutFlow(inspectCloseoutConfig, orgConfig, null, iSysBaseAPI); } // ==================== 部门角色用户查询 ==================== @@ -55,8 +72,7 @@ class InspectCloseoutFlowTest { @Test void getJJDeptLdUserIdList_shouldReturnUserList() { List users = List.of("user1", "user2"); - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-jj", "role-ld")) .thenReturn(users); assertEquals(users, flow.getJJDeptLdUserIdList()); @@ -64,8 +80,7 @@ class InspectCloseoutFlowTest { @Test void getJJDeptLdUserIdList_shouldReturnEmptyList() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-jj", "role-ld")) .thenReturn(Collections.emptyList()); assertEquals(Collections.emptyList(), flow.getJJDeptLdUserIdList()); @@ -73,8 +88,7 @@ class InspectCloseoutFlowTest { @Test void getJJDeptLdUserIdListLength_shouldReturnCount() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-jj", "role-ld")) .thenReturn(List.of("user1", "user2", "user3")); assertEquals(3, flow.getJJDeptLdUserIdListLength()); @@ -82,8 +96,7 @@ class InspectCloseoutFlowTest { @Test void getJJDeptLdUserIdListLength_shouldReturnZeroWhenEmpty() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-jj", "role-ld")) .thenReturn(Collections.emptyList()); assertEquals(0, flow.getJJDeptLdUserIdListLength()); @@ -92,8 +105,7 @@ class InspectCloseoutFlowTest { @Test void getJJDeptLdWorkerIdList_shouldReturnUserList() { List users = List.of("worker1"); - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_WORKER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-jj", "role-jj-worker")) .thenReturn(users); assertEquals(users, flow.getJJDeptLdWorkerIdList()); @@ -101,8 +113,7 @@ class InspectCloseoutFlowTest { @Test void getJJDeptLdWorkerIdListLength_shouldReturnCount() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-jj", "role-ld")) .thenReturn(List.of("user1", "user2")); assertEquals(2, flow.getJJDeptLdWorkerIdListLength()); @@ -111,8 +122,7 @@ class InspectCloseoutFlowTest { @Test void getDqDeptLdUserIdList_shouldReturnUserList() { List users = List.of("dq_user1"); - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.DQ_DEPT_ID, InspectCloseoutConstant.DQ_DEPT_WORKER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-dq", "role-jj-worker")) .thenReturn(users); assertEquals(users, flow.getDqDeptLdUserIdList()); @@ -120,8 +130,7 @@ class InspectCloseoutFlowTest { @Test void getDqDeptLdUserIdListLength_shouldReturnCount() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.DQ_DEPT_ID, InspectCloseoutConstant.DQ_DEPT_WORKER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-dq", "role-jj-worker")) .thenReturn(List.of("user1", "user2")); assertEquals(2, flow.getDqDeptLdUserIdListLength()); @@ -129,8 +138,7 @@ class InspectCloseoutFlowTest { @Test void getDqDeptLdUserIdListLength_shouldReturnZeroWhenEmpty() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.DQ_DEPT_ID, InspectCloseoutConstant.DQ_DEPT_WORKER_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-dq", "role-jj-worker")) .thenReturn(Collections.emptyList()); assertEquals(0, flow.getDqDeptLdUserIdListLength()); @@ -144,8 +152,7 @@ class InspectCloseoutFlowTest { @Test void getJWSJUser_shouldReturnUniqueUser() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.SLD_DEPT_ID, InspectCloseoutConstant.SLD_JWSJ_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-sld", "role-sld-jwsj")) .thenReturn(List.of("jwsj_user")); assertEquals("jwsj_user", flow.getJWSJUser()); @@ -153,8 +160,7 @@ class InspectCloseoutFlowTest { @Test void getJWSJUser_shouldThrowWhenEmpty() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.SLD_DEPT_ID, InspectCloseoutConstant.SLD_JWSJ_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-sld", "role-sld-jwsj")) .thenReturn(Collections.emptyList()); assertThrows(BusinessException.class, () -> flow.getJWSJUser()); @@ -162,8 +168,7 @@ class InspectCloseoutFlowTest { @Test void getJWSJUser_shouldThrowWhenMultipleUsers() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectCloseoutConstant.SLD_DEPT_ID, InspectCloseoutConstant.SLD_JWSJ_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-sld", "role-sld-jwsj")) .thenReturn(List.of("user1", "user2")); assertThrows(BusinessException.class, () -> flow.getJWSJUser()); diff --git a/jeecg-boot-module/jeecg-module-flow/src/test/java/org/jeecg/inspectimprove/InspectImproveFlowTest.java b/jeecg-boot-module/jeecg-module-flow/src/test/java/org/jeecg/inspectimprove/InspectImproveFlowTest.java index 975f5a4..f551f16 100644 --- a/jeecg-boot-module/jeecg-module-flow/src/test/java/org/jeecg/inspectimprove/InspectImproveFlowTest.java +++ b/jeecg-boot-module/jeecg-module-flow/src/test/java/org/jeecg/inspectimprove/InspectImproveFlowTest.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.jeecg.weibo.exception.BusinessException; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.DelegateExecution; +import org.jeecg.OrgConfig; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.inspectimprove.InspectImproveConfig.InspectImproveProperties; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; @@ -27,6 +28,9 @@ class InspectImproveFlowTest { @Mock private InspectImproveConfig inspectImproveConfig; + @Mock + private OrgConfig orgConfig; + @Mock private ISysBaseAPI iSysBaseAPI; @@ -41,21 +45,30 @@ class InspectImproveFlowTest { private InspectImproveFlow flow; private InspectImproveProperties props; + private OrgConfig.Dept dept; + private OrgConfig.Role role; @BeforeEach void setUp() { props = new InspectImproveProperties(); props.setBusinessKey("businessKey"); - props.setDqDeptId("dept-001"); - props.setLdRoleId("role-001"); props.setMeasureResLeaderKey("measureResLeader"); props.setMeasureResDeptKey("measureResDept"); props.setQuestionResLeaderKey("questionResLeader"); props.setQuestionResDeptKey("questionResDept"); lenient().when(inspectImproveConfig.getInspectImprove()).thenReturn(props); - // IDjInspectImproveService, FlowNodeExpression, XiSpeakConfig 未使用,传 null - flow = new InspectImproveFlow(inspectImproveConfig, null, null, null, + dept = new OrgConfig.Dept(); + dept.setDq("dept-dq"); + dept.setSld("dept-sld"); + role = new OrgConfig.Role(); + role.setLd("role-ld"); + role.setSdwsj("role-sdwsj"); + lenient().when(orgConfig.getDept()).thenReturn(dept); + lenient().when(orgConfig.getRole()).thenReturn(role); + + // IDjInspectImproveService, FlowNodeExpression 未使用,传 null + flow = new InspectImproveFlow(inspectImproveConfig, orgConfig, null, null, iSysBaseAPI, dqInspectTaskService, runtimeService); } @@ -211,22 +224,15 @@ class InspectImproveFlowTest { @Test void getDqDeptLdUserIdList_shouldReturnUserList() { List users = List.of("user1", "user2"); - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-001", "role-001")) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-dq", "role-ld")) .thenReturn(users); assertEquals(users, flow.getDqDeptLdUserIdList()); } - @Test - void getDqDeptLdUserIdList_shouldReturnEmptyWhenPropsIsNull() { - when(inspectImproveConfig.getInspectImprove()).thenReturn(null); - - assertEquals(Collections.emptyList(), flow.getDqDeptLdUserIdList()); - } - @Test void getDqDeptLdUserIdListLength_shouldReturnCount() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-001", "role-001")) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-dq", "role-ld")) .thenReturn(List.of("user1", "user2")); assertEquals(2, flow.getDqDeptLdUserIdListLength()); @@ -234,8 +240,7 @@ class InspectImproveFlowTest { @Test void getSDWSJ_shouldReturnUniqueUser() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectConstant.SLD_DEPT_ID, InspectConstant.SDWSJ_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-sld", "role-sdwsj")) .thenReturn(List.of("party_secretary")); assertEquals("party_secretary", flow.getSDWSJ()); @@ -243,8 +248,7 @@ class InspectImproveFlowTest { @Test void getSDWSJ_shouldThrowWhenEmpty() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectConstant.SLD_DEPT_ID, InspectConstant.SDWSJ_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-sld", "role-sdwsj")) .thenReturn(Collections.emptyList()); assertThrows(BusinessException.class, () -> flow.getSDWSJ()); @@ -252,8 +256,7 @@ class InspectImproveFlowTest { @Test void getSDWSJ_shouldThrowWhenMultipleUsers() { - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi( - InspectConstant.SLD_DEPT_ID, InspectConstant.SDWSJ_ROLE_ID)) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-sld", "role-sdwsj")) .thenReturn(List.of("user1", "user2")); assertThrows(BusinessException.class, () -> flow.getSDWSJ()); @@ -272,7 +275,7 @@ class InspectImproveFlowTest { task.setMeasureResDept("dept-100"); List leaders = List.of("leader1"); - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-100", "role-001")) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-100", "role-ld")) .thenReturn(leaders); assertEquals(leaders, flow.getImplDeptLeaderList(execution)); @@ -293,7 +296,7 @@ class InspectImproveFlowTest { DqInspectTask task = mockTaskFound("biz-001"); task.setMeasureResDept("dept-100"); - when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-100", "role-001")) + when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi("dept-100", "role-ld")) .thenReturn(List.of("leader1", "leader2")); assertEquals(2, flow.getImplDeptLeaderListLength(execution));