feat: 摘要设置代码评审修改

This commit is contained in:
LesanOuO 2025-01-25 10:26:41 +08:00
parent f60a4dfa6b
commit 0ef8467546
3 changed files with 41 additions and 55 deletions

View File

@ -85,10 +85,6 @@ public class BpmTaskRespVO {
@Schema(description = "是否填写审批意见", example = "false") @Schema(description = "是否填写审批意见", example = "false")
private Boolean reasonRequire; private Boolean reasonRequire;
// TODO @lesan要不放到 processInstance 里面因为摘要是流程实例的不是流程任务的
@Schema(description = "流程摘要", example = "[]")
private List<KeyValue<String, String>> summary; // 只有流程表单才有摘要
@Data @Data
@Schema(description = "流程实例") @Schema(description = "流程实例")
public static class ProcessInstance { public static class ProcessInstance {
@ -105,6 +101,9 @@ public class BpmTaskRespVO {
@Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") @Schema(description = "流程定义的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
private String processDefinitionId; private String processDefinitionId;
@Schema(description = "流程摘要", example = "[]")
private List<KeyValue<String, String>> summary; // 只有流程表单才有摘要
/** /**
* 发起人的用户信息 * 发起人的用户信息
*/ */

View File

@ -54,7 +54,7 @@ public interface BpmTaskConvert {
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId())); AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, UserSimpleBaseVO.class)); taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, UserSimpleBaseVO.class));
// 摘要 // 摘要
taskVO.setSummary(FlowableUtils.getSummary(processDefinitionInfoMap.get(processInstance.getProcessDefinitionId()), taskVO.getProcessInstance().setSummary(FlowableUtils.getSummary(processDefinitionInfoMap.get(processInstance.getProcessDefinitionId()),
processInstance.getProcessVariables())); processInstance.getProcessVariables()));
}); });
} }
@ -80,7 +80,7 @@ public interface BpmTaskConvert {
taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class)); taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class));
taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, UserSimpleBaseVO.class)); taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, UserSimpleBaseVO.class));
// 摘要 // 摘要
taskVO.setSummary(FlowableUtils.getSummary(processDefinitionInfoMap.get(processInstance.getProcessDefinitionId()), taskVO.getProcessInstance().setSummary(FlowableUtils.getSummary(processDefinitionInfoMap.get(processInstance.getProcessDefinitionId()),
processInstance.getProcessVariables())); processInstance.getProcessVariables()));
} }
return taskVO; return taskVO;

View File

@ -27,6 +27,8 @@ import org.flowable.task.api.TaskInfo;
import java.util.*; import java.util.*;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
/** /**
* Flowable 相关的工具方法 * Flowable 相关的工具方法
* *
@ -193,7 +195,6 @@ public class FlowableUtils {
BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_SELECT_ASSIGNEES); BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_SELECT_ASSIGNEES);
} }
// TODO @lesan如果值是 null 的情况可能要调研下飞书钉钉是不是不返回哈
/** /**
* 获得流程实例的摘要 * 获得流程实例的摘要
* *
@ -206,53 +207,39 @@ public class FlowableUtils {
*/ */
public static List<KeyValue<String, String>> getSummary(BpmProcessDefinitionInfoDO processDefinitionInfo, public static List<KeyValue<String, String>> getSummary(BpmProcessDefinitionInfoDO processDefinitionInfo,
Map<String, Object> processVariables) { Map<String, Object> processVariables) {
// TODO @lesan建议 if return减少 { 层级 // 只有流程表单才会显示摘要
if (ObjectUtil.isNotNull(processDefinitionInfo) if (ObjectUtil.isNull(processDefinitionInfo)
&& BpmModelFormTypeEnum.NORMAL.getType().equals(processDefinitionInfo.getFormType())) { || !BpmModelFormTypeEnum.NORMAL.getType().equals(processDefinitionInfo.getFormType())) {
List<KeyValue<String, String>> summaryList = new ArrayList<>(); return null;
// 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 @lesanstream 简化
* 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; List<KeyValue<String, String>> summaryList;
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())) {
// 情况一当自定义了摘要
summaryList = convertList(processDefinitionInfo.getSummarySetting().getSummary(), item -> {
BpmFormFieldVO formField = formFieldsMap.get(item);
if (formField != null) {
return new KeyValue<String, String>(formField.getTitle(),
processVariables.getOrDefault(item, "").toString());
}
return null;
});
} else {
// 情况二默认摘要展示前三个表单字段
summaryList = new ArrayList<>(formFieldsMap.entrySet().stream()
.limit(3)
.map(entry -> new KeyValue<>(entry.getValue().getTitle(),
processVariables.getOrDefault(entry.getValue().getField(), "").toString()))
.toList());
}
return summaryList;
} }
// ========== Task 相关的工具方法 ========== // ========== Task 相关的工具方法 ==========
@ -317,9 +304,9 @@ public class FlowableUtils {
private static Object getExpressionValue(VariableContainer variableContainer, String expressionString, private static Object getExpressionValue(VariableContainer variableContainer, String expressionString,
ProcessEngineConfigurationImpl processEngineConfiguration) { ProcessEngineConfigurationImpl processEngineConfiguration) {
assert processEngineConfiguration!= null; assert processEngineConfiguration != null;
ExpressionManager expressionManager = processEngineConfiguration.getExpressionManager(); ExpressionManager expressionManager = processEngineConfiguration.getExpressionManager();
assert expressionManager!= null; assert expressionManager != null;
Expression expression = expressionManager.createExpression(expressionString); Expression expression = expressionManager.createExpression(expressionString);
return expression.getValue(variableContainer); return expression.getValue(variableContainer);
} }