Commit 07a879fd1f617c8d8c06501cd1e31016f32b8446
1 parent
902b0b5e
fix: 处理布局组件可能存在children导致摘要无法展示表单字段
Showing
2 changed files
with
32 additions
and
3 deletions
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 | /** | ... | ... |