浏览代码

update 优化 使用 StreamUtils 简化业务流操纵

疯狂的狮子li 4 年之前
父节点
当前提交
b877ec0e62

+ 2 - 3
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/BeanCopyUtils.java

@@ -14,7 +14,6 @@ import org.springframework.cglib.core.Converter;
 
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * bean深拷贝工具(基于 cglib 性能优异)
@@ -75,11 +74,11 @@ public class BeanCopyUtils {
         if (CollUtil.isEmpty(sourceList)) {
             return CollUtil.newArrayList();
         }
-        return sourceList.stream().map(source -> {
+        return StreamUtils.toList(sourceList, source -> {
             V target = ReflectUtil.newInstanceIfPossible(desc);
             copy(source, target);
             return target;
-        }).collect(Collectors.toList());
+        });
     }
 
     /**

+ 2 - 4
ruoyi-common/ruoyi-common-excel/src/main/java/com/ruoyi/common/excel/core/DefaultExcelListener.java

@@ -6,6 +6,7 @@ import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.excel.exception.ExcelAnalysisException;
 import com.alibaba.excel.exception.ExcelDataConvertException;
 import com.ruoyi.common.core.utils.JsonUtils;
+import com.ruoyi.common.core.utils.StreamUtils;
 import com.ruoyi.common.core.utils.ValidatorUtils;
 import lombok.NoArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -14,7 +15,6 @@ import javax.validation.ConstraintViolation;
 import javax.validation.ConstraintViolationException;
 import java.util.Map;
 import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * Excel 导入监听
@@ -69,9 +69,7 @@ public class DefaultExcelListener<T> extends AnalysisEventListener<T> implements
         if (exception instanceof ConstraintViolationException) {
             ConstraintViolationException constraintViolationException = (ConstraintViolationException) exception;
             Set<ConstraintViolation<?>> constraintViolations = constraintViolationException.getConstraintViolations();
-            String constraintViolationsMsg = constraintViolations.stream()
-                .map(ConstraintViolation::getMessage)
-                .collect(Collectors.joining(", "));
+            String constraintViolationsMsg = StreamUtils.join(constraintViolations, ConstraintViolation::getMessage, ", ");
             errMsg = StrUtil.format("第{}行数据校验异常: {}", context.readRowHolder().getRowIndex() + 1, constraintViolationsMsg);
             if (log.isDebugEnabled()) {
                 log.error(errMsg);

+ 5 - 6
ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java

@@ -15,6 +15,7 @@ import com.ruoyi.common.core.constant.Constants;
 import com.ruoyi.common.core.constant.GenConstants;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.JsonUtils;
+import com.ruoyi.common.core.utils.StreamUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.file.FileUtils;
 import com.ruoyi.common.mybatis.core.page.PageQuery;
@@ -41,8 +42,6 @@ import java.io.IOException;
 import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -335,13 +334,13 @@ public class GenTableServiceImpl implements IGenTableService {
     public void synchDb(String tableName) {
         GenTable table = baseMapper.selectGenTableByName(tableName);
         List<GenTableColumn> tableColumns = table.getColumns();
-        Map<String, GenTableColumn> tableColumnMap = tableColumns.stream().collect(Collectors.toMap(GenTableColumn::getColumnName, Function.identity()));
+        Map<String, GenTableColumn> tableColumnMap = StreamUtils.toIdentityMap(tableColumns, GenTableColumn::getColumnName);
 
         List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
         if (CollUtil.isEmpty(dbTableColumns)) {
             throw new ServiceException("同步数据失败,原表结构不存在");
         }
-        List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
+        List<String> dbTableColumnNames = StreamUtils.toList(dbTableColumns, GenTableColumn::getColumnName);
 
         List<GenTableColumn> saveColumns = new ArrayList<>();
         dbTableColumns.forEach(column -> {
@@ -371,9 +370,9 @@ public class GenTableServiceImpl implements IGenTableService {
             genTableColumnMapper.insertBatch(saveColumns);
         }
 
-        List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
+        List<GenTableColumn> delColumns = StreamUtils.filter(tableColumns, column -> !dbTableColumnNames.contains(column.getColumnName()));
         if (CollUtil.isNotEmpty(delColumns)) {
-            List<Long> ids = delColumns.stream().map(GenTableColumn::getColumnId).collect(Collectors.toList());
+            List<Long> ids = StreamUtils.toList(delColumns, GenTableColumn::getColumnId);
             genTableColumnMapper.deleteBatchIds(ids);
         }
     }

+ 1 - 1
ruoyi-modules/ruoyi-resource/src/main/java/com/ruoyi/resource/service/impl/SysOssConfigServiceImpl.java

@@ -127,7 +127,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService {
         }
         boolean flag = baseMapper.deleteBatchIds(ids) > 0;
         if (flag) {
-            list.stream().forEach(sysOssConfig -> {
+            list.forEach(sysOssConfig -> {
                 RedisUtils.deleteObject(getCacheKey(sysOssConfig.getConfigKey()));
             });
         }

+ 4 - 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java

@@ -6,6 +6,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.ruoyi.common.core.constant.UserConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StreamUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.excel.core.ExcelResult;
@@ -38,7 +39,6 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * 用户信息
@@ -133,13 +133,13 @@ public class SysUserController extends BaseController {
         userService.checkUserDataScope(userId);
         Map<String, Object> ajax = new HashMap<>();
         List<SysRole> roles = roleService.selectRoleAll();
-        ajax.put("roles", LoginHelper.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
+        ajax.put("roles", LoginHelper.isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin()));
         ajax.put("posts", postService.selectPostAll());
         if (ObjectUtil.isNotNull(userId)) {
             SysUser sysUser = userService.selectUserById(userId);
             ajax.put("user", sysUser);
             ajax.put("postIds", postService.selectPostListByUserId(userId));
-            ajax.put("roleIds", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));
+            ajax.put("roleIds", StreamUtils.toList(sysUser.getRoles(), SysRole::getRoleId));
         }
         return R.ok(ajax);
     }
@@ -237,7 +237,7 @@ public class SysUserController extends BaseController {
         SysUser user = userService.selectUserById(userId);
         List<SysRole> roles = roleService.selectRolesByUserId(userId);
         ajax.put("user", user);
-        ajax.put("roles", LoginHelper.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
+        ajax.put("roles", LoginHelper.isAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isAdmin()));
         return R.ok(ajax);
     }
 

+ 8 - 8
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java

@@ -5,6 +5,7 @@ import cn.dev33.satoken.exception.NotLoginException;
 import cn.dev33.satoken.stp.StpUtil;
 import com.ruoyi.common.core.constant.CacheConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StreamUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.log.annotation.Log;
@@ -20,7 +21,6 @@ import org.springframework.web.bind.annotation.*;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 在线用户监控
@@ -49,18 +49,18 @@ public class SysUserOnlineController extends BaseController {
             userOnlineList.add(RedisUtils.getCacheObject(CacheConstants.ONLINE_TOKEN_KEY + token));
         }
         if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) {
-            userOnlineList = userOnlineList.stream().filter(userOnline ->
+            userOnlineList = StreamUtils.filter(userOnlineList, userOnline ->
                 StringUtils.equals(ipaddr, userOnline.getIpaddr()) &&
                     StringUtils.equals(userName, userOnline.getUserName())
-            ).collect(Collectors.toList());
+            );
         } else if (StringUtils.isNotEmpty(ipaddr)) {
-            userOnlineList = userOnlineList.stream().filter(userOnline ->
-                    StringUtils.equals(ipaddr, userOnline.getIpaddr()))
-                .collect(Collectors.toList());
+            userOnlineList = StreamUtils.filter(userOnlineList, userOnline ->
+                    StringUtils.equals(ipaddr, userOnline.getIpaddr())
+            );
         } else if (StringUtils.isNotEmpty(userName)) {
-            userOnlineList = userOnlineList.stream().filter(userOnline ->
+            userOnlineList = StreamUtils.filter(userOnlineList, userOnline ->
                 StringUtils.equals(userName, userOnline.getUserName())
-            ).collect(Collectors.toList());
+            );
         }
         Collections.reverse(userOnlineList);
         userOnlineList.removeAll(Collections.singleton(null));

+ 4 - 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/dubbo/RemoteDataScopeServiceImpl.java

@@ -3,6 +3,7 @@ package com.ruoyi.system.dubbo;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.utils.StreamUtils;
 import com.ruoyi.system.api.RemoteDataScopeService;
 import com.ruoyi.system.api.domain.SysDept;
 import com.ruoyi.system.domain.SysRoleDept;
@@ -13,7 +14,6 @@ import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 数据权限 实现
@@ -38,7 +38,7 @@ public class RemoteDataScopeServiceImpl implements RemoteDataScopeService {
                 .select(SysRoleDept::getDeptId)
                 .eq(SysRoleDept::getRoleId, roleId));
         if (CollUtil.isNotEmpty(list)) {
-            return list.stream().map(rd -> Convert.toStr(rd.getDeptId())).collect(Collectors.joining(","));
+            return StreamUtils.join(list, rd -> Convert.toStr(rd.getDeptId()));
         }
         return null;
     }
@@ -48,13 +48,13 @@ public class RemoteDataScopeServiceImpl implements RemoteDataScopeService {
         List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
             .select(SysDept::getDeptId)
             .apply("find_in_set({0},ancestors) <> 0", deptId));
-        List<Long> ids = deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList());
+        List<Long> ids = StreamUtils.toList(deptList, SysDept::getDeptId);
         ids.add(deptId);
         List<SysDept> list = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
             .select(SysDept::getDeptId)
             .in(SysDept::getDeptId, ids));
         if (CollUtil.isNotEmpty(list)) {
-            return list.stream().map(d -> Convert.toStr(d.getDeptId())).collect(Collectors.joining(","));
+            return StreamUtils.join(list, d -> Convert.toStr(d.getDeptId()));
         }
         return null;
     }

+ 3 - 6
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.constant.UserConstants;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StreamUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.dict.utils.DictUtils;
 import com.ruoyi.common.mybatis.core.page.PageQuery;
@@ -20,12 +21,10 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.PostConstruct;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 字典 业务层处理
@@ -146,11 +145,9 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService {
     public void loadingDictCache() {
         List<SysDictData> dictDataList = dictDataMapper.selectList(
             new LambdaQueryWrapper<SysDictData>().eq(SysDictData::getStatus, UserConstants.DICT_NORMAL));
-        Map<String, List<SysDictData>> dictDataMap = dictDataList.stream().collect(Collectors.groupingBy(SysDictData::getDictType));
+        Map<String, List<SysDictData>> dictDataMap = StreamUtils.groupByKey(dictDataList, SysDictData::getDictType);
         dictDataMap.forEach((k, v) -> {
-            List<SysDictData> dictList = v.stream()
-                .sorted(Comparator.comparing(SysDictData::getDictSort))
-                .collect(Collectors.toList());
+            List<SysDictData> dictList = StreamUtils.sorted(v, Comparator.comparing(SysDictData::getDictSort));
             DictUtils.setDictCache(k, dictList);
         });
     }

+ 4 - 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.constant.UserConstants;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StreamUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.mybatis.core.page.PageQuery;
 import com.ruoyi.common.mybatis.core.page.TableDataInfo;
@@ -33,7 +34,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 用户 业务层处理
@@ -83,7 +83,7 @@ public class SysUserServiceImpl implements ISysUserService {
                 List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
                     .select(SysDept::getDeptId)
                     .apply("find_in_set({0},ancestors) <> 0", user.getDeptId()));
-                List<Long> ids = deptList.stream().map(SysDept::getDeptId).collect(Collectors.toList());
+                List<Long> ids = StreamUtils.toList(deptList, SysDept::getDeptId);
                 ids.add(user.getDeptId());
                 w.in("u.dept_id", ids);
             });
@@ -172,7 +172,7 @@ public class SysUserServiceImpl implements ISysUserService {
         if (CollectionUtils.isEmpty(list)) {
             return StringUtils.EMPTY;
         }
-        return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
+        return StreamUtils.join(list, SysRole::getRoleName);
     }
 
     /**
@@ -187,7 +187,7 @@ public class SysUserServiceImpl implements ISysUserService {
         if (CollectionUtils.isEmpty(list)) {
             return StringUtils.EMPTY;
         }
-        return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
+        return StreamUtils.join(list, SysPost::getPostName);
     }
 
     /**