Commit 547c69c6 authored by 鲁鸿波's avatar 鲁鸿波

死循环

parent ab3bc547
......@@ -964,7 +964,7 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
* @param allUserIds
* @return
*/
@Override
/*@Override
public String getUserNamesByUserIds(String allUserIds) {
List<String> userNames = new ArrayList<>();
if (StringUtils.isNotBlank(allUserIds)) {
......@@ -974,8 +974,47 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
}
}
return StringUtils.join(userNames, ",");
}*/
@Override
public String getUserNamesByUserIds(String allUserIds) {
if (StringUtils.isBlank(allUserIds)) {
return null;
}
String[] userIds = allUserIds.split(",");
// 1️⃣ 限流保护(防止异常数据)
if (userIds.length > 50) {
log.warn("userIds 数量异常:{},已截断", userIds.length);
}
List<String> userNames = new ArrayList<>();
Set<String> processed = new HashSet<>(); // 防重复
for (String userId : userIds) {
if (StringUtils.isBlank(userId)) {
continue;
}
// 2️⃣ 防止同一个 userId 被反复查
if (!processed.add(userId)) {
continue;
}
String name = getUserNamesByUserId(userId);
// 3️⃣ 严格过滤 null,防止上层反复触发
if (StringUtils.isNotBlank(name)) {
userNames.add(name);
}
}
return userNames.isEmpty() ? null : String.join(",", userNames);
}
@Override
public String getOrgNamesByUserIds(String allUserIds) {
List<String> orgNames = new ArrayList<>();
......@@ -1985,7 +2024,7 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
* @param userId
* @return
*/
public String getUserNamesByUserId(String userId) {
/*public String getUserNamesByUserId(String userId) {
if (StringUtils.isNotBlank(userId)) {
String[] split = userId.split("-");
//0为企业内部人员
......@@ -2008,9 +2047,54 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
}
}
return null;
}*/
public String getUserNamesByUserId(String userId) {
// 1. 快速失败(避免无效请求反复进入)
if (StringUtils.isBlank(userId)) {
return null;
}
// 2. userId 必须包含 -
if (!userId.contains("-")) {
log.warn("非法 userId 格式:{}", userId);
return userId; // 直接返回原值,避免反复计算
}
String[] split = userId.split("-", 2); // 最多分 2 段
if (split.length < 2 || StringUtils.isBlank(split[1])) {
log.warn("userId 分割异常:{}", userId);
return userId;
}
String type = split[0];
String id = split[1];
try {
switch (type) {
case "0":
SysUser sysUser = sysUserService.getById(id);
return sysUser != null ? sysUser.getUserName() : null;
case "1":
TContractorPerson person = tContractorPersonService.getById(id);
return person != null ? person.getName() : null;
default:
log.warn("未知 userId 类型:{}", userId);
return id;
}
} catch (Exception e) {
// 3. 兜底防止异常导致上层重试
log.error("getUserNamesByUserId 异常,userId={}", userId, e);
return null;
}
}
@SneakyThrows
@Override
@XxlJob("hazardousWorkMessageAlerts")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment