fix(工作报告、我的绩效、加班申请、日志管理): 优化报表导出逻辑并补充日志用户昵称,团队模式查询现正确包含当前用户数据。

This commit is contained in:
dk
2026-07-01 17:06:44 +08:00
parent 79f48bd283
commit 77b660cc34
12 changed files with 151 additions and 47 deletions

View File

@@ -42,12 +42,13 @@ import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Collection;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -229,8 +230,22 @@ public class OvertimeApplicationServiceImpl implements OvertimeApplicationServic
@Override
public List<OvertimeApplicationExportVO> getExportList(OvertimeApplicationPageReqVO reqVO) {
reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
PageResult<OvertimeApplicationRespVO> page = getMyPage(reqVO);
return BeanUtils.toBean(page.getList(), OvertimeApplicationExportVO.class);
PageResult<OvertimeApplicationDO> page;
if (reqVO.getApplicantIds() != null) {
List<Long> applicantIds = teamDashboardAccessService.resolveRequestedSubordinateUserIds(
reqVO.getApplicantIds(), OvertimeApplicationConstants.PERMISSION_TEAM_DASHBOARD);
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
if (loginUserId != null) {
LinkedHashSet<Long> mergedIds = new LinkedHashSet<>(applicantIds);
mergedIds.add(loginUserId);
applicantIds = new ArrayList<>(mergedIds);
}
page = overtimeApplicationMapper.selectMyPage(applicantIds, reqVO, TEAM_VISIBLE_STATUS_CODES);
} else {
page = overtimeApplicationMapper.selectMyPage(SecurityFrameworkUtils.getLoginUserId(), reqVO);
}
return BeanUtils.toBean(BeanUtils.toBean(page, OvertimeApplicationRespVO.class, this::applyStatusView).getList(),
OvertimeApplicationExportVO.class);
}
private void processApprovalAction(Long id, String actionCode, OvertimeApplicationStatusActionReqVO reqVO) {

View File

@@ -265,6 +265,12 @@ public class PerformanceSheetServiceImpl implements PerformanceSheetService {
if (reqVO.getEmployeeIds() != null) {
employeeIds = teamDashboardAccessService.resolveRequestedSubordinateUserIds(
reqVO.getEmployeeIds(), PerformanceConstants.PERMISSION_TEAM_DASHBOARD);
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
if (loginUserId != null) {
LinkedHashSet<Long> mergedIds = new LinkedHashSet<>(employeeIds);
mergedIds.add(loginUserId);
employeeIds = new ArrayList<>(mergedIds);
}
} else {
employeeIds = List.of(Objects.requireNonNull(SecurityFrameworkUtils.getLoginUserId()));
}

View File

@@ -181,19 +181,6 @@ public class WorkReportCommonService {
return createWeeklyReportInternal(reqVO, overrideReporterId);
}
public WeeklyReportRespVO mergeWeeklyDraft(WeeklyReportRespVO latestDraft, WeeklyReportRefreshDraftReqVO reqVO) {
WeeklyReportRespVO respVO = latestDraft;
respVO.setIsBusinessTrip(Boolean.TRUE.equals(reqVO.getIsBusinessTrip()));
respVO.setTravelSegments(BeanUtils.toBean(defaultList(reqVO.getTravelSegments()), WeeklyReportTravelSegmentRespVO.class));
respVO.setReviewItems(mergeWeeklyReviewItems(reqVO.getReviewItems(), latestDraft.getReviewItems()));
respVO.setPlanItems(mergePlanItems(reqVO.getPlanItems(), latestDraft.getPlanItems()));
respVO.setTotalTravelDays(Boolean.TRUE.equals(reqVO.getIsBusinessTrip())
? defaultIfNull(sumTravelDays(reqVO.getTravelSegments()))
: BigDecimal.ZERO);
respVO.setTotalWorkHours(sumReviewWorkHoursResp(respVO.getReviewItems()));
return respVO;
}
private Long createWeeklyReportInternal(WeeklyReportSaveReqVO reqVO, Long overrideReporterId) {
validatePeriod(reqVO.getPeriodStartDate(), reqVO.getPeriodEndDate());
CurrentUserProfile profile = resolveProfile(overrideReporterId, true);
@@ -239,11 +226,23 @@ public class WorkReportCommonService {
}
public PageResult<WeeklyReportRespVO> getWeeklyReportPage(WeeklyReportPageReqVO reqVO) {
return getWeeklyReportPage(reqVO, false);
}
public PageResult<WeeklyReportRespVO> getWeeklyReportExportPage(WeeklyReportPageReqVO reqVO) {
return getWeeklyReportPage(reqVO, true);
}
private PageResult<WeeklyReportRespVO> getWeeklyReportPage(WeeklyReportPageReqVO reqVO,
boolean includeSelfInTeamMode) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
PageResult<WeeklyReportDO> pageResult;
if (reqVO.getReporterIds() != null) {
List<Long> reporterIds = teamDashboardAccessService.resolveRequestedSubordinateUserIds(
reqVO.getReporterIds(), WorkReportConstants.PERMISSION_TEAM_DASHBOARD);
if (includeSelfInTeamMode) {
reporterIds = appendLoginUser(reporterIds);
}
pageResult = weeklyReportMapper.selectReporterPage(reporterIds, reqVO, TEAM_VISIBLE_STATUS_CODES);
} else {
pageResult = weeklyReportMapper.selectReporterPage(loginUserId, reqVO, getEnabledStatusCodes());
@@ -351,14 +350,6 @@ public class WorkReportCommonService {
return createMonthlyReportInternal(reqVO, overrideReporterId);
}
public MonthlyReportRespVO mergeMonthlyDraft(MonthlyReportRespVO latestDraft, MonthlyReportRefreshDraftReqVO reqVO) {
MonthlyReportRespVO respVO = latestDraft;
respVO.setReviewItems(mergeReviewItems(reqVO.getReviewItems(), latestDraft.getReviewItems()));
respVO.setPlanItems(mergePlanItems(reqVO.getPlanItems(), latestDraft.getPlanItems()));
respVO.setTotalWorkHours(sumReviewWorkHoursResp(respVO.getReviewItems()));
return respVO;
}
private Long createMonthlyReportInternal(MonthlyReportSaveReqVO reqVO, Long overrideReporterId) {
validatePeriod(reqVO.getPeriodStartDate(), reqVO.getPeriodEndDate());
CurrentUserProfile profile = resolveProfile(overrideReporterId, true);
@@ -404,11 +395,23 @@ public class WorkReportCommonService {
}
public PageResult<MonthlyReportRespVO> getMonthlyReportPage(MonthlyReportPageReqVO reqVO) {
return getMonthlyReportPage(reqVO, false);
}
public PageResult<MonthlyReportRespVO> getMonthlyReportExportPage(MonthlyReportPageReqVO reqVO) {
return getMonthlyReportPage(reqVO, true);
}
private PageResult<MonthlyReportRespVO> getMonthlyReportPage(MonthlyReportPageReqVO reqVO,
boolean includeSelfInTeamMode) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
PageResult<MonthlyReportDO> pageResult;
if (reqVO.getReporterIds() != null) {
List<Long> reporterIds = teamDashboardAccessService.resolveRequestedSubordinateUserIds(
reqVO.getReporterIds(), WorkReportConstants.PERMISSION_TEAM_DASHBOARD);
if (includeSelfInTeamMode) {
reporterIds = appendLoginUser(reporterIds);
}
pageResult = monthlyReportMapper.selectReporterPage(reporterIds, reqVO, TEAM_VISIBLE_STATUS_CODES);
} else {
pageResult = monthlyReportMapper.selectReporterPage(loginUserId, reqVO, getEnabledStatusCodes());
@@ -588,11 +591,23 @@ public class WorkReportCommonService {
}
public PageResult<ProjectReportRespVO> getProjectReportPage(ProjectReportPageReqVO reqVO) {
return getProjectReportPage(reqVO, false);
}
public PageResult<ProjectReportRespVO> getProjectReportExportPage(ProjectReportPageReqVO reqVO) {
return getProjectReportPage(reqVO, true);
}
private PageResult<ProjectReportRespVO> getProjectReportPage(ProjectReportPageReqVO reqVO,
boolean includeSelfInTeamMode) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
PageResult<ProjectReportDO> pageResult;
if (reqVO.getProjectOwnerIds() != null) {
List<Long> projectOwnerIds = teamDashboardAccessService.resolveRequestedSubordinateUserIds(
reqVO.getProjectOwnerIds(), WorkReportConstants.PERMISSION_TEAM_DASHBOARD);
if (includeSelfInTeamMode) {
projectOwnerIds = appendLoginUser(projectOwnerIds);
}
pageResult = projectReportMapper.selectReporterPage(projectOwnerIds, reqVO, TEAM_VISIBLE_STATUS_CODES);
} else {
pageResult = projectReportMapper.selectReporterPage(loginUserId, reqVO, getEnabledStatusCodes());
@@ -854,6 +869,16 @@ public class WorkReportCommonService {
.collect(Collectors.toList());
}
private List<Long> appendLoginUser(List<Long> userIds) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
if (loginUserId == null) {
return userIds;
}
LinkedHashSet<Long> merged = new LinkedHashSet<>(userIds);
merged.add(loginUserId);
return new ArrayList<>(merged);
}
private ObjectStatusModelDO getInitialStatusModel() {
ObjectStatusModelDO statusModel = objectStatusModelMapper
.selectInitialByObjectTypeEnabled(WorkReportConstants.STATUS_OBJECT_TYPE);

View File

@@ -91,7 +91,7 @@ public class WorkReportContentExportService {
if (Boolean.TRUE.equals(reqVO.getExportAll())) {
reqVO.setPageNo(1);
reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
return workReportCommonService.getWeeklyReportPage(reqVO).getList().stream()
return workReportCommonService.getWeeklyReportExportPage(reqVO).getList().stream()
.map(item -> workReportCommonService.getWeeklyReport(item.getId()))
.toList();
}
@@ -104,7 +104,7 @@ public class WorkReportContentExportService {
if (Boolean.TRUE.equals(reqVO.getExportAll())) {
reqVO.setPageNo(1);
reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
return workReportCommonService.getMonthlyReportPage(reqVO).getList().stream()
return workReportCommonService.getMonthlyReportExportPage(reqVO).getList().stream()
.map(item -> workReportCommonService.getMonthlyReport(item.getId()))
.toList();
}
@@ -117,7 +117,7 @@ public class WorkReportContentExportService {
if (Boolean.TRUE.equals(reqVO.getExportAll())) {
reqVO.setPageNo(1);
reqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
return workReportCommonService.getProjectReportPage(reqVO).getList().stream()
return workReportCommonService.getProjectReportExportPage(reqVO).getList().stream()
.map(item -> workReportCommonService.getProjectReport(item.getId()))
.toList();
}

View File

@@ -43,8 +43,7 @@ public class MonthlyReportServiceImpl implements MonthlyReportService {
draftReqVO.setPeriodLabel(reqVO.getPeriodLabel());
draftReqVO.setPeriodStartDate(reqVO.getPeriodStartDate());
draftReqVO.setPeriodEndDate(reqVO.getPeriodEndDate());
MonthlyReportRespVO latestDraft = workReportDefaultDraftService.previewMonthlyDefaultDraft(draftReqVO);
return workReportCommonService.mergeMonthlyDraft(latestDraft, reqVO);
return workReportDefaultDraftService.previewMonthlyDefaultDraft(draftReqVO);
}
@Override

View File

@@ -42,8 +42,7 @@ public class WeeklyReportServiceImpl implements WeeklyReportService {
draftReqVO.setPeriodLabel(reqVO.getPeriodLabel());
draftReqVO.setPeriodStartDate(reqVO.getPeriodStartDate());
draftReqVO.setPeriodEndDate(reqVO.getPeriodEndDate());
WeeklyReportRespVO latestDraft = workReportDefaultDraftService.previewWeeklyDefaultDraft(draftReqVO);
return workReportCommonService.mergeWeeklyDraft(latestDraft, reqVO);
return workReportDefaultDraftService.previewWeeklyDefaultDraft(draftReqVO);
}
@Override