userNameMap = users.stream()
+ .collect(Collectors.toMap(SysUser::getId, SysUser::getNickname, (a, b) -> a));
+
+ for (T item : list) {
+ try {
+ Object idValue = idField.get(item);
+ if (idValue != null && StrUtil.isNotBlank(idValue.toString())) {
+ String userName = userNameMap.get(idValue.toString());
+ nameField.set(item, StrUtil.blankToDefault(userName, "未知"));
+ }
+ } catch (IllegalAccessException e) {
+ continue;
+ }
+ }
+ }
+
+ /**
+ * 批量填充用户名称(支持多个用户ID字段)
+ *
+ * 使用方式:在实体类中定义多个 @UserIdField 和 @UserNameField 配对字段
+ *
+ * @param list 需要填充的实体列表
+ * @param idFields 用户ID字段名数组
+ * @param nameFields 用户名字段名数组
+ */
+ public void fillUserNames(List list, String[] idFields, String[] nameFields) {
+ if (CollUtil.isEmpty(list) || idFields == null || nameFields == null || idFields.length != nameFields.length) {
+ return;
+ }
+
+ Class> clazz = list.get(0).getClass();
+ Field[] allFields = clazz.getDeclaredFields();
+ Map fieldMap = new HashMap<>();
+ for (Field field : allFields) {
+ fieldMap.put(field.getName(), field);
+ }
+
+ List idFieldList = new ArrayList<>();
+ List nameFieldList = new ArrayList<>();
+ for (String idFieldName : idFields) {
+ Field f = fieldMap.get(idFieldName);
+ if (f != null) {
+ f.setAccessible(true);
+ idFieldList.add(f);
+ }
+ }
+ for (String nameFieldName : nameFields) {
+ Field f = fieldMap.get(nameFieldName);
+ if (f != null) {
+ f.setAccessible(true);
+ nameFieldList.add(f);
+ }
+ }
+
+ if (idFieldList.isEmpty() || nameFieldList.isEmpty()) {
+ return;
+ }
+
+ Set userIds = new HashSet<>();
+ for (T item : list) {
+ for (Field idField : idFieldList) {
+ try {
+ Object idValue = idField.get(item);
+ if (idValue != null && StrUtil.isNotBlank(idValue.toString())) {
+ userIds.add(idValue.toString());
+ }
+ } catch (IllegalAccessException e) {
+ continue;
+ }
+ }
+ }
+
+ if (userIds.isEmpty()) {
+ return;
+ }
+
+ List users = sysUserMapper.selectBatchIds(userIds);
+ Map userNameMap = users.stream()
+ .collect(Collectors.toMap(SysUser::getId, SysUser::getNickname, (a, b) -> a));
+
+ for (T item : list) {
+ for (int i = 0; i < idFieldList.size() && i < nameFieldList.size(); i++) {
+ try {
+ Object idValue = idFieldList.get(i).get(item);
+ if (idValue != null && StrUtil.isNotBlank(idValue.toString())) {
+ String userName = userNameMap.get(idValue.toString());
+ nameFieldList.get(i).set(item, StrUtil.blankToDefault(userName, "未知"));
+ }
+ } catch (IllegalAccessException e) {
+ continue;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalChangeLogController.java b/backend/src/main/java/com/yfd/platform/data/controller/ApprovalChangeLogController.java
index 26e019f..49a2d2f 100644
--- a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalChangeLogController.java
+++ b/backend/src/main/java/com/yfd/platform/data/controller/ApprovalChangeLogController.java
@@ -2,6 +2,7 @@ package com.yfd.platform.data.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yfd.platform.common.DataSourceRequest;
+import com.yfd.platform.common.utils.UserNameFillHelper;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.data.domain.ApprovalChangeLog;
import com.yfd.platform.data.domain.ApprovalLog;
@@ -28,6 +29,9 @@ public class ApprovalChangeLogController {
@Resource
private IApprovalChangeLogService approvalChangeLogService;
+ @Resource
+ private UserNameFillHelper userNameFillHelper;
+
@GetMapping("/list")
@Operation(summary = "查询变更记录列表")
public ResponseResult list() {
@@ -39,7 +43,8 @@ public class ApprovalChangeLogController {
@Operation(summary = "分页查询变更记录列表(通用)")
public ResponseResult queryPageList(@RequestBody DataSourceRequest request) {
Page approvalChangeLogPage = DataSourceRequestUtil.executeQuery(request, ApprovalChangeLog.class, approvalChangeLogService);
- approvalChangeLogService.fillUserNames(approvalChangeLogPage.getRecords());
+ userNameFillHelper.fillUserNames(approvalChangeLogPage.getRecords());
+ // approvalChangeLogService.fillUserNames(approvalChangeLogPage.getRecords());
return ResponseResult.successData(approvalChangeLogPage);
}
diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java
index 171d46f..24673fd 100644
--- a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java
+++ b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalChangeLog.java
@@ -1,6 +1,8 @@
package com.yfd.platform.data.domain;
import com.baomidou.mybatisplus.annotation.*;
+import com.yfd.platform.annotation.UserIdField;
+import com.yfd.platform.annotation.UserNameField;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -59,12 +61,14 @@ public class ApprovalChangeLog implements Serializable {
/**
* 操作人ID
*/
+ @UserIdField
private String operatorId;
/**
* 操作人名称
*/
@TableField(exist = false)
+ @UserNameField
private String operatorName;
/**
diff --git a/backend/src/main/java/com/yfd/platform/data/service/IApprovalChangeLogService.java b/backend/src/main/java/com/yfd/platform/data/service/IApprovalChangeLogService.java
index 756e9fb..92d7e2c 100644
--- a/backend/src/main/java/com/yfd/platform/data/service/IApprovalChangeLogService.java
+++ b/backend/src/main/java/com/yfd/platform/data/service/IApprovalChangeLogService.java
@@ -17,7 +17,7 @@ public interface IApprovalChangeLogService extends IService {
*/
List getByApprovalId(String approvalId);
- void fillUserNames(List list);
+// void fillUserNames(List list);
/**
* 根据草稿数据ID查询变更记录
diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalChangeLogServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalChangeLogServiceImpl.java
index c6dbc3c..0e4782a 100644
--- a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalChangeLogServiceImpl.java
+++ b/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalChangeLogServiceImpl.java
@@ -29,42 +29,42 @@ public class ApprovalChangeLogServiceImpl extends ServiceImpl getByApprovalId(String approvalId) {
return approvalChangeLogMapper.selectByApprovalId(approvalId);
}
- @Override
- public void fillUserNames(List list) {
- if (list == null || list.isEmpty()) {
- return;
- }
-
- Set userIds = new HashSet<>();
- for (ApprovalChangeLog vo : list) {
- if (StrUtil.isNotBlank(vo.getApprovalId())) {
- userIds.add(vo.getApprovalId());
- }
- if (StrUtil.isNotBlank(vo.getOperatorId())) {
- userIds.add(vo.getOperatorId());
- }
- }
-
- if (userIds.isEmpty()) {
- return;
- }
-
- Map userNameMap = new HashMap<>();
- List users = sysUserMapper.selectBatchIds(userIds);
- for (SysUser user : users) {
- userNameMap.put(user.getId(), user.getNickname());
- }
-
- for (ApprovalChangeLog vo : list) {
- if (StrUtil.isNotBlank(vo.getApprovalId())) {
- vo.setApprovalName(userNameMap.get(vo.getApprovalId()));
- }
- if (StrUtil.isNotBlank(vo.getOperatorId())) {
- vo.setOperatorName(userNameMap.get(vo.getOperatorId()));
- }
-
- }
- }
+// @Override
+// public void fillUserNames(List list) {
+// if (list == null || list.isEmpty()) {
+// return;
+// }
+//
+// Set userIds = new HashSet<>();
+// for (ApprovalChangeLog vo : list) {
+// if (StrUtil.isNotBlank(vo.getApprovalId())) {
+// userIds.add(vo.getApprovalId());
+// }
+// if (StrUtil.isNotBlank(vo.getOperatorId())) {
+// userIds.add(vo.getOperatorId());
+// }
+// }
+//
+// if (userIds.isEmpty()) {
+// return;
+// }
+//
+// Map userNameMap = new HashMap<>();
+// List users = sysUserMapper.selectBatchIds(userIds);
+// for (SysUser user : users) {
+// userNameMap.put(user.getId(), user.getNickname());
+// }
+//
+// for (ApprovalChangeLog vo : list) {
+// if (StrUtil.isNotBlank(vo.getApprovalId())) {
+// vo.setApprovalName(userNameMap.get(vo.getApprovalId()));
+// }
+// if (StrUtil.isNotBlank(vo.getOperatorId())) {
+// vo.setOperatorName(userNameMap.get(vo.getOperatorId()));
+// }
+//
+// }
+// }
@Override
public List getByDataId(String dataId) {
return approvalChangeLogMapper.selectByDataId(dataId);