From 5ec1f5263486a851e40e75402c368efcb6dcfc08 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期六, 24 十月 2026 12:56:19 +0800
Subject: [PATCH] feat(hrm): 调岗申请新增「调岗人」选择并自动带出原部门/原岗位;修复部门名称与调岗人为空
---
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
index 54cc87d..d32b4c5 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
@@ -48,6 +48,7 @@
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
@@ -370,19 +371,68 @@
.filter(Objects::nonNull)
.collect(Collectors.toSet());
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(deptIds);
+ // 瑙f瀽宀椾綅ID锛坧ost_ids 瀛樼殑鏄� JSON 鏁扮粍瀛楃涓诧紝濡� [38]锛夛紝骞舵壒閲忓姞杞藉矖浣嶅悕绉�
+ Map<Long, List<Long>> empPostIdsMap = new LinkedHashMap<>();
+ Set<Long> allPostIds = new LinkedHashSet<>();
+ for (HrmEmployeeDO emp : list) {
+ List<Long> postIdList = parseEmployeePostIds(emp.getPostIds());
+ empPostIdsMap.put(emp.getId(), postIdList);
+ allPostIds.addAll(postIdList);
+ }
+ Map<Long, PostRespDTO> postMap = CollUtil.isEmpty(allPostIds)
+ ? Collections.emptyMap() : postApi.getPostMap(allPostIds);
return list.stream().map(emp -> {
HrmEmployeeSimpleRespVO vo = new HrmEmployeeSimpleRespVO();
vo.setId(emp.getId());
vo.setEmployeeNo(emp.getEmployeeNo());
vo.setName(emp.getName());
vo.setEmployeeStatus(emp.getEmployeeStatus());
+ vo.setDeptId(emp.getDeptId());
if (emp.getDeptId() != null && deptMap.containsKey(emp.getDeptId())) {
vo.setDeptName(deptMap.get(emp.getDeptId()).getName());
+ }
+ // 宀椾綅淇℃伅锛堢敤浜庤皟宀楃瓑鍦烘櫙鑷姩甯﹀嚭鍘熷矖浣嶏級
+ List<Long> postIdList = empPostIdsMap.getOrDefault(emp.getId(), Collections.emptyList());
+ vo.setPostIds(postIdList);
+ if (CollUtil.isNotEmpty(postIdList)) {
+ vo.setPostName(postIdList.stream()
+ .map(postMap::get)
+ .filter(Objects::nonNull)
+ .map(PostRespDTO::getName)
+ .collect(Collectors.joining(",")));
}
return vo;
}).collect(Collectors.toList());
}
+ /**
+ * 瑙f瀽鍛樺伐鐨勫矖浣岻D瀛楃涓诧紙JSON 鏁扮粍鏍煎紡锛屽 [38] 鎴� [1,2]锛�
+ */
+
+ /**
+ * 瑙f瀽鍛樺伐宀椾綅ID瀛楃涓诧紙post_ids 瀛� JSON 鏁扮粍锛屽 [38] 鎴� [1,2]锛�
+ */
+ private java.util.List<Long> parseEmployeePostIds(String postIds) {
+ if (StrUtil.isBlank(postIds)) {
+ return Collections.emptyList();
+ }
+
+ // post_ids 褰㈠ "[38]" 鎴� "[1,2]"锛氬幓鎺変腑鎷彿鍚庢寜閫楀彿瑙f瀽
+ return Arrays.stream(postIds.replace("[", "").replace("]", "").split(","))
+ .map(String::trim)
+ .filter(StrUtil::isNotBlank)
+ .map(s -> {
+ try {
+ return Long.valueOf(s);
+ } catch (NumberFormatException ex) {
+ return null;
+ }
+ })
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+ }
+
+
@Override
public HrmEmployeeDO getEmployeeByUserId(Long userId) {
return employeeMapper.selectByUserId(userId);
--
Gitblit v1.9.3