update 优化 StreamUtils 抽取 findFirst findAny 方法
parent
dba4293fe2
commit
42dc474949
|
|
@ -15,6 +15,7 @@ import org.dromara.auth.domain.vo.LoginVo;
|
||||||
import org.dromara.auth.form.SocialLoginBody;
|
import org.dromara.auth.form.SocialLoginBody;
|
||||||
import org.dromara.auth.service.IAuthStrategy;
|
import org.dromara.auth.service.IAuthStrategy;
|
||||||
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.ValidatorUtils;
|
import org.dromara.common.core.utils.ValidatorUtils;
|
||||||
import org.dromara.common.json.utils.JsonUtils;
|
import org.dromara.common.json.utils.JsonUtils;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
|
@ -81,7 +82,7 @@ public class SocialAuthStrategy implements IAuthStrategy {
|
||||||
}
|
}
|
||||||
RemoteSocialVo socialVo;
|
RemoteSocialVo socialVo;
|
||||||
if (TenantHelper.isEnable()) {
|
if (TenantHelper.isEnable()) {
|
||||||
Optional<RemoteSocialVo> opt = list.stream().filter(x -> x.getTenantId().equals(loginBody.getTenantId())).findAny();
|
Optional<RemoteSocialVo> opt = StreamUtils.findAny(list, x -> x.getTenantId().equals(loginBody.getTenantId()));
|
||||||
if (opt.isEmpty()) {
|
if (opt.isEmpty()) {
|
||||||
throw new ServiceException("对不起,你没有权限登录当前租户!");
|
throw new ServiceException("对不起,你没有权限登录当前租户!");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,34 @@ public class StreamUtils {
|
||||||
return collection.stream().filter(function).collect(Collectors.toList());
|
return collection.stream().filter(function).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 找到流中满足条件的第一个元素
|
||||||
|
*
|
||||||
|
* @param collection 需要查询的集合
|
||||||
|
* @param function 过滤方法
|
||||||
|
* @return 找到符合条件的第一个元素,没有则返回null
|
||||||
|
*/
|
||||||
|
public static <E> E findFirst(Collection<E> collection, Predicate<E> function) {
|
||||||
|
if (CollUtil.isEmpty(collection)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return collection.stream().filter(function).findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 找到流中任意一个满足条件的元素
|
||||||
|
*
|
||||||
|
* @param collection 需要查询的集合
|
||||||
|
* @param function 过滤方法
|
||||||
|
* @return 找到符合条件的任意一个元素,没有则返回null
|
||||||
|
*/
|
||||||
|
public static <E> Optional<E> findAny(Collection<E> collection, Predicate<E> function) {
|
||||||
|
if (CollUtil.isEmpty(collection)) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
return collection.stream().filter(function).findAny();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将collection拼接
|
* 将collection拼接
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,6 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色 业务层处理
|
* 角色 业务层处理
|
||||||
|
|
@ -106,7 +105,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
|
||||||
List<SysRoleVo> userRoles = baseMapper.selectRolesByUserId(userId);
|
List<SysRoleVo> userRoles = baseMapper.selectRolesByUserId(userId);
|
||||||
List<SysRoleVo> roles = selectRoleAll();
|
List<SysRoleVo> roles = selectRoleAll();
|
||||||
// 使用HashSet提高查找效率
|
// 使用HashSet提高查找效率
|
||||||
Set<Long> userRoleIds = userRoles.stream().map(SysRoleVo::getRoleId).collect(Collectors.toSet());
|
Set<Long> userRoleIds = StreamUtils.toSet(userRoles, SysRoleVo::getRoleId);
|
||||||
for (SysRoleVo role : roles) {
|
for (SysRoleVo role : roles) {
|
||||||
if (userRoleIds.contains(role.getRoleId())) {
|
if (userRoleIds.contains(role.getRoleId())) {
|
||||||
role.setFlag(true);
|
role.setFlag(true);
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package org.dromara.workflow.flowable.cmd;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.dromara.common.core.utils.StreamUtils;
|
||||||
import org.flowable.common.engine.impl.interceptor.Command;
|
import org.flowable.common.engine.impl.interceptor.Command;
|
||||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||||
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
|
import org.flowable.engine.impl.persistence.entity.ExecutionEntity;
|
||||||
|
|
@ -59,7 +60,7 @@ public class DeleteSequenceMultiInstanceCmd implements Command<Void> {
|
||||||
}
|
}
|
||||||
List<Long> userIdList = new ArrayList<>();
|
List<Long> userIdList = new ArrayList<>();
|
||||||
userIds.forEach(e -> {
|
userIds.forEach(e -> {
|
||||||
Long userId = assignees.stream().filter(id -> ObjectUtil.equals(id, e)).findFirst().orElse(null);
|
Long userId = StreamUtils.findFirst(assignees, id -> ObjectUtil.equals(id, e));
|
||||||
if (userId == null) {
|
if (userId == null) {
|
||||||
userIdList.add(e);
|
userIdList.add(e);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -272,10 +272,10 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
|
||||||
}
|
}
|
||||||
ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult();
|
ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult();
|
||||||
if (processInstance != null) {
|
if (processInstance != null) {
|
||||||
taskList = taskList.stream().filter(e -> !e.get("activityType").equals(FlowConstant.END_EVENT)).collect(Collectors.toList());
|
taskList = StreamUtils.filter(taskList, e -> !e.get("activityType").equals(FlowConstant.END_EVENT));
|
||||||
}
|
}
|
||||||
//查询出运行中节点
|
//查询出运行中节点
|
||||||
List<Map<String, Object>> runtimeNodeList = taskList.stream().filter(e -> !(Boolean) e.get("completed")).collect(Collectors.toList());
|
List<Map<String, Object>> runtimeNodeList = StreamUtils.filter(taskList, e -> !(Boolean) e.get("completed"));
|
||||||
if (CollUtil.isNotEmpty(runtimeNodeList)) {
|
if (CollUtil.isNotEmpty(runtimeNodeList)) {
|
||||||
Iterator<Map<String, Object>> iterator = taskList.iterator();
|
Iterator<Map<String, Object>> iterator = taskList.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
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.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.workflow.domain.WfTaskBackNode;
|
import org.dromara.workflow.domain.WfTaskBackNode;
|
||||||
|
|
@ -56,7 +57,7 @@ public class WfTaskBackNodeServiceImpl implements IWfTaskBackNodeService {
|
||||||
wfTaskBackNode.setOrderNo(0);
|
wfTaskBackNode.setOrderNo(0);
|
||||||
wfTaskBackNodeMapper.insert(wfTaskBackNode);
|
wfTaskBackNodeMapper.insert(wfTaskBackNode);
|
||||||
} else {
|
} else {
|
||||||
WfTaskBackNode taskNode = list.stream().filter(e -> e.getNodeId().equals(wfTaskBackNode.getNodeId()) && e.getOrderNo() == 0).findFirst().orElse(null);
|
WfTaskBackNode taskNode = StreamUtils.findFirst(list, e -> e.getNodeId().equals(wfTaskBackNode.getNodeId()) && e.getOrderNo() == 0);
|
||||||
if (ObjectUtil.isEmpty(taskNode)) {
|
if (ObjectUtil.isEmpty(taskNode)) {
|
||||||
wfTaskBackNode.setOrderNo(list.get(0).getOrderNo() + 1);
|
wfTaskBackNode.setOrderNo(list.get(0).getOrderNo() + 1);
|
||||||
WfTaskBackNode node = getListByInstanceIdAndNodeId(wfTaskBackNode.getInstanceId(), wfTaskBackNode.getNodeId());
|
WfTaskBackNode node = getListByInstanceIdAndNodeId(wfTaskBackNode.getInstanceId(), wfTaskBackNode.getNodeId());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue