|
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.common.core.KeyValue;
|
|
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
|
|
import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|
|
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
|
|
|
-import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model.BpmFormFieldVO;
|
|
|
+import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.form.BpmFormFieldVO;
|
|
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
|
|
|
import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum;
|
|
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnVariableConstants;
|
|
@@ -193,6 +193,68 @@ public class FlowableUtils {
|
|
|
BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_SELECT_ASSIGNEES);
|
|
|
}
|
|
|
|
|
|
+ // TODO @lesan:如果值是 null 的情况,可能要调研下飞书、钉钉,是不是不返回哈!
|
|
|
+ /**
|
|
|
+ * 获得流程实例的摘要
|
|
|
+ *
|
|
|
+ * 仅有 {@link BpmModelFormTypeEnum#getType()} 表单,才有摘要。
|
|
|
+ * 原因是,只有它才有表单项的配置,从而可以根据配置,展示摘要。
|
|
|
+ *
|
|
|
+ * @param processDefinitionInfo 流程定义
|
|
|
+ * @param processVariables 流程实例的 variables
|
|
|
+ * @return 摘要
|
|
|
+ */
|
|
|
+ public static List<KeyValue<String, String>> getSummary(BpmProcessDefinitionInfoDO processDefinitionInfo,
|
|
|
+ Map<String, Object> processVariables) {
|
|
|
+ // TODO @lesan:建议 if return,减少 { 层级
|
|
|
+ if (ObjectUtil.isNotNull(processDefinitionInfo)
|
|
|
+ && BpmModelFormTypeEnum.NORMAL.getType().equals(processDefinitionInfo.getFormType())) {
|
|
|
+ List<KeyValue<String, String>> summaryList = new ArrayList<>();
|
|
|
+ // TODO @lesan:可以使用 CollUtils.convertMap 简化工作量哈。
|
|
|
+ Map<String, BpmFormFieldVO> formFieldsMap = new HashMap<>();
|
|
|
+ processDefinitionInfo.getFormFields().forEach(formFieldStr -> {
|
|
|
+ BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class);
|
|
|
+ if (formField != null) {
|
|
|
+ formFieldsMap.put(formField.getField(), formField);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // TODO @lesan:这里也可以 if return,还是为了减少括号哈。这样,就可以写注释,情况一:;情况二:
|
|
|
+ if (ObjectUtil.isNotNull(processDefinitionInfo.getSummarySetting())
|
|
|
+ && Boolean.TRUE.equals(processDefinitionInfo.getSummarySetting().getEnable())) {
|
|
|
+ // TODO @lesan:这里,也可以通过 CollUtils.convertList 简化哈。
|
|
|
+ for (String item : processDefinitionInfo.getSummarySetting().getSummary()) {
|
|
|
+ BpmFormFieldVO formField = formFieldsMap.get(item);
|
|
|
+ if (formField != null) {
|
|
|
+ summaryList.add(new KeyValue<>(formField.getTitle(),
|
|
|
+ processVariables.getOrDefault(item, "").toString()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 默认展示前三个
|
|
|
+ /* TODO @lesan:stream 简化
|
|
|
+ * summaryList.addAll(formFieldsMap.entrySet().stream()
|
|
|
+ * .limit(3)
|
|
|
+ * .map(entry -> new KeyValue<>(entry.getValue().getTitle(),
|
|
|
+ * processVariables.getOrDefault(entry.getValue().getField(), "").toString()))
|
|
|
+ * .collect(Collectors.toList()));
|
|
|
+ */
|
|
|
+ int j = 0;
|
|
|
+ for (Map.Entry<String, BpmFormFieldVO> entry : formFieldsMap.entrySet()) {
|
|
|
+ BpmFormFieldVO formField = entry.getValue();
|
|
|
+ if (j > 2) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ summaryList.add(new KeyValue<>(formField.getTitle(),
|
|
|
+ processVariables.getOrDefault(formField.getField(), "").toString()));
|
|
|
+ j++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return summaryList;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
// ========== Task 相关的工具方法 ==========
|
|
|
|
|
|
/**
|
|
@@ -279,43 +341,4 @@ public class FlowableUtils {
|
|
|
return getExpressionValue(variableContainer, expressionString);
|
|
|
}
|
|
|
|
|
|
- public static List<KeyValue<String, String>> getSummary(BpmProcessDefinitionInfoDO processDefinitionInfo,
|
|
|
- Map<String, Object> processVariables) {
|
|
|
- if (ObjectUtil.isNotNull(processDefinitionInfo)
|
|
|
- && BpmModelFormTypeEnum.NORMAL.getType().equals(processDefinitionInfo.getFormType())) {
|
|
|
- List<KeyValue<String, String>> summaryList = new ArrayList<>();
|
|
|
- Map<String, BpmFormFieldVO> formFieldsMap = new HashMap<>();
|
|
|
- processDefinitionInfo.getFormFields().forEach(formFieldStr -> {
|
|
|
- BpmFormFieldVO formField = JsonUtils.parseObject(formFieldStr, BpmFormFieldVO.class);
|
|
|
- if (formField != null) {
|
|
|
- formFieldsMap.put(formField.getField(), formField);
|
|
|
- }
|
|
|
- });
|
|
|
- if (ObjectUtil.isNotNull(processDefinitionInfo.getSummarySetting())
|
|
|
- && Boolean.TRUE.equals(processDefinitionInfo.getSummarySetting().getEnable())) {
|
|
|
- for (String item : processDefinitionInfo.getSummarySetting().getSummary()) {
|
|
|
- BpmFormFieldVO formField = formFieldsMap.get(item);
|
|
|
- if (formField != null) {
|
|
|
- summaryList.add(new KeyValue<>(formField.getTitle(),
|
|
|
- processVariables.getOrDefault(item, "").toString()));
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 默认展示前三个
|
|
|
- int j = 0;
|
|
|
- for (Map.Entry<String, BpmFormFieldVO> entry : formFieldsMap.entrySet()) {
|
|
|
- BpmFormFieldVO formField = entry.getValue();
|
|
|
- if (j > 2) {
|
|
|
- break;
|
|
|
- }
|
|
|
- summaryList.add(new KeyValue<>(formField.getTitle(),
|
|
|
- processVariables.getOrDefault(formField.getField(), "").toString()));
|
|
|
- j++;
|
|
|
- }
|
|
|
- }
|
|
|
- return summaryList;
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
}
|