From 809fe778dd3d5728c113fa2ed23e01e5f9d497a6 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 15 Sep 2025 11:45:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-5369)=20-=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/feign/manage/FormAdminApi.java | 13 ++++- .../common/enums/PrintFieldCategoryEnum.java | 25 ++++++++- .../form/model/WpsFileConfigVariableDTO.java | 39 ++++++++++++++ .../web/form/FormAdminController.java | 52 +++++++++++++++++++ 4 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/form/model/WpsFileConfigVariableDTO.java diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/FormAdminApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/FormAdminApi.java index 2590dd4a4..0ad6b26dc 100644 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/FormAdminApi.java +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/manage/FormAdminApi.java @@ -3,16 +3,17 @@ package cn.axzo.workflow.client.feign.manage; import cn.axzo.workflow.client.annotation.WorkflowEngineFeignClient; import cn.axzo.workflow.common.annotation.InvokeMode; import cn.axzo.workflow.common.annotation.Manageable; +import cn.axzo.workflow.common.model.dto.print.PrintFieldDTO; import cn.axzo.workflow.common.model.request.form.definition.StartFormSearchDTO; import cn.axzo.workflow.common.model.request.form.instance.FormDetailDTO; import cn.axzo.workflow.common.model.request.form.instance.FormSearchDTO; import cn.axzo.workflow.common.model.request.form.instance.FromDataSearchDTO; +import cn.axzo.workflow.common.model.request.form.model.WpsFileConfigVariableDTO; import cn.axzo.workflow.common.model.response.form.FormVO; import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO; import cn.axzo.workflow.common.model.response.form.instance.FormDataVO; import cn.axzo.workflow.common.model.response.form.instance.FormInstanceVO; import cn.azxo.framework.common.model.CommonResponse; -import io.swagger.v3.oas.annotations.Operation; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -69,4 +70,14 @@ public interface FormAdminApi { @PostMapping("/api/form/admin/instance/form/data") @InvokeMode(SYNC) CommonResponse> getFormData(@Validated @RequestBody FromDataSearchDTO dto); + + /** + * 获取 WPS 文档中所有可配置的流程相关变量 + * + * @param dto + * @return + */ + @PostMapping("/api/wps/file/config/variables") + @InvokeMode(SYNC) + CommonResponse> getWpsFileConfigVariables(WpsFileConfigVariableDTO dto); } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/PrintFieldCategoryEnum.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/PrintFieldCategoryEnum.java index 1a29b3e16..4d210e173 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/PrintFieldCategoryEnum.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/PrintFieldCategoryEnum.java @@ -1,11 +1,18 @@ package cn.axzo.workflow.common.enums; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonEnumDefaultValue; +import lombok.Getter; + +import java.util.Arrays; + /** * 打印字段的类型枚举 * * @author wangli * @since 2025-01-16 18:19 */ +@Getter public enum PrintFieldCategoryEnum { // 表单变量 @@ -15,5 +22,21 @@ public enum PrintFieldCategoryEnum { // 电子签名变量 signature, // 签署业务自定义变量 - sign + sign, + // 审批业务的变量 + biz_variable, + @JsonEnumDefaultValue + unknown, + ; + + @JsonCreator(mode = JsonCreator.Mode.DELEGATING) + public static PrintFieldCategoryEnum fromValue(String value) { + if (value == null) { + return unknown; + } + return Arrays.stream(values()) + .filter(e -> e.name().equalsIgnoreCase(value)) + .findFirst() + .orElse(unknown); + } } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/form/model/WpsFileConfigVariableDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/form/model/WpsFileConfigVariableDTO.java new file mode 100644 index 000000000..338e12117 --- /dev/null +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/form/model/WpsFileConfigVariableDTO.java @@ -0,0 +1,39 @@ +package cn.axzo.workflow.common.model.request.form.model; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 查询用于 WPS 左侧变量列表的集合 + * + * @author wangli + * @since 2025-09-15 10:07 + */ +@ApiModel("查询用于 WPS 左侧变量列表的集合") +@Data +@Builder +public class WpsFileConfigVariableDTO { + /** + * 模板定义 KEY + */ + @ApiModelProperty(value = "流程模板 KEY") + @NotBlank(message = "流程模板 KEY 不能为空") + private String processDefinitionKey; + + /** + * 租户 ID + */ + @ApiModelProperty(value = "租户 ID") + private String tenantId; + + /** + * 是否抛出内部异常 + */ + @ApiModelProperty(value = "是否报错内部异常") + @Builder.Default + private Boolean throwException = true; +} diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/form/FormAdminController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/form/FormAdminController.java index 35c7c3d9e..58dbbfc95 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/form/FormAdminController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/form/FormAdminController.java @@ -1,20 +1,30 @@ package cn.axzo.workflow.server.controller.web.form; import cn.axzo.workflow.client.feign.manage.FormAdminApi; +import cn.axzo.workflow.common.enums.PrintFieldCategoryEnum; import cn.axzo.workflow.common.model.dto.BpmnFormRelationSearchDTO; +import cn.axzo.workflow.common.model.dto.print.FieldAttributeDTO; +import cn.axzo.workflow.common.model.dto.print.PrintFieldDTO; +import cn.axzo.workflow.common.model.request.bpmn.print.PrintFieldQueryDTO; +import cn.axzo.workflow.common.model.request.category.CategoryGroupVarSearchDto; import cn.axzo.workflow.common.model.request.form.definition.StartFormSearchDTO; import cn.axzo.workflow.common.model.request.form.instance.FormDetailDTO; import cn.axzo.workflow.common.model.request.form.instance.FormSearchDTO; import cn.axzo.workflow.common.model.request.form.instance.FromDataSearchDTO; +import cn.axzo.workflow.common.model.request.form.model.WpsFileConfigVariableDTO; +import cn.axzo.workflow.common.model.response.category.CategoryGroupVarItemVo; import cn.axzo.workflow.common.model.response.form.FormVO; import cn.axzo.workflow.common.model.response.form.definition.FormDefinitionVO; import cn.axzo.workflow.common.model.response.form.instance.FormDataVO; import cn.axzo.workflow.common.model.response.form.instance.FormInstanceVO; +import cn.axzo.workflow.core.service.CategoryGroupService; import cn.axzo.workflow.core.service.FormCoreService; import cn.axzo.workflow.server.common.annotation.ErrorReporter; +import cn.axzo.workflow.server.controller.web.manage.PrintAdminController; import cn.azxo.framework.common.model.CommonResponse; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -22,6 +32,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import static cn.azxo.framework.common.model.CommonResponse.success; @@ -41,6 +52,10 @@ public class FormAdminController implements FormAdminApi { @Resource private FormCoreService formCoreService; + @Resource + private PrintAdminController printAdminController; + @Resource + private CategoryGroupService categoryGroupService; @Operation(summary = "表单列表") @PostMapping("/form/page") @@ -68,4 +83,41 @@ public class FormAdminController implements FormAdminApi { public CommonResponse> getFormData(@Validated @RequestBody FromDataSearchDTO dto) { return success(formCoreService.getFormData(dto)); } + + @Override + public CommonResponse> getWpsFileConfigVariables(@Validated @RequestBody WpsFileConfigVariableDTO dto) { + CommonResponse> printFieldResponse = printAdminController.getPrintFields(PrintFieldQueryDTO.builder() + .processDefinitionKey(dto.getProcessDefinitionKey()) + .tenantId(dto.getTenantId()) + .throwException(dto.getThrowException()) + .build()); + List result = printFieldResponse.getData(); + + List categoryGroupVarItemVos = categoryGroupService.searchGroupAndVarList(CategoryGroupVarSearchDto.builder() + .category(dto.getProcessDefinitionKey()) + .build()); + + if (CollectionUtils.isEmpty(categoryGroupVarItemVos)) { + return printFieldResponse; + } + + categoryGroupVarItemVos.forEach(i -> { + PrintFieldDTO field = new PrintFieldDTO(); + field.setName(i.getGroupName()); + field.setFieldCategoryType(PrintFieldCategoryEnum.biz_variable); + field.setCode(""); + field.setFieldFormType(""); + List attributes = new ArrayList<>(); + i.getVars().forEach(e -> { + FieldAttributeDTO attribute = new FieldAttributeDTO(); + attribute.setCode(e.getCode()); + attribute.setName(e.getName()); + attribute.setFieldFormType(e.getType().getType()); + attributes.add(attribute); + }); + field.setAttributes(attributes); + result.add(field); + }); + return success(result); + } }