|
@@ -34,6 +34,7 @@ import com.qqflow.engine.domain.system.entity.SysUser;
|
|
|
import com.qqflow.engine.domain.system.entity.SysUserRole;
|
|
import com.qqflow.engine.domain.system.entity.SysUserRole;
|
|
|
import com.qqflow.engine.domain.system.mapper.SysUserMapper;
|
|
import com.qqflow.engine.domain.system.mapper.SysUserMapper;
|
|
|
import com.qqflow.engine.domain.system.mapper.SysUserRoleMapper;
|
|
import com.qqflow.engine.domain.system.mapper.SysUserRoleMapper;
|
|
|
|
|
+import com.qqflow.engine.domain.system.service.SysUserService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.context.ApplicationEventPublisher;
|
|
import org.springframework.context.ApplicationEventPublisher;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
@@ -74,11 +75,13 @@ public class ApprovalTaskServiceImpl implements ApprovalTaskService {
|
|
|
private final ApplicationEventPublisher eventPublisher;
|
|
private final ApplicationEventPublisher eventPublisher;
|
|
|
private final SysUserRoleMapper sysUserRoleMapper;
|
|
private final SysUserRoleMapper sysUserRoleMapper;
|
|
|
private final SysUserMapper sysUserMapper;
|
|
private final SysUserMapper sysUserMapper;
|
|
|
|
|
+ private final SysUserService sysUserService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public PageResult<ApprovalTaskDTO> todoList(Long assigneeId, String assigneeType, String processName, Integer pageNum, Integer pageSize) {
|
|
public PageResult<ApprovalTaskDTO> todoList(Long assigneeId, String assigneeType, String processName, Integer pageNum, Integer pageSize) {
|
|
|
|
|
+ List<Long> roleIds = loadRoleIdsIfSystemUser(assigneeId, assigneeType);
|
|
|
Page<ApprovalTask> page = new Page<>(pageNum, pageSize);
|
|
Page<ApprovalTask> page = new Page<>(pageNum, pageSize);
|
|
|
- this.approvalTaskMapper.selectTodoList(page, assigneeId, assigneeType, processName);
|
|
|
|
|
|
|
+ this.approvalTaskMapper.selectTodoList(page, assigneeId, assigneeType, roleIds, processName);
|
|
|
List<ApprovalTaskDTO> records = page.getRecords().stream()
|
|
List<ApprovalTaskDTO> records = page.getRecords().stream()
|
|
|
.map(ApprovalTaskDTO::of)
|
|
.map(ApprovalTaskDTO::of)
|
|
|
.peek(this::fillUrgency)
|
|
.peek(this::fillUrgency)
|
|
@@ -106,8 +109,9 @@ public class ApprovalTaskServiceImpl implements ApprovalTaskService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public PageResult<ApprovalTaskDTO> handledList(Long assigneeId, String assigneeType, String processName, Integer pageNum, Integer pageSize) {
|
|
public PageResult<ApprovalTaskDTO> handledList(Long assigneeId, String assigneeType, String processName, Integer pageNum, Integer pageSize) {
|
|
|
|
|
+ List<Long> roleIds = loadRoleIdsIfSystemUser(assigneeId, assigneeType);
|
|
|
Page<ApprovalTask> page = new Page<>(pageNum, pageSize);
|
|
Page<ApprovalTask> page = new Page<>(pageNum, pageSize);
|
|
|
- this.approvalTaskMapper.selectHandledList(page, assigneeId, assigneeType, processName);
|
|
|
|
|
|
|
+ this.approvalTaskMapper.selectHandledList(page, assigneeId, assigneeType, roleIds, processName);
|
|
|
List<ApprovalTaskDTO> records = page.getRecords().stream()
|
|
List<ApprovalTaskDTO> records = page.getRecords().stream()
|
|
|
.map(ApprovalTaskDTO::of)
|
|
.map(ApprovalTaskDTO::of)
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -258,8 +262,9 @@ public class ApprovalTaskServiceImpl implements ApprovalTaskService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public PageResult<ApprovalTaskDTO> ccList(Long assigneeId, String assigneeType, String processName, Integer pageNum, Integer pageSize) {
|
|
public PageResult<ApprovalTaskDTO> ccList(Long assigneeId, String assigneeType, String processName, Integer pageNum, Integer pageSize) {
|
|
|
|
|
+ List<Long> roleIds = loadRoleIdsIfSystemUser(assigneeId, assigneeType);
|
|
|
Page<ApprovalTask> page = new Page<>(pageNum, pageSize);
|
|
Page<ApprovalTask> page = new Page<>(pageNum, pageSize);
|
|
|
- this.approvalTaskMapper.selectCcList(page, assigneeId, assigneeType, processName);
|
|
|
|
|
|
|
+ this.approvalTaskMapper.selectCcList(page, assigneeId, assigneeType, roleIds, processName);
|
|
|
List<ApprovalTaskDTO> records = page.getRecords().stream()
|
|
List<ApprovalTaskDTO> records = page.getRecords().stream()
|
|
|
.map(ApprovalTaskDTO::of)
|
|
.map(ApprovalTaskDTO::of)
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -533,4 +538,18 @@ public class ApprovalTaskServiceImpl implements ApprovalTaskService {
|
|
|
operatorId, operatorName, action, result
|
|
operatorId, operatorName, action, result
|
|
|
));
|
|
));
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private List<Long> loadRoleIdsIfSystemUser(Long assigneeId, String assigneeType) {
|
|
|
|
|
+ if (!"ROLE".equals(assigneeType)) {
|
|
|
|
|
+ List<String> roleCodes = sysUserService.loadUserRoles(assigneeId);
|
|
|
|
|
+ if (roleCodes != null && !roleCodes.isEmpty()) {
|
|
|
|
|
+ // loadUserRoles returns role codes, we need role IDs
|
|
|
|
|
+ // But sys_user_role stores role_id, so query directly
|
|
|
|
|
+ return sysUserRoleMapper.selectList(
|
|
|
|
|
+ new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, assigneeId)
|
|
|
|
|
+ ).stream().map(SysUserRole::getRoleId).distinct().collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|