feat: BPM-更多设置-摘要设置
This commit is contained in:
parent
8f4543a270
commit
b5ba500b60
|
@ -0,0 +1,14 @@
|
||||||
|
package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class BpmFormFieldVO {
|
||||||
|
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
private String field;
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model;
|
package cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.model;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.definition.BpmAutoApproveTypeEnum;
|
import cn.iocoder.yudao.module.bpm.enums.definition.BpmAutoApproveTypeEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum;
|
import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum;
|
||||||
|
@ -77,6 +78,9 @@ public class BpmModelMetaInfoVO {
|
||||||
@Schema(description = "标题设置", example = "{}")
|
@Schema(description = "标题设置", example = "{}")
|
||||||
private TitleSetting titleSetting;
|
private TitleSetting titleSetting;
|
||||||
|
|
||||||
|
@Schema(description = "摘要设置", example = "{}")
|
||||||
|
private SummarySetting summarySetting;
|
||||||
|
|
||||||
@Schema(description = "流程 ID 规则")
|
@Schema(description = "流程 ID 规则")
|
||||||
@Data
|
@Data
|
||||||
@Valid
|
@Valid
|
||||||
|
@ -115,4 +119,18 @@ public class BpmModelMetaInfoVO {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Schema(description = "摘要设置")
|
||||||
|
@Data
|
||||||
|
@Valid
|
||||||
|
public static class SummarySetting {
|
||||||
|
|
||||||
|
@Schema(description = "是否自定义", example = "false")
|
||||||
|
@NotNull(message = "是否自定义不能为空")
|
||||||
|
private Boolean enable;
|
||||||
|
|
||||||
|
@Schema(description = "摘要字段数组", example = "[]")
|
||||||
|
private List<String> summary;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,8 +74,10 @@ public class BpmProcessInstanceController {
|
||||||
convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
|
convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
|
||||||
Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
|
Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
|
||||||
convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
|
convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
|
||||||
|
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(
|
||||||
|
convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
|
||||||
return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
|
return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
|
||||||
processDefinitionMap, categoryMap, taskMap, null, null));
|
processDefinitionMap, categoryMap, taskMap, null, null, processDefinitionInfoMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/manager-page")
|
@GetMapping("/manager-page")
|
||||||
|
@ -101,8 +103,10 @@ public class BpmProcessInstanceController {
|
||||||
convertSet(pageResult.getList(), processInstance -> NumberUtils.parseLong(processInstance.getStartUserId())));
|
convertSet(pageResult.getList(), processInstance -> NumberUtils.parseLong(processInstance.getStartUserId())));
|
||||||
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
|
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
|
||||||
convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
|
convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
|
||||||
|
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(
|
||||||
|
convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
|
||||||
return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
|
return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
|
||||||
processDefinitionMap, categoryMap, taskMap, userMap, deptMap));
|
processDefinitionMap, categoryMap, taskMap, userMap, deptMap, processDefinitionInfoMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
|
|
|
@ -7,7 +7,9 @@ import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.*;
|
||||||
import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
|
import cn.iocoder.yudao.module.bpm.convert.task.BpmTaskConvert;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
|
||||||
import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService;
|
import cn.iocoder.yudao.module.bpm.service.definition.BpmFormService;
|
||||||
|
import cn.iocoder.yudao.module.bpm.service.definition.BpmProcessDefinitionService;
|
||||||
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
|
import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
|
||||||
import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
|
import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
|
||||||
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
||||||
|
@ -50,6 +52,8 @@ public class BpmTaskController {
|
||||||
private BpmProcessInstanceService processInstanceService;
|
private BpmProcessInstanceService processInstanceService;
|
||||||
@Resource
|
@Resource
|
||||||
private BpmFormService formService;
|
private BpmFormService formService;
|
||||||
|
@Resource
|
||||||
|
private BpmProcessDefinitionService processDefinitionService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AdminUserApi adminUserApi;
|
private AdminUserApi adminUserApi;
|
||||||
|
@ -70,7 +74,9 @@ public class BpmTaskController {
|
||||||
convertSet(pageResult.getList(), Task::getProcessInstanceId));
|
convertSet(pageResult.getList(), Task::getProcessInstanceId));
|
||||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
|
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
|
||||||
convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
||||||
return success(BpmTaskConvert.INSTANCE.buildTodoTaskPage(pageResult, processInstanceMap, userMap));
|
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(
|
||||||
|
convertSet(pageResult.getList(), Task::getProcessDefinitionId));
|
||||||
|
return success(BpmTaskConvert.INSTANCE.buildTodoTaskPage(pageResult, processInstanceMap, userMap, processDefinitionInfoMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("done-page")
|
@GetMapping("done-page")
|
||||||
|
@ -87,7 +93,9 @@ public class BpmTaskController {
|
||||||
convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
|
convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
|
||||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
|
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
|
||||||
convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
||||||
return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, null));
|
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(
|
||||||
|
convertSet(pageResult.getList(), HistoricTaskInstance::getProcessDefinitionId));
|
||||||
|
return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, null, processDefinitionInfoMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("manager-page")
|
@GetMapping("manager-page")
|
||||||
|
@ -108,7 +116,9 @@ public class BpmTaskController {
|
||||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
|
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
|
||||||
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
|
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
|
||||||
convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
|
convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
|
||||||
return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, deptMap));
|
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(
|
||||||
|
convertSet(pageResult.getList(), HistoricTaskInstance::getProcessDefinitionId));
|
||||||
|
return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, deptMap, processDefinitionInfoMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/list-by-process-instance-id")
|
@GetMapping("/list-by-process-instance-id")
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance;
|
package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.base.user.UserSimpleBaseVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.base.user.UserSimpleBaseVO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmProcessDefinitionRespVO;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
@ -59,6 +60,8 @@ public class BpmProcessInstanceRespVO {
|
||||||
*/
|
*/
|
||||||
private List<Task> tasks; // 仅在流程实例分页才返回
|
private List<Task> tasks; // 仅在流程实例分页才返回
|
||||||
|
|
||||||
|
private List<KeyValue<String, String>> summary;
|
||||||
|
|
||||||
@Schema(description = "流程任务")
|
@Schema(description = "流程任务")
|
||||||
@Data
|
@Data
|
||||||
public static class Task {
|
public static class Task {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;
|
package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.base.user.UserSimpleBaseVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.base.user.UserSimpleBaseVO;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
@ -84,6 +85,9 @@ public class BpmTaskRespVO {
|
||||||
@Schema(description = "是否填写审批意见", example = "false")
|
@Schema(description = "是否填写审批意见", example = "false")
|
||||||
private Boolean reasonRequire;
|
private Boolean reasonRequire;
|
||||||
|
|
||||||
|
@Schema(description = "摘要", example = "[]")
|
||||||
|
private List<KeyValue<String, String>> summary;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "流程实例")
|
@Schema(description = "流程实例")
|
||||||
public static class ProcessInstance {
|
public static class ProcessInstance {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.convert.task;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.SetUtils;
|
||||||
|
@ -58,7 +59,8 @@ public interface BpmProcessInstanceConvert {
|
||||||
Map<String, BpmCategoryDO> categoryMap,
|
Map<String, BpmCategoryDO> categoryMap,
|
||||||
Map<String, List<Task>> taskMap,
|
Map<String, List<Task>> taskMap,
|
||||||
Map<Long, AdminUserRespDTO> userMap,
|
Map<Long, AdminUserRespDTO> userMap,
|
||||||
Map<Long, DeptRespDTO> deptMap) {
|
Map<Long, DeptRespDTO> deptMap,
|
||||||
|
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap) {
|
||||||
PageResult<BpmProcessInstanceRespVO> vpPageResult = BeanUtils.toBean(pageResult, BpmProcessInstanceRespVO.class);
|
PageResult<BpmProcessInstanceRespVO> vpPageResult = BeanUtils.toBean(pageResult, BpmProcessInstanceRespVO.class);
|
||||||
for (int i = 0; i < pageResult.getList().size(); i++) {
|
for (int i = 0; i < pageResult.getList().size(); i++) {
|
||||||
BpmProcessInstanceRespVO respVO = vpPageResult.getList().get(i);
|
BpmProcessInstanceRespVO respVO = vpPageResult.getList().get(i);
|
||||||
|
@ -76,6 +78,9 @@ public interface BpmProcessInstanceConvert {
|
||||||
MapUtils.findAndThen(deptMap, startUser.getDeptId(), dept -> respVO.getStartUser().setDeptName(dept.getName()));
|
MapUtils.findAndThen(deptMap, startUser.getDeptId(), dept -> respVO.getStartUser().setDeptName(dept.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 摘要
|
||||||
|
respVO.setSummary(FlowableUtils.getSummary(processDefinitionInfoMap.get(respVO.getProcessDefinitionId()),
|
||||||
|
pageResult.getList().get(i).getProcessVariables()));
|
||||||
}
|
}
|
||||||
return vpPageResult;
|
return vpPageResult;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.convert.task;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.map.MapUtil;
|
||||||
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
||||||
|
@ -9,6 +10,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.base.user.UserSimpleBaseVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.base.user.UserSimpleBaseVO;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
|
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
|
||||||
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;
|
import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;
|
||||||
|
@ -41,7 +43,8 @@ public interface BpmTaskConvert {
|
||||||
|
|
||||||
default PageResult<BpmTaskRespVO> buildTodoTaskPage(PageResult<Task> pageResult,
|
default PageResult<BpmTaskRespVO> buildTodoTaskPage(PageResult<Task> pageResult,
|
||||||
Map<String, ProcessInstance> processInstanceMap,
|
Map<String, ProcessInstance> processInstanceMap,
|
||||||
Map<Long, AdminUserRespDTO> userMap) {
|
Map<Long, AdminUserRespDTO> userMap,
|
||||||
|
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap) {
|
||||||
return BeanUtils.toBean(pageResult, BpmTaskRespVO.class, taskVO -> {
|
return BeanUtils.toBean(pageResult, BpmTaskRespVO.class, taskVO -> {
|
||||||
ProcessInstance processInstance = processInstanceMap.get(taskVO.getProcessInstanceId());
|
ProcessInstance processInstance = processInstanceMap.get(taskVO.getProcessInstanceId());
|
||||||
if (processInstance == null) {
|
if (processInstance == null) {
|
||||||
|
@ -50,13 +53,17 @@ public interface BpmTaskConvert {
|
||||||
taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class));
|
taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class));
|
||||||
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()),
|
||||||
|
processInstance.getProcessVariables()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
default PageResult<BpmTaskRespVO> buildTaskPage(PageResult<HistoricTaskInstance> pageResult,
|
default PageResult<BpmTaskRespVO> buildTaskPage(PageResult<HistoricTaskInstance> pageResult,
|
||||||
Map<String, HistoricProcessInstance> processInstanceMap,
|
Map<String, HistoricProcessInstance> processInstanceMap,
|
||||||
Map<Long, AdminUserRespDTO> userMap,
|
Map<Long, AdminUserRespDTO> userMap,
|
||||||
Map<Long, DeptRespDTO> deptMap) {
|
Map<Long, DeptRespDTO> deptMap,
|
||||||
|
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap) {
|
||||||
List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(pageResult.getList(), task -> {
|
List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(pageResult.getList(), task -> {
|
||||||
BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
|
||||||
taskVO.setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task));
|
taskVO.setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task));
|
||||||
|
@ -72,6 +79,9 @@ public interface BpmTaskConvert {
|
||||||
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
|
||||||
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()),
|
||||||
|
processInstance.getProcessVariables()));
|
||||||
}
|
}
|
||||||
return taskVO;
|
return taskVO;
|
||||||
});
|
});
|
||||||
|
|
|
@ -176,4 +176,10 @@ public class BpmProcessDefinitionInfoDO extends BaseDO {
|
||||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
private BpmModelMetaInfoVO.TitleSetting titleSetting;
|
private BpmModelMetaInfoVO.TitleSetting titleSetting;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摘要设置
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
|
private BpmModelMetaInfoVO.SummarySetting summarySetting;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,13 @@ package cn.iocoder.yudao.module.bpm.framework.flowable.core.util;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
|
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.context.TenantContextHolder;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
|
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.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.enums.definition.BpmModelFormTypeEnum;
|
||||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnVariableConstants;
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnVariableConstants;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import org.flowable.common.engine.api.delegate.Expression;
|
import org.flowable.common.engine.api.delegate.Expression;
|
||||||
|
@ -19,10 +24,7 @@ import org.flowable.engine.impl.util.CommandContextUtil;
|
||||||
import org.flowable.engine.runtime.ProcessInstance;
|
import org.flowable.engine.runtime.ProcessInstance;
|
||||||
import org.flowable.task.api.TaskInfo;
|
import org.flowable.task.api.TaskInfo;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -277,4 +279,44 @@ public class FlowableUtils {
|
||||||
return getExpressionValue(variableContainer, expressionString);
|
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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Collections.reverse(summaryList);
|
||||||
|
return summaryList;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,7 +128,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ProcessInstance> getProcessInstances(Set<String> ids) {
|
public List<ProcessInstance> getProcessInstances(Set<String> ids) {
|
||||||
return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).list();
|
return runtimeService.createProcessInstanceQuery().processInstanceIds(ids).includeProcessVariables().list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -138,7 +138,7 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) {
|
public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) {
|
||||||
return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list();
|
return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).includeProcessVariables().list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue