fix(工作报告、我的绩效、加班申请、日志管理): 优化报表导出逻辑并补充日志用户昵称,团队模式查询现正确包含当前用户数据。
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user