update 优化获取流程记录
This commit is contained in:
parent
9dfe9f610d
commit
f8950d1e20
@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.domain.dto.UserDTO;
|
|
||||||
import org.dromara.common.core.enums.BusinessStatusEnum;
|
import org.dromara.common.core.enums.BusinessStatusEnum;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.StreamUtils;
|
import org.dromara.common.core.utils.StreamUtils;
|
||||||
@ -19,11 +18,13 @@ import org.dromara.common.core.utils.StringUtils;
|
|||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
import org.dromara.warm.flow.core.FlowEngine;
|
||||||
import org.dromara.warm.flow.core.constant.ExceptionCons;
|
import org.dromara.warm.flow.core.constant.ExceptionCons;
|
||||||
import org.dromara.warm.flow.core.dto.FlowParams;
|
import org.dromara.warm.flow.core.dto.FlowParams;
|
||||||
import org.dromara.warm.flow.core.entity.Definition;
|
import org.dromara.warm.flow.core.entity.Definition;
|
||||||
import org.dromara.warm.flow.core.entity.Instance;
|
import org.dromara.warm.flow.core.entity.Instance;
|
||||||
import org.dromara.warm.flow.core.entity.Task;
|
import org.dromara.warm.flow.core.entity.Task;
|
||||||
|
import org.dromara.warm.flow.core.entity.User;
|
||||||
import org.dromara.warm.flow.core.enums.NodeType;
|
import org.dromara.warm.flow.core.enums.NodeType;
|
||||||
import org.dromara.warm.flow.core.service.DefService;
|
import org.dromara.warm.flow.core.service.DefService;
|
||||||
import org.dromara.warm.flow.core.service.InsService;
|
import org.dromara.warm.flow.core.service.InsService;
|
||||||
@ -283,37 +284,50 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
|||||||
throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE);
|
throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE);
|
||||||
}
|
}
|
||||||
Long instanceId = flowInstance.getId();
|
Long instanceId = flowInstance.getId();
|
||||||
//运行中的任务
|
|
||||||
List<FlowHisTaskVo> list = new ArrayList<>();
|
// 先组装待审批任务(运行中的任务)
|
||||||
List<FlowTask> flowTaskList = flwTaskService.selectByInstId(instanceId);
|
List<FlowHisTaskVo> runningTaskVos = new ArrayList<>();
|
||||||
if (CollUtil.isNotEmpty(flowTaskList)) {
|
List<FlowTask> runningTasks = flwTaskService.selectByInstId(instanceId);
|
||||||
List<FlowHisTaskVo> flowHisTaskVos = BeanUtil.copyToList(flowTaskList, FlowHisTaskVo.class);
|
if (CollUtil.isNotEmpty(runningTasks)) {
|
||||||
for (FlowHisTaskVo flowHisTaskVo : flowHisTaskVos) {
|
runningTaskVos = BeanUtil.copyToList(runningTasks, FlowHisTaskVo.class);
|
||||||
flowHisTaskVo.setFlowStatus(TaskStatusEnum.WAITING.getStatus());
|
|
||||||
flowHisTaskVo.setUpdateTime(null);
|
List<User> associatedUsers = FlowEngine.userService()
|
||||||
flowHisTaskVo.setRunDuration(null);
|
.getByAssociateds(StreamUtils.toList(runningTasks, FlowTask::getId));
|
||||||
List<UserDTO> allUser = flwTaskService.currentTaskAllUser(flowHisTaskVo.getId());
|
Map<Long, List<User>> taskUserMap = StreamUtils.groupByKey(associatedUsers, User::getAssociated);
|
||||||
if (CollUtil.isNotEmpty(allUser)) {
|
|
||||||
String join = StreamUtils.join(allUser, e -> String.valueOf(e.getUserId()));
|
for (FlowHisTaskVo vo : runningTaskVos) {
|
||||||
flowHisTaskVo.setApprover(join);
|
vo.setFlowStatus(TaskStatusEnum.WAITING.getStatus());
|
||||||
|
vo.setUpdateTime(null);
|
||||||
|
vo.setRunDuration(null);
|
||||||
|
|
||||||
|
List<User> users = taskUserMap.get(vo.getId());
|
||||||
|
if (CollUtil.isNotEmpty(users)) {
|
||||||
|
vo.setApprover(StreamUtils.join(users, User::getProcessedBy));
|
||||||
}
|
}
|
||||||
if (BusinessStatusEnum.isDraftOrCancelOrBack(flowInstance.getFlowStatus())) {
|
if (BusinessStatusEnum.isDraftOrCancelOrBack(flowInstance.getFlowStatus())) {
|
||||||
flowHisTaskVo.setApprover(LoginHelper.getUserIdStr());
|
vo.setApprover(LoginHelper.getUserIdStr());
|
||||||
flowHisTaskVo.setApproveName(LoginHelper.getLoginUser().getNickname());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
list.addAll(flowHisTaskVos);
|
|
||||||
}
|
}
|
||||||
//历史任务
|
|
||||||
LambdaQueryWrapper<FlowHisTask> wrapper = Wrappers.lambdaQuery();
|
// 再组装历史任务(已处理任务)
|
||||||
wrapper.eq(FlowHisTask::getInstanceId, instanceId)
|
List<FlowHisTaskVo> hisTaskVos = new ArrayList<>();
|
||||||
.eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey())
|
List<FlowHisTask> hisTasks = flowHisTaskMapper.selectList(
|
||||||
.orderByDesc(FlowHisTask::getCreateTime, FlowHisTask::getUpdateTime);
|
new LambdaQueryWrapper<FlowHisTask>()
|
||||||
List<FlowHisTask> flowHisTasks = flowHisTaskMapper.selectList(wrapper);
|
.eq(FlowHisTask::getInstanceId, instanceId)
|
||||||
if (CollUtil.isNotEmpty(flowHisTasks)) {
|
.eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey())
|
||||||
list.addAll(BeanUtil.copyToList(flowHisTasks, FlowHisTaskVo.class));
|
.orderByDesc(FlowHisTask::getUpdateTime)
|
||||||
|
);
|
||||||
|
if (CollUtil.isNotEmpty(hisTasks)) {
|
||||||
|
hisTaskVos = BeanUtil.copyToList(hisTasks, FlowHisTaskVo.class);
|
||||||
}
|
}
|
||||||
return Map.of("list", list, "instanceId", instanceId);
|
|
||||||
|
// 结果列表,待审批任务在前,历史任务在后
|
||||||
|
List<FlowHisTaskVo> combinedList = new ArrayList<>();
|
||||||
|
combinedList.addAll(runningTaskVos);
|
||||||
|
combinedList.addAll(hisTaskVos);
|
||||||
|
|
||||||
|
return Map.of("list", combinedList, "instanceId", instanceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user