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

This commit is contained in:
疯狂的狮子Li
2025-08-04 10:33:23 +08:00
parent 78c6580e28
commit a8de8886ec
13 changed files with 30 additions and 21 deletions

View File

@@ -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());
}

View File

@@ -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();
}

View File

@@ -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("选项数据不符合规则,仅允许使用中英文字符以及数字");
}

View File

@@ -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));
}
/**

View File

@@ -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())),
/**
* 密码

View File

@@ -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(",");

View File

@@ -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);
}

View File

@@ -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()));
}
}

View File

@@ -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())
);

View File

@@ -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());

View File

@@ -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());

View File

@@ -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()));
}
/**

View File

@@ -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);