Commit 07a879fd1f617c8d8c06501cd1e31016f32b8446

Authored by LesanOuO
1 parent 902b0b5e

fix: 处理布局组件可能存在children导致摘要无法展示表单字段

yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/form/BpmFormFieldVO.java
... ... @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form;
2 2  
3 3 import lombok.Data;
4 4  
  5 +import java.util.List;
  6 +
5 7 /**
6 8 * 流程表单字段 VO
7 9 */
... ... @@ -20,5 +22,9 @@ public class BpmFormFieldVO {
20 22 * 字段标题
21 23 */
22 24 private String title;
  25 + /**
  26 + * 子表单字段(处理布局组件)
  27 + */
  28 + private List<BpmFormFieldVO> children;
23 29  
24 30 }
... ...
yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java
... ... @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;
2 2  
3 3 import cn.hutool.core.map.MapUtil;
4 4 import cn.hutool.core.util.ObjectUtil;
  5 +import cn.hutool.core.util.StrUtil;
5 6 import cn.hutool.extra.spring.SpringUtil;
6 7 import cn.iocoder.yudao.framework.common.core.KeyValue;
7 8 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
... ... @@ -247,9 +248,7 @@ public class FlowableUtils {
247 248 Map<String, BpmFormFieldVO> formFieldsMap = new HashMap<>();
248 249 processDefinitionInfo.getFormFields().forEach(formFieldStr -> {
249 250 BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class);
250   - if (formField != null) {
251   - formFieldsMap.put(formField.getField(), formField);
252   - }
  251 + parseFormField(formField, formFieldsMap);
253 252 });
254 253  
255 254 // 情况一:当自定义了摘要
... ... @@ -273,6 +272,30 @@ public class FlowableUtils {
273 272 .collect(Collectors.toList());
274 273 }
275 274  
  275 + /**
  276 + * 递归解析表单字段
  277 + */
  278 + private static void parseFormField(BpmFormFieldVO formField,
  279 + Map<String, BpmFormFieldVO> formFieldsMap) {
  280 +
  281 + if (formField == null) {
  282 + return;
  283 + }
  284 +
  285 + // 如果存在 children -> 说明是布局组件
  286 + if (formField.getChildren() != null && !formField.getChildren().isEmpty()) {
  287 + for (BpmFormFieldVO child : formField.getChildren()) {
  288 + parseFormField(child, formFieldsMap);
  289 + }
  290 + return;
  291 + }
  292 +
  293 + // 真实字段才加入 map
  294 + if (StrUtil.isNotBlank(formField.getField())) {
  295 + formFieldsMap.put(formField.getField(), formField);
  296 + }
  297 + }
  298 +
276 299 // ========== Task 相关的工具方法 ==========
277 300  
278 301 /**
... ...