|
@@ -12,6 +12,7 @@ import cn.iocoder.yudao.framework.common.util.object.PageUtils;
|
|
|
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
|
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
|
|
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.enums.task.BpmCommentTypeEnum;
|
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmCommentTypeEnum;
|
|
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmDeleteReasonEnum;
|
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmDeleteReasonEnum;
|
|
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskSignTypeEnum;
|
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskSignTypeEnum;
|
|
@@ -19,18 +20,19 @@ import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum;
|
|
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
|
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
|
|
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
|
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmnModelUtils;
|
|
|
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.definition.BpmFormService;
|
|
|
import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
|
|
import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService;
|
|
|
import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService;
|
|
import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
|
|
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.flowable.bpmn.model.BpmnModel;
|
|
import org.flowable.bpmn.model.BpmnModel;
|
|
|
import org.flowable.bpmn.model.FlowElement;
|
|
import org.flowable.bpmn.model.FlowElement;
|
|
|
import org.flowable.bpmn.model.UserTask;
|
|
import org.flowable.bpmn.model.UserTask;
|
|
|
-import org.flowable.engine.HistoryService;
|
|
|
|
|
-import org.flowable.engine.ManagementService;
|
|
|
|
|
-import org.flowable.engine.RuntimeService;
|
|
|
|
|
-import org.flowable.engine.TaskService;
|
|
|
|
|
|
|
+import org.flowable.engine.*;
|
|
|
|
|
+import org.flowable.engine.history.HistoricProcessInstance;
|
|
|
import org.flowable.engine.runtime.ProcessInstance;
|
|
import org.flowable.engine.runtime.ProcessInstance;
|
|
|
import org.flowable.task.api.DelegationState;
|
|
import org.flowable.task.api.DelegationState;
|
|
|
import org.flowable.task.api.Task;
|
|
import org.flowable.task.api.Task;
|
|
@@ -51,6 +53,7 @@ import java.util.*;
|
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
|
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
|
|
|
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
|
|
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
|
@@ -72,6 +75,9 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|
|
private RuntimeService runtimeService;
|
|
private RuntimeService runtimeService;
|
|
|
@Resource
|
|
@Resource
|
|
|
private ManagementService managementService;
|
|
private ManagementService managementService;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private BpmFormService formService;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private BpmProcessInstanceService processInstanceService;
|
|
private BpmProcessInstanceService processInstanceService;
|
|
@@ -84,6 +90,8 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
|
private AdminUserApi adminUserApi;
|
|
private AdminUserApi adminUserApi;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private DeptApi deptApi;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public PageResult<Task> getTaskTodoPage(Long userId, BpmTaskPageReqVO pageVO) {
|
|
public PageResult<Task> getTaskTodoPage(Long userId, BpmTaskPageReqVO pageVO) {
|
|
@@ -819,4 +827,28 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
|
|
return convertMap(tasks, Task::getId, Task::getName);
|
|
return convertMap(tasks, Task::getId, Task::getName);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<BpmTaskRespVO> getAuditRecordListByProcessInstanceId(String processInstanceId) {
|
|
|
|
|
+ List<HistoricTaskInstance> taskList = this.getTaskListByProcessInstanceId(processInstanceId);
|
|
|
|
|
+ if (CollUtil.isEmpty(taskList)) {
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 拼接数据
|
|
|
|
|
+ HistoricProcessInstance processInstance = processInstanceService.getHistoricProcessInstance(processInstanceId);
|
|
|
|
|
+ // 获得 User 和 Dept Map
|
|
|
|
|
+ Set<Long> userIds = convertSetByFlatMap(taskList, task ->
|
|
|
|
|
+ Stream.of(NumberUtils.parseLong(task.getAssignee()), NumberUtils.parseLong(task.getOwner())));
|
|
|
|
|
+ userIds.add(NumberUtils.parseLong(processInstance.getStartUserId()));
|
|
|
|
|
+ Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
|
|
|
|
|
+ Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
|
|
|
|
|
+ convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
|
|
|
|
|
+ // 获得 Form Map
|
|
|
|
|
+ Map<Long, BpmFormDO> formMap = formService.getFormMap(
|
|
|
|
|
+ convertSet(taskList, task -> NumberUtils.parseLong(task.getFormKey())));
|
|
|
|
|
+
|
|
|
|
|
+ return BpmTaskConvert.INSTANCE.buildTaskListByProcessInstanceId(taskList, processInstance,
|
|
|
|
|
+ formMap, userMap, deptMap);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|