diff --git a/common/src/main/java/com/sdm/common/service/UserNameCacheService.java b/common/src/main/java/com/sdm/common/service/UserNameCacheService.java index aa5f249f..ed5a5e08 100644 --- a/common/src/main/java/com/sdm/common/service/UserNameCacheService.java +++ b/common/src/main/java/com/sdm/common/service/UserNameCacheService.java @@ -116,8 +116,10 @@ public class UserNameCacheService { // 3. 根据关键词过滤 String lowerKeyword = keyword.trim().toLowerCase(); + List keywordList = splitKeyword(lowerKeyword); + List result = allUsers.parallelStream() - .filter(user -> matchesKeyword(user, lowerKeyword)) + .filter(user -> matchesKeyword(user, keywordList)) .collect(Collectors.toList()); log.info("搜索完成,keyword:{},结果数:{},耗时:{}ms", @@ -131,6 +133,24 @@ public class UserNameCacheService { } } + /** + * 分割关键词(处理逗号分隔,过滤空字符串) + */ + private List splitKeyword(String lowerKeyword) { + List keywordList = new ArrayList<>(); + if (StringUtils.isNotEmpty(lowerKeyword)) { + // 按逗号分割,兼容逗号前后有空格的情况 + String[] splitArray = lowerKeyword.split(",\\s*"); + for (String word : splitArray) { + // 过滤分割后可能的空字符串 + if (StringUtils.isNotEmpty(word)) { + keywordList.add(word); + } + } + } + return keywordList; + } + /** * 手动清除所有缓存 */ @@ -139,17 +159,37 @@ public class UserNameCacheService { log.info("手动清除所有缓存"); } - private boolean matchesKeyword(CIDUserResp user, String lowerKeyword) { - if (user == null) return false; - - if (user.getUsername() != null && user.getUsername().toLowerCase().contains(lowerKeyword)) { - return true; + /** + * 扩展匹配逻辑:支持userId、username、nickname匹配 + */ + private boolean matchesKeyword(CIDUserResp user, List keywordList) { + if (user == null || keywordList.isEmpty()) { + return false; } - if (user.getNickname() != null && user.getNickname().toLowerCase().contains(lowerKeyword)) { - return true; - } + // 遍历所有分割后的关键词,只要匹配一个就返回true + for (String keyword : keywordList) { + // 场景1:关键词是数字,尝试匹配userId(精确匹配) + if (keyword.matches("\\d+")) { + try { + Long userId = Long.parseLong(keyword); + if (Objects.equals(user.getUserId(), userId)) { + return true; + } + } catch (NumberFormatException e) { + // 理论上不会走到这里,因为已经通过数字正则校验 + continue; + } + } + // 场景2:关键词是非数字,匹配username/nickname + if (user.getUsername() != null && user.getUsername().toLowerCase().contains(keyword)) { + return true; + } + if (user.getNickname() != null && user.getNickname().toLowerCase().contains(keyword)) { + return true; + } + } return false; } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationLyricNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationLyricNodeController.java index 27d47150..35edcc53 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationLyricNodeController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationLyricNodeController.java @@ -2,6 +2,7 @@ package com.sdm.project.controller; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.project.SpdmNodeListReq; +import com.sdm.common.entity.resp.PageDataResp; import com.sdm.outbridge.entity.LyricVProjectStationExcepTionToDM; import com.sdm.outbridge.mode.GetProcessDataReq; import com.sdm.outbridge.service.lyric.LyricIntegrateService; @@ -209,8 +210,8 @@ public class SimulationLyricNodeController { */ @GetMapping("/queryEncExceptionByTaskId") @Operation(summary = "根据taskId查询enc异常信息", description = "根据taskId查询enc异常信息") - public SdmResponse> queryEncExceptionByTaskId(@RequestParam String taskId) { - return lyricInternalService.queryEncExceptionByTaskId(taskId); + public SdmResponse>> queryEncExceptionByTaskId(@RequestParam String taskId, @RequestParam Integer current, @RequestParam Integer size) { + return lyricInternalService.queryEncExceptionByTaskId(taskId,current,size); } diff --git a/project/src/main/java/com/sdm/project/service/ILyricInternalService.java b/project/src/main/java/com/sdm/project/service/ILyricInternalService.java index 7501276f..072ace17 100644 --- a/project/src/main/java/com/sdm/project/service/ILyricInternalService.java +++ b/project/src/main/java/com/sdm/project/service/ILyricInternalService.java @@ -2,6 +2,7 @@ package com.sdm.project.service; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.project.SpdmNodeListReq; +import com.sdm.common.entity.resp.PageDataResp; import com.sdm.outbridge.entity.LyricVProjectStationExcepTionToDM; import com.sdm.outbridge.mode.GetProcessDataReq; import com.sdm.project.model.req.PushReportReq; @@ -57,6 +58,6 @@ public interface ILyricInternalService { SdmResponse optimisedGetTodoList(String http); - SdmResponse> queryEncExceptionByTaskId(String taskId); + SdmResponse>> queryEncExceptionByTaskId(String taskId, Integer current, Integer size); } diff --git a/project/src/main/java/com/sdm/project/service/impl/LyricInternalServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/LyricInternalServiceImpl.java index 944024f0..5b1fde62 100644 --- a/project/src/main/java/com/sdm/project/service/impl/LyricInternalServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/LyricInternalServiceImpl.java @@ -2285,7 +2285,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService { } @Override - public SdmResponse> queryEncExceptionByTaskId(String taskId) { + public SdmResponse>> queryEncExceptionByTaskId(String taskId,Integer current, Integer size) { // taskId --> project code & station code List encNodeSpdmList = nodeMapper.getEncNodeListByTaskId(taskId); log.info("queryEncExceptionByTaskId spdm db back:{}",JSONObject.toJSONString(encNodeSpdmList)); @@ -2312,9 +2312,12 @@ public class LyricInternalServiceImpl implements ILyricInternalService { } // enc 视图查询 log.info("queryEncExceptionByTaskId send lyric db projectNodeCode:{},workspaceNodeCode:{}",projectNodeCode,workspaceNodeCode); + PageHelper.startPage(current,size); List lyricEncInfos = lyricVProjectStationExcepTionToDMMapper.queryExceptionByProjectAndStation(projectNodeCode, workspaceNodeCode); log.info("queryEncExceptionByTaskId lyric db back:{}",lyricEncInfos.size()); - return SdmResponse.success(lyricEncInfos); + PageInfo pageList = new PageInfo<>(lyricEncInfos); + SdmResponse>> response = PageUtils.getJsonObjectSdmResponse(pageList.getList(), pageList); + return response; } diff --git a/system/src/main/java/com/sdm/system/controller/SysUserController.java b/system/src/main/java/com/sdm/system/controller/SysUserController.java index e743f415..3c28ce61 100644 --- a/system/src/main/java/com/sdm/system/controller/SysUserController.java +++ b/system/src/main/java/com/sdm/system/controller/SysUserController.java @@ -78,7 +78,9 @@ public class SysUserController implements ISysUserFeignClient { */ @Operation(summary = "通过关键字查询用户列表", description = "通过关键字查询用户列表") @GetMapping("/listUserWithKeyWord") - public SdmResponse> listUserWithKeyWord(@Parameter(description = "通过关键字查询用户列表") @RequestParam String keyword) { + public SdmResponse> listUserWithKeyWord(@Parameter(description = "通过关键字查询用户列表") + @RequestParam(value = "keyword", required = false) String keyword + , @RequestParam(value = "userIds", required = false) String userIds) { return SdmResponse.success(userNameCacheService.searchUsers(keyword)); }