From d223a9d5afa5a9915077c909bc8c66c4b0248f5b Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Thu, 26 Feb 2026 17:38:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(hrm):=20=E6=B7=BB=E5=8A=A0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9E=E4=BE=8B=E4=BB=BB=E5=8A=A1=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在HrmFlowInstanceController中新增getTasksByInstanceId接口 - 在HrmFlowInstanceService及其实现类中添加getTasksByInstanceId方法 - 注入UserService用于获取用户昵称信息 - 查询流程任务时关联查询处理人昵称并返回给前端 - 添加assigneeNickName字段到HrmFlowTaskVo用于显示用户昵称 --- .../controller/HrmFlowInstanceController.java | 6 +++ .../ruoyi/hrm/domain/vo/HrmFlowTaskVo.java | 1 + .../hrm/service/IHrmFlowInstanceService.java | 3 ++ .../impl/HrmFlowInstanceServiceImpl.java | 38 +++++++++++++++++++ 4 files changed, 48 insertions(+) diff --git a/fad-hrm/src/main/java/com/ruoyi/hrm/controller/HrmFlowInstanceController.java b/fad-hrm/src/main/java/com/ruoyi/hrm/controller/HrmFlowInstanceController.java index 8190c54..4a3d0b9 100644 --- a/fad-hrm/src/main/java/com/ruoyi/hrm/controller/HrmFlowInstanceController.java +++ b/fad-hrm/src/main/java/com/ruoyi/hrm/controller/HrmFlowInstanceController.java @@ -9,6 +9,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.hrm.domain.bo.HrmFlowInstanceBo; import com.ruoyi.hrm.domain.bo.HrmFlowStartBo; import com.ruoyi.hrm.domain.vo.HrmFlowInstanceVo; +import com.ruoyi.hrm.domain.vo.HrmFlowTaskVo; import com.ruoyi.hrm.service.IHrmFlowInstanceService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -85,4 +86,9 @@ public class HrmFlowInstanceController extends BaseController { public R deleteRejectedInstance(@PathVariable @NotNull Long instId) { return toAjax(service.deleteRejectedInstance(instId)); } + + @GetMapping("/tasks/{instId}") + public R> getTasksByInstanceId(@PathVariable @NotNull Long instId) { + return R.ok(service.getTasksByInstanceId(instId)); + } } diff --git a/fad-hrm/src/main/java/com/ruoyi/hrm/domain/vo/HrmFlowTaskVo.java b/fad-hrm/src/main/java/com/ruoyi/hrm/domain/vo/HrmFlowTaskVo.java index c42913a..7fd8f14 100644 --- a/fad-hrm/src/main/java/com/ruoyi/hrm/domain/vo/HrmFlowTaskVo.java +++ b/fad-hrm/src/main/java/com/ruoyi/hrm/domain/vo/HrmFlowTaskVo.java @@ -43,4 +43,5 @@ public class HrmFlowTaskVo implements Serializable { private Date updateTime; private String assigneeNickName; + } diff --git a/fad-hrm/src/main/java/com/ruoyi/hrm/service/IHrmFlowInstanceService.java b/fad-hrm/src/main/java/com/ruoyi/hrm/service/IHrmFlowInstanceService.java index 286fa55..9ded856 100644 --- a/fad-hrm/src/main/java/com/ruoyi/hrm/service/IHrmFlowInstanceService.java +++ b/fad-hrm/src/main/java/com/ruoyi/hrm/service/IHrmFlowInstanceService.java @@ -4,6 +4,7 @@ import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.hrm.domain.bo.HrmFlowInstanceBo; import com.ruoyi.hrm.domain.vo.HrmFlowInstanceVo; +import com.ruoyi.hrm.domain.vo.HrmFlowTaskVo; import javax.validation.constraints.NotNull; import java.util.Collection; @@ -41,4 +42,6 @@ public interface IHrmFlowInstanceService { Boolean revokeInstance(Long instId); Boolean deleteRejectedInstance(@NotNull Long instId); + + List getTasksByInstanceId(@NotNull Long instId); } diff --git a/fad-hrm/src/main/java/com/ruoyi/hrm/service/impl/HrmFlowInstanceServiceImpl.java b/fad-hrm/src/main/java/com/ruoyi/hrm/service/impl/HrmFlowInstanceServiceImpl.java index 661d9fe..5954d91 100644 --- a/fad-hrm/src/main/java/com/ruoyi/hrm/service/impl/HrmFlowInstanceServiceImpl.java +++ b/fad-hrm/src/main/java/com/ruoyi/hrm/service/impl/HrmFlowInstanceServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.service.UserService; import com.ruoyi.hrm.domain.HrmFlowInstance; import com.ruoyi.hrm.domain.HrmFlowNode; import com.ruoyi.hrm.domain.HrmFlowTask; @@ -13,6 +14,7 @@ import com.ruoyi.hrm.domain.HrmFormData; import com.ruoyi.hrm.domain.bo.HrmFlowStartBo; import com.ruoyi.hrm.domain.bo.HrmFlowInstanceBo; import com.ruoyi.hrm.domain.vo.HrmFlowInstanceVo; +import com.ruoyi.hrm.domain.vo.HrmFlowTaskVo; import com.ruoyi.hrm.mapper.HrmFlowInstanceMapper; import com.ruoyi.hrm.mapper.HrmFlowNodeMapper; import com.ruoyi.hrm.mapper.HrmFlowTaskMapper; @@ -23,7 +25,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collection; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; @RequiredArgsConstructor @Service @@ -34,6 +38,7 @@ public class HrmFlowInstanceServiceImpl implements IHrmFlowInstanceService { private final HrmFlowTaskMapper taskMapper; private final HrmFormDataMapper formDataMapper; private final FlowAssigneeHelper assigneeHelper; + private final UserService userService; @Override public HrmFlowInstanceVo queryById(Long instId) { @@ -229,6 +234,39 @@ public class HrmFlowInstanceServiceImpl implements IHrmFlowInstanceService { return baseMapper.deleteById(instId) > 0; } + @Override + public List getTasksByInstanceId(Long instId) { + if (instId == null) { + return Collections.emptyList(); + } + + // 根据实例ID查询所有任务 + List tasks = taskMapper.selectList(Wrappers.lambdaQuery() + .eq(HrmFlowTask::getInstId, instId) + .eq(HrmFlowTask::getDelFlag, 0)); // 未删除的任务 + + if (tasks.isEmpty()) { + return Collections.emptyList(); + } + + // 转换为VO并联查处理人昵称 + return tasks.stream().map(task -> { + HrmFlowTaskVo vo = BeanUtil.toBean(task, HrmFlowTaskVo.class); + // 获取用户昵称 + String nickname = getUserNicknameById(task.getAssigneeUserId()); + vo.setAssigneeNickName(nickname); + return vo; + }).collect(Collectors.toList()); + } + + // 假设的方法:根据用户ID获取昵称 + private String getUserNicknameById(Long userId) { + if (userId == null) { + return "未知用户"; + } + return userService.selectNickNameById(userId); + } + private LambdaQueryWrapper buildQueryWrapper(HrmFlowInstanceBo bo) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getInstId() != null, HrmFlowInstance::getInstId, bo.getInstId());