diff --git a/cclqms-java/src/main/java/com/gaotao/common/utils/OaAccountMessage.java b/cclqms-java/src/main/java/com/gaotao/common/utils/OaAccountMessage.java new file mode 100644 index 0000000..8c52cd1 --- /dev/null +++ b/cclqms-java/src/main/java/com/gaotao/common/utils/OaAccountMessage.java @@ -0,0 +1,42 @@ +package com.gaotao.common.utils; + +/** + * OA 人员映射失败时的提示文案。 + */ +public final class OaAccountMessage { + + private OaAccountMessage() { + } + + public static String oaUserNotFound(String person, String account) { + return oaUserNotFound(person, null, account); + } + + public static String oaUserNotFound(String personName, String personCode, String account) { + return "未获取到人员[" + formatPerson(personName, personCode) + "]的域控账号[" + formatAccount(account) + "]对应的OA人员!"; + } + + private static String formatPerson(String personName, String personCode) { + String name = trimToEmpty(personName); + String code = trimToEmpty(personCode); + if (!name.isEmpty() && !code.isEmpty() && !name.equals(code)) { + return name + "(" + code + ")"; + } + if (!name.isEmpty()) { + return name; + } + if (!code.isEmpty()) { + return code; + } + return "未知人员"; + } + + private static String formatAccount(String account) { + String value = trimToEmpty(account); + return value.isEmpty() ? "空" : value; + } + + private static String trimToEmpty(String value) { + return value == null ? "" : value.trim(); + } +} diff --git a/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/OaWorkflowServiceImpl.java b/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/OaWorkflowServiceImpl.java index 3afea55..243c728 100644 --- a/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/OaWorkflowServiceImpl.java +++ b/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/OaWorkflowServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.gaotao.common.exception.XJException; import com.gaotao.common.utils.DateUtils; +import com.gaotao.common.utils.OaAccountMessage; import com.gaotao.datasource.config.AESUtil; import com.gaotao.modules.pda.utils.HttpClientUtil; import com.gaotao.modules.pda.utils.ResponseData; @@ -119,7 +120,7 @@ public class OaWorkflowServiceImpl implements OaWorkflowService { paramData.setStatus(defaultInApprovalStatus(request.getInApprovalStatus())); paramData.setRequestName(buildRequestName(workflowName, userName, documentNo)); paramData.setMainData(buildMainData(details, request.getMainData())); - paramData.setUserId(fetchOaUserId(account)); + paramData.setUserId(fetchOaUserId(userName, account)); if (!Boolean.TRUE.equals(oaControlFlag)) { log.info("OA流程开关关闭,跳过外部OA调用,documentNo={}", documentNo); @@ -173,7 +174,7 @@ public class OaWorkflowServiceImpl implements OaWorkflowService { paramData.setNodeConclusion(request.getNodeConclusion()); paramData.setRejectOpinion(request.getRejectOpinion()); paramData.setRequestName(buildRequestName(workflowName, userName, documentNo)); - paramData.setUserId(fetchOaUserId(account)); + paramData.setUserId(fetchOaUserId(userName, account)); if (!Boolean.TRUE.equals(oaControlFlag)) { log.info("OA流程开关关闭,跳过外部OA调用,documentNo={}, conclusion={}", documentNo, request.getNodeConclusion()); @@ -643,10 +644,13 @@ public class OaWorkflowServiceImpl implements OaWorkflowService { return user.getDomainControlAccount(); } - private String fetchOaUserId(String account) { + private String fetchOaUserId(String userName, String account) { List list = sysUserDao.selectOaIdByAccount(account); if (CollectionUtils.isEmpty(list) || StringUtils.isBlank(list.get(0).getId())) { - throw new XJException("未找到OA用户映射,域控账号:" + account); + SysUserEntity user = StringUtils.isBlank(userName) ? null : sysUserDao.queryByUserName(userName); + String display = user == null ? "" : user.getUserDisplay(); + String code = user == null || StringUtils.isBlank(user.getUsername()) ? userName : user.getUsername(); + throw new XJException(OaAccountMessage.oaUserNotFound(display, code, account)); } return list.get(0).getId(); } diff --git a/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/WorkflowManageServiceImpl.java b/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/WorkflowManageServiceImpl.java index 80e4af9..5456a61 100644 --- a/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/WorkflowManageServiceImpl.java +++ b/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/WorkflowManageServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gaotao.common.exception.XJException; +import com.gaotao.common.utils.OaAccountMessage; import com.gaotao.common.utils.PageUtils; import com.gaotao.modules.pda.utils.HttpClientUtil; import com.gaotao.modules.pda.utils.ResponseData; @@ -347,7 +348,7 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { } List oaUsers = sysUserDao.selectOaIdByAccount(account); if (CollectionUtils.isEmpty(oaUsers) || StringUtils.isBlank(oaUsers.get(0).getId())) { - throw new XJException("未获取到域控账号对应OA人员,域控账号: " + account); + throw new XJException(OaAccountMessage.oaUserNotFound(sysUser.getUserDisplay(), sysUser.getUsername(), account)); } oaUserId = StringUtils.trimToEmpty(oaUsers.get(0).getId()); }