diff --git a/src/main/java/com/gxwebsoft/approval/constant/ApprovalConstants.java b/src/main/java/com/gxwebsoft/approval/constant/ApprovalConstants.java index 71a0330..2ef5527 100644 --- a/src/main/java/com/gxwebsoft/approval/constant/ApprovalConstants.java +++ b/src/main/java/com/gxwebsoft/approval/constant/ApprovalConstants.java @@ -205,6 +205,26 @@ public final class ApprovalConstants { action.put(ACTION_ASSIGN, "改派"); ACTION_NAMES = Collections.unmodifiableMap(action); + // 流程配置页下拉用:客户能看懂的岗位/部门说法,不是解析器标识 + Map resolver = new LinkedHashMap<>(); + resolver.put(RESOLVER_REPORTER_ORG_LEADER, "报送部门负责人"); + resolver.put(RESOLVER_REPORTER_ORG_DEPUTY, "报送部门分管领导"); + resolver.put(RESOLVER_ACCEPT_ORG_LEADER, "受理部门负责人"); + resolver.put(RESOLVER_ACCEPT_ORG_DEPUTY, "受理部门分管领导"); + resolver.put(RESOLVER_ARCHIVIST, "收文员"); + resolver.put(RESOLVER_ROLE_ARCHIVIST, "收文员岗位"); + resolver.put(RESOLVER_REPORTER, "报送人本人"); + resolver.put(RESOLVER_REPORTER_AND_DISPATCH_TARGET, "报送人与派单对象"); + resolver.put(RESOLVER_ACCEPT_ORG_MEMBERS, "受理部门成员"); + resolver.put(RESOLVER_ORG_LEADER_BY_CODE, "指定部门负责人"); + resolver.put(RESOLVER_ORG_DEPUTY_BY_CODE, "指定部门分管领导"); + resolver.put(RESOLVER_ROLE_CASHIER, "出纳"); + resolver.put(RESOLVER_ROLE_TYPIST, "录入员"); + resolver.put(RESOLVER_ROLE_ISSUER, "发放人"); + resolver.put(RESOLVER_ROLE_GENERAL_MANAGER, "总经理"); + resolver.put(RESOLVER_ROLE_RELATED_DEPT, "相关部门"); + RESOLVER_NAMES = Collections.unmodifiableMap(resolver); + Map category = new LinkedHashMap<>(); category.put(CATEGORY_SIGNED, "签字件"); category.put(CATEGORY_VOUCHER, "凭证"); @@ -212,6 +232,14 @@ public final class ApprovalConstants { CATEGORY_NAMES = Collections.unmodifiableMap(category); } + /** 解析器的客户可读名称(流程配置页下拉,ADR 0016)。 */ + private static final Map RESOLVER_NAMES; + + /** 解析器显示名;未登记的标识原样返回。 */ + public static String resolverName(String resolver) { + return RESOLVER_NAMES.getOrDefault(resolver, resolver); + } + /** 附件分类白名单(上传与提交预检共用)。 */ public static final List ATTACHMENT_CATEGORIES = Collections.unmodifiableList(Arrays.asList(CATEGORY_SIGNED, CATEGORY_VOUCHER, CATEGORY_OTHER)); diff --git a/src/main/java/com/gxwebsoft/approval/service/ApprovalFlowConfigService.java b/src/main/java/com/gxwebsoft/approval/service/ApprovalFlowConfigService.java index c1be961..6e20bc7 100644 --- a/src/main/java/com/gxwebsoft/approval/service/ApprovalFlowConfigService.java +++ b/src/main/java/com/gxwebsoft/approval/service/ApprovalFlowConfigService.java @@ -134,7 +134,7 @@ public class ApprovalFlowConfigService { vo.setFlowName(type.flowName()); vo.setFactoryVersion(type.latestVersion()); vo.setFactoryNodes(parseNodes(type.nodesJson())); - vo.setResolvers(nodeValidator.resolvers()); + vo.setResolvers(nodeValidator.resolverOptions()); List specs = type.fieldSpecs(); vo.setFieldSpecs(specs == null ? Collections.emptyList() : specs); if (latest != null) { diff --git a/src/main/java/com/gxwebsoft/approval/service/ApprovalNodeValidator.java b/src/main/java/com/gxwebsoft/approval/service/ApprovalNodeValidator.java index cf20185..27db0b7 100644 --- a/src/main/java/com/gxwebsoft/approval/service/ApprovalNodeValidator.java +++ b/src/main/java/com/gxwebsoft/approval/service/ApprovalNodeValidator.java @@ -7,6 +7,7 @@ import com.gxwebsoft.approval.document.ApprovalDocumentRegistry; import com.gxwebsoft.approval.document.ApprovalDocumentType; import com.gxwebsoft.approval.support.ApprovalFieldSpec; import com.gxwebsoft.approval.support.ApprovalNode; +import com.gxwebsoft.approval.vo.ApprovalResolverVO; import com.gxwebsoft.common.core.exception.BusinessException; import org.springframework.stereotype.Service; @@ -79,9 +80,13 @@ public class ApprovalNodeValidator { @Resource private ApprovalDirectoryService directoryService; - /** 前端下拉用的解析器清单。 */ - public List resolvers() { - return RESOLVERS; + /** 前端下拉用的解析器清单:值 + 客户可读名称。 */ + public List resolverOptions() { + List options = new java.util.ArrayList<>(); + for (String resolver : RESOLVERS) { + options.add(new ApprovalResolverVO(resolver, ApprovalConstants.resolverName(resolver))); + } + return options; } /** diff --git a/src/main/java/com/gxwebsoft/approval/vo/ApprovalFlowVO.java b/src/main/java/com/gxwebsoft/approval/vo/ApprovalFlowVO.java index 9692d96..47660c3 100644 --- a/src/main/java/com/gxwebsoft/approval/vo/ApprovalFlowVO.java +++ b/src/main/java/com/gxwebsoft/approval/vo/ApprovalFlowVO.java @@ -45,6 +45,6 @@ public class ApprovalFlowVO implements Serializable { @ApiModelProperty("可写字段元数据") private List fieldSpecs = new ArrayList<>(); - @ApiModelProperty("可用审批人解析器") - private List resolvers = new ArrayList<>(); + @ApiModelProperty("可用审批人解析器(含客户可读名称)") + private List resolvers = new ArrayList<>(); } diff --git a/src/main/java/com/gxwebsoft/approval/vo/ApprovalResolverVO.java b/src/main/java/com/gxwebsoft/approval/vo/ApprovalResolverVO.java new file mode 100644 index 0000000..c255492 --- /dev/null +++ b/src/main/java/com/gxwebsoft/approval/vo/ApprovalResolverVO.java @@ -0,0 +1,30 @@ +package com.gxwebsoft.approval.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 审批人解析器选项:流程配置页下拉用,label 是客户可读的说法(ADR 0016)。 + */ +@Data +@ApiModel(description = "审批人解析器选项") +public class ApprovalResolverVO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("解析器标识") + private String value; + + @ApiModelProperty("客户可读名称") + private String label; + + public ApprovalResolverVO() { + } + + public ApprovalResolverVO(String value, String label) { + this.value = value; + this.label = label; + } +}