Browse Source

update 全局替换为 Convert.toStr 优化 null 字符串处理 String.valueOf 这个方法有问题会把null变成"null"慎用

疯狂的狮子Li 11 tháng trước cách đây
mục cha
commit
a8de8886ec
13 tập tin đã thay đổi với 30 bổ sung21 xóa
  1. 2 1
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java
  2. 2 2
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java
  3. 2 1
      ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/DropDownOptions.java
  4. 3 2
      ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java
  5. 2 1
      ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java
  6. 2 1
      ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java
  7. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java
  8. 2 1
      ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java
  9. 9 6
      ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java
  10. 1 1
      ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java
  11. 1 1
      ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java
  12. 2 2
      ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java
  13. 1 1
      ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

+ 2 - 1
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteTaskAssigneeVo.java

@@ -1,5 +1,6 @@
 package org.dromara.system.api.domain.vo;
 
+import cn.hutool.core.convert.Convert;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -62,7 +63,7 @@ public class RemoteTaskAssigneeVo implements Serializable {
                 storageId.apply(item),
                 handlerCode.apply(item),
                 handlerName.apply(item),
-                groupName != null ? String.valueOf(groupName.apply(item)) : null,
+                groupName != null ? Convert.toStr(groupName.apply(item)) : null,
                 createTimeMapper.apply(item)
             )).collect(Collectors.toList());
     }

+ 2 - 2
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/StringUtils.java

@@ -260,13 +260,13 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
         if (s != null) {
             final int len = s.length();
             if (s.length() <= size) {
-                sb.append(String.valueOf(c).repeat(size - len));
+                sb.append(Convert.toStr(c).repeat(size - len));
                 sb.append(s);
             } else {
                 return s.substring(len - size, len);
             }
         } else {
-            sb.append(String.valueOf(c).repeat(Math.max(0, size)));
+            sb.append(Convert.toStr(c).repeat(Math.max(0, size)));
         }
         return sb.toString();
     }

+ 2 - 1
ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/DropDownOptions.java

@@ -1,5 +1,6 @@
 package org.dromara.common.excel.core;
 
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.StrUtil;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -65,7 +66,7 @@ public class DropDownOptions {
         StringBuilder stringBuffer = new StringBuilder();
         String regex = "^[\\S\\d\\u4e00-\\u9fa5]+$";
         for (int i = 0; i < vars.length; i++) {
-            String var = StrUtil.trimToEmpty(String.valueOf(vars[i]));
+            String var = StrUtil.trimToEmpty(Convert.toStr(vars[i]));
             if (!var.matches(regex)) {
                 throw new ServiceException("选项数据不符合规则,仅允许使用中英文字符以及数字");
             }

+ 3 - 2
ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/SequenceUtils.java

@@ -1,5 +1,6 @@
 package org.dromara.common.redis.utils;
 
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DatePattern;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -119,7 +120,7 @@ public class SequenceUtils {
      * @return 唯一id
      */
     public static String getNextIdString(String key, Duration expireTime, long initValue, long stepValue) {
-        return String.valueOf(getNextId(key, expireTime, initValue, stepValue));
+        return Convert.toStr(getNextId(key, expireTime, initValue, stepValue));
     }
 
     /**
@@ -130,7 +131,7 @@ public class SequenceUtils {
      * @return 唯一id
      */
     public static String getNextIdString(String key, Duration expireTime) {
-        return String.valueOf(getNextId(key, expireTime));
+        return Convert.toStr(getNextId(key, expireTime));
     }
 
     /**

+ 2 - 1
ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java

@@ -1,5 +1,6 @@
 package org.dromara.common.sensitive.core;
 
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.DesensitizedUtil;
 import lombok.AllArgsConstructor;
 
@@ -52,7 +53,7 @@ public enum SensitiveStrategy {
     /**
      * 用户ID
      */
-    USER_ID(s -> String.valueOf(DesensitizedUtil.userId())),
+    USER_ID(s -> Convert.toStr(DesensitizedUtil.userId())),
 
     /**
      * 密码

+ 2 - 1
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestStaticShardingJob.java

@@ -1,5 +1,6 @@
 package org.dromara.job.snailjob;
 
+import cn.hutool.core.convert.Convert;
 import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
 import com.aizuda.snailjob.client.job.core.dto.JobArgs;
 import com.aizuda.snailjob.client.model.ExecuteResult;
@@ -17,7 +18,7 @@ import org.springframework.stereotype.Component;
 public class TestStaticShardingJob {
 
     public ExecuteResult jobExecute(JobArgs jobArgs) {
-        String jobParams = String.valueOf(jobArgs.getJobParams());
+        String jobParams = Convert.toStr(jobArgs.getJobParams());
         SnailJobLog.LOCAL.info("开始执行分片任务,参数:{}", jobParams);
         // 获得jobArgs 中传入的开始id和结束id
         String[] split = jobParams.split(",");

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteTaskAssigneeServiceImpl.java

@@ -61,7 +61,7 @@ public class RemoteTaskAssigneeServiceImpl implements RemoteTaskAssigneeService
         TableDataInfo<SysRoleVo> page = roleService.selectPageRoleList(bo, pageQuery);
         // 使用封装的字段映射方法进行转换
         List<RemoteTaskAssigneeVo.TaskHandler> handlers = RemoteTaskAssigneeVo.convertToHandlerList(page.getRows(),
-            r -> String.valueOf(r.getRoleId()), SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime);
+            item -> Convert.toStr(item.getRoleId()), SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime);
         return new RemoteTaskAssigneeVo(page.getTotal(), handlers);
     }
 

+ 2 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java

@@ -1,6 +1,7 @@
 package org.dromara.workflow.handler;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.StreamUtils;
@@ -59,7 +60,7 @@ public class WorkflowPermissionHandler implements PermissionHandler {
         }
         String storageIds = CollUtil.join(permissions, StringUtils.SEPARATOR);
         List<RemoteUserVo> users = flwTaskAssigneeService.fetchUsersByStorageIds(storageIds);
-        return StreamUtils.toList(users, userDTO -> String.valueOf(userDTO.getUserId()));
+        return StreamUtils.toList(users, userDTO -> Convert.toStr(userDTO.getUserId()));
     }
 
 }

+ 9 - 6
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java

@@ -1,6 +1,7 @@
 package org.dromara.workflow.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -8,9 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.constant.SystemConstants;
 import org.dromara.common.core.exception.ServiceException;
-import org.dromara.common.core.utils.*;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.ObjectUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.core.utils.TreeBuildUtils;
 import org.dromara.common.mybatis.helper.DataBaseHelper;
-import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.warm.flow.core.service.DefService;
 import org.dromara.warm.flow.orm.entity.FlowDefinition;
 import org.dromara.workflow.common.ConditionalOnEnable;
@@ -102,11 +105,11 @@ public class FlwCategoryServiceImpl implements IFlwCategoryService {
         }
         return TreeBuildUtils.buildMultiRoot(
             categoryList,
-            node -> String.valueOf(node.getCategoryId()),
-            node -> String.valueOf(node.getParentId()),
+            node -> Convert.toStr(node.getCategoryId()),
+            node -> Convert.toStr(node.getParentId()),
             (node, treeNode) -> treeNode
-                .setId(String.valueOf(node.getCategoryId()))
-                .setParentId(String.valueOf(node.getParentId()))
+                .setId(Convert.toStr(node.getCategoryId()))
+                .setParentId(Convert.toStr(node.getParentId()))
                 .setName(node.getCategoryName())
                 .setWeight(node.getOrderNum())
         );

+ 1 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java

@@ -233,7 +233,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService {
             flowDefinition.setId(null);
             flowDefinition.setTenantId(tenantId);
             flowDefinition.setIsPublish(0);
-            flowDefinition.setCategory(String.valueOf(flowCategory.getCategoryId()));
+            flowDefinition.setCategory(Convert.toStr(flowCategory.getCategoryId()));
             int insert = flowDefinitionMapper.insert(flowDefinition);
             if (insert <= 0) {
                 log.info("同步流程定义【{}】失败!", definition.getFlowCode());

+ 1 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java

@@ -110,7 +110,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
      */
     @Override
     public FlowInstanceVo queryByBusinessId(Long businessId) {
-        FlowInstance instance = this.selectInstByBusinessId(String.valueOf(businessId));
+        FlowInstance instance = this.selectInstByBusinessId(Convert.toStr(businessId));
         FlowInstanceVo instanceVo = BeanUtil.toBean(instance, FlowInstanceVo.class);
         Definition definition = defService.getById(instanceVo.getDefinitionId());
         instanceVo.setFlowName(definition.getFlowName());

+ 2 - 2
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java

@@ -151,9 +151,9 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand
      */
     private TreeFunDto<RemoteDeptVo> buildDeptTree(List<RemoteDeptVo> depts) {
         return new TreeFunDto<>(depts)
-            .setId(dept -> String.valueOf(dept.getDeptId()))
+            .setId(dept -> Convert.toStr(dept.getDeptId()))
             .setName(RemoteDeptVo::getDeptName)
-            .setParentId(dept -> String.valueOf(dept.getParentId()));
+            .setParentId(dept -> Convert.toStr(dept.getParentId()));
     }
 
     /**

+ 1 - 1
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java

@@ -304,7 +304,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
         List<User> userList = StreamUtils.toList(flowCopyList, x ->
             new FlowUser()
                 .setType(TaskAssigneeType.COPY.getCode())
-                .setProcessedBy(String.valueOf(x.getUserId()))
+                .setProcessedBy(Convert.toStr(x.getUserId()))
                 .setAssociated(taskId));
         // 批量保存抄送人员
         FlowEngine.userService().saveBatch(userList);