From 11e8a8f6e8cc27514447a49606842b890cdadba8 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 14 二月 2025 14:43:56 +0800
Subject: [PATCH] 流程日志查询完善

---
 business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
index 7037772..2d31b69 100644
--- a/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
@@ -5,6 +5,10 @@
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.common.base.Result;
+import com.ycl.common.core.domain.entity.SysDept;
+import com.ycl.common.core.domain.entity.SysRole;
+import com.ycl.common.core.domain.entity.SysUser;
+import com.ycl.common.enums.business.HandlerTypeEnum;
 import com.ycl.common.enums.business.ProcessLogEventTypeEnum;
 import com.ycl.domain.entity.ProcessLog;
 import com.ycl.domain.json.DelegateData;
@@ -16,13 +20,18 @@
 import com.ycl.framework.utils.PageUtil;
 import com.ycl.mapper.ProcessLogMapper;
 import com.ycl.service.ProcessLogService;
+import com.ycl.system.service.ISysDeptService;
+import com.ycl.system.service.ISysRoleService;
+import com.ycl.system.service.ISysUserService;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -36,6 +45,9 @@
 public class ProcessLogServiceImpl extends ServiceImpl<ProcessLogMapper, ProcessLog> implements ProcessLogService {
 
     private final ProcessLogMapper processLogMapper;
+    private final ISysUserService userService;
+    private final ISysDeptService deptService;
+    private final ISysRoleService roleService;
 
     /**
      * 娣诲姞鏃ュ織
@@ -133,16 +145,52 @@
         list.stream().forEach(log -> {
             if (StringUtils.isNotBlank(log.getEventDataJson())) {
                 if (ProcessLogEventTypeEnum.DELEGATE.equals(log.getEventType())) {
-                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), DelegateData.class));
+                    DelegateData delegateData = JSON.parseObject(log.getEventDataJson(), DelegateData.class);
+                    // 鏌ヨ杞姙鍚庣殑澶勭悊浜哄悕绉�
+                    List<String> names = new ArrayList<>(2);
+                    List<Long> ids = delegateData.getAfterHandlerIds().stream().map(Long::parseLong).collect(Collectors.toList());
+                    this.getName(delegateData.getAfterHandlerType(), ids, names);
+                    delegateData.setAfterHandlerNames(names);
+                    log.setEventDataObj(delegateData);
                 } else if (ProcessLogEventTypeEnum.JUMP.equals(log.getEventType())) {
                     log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), JumpData.class));
                 } else if (ProcessLogEventTypeEnum.REJECT.equals(log.getEventType())) {
                     log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), RejectData.class));
                 } else if (ProcessLogEventTypeEnum.SUPERVISE.equals(log.getEventType())) {
-                    log.setEventDataObj(JSON.parseObject(log.getEventDataJson(), SuperviseData.class));
+                    SuperviseData superviseData = JSON.parseObject(log.getEventDataJson(), SuperviseData.class);
+                    SysUser user = userService.selectUserById(Long.parseLong(superviseData.getSenderId()));
+                    if (Objects.nonNull(user)) {
+                        superviseData.setSenderName(user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "鏃犻儴闂�") + ")");
+                    }
+                    log.setEventDataObj(superviseData);
                 }
             }
         });
         return Result.ok().data(list);
     }
+
+    /**
+     * 瑙f瀽娴佺▼鏃ュ織涓殑鏁版嵁-鍚嶇О
+     *
+     * @param handlerType
+     * @param ids
+     * @param names
+     */
+    private void getName(HandlerTypeEnum handlerType, List<Long> ids, List<String> names) {
+        if (HandlerTypeEnum.FIX_USER.equals(handlerType)) {
+            SysUser user = userService.selectUserById(ids.get(0));
+            if (Objects.nonNull(user)) {
+                names.add(user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "鏃犻儴闂�") + ")");
+            }
+        } else if (HandlerTypeEnum.USER.equals(handlerType)) {
+            List<SysUser> users = userService.selectUserByIds(ids);
+            names = users.stream().map(user -> user.getNickName() + "(" + (Objects.nonNull(user.getDept()) ? user.getDept().getDeptName() : "鏃犻儴闂�") + ")").collect(Collectors.toList());
+        } else if (HandlerTypeEnum.DEPT.equals(handlerType)) {
+            List<SysDept> depts = deptService.selectDeptByIds(ids);
+            names = depts.stream().map(SysDept::getDeptName).collect(Collectors.toList());
+        } else if (HandlerTypeEnum.ROLE.equals(handlerType)) {
+            List<SysRole> roles = roleService.selectRoleByIds(ids);
+            names = roles.stream().map(SysRole::getRoleName).collect(Collectors.toList());
+        }
+    }
 }

--
Gitblit v1.8.0