feat(hrm): 添加流程实例任务查询功能

- 在HrmFlowInstanceController中新增getTasksByInstanceId接口
- 在HrmFlowInstanceService及其实现类中添加getTasksByInstanceId方法
- 注入UserService用于获取用户昵称信息
- 查询流程任务时关联查询处理人昵称并返回给前端
- 添加assigneeNickName字段到HrmFlowTaskVo用于显示用户昵称
This commit is contained in:
2026-02-26 17:38:55 +08:00
parent ce65595d40
commit d223a9d5af
4 changed files with 48 additions and 0 deletions

View File

@@ -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<Void> deleteRejectedInstance(@PathVariable @NotNull Long instId) {
return toAjax(service.deleteRejectedInstance(instId));
}
@GetMapping("/tasks/{instId}")
public R<List<HrmFlowTaskVo>> getTasksByInstanceId(@PathVariable @NotNull Long instId) {
return R.ok(service.getTasksByInstanceId(instId));
}
}

View File

@@ -43,4 +43,5 @@ public class HrmFlowTaskVo implements Serializable {
private Date updateTime;
private String assigneeNickName;
}

View File

@@ -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<HrmFlowTaskVo> getTasksByInstanceId(@NotNull Long instId);
}

View File

@@ -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<HrmFlowTaskVo> getTasksByInstanceId(Long instId) {
if (instId == null) {
return Collections.emptyList();
}
// 根据实例ID查询所有任务
List<HrmFlowTask> tasks = taskMapper.selectList(Wrappers.<HrmFlowTask>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<HrmFlowInstance> buildQueryWrapper(HrmFlowInstanceBo bo) {
LambdaQueryWrapper<HrmFlowInstance> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getInstId() != null, HrmFlowInstance::getInstId, bo.getInstId());