This commit is contained in:
zhangzq
2026-07-24 13:48:25 +08:00
parent 6ce2842c88
commit d841246663
6 changed files with 29 additions and 31 deletions

View File

@@ -31,8 +31,10 @@ public class PortalDashboardController {
@GetMapping("/project-plan/{projectId}")
@SaIgnore
public ApiResponse<PortalDashboardVO.ProjectPlan> projectPlan(@PathVariable Long projectId) {
CurrentUser currentUser = SecurityUtils.getCurrentUser();
try {
return ApiResponse.success(portalDashboardService.getProjectPlan(SecurityUtils.getCurrentUsername(), projectId));
return ApiResponse.success(portalDashboardService.getProjectPlan(
currentUser.getUsername(), currentUser.getPresonName(), projectId));
} catch (IllegalArgumentException exception) {
throw new BadRequestException(exception.getMessage());
}

View File

@@ -6,5 +6,5 @@ public interface PortalDashboardService {
PortalDashboardVO getDashboard(String username, String personName, long projectPage, long projectSize);
PortalDashboardVO.ProjectPlan getProjectPlan(String username, Long projectId);
PortalDashboardVO.ProjectPlan getProjectPlan(String username, String personName, Long projectId);
}

View File

@@ -69,7 +69,8 @@ public class PortalDashboardServiceImpl implements PortalDashboardService {
}
@Override
public PortalDashboardVO.ProjectPlan getProjectPlan(String username, Long projectId) {
public PortalDashboardVO.ProjectPlan getProjectPlan(String username, String personName, Long projectId) {
List<String> currentUserIdentifiers = currentUserIdentifiers(username, personName);
Project project = projectMapper.selectById(projectId);
if (project == null) {
throw new IllegalArgumentException("项目不存在");
@@ -80,7 +81,7 @@ public class PortalDashboardServiceImpl implements PortalDashboardService {
plan.setProjectLeader(project.getProjectLeader());
plan.setDevelopMembers(parseMembers(project.getDevelopMembers()));
plan.setMasters(buildPlanMasters(projectId));
boolean isLeader = username != null && username.equals(project.getProjectLeader());
boolean isLeader = containsUser(project.getProjectLeader(), currentUserIdentifiers);
plan.setProjectLeaderCurrentUser(isLeader);
List<ProjectPlanDetail> details = projectPlanDetailMapper.selectList(new LambdaQueryWrapper<ProjectPlanDetail>()
@@ -89,7 +90,7 @@ public class PortalDashboardServiceImpl implements PortalDashboardService {
var masterNames = projectPlanMasterMapper.selectList(new LambdaQueryWrapper<ProjectPlanMaster>()
.eq(ProjectPlanMaster::getProjectId, projectId)).stream()
.collect(java.util.stream.Collectors.toMap(ProjectPlanMaster::getId, ProjectPlanMaster::getMasterName, (left, right) -> left));
plan.setTasks(details.stream().filter(detail -> containsMember(detail.getTaskMembers(), username)).map(detail -> {
plan.setTasks(details.stream().filter(detail -> containsMember(detail.getTaskMembers(), currentUserIdentifiers)).map(detail -> {
PortalDashboardVO.Task task = new PortalDashboardVO.Task();
task.setDetailId(detail.getId());
task.setMasterName(masterNames.getOrDefault(detail.getMasterId(), "-"));
@@ -221,21 +222,22 @@ public class PortalDashboardServiceImpl implements PortalDashboardService {
item.setTotalDevDays(master.getTotalDevDays());
item.setDevStartDate(master.getDevStartDate() == null ? null : master.getDevStartDate().toString());
item.setDevEndDate(master.getDevEndDate() == null ? null : master.getDevEndDate().toString());
item.setDetails(detailsByMaster.getOrDefault(master.getId(), List.of()).stream().map(detail -> {
PortalDashboardVO.PlanDetail task = new PortalDashboardVO.PlanDetail();
task.setId(detail.getId());
task.setDetailName(detail.getDetailName());
task.setDetailDescription(detail.getDetailDescription());
task.setTaskMembers(parseMembers(detail.getTaskMembers()));
task.setStatus(detail.getStatus());
task.setStatusLabel(taskStatus(detail.getStatus()));
task.setPriority(detail.getPriority());
task.setPriorityLabel(priorityLabel(detail.getPriority()));
task.setProgress(detail.getProgress());
task.setDevStartDate(detail.getDevStartDate() == null ? null : detail.getDevStartDate().toString());
task.setDevEndDate(detail.getDevEndDate() == null ? null : detail.getDevEndDate().toString());
return task;
}).toList());
item.setDetails(detailsByMaster.getOrDefault(master.getId(), List.of()).stream()
.map(detail -> {
PortalDashboardVO.PlanDetail task = new PortalDashboardVO.PlanDetail();
task.setId(detail.getId());
task.setDetailName(detail.getDetailName());
task.setDetailDescription(detail.getDetailDescription());
task.setTaskMembers(parseMembers(detail.getTaskMembers()));
task.setStatus(detail.getStatus());
task.setStatusLabel(taskStatus(detail.getStatus()));
task.setPriority(detail.getPriority());
task.setPriorityLabel(priorityLabel(detail.getPriority()));
task.setProgress(detail.getProgress());
task.setDevStartDate(detail.getDevStartDate() == null ? null : detail.getDevStartDate().toString());
task.setDevEndDate(detail.getDevEndDate() == null ? null : detail.getDevEndDate().toString());
return task;
}).toList());
return item;
}).toList();
}
@@ -303,8 +305,4 @@ public class PortalDashboardServiceImpl implements PortalDashboardService {
}
return parseMembers(members).stream().anyMatch(userIdentifiers::contains);
}
private boolean containsMember(String members, String username) {
return containsMember(members, currentUserIdentifiers(username, null));
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -5,13 +5,11 @@
<top-nav v-if="topNav" id="topmenu-container" class="topmenu-container" />
<div class="right-menu">
<div class="right-menu-item date-display" style="font-weight: bold; color: #409EFF;">
{{ new Date().toISOString().slice(0, 10) }}
</div>
<template v-if="device!=='mobile'">
<search id="header-search" class="right-menu-item" />
<!-- <el-tooltip content="项目文档" effect="dark" placement="bottom">
<Doc class="right-menu-item hover-effect" />
</el-tooltip>-->
<el-tooltip content="全屏" effect="dark" placement="bottom">
<screenfull id="screenfull" class="right-menu-item hover-effect" />
</el-tooltip>

File diff suppressed because one or more lines are too long