Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ public enum FileDomainType {
TASK_DRAFT_PRESENTATION,
TASK_AGREEMENT_FINAL_PROPOSAL,
TASK_AGREEMENT_FINAL_SUBMISSION,
TASK_PERIOD,
TASK_PERIOD_FILES,
TASK_PERIOD_INTERIM_REPORT,
TASK_PERIOD_ANNUAL_REPORT,
TEMP
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,13 @@ public record TaskPeriodUpdateRequest(
@Schema(description = "과제 참여자 ID 목록")
List<Long> memberIds,

@Schema(description = "연차별 첨부파일 ID 목록")
List<UUID> fileIds
@Schema(description = "연차별 관련 파일 ID 목록")
List<UUID> periodFileIds,

@Schema(description = "중간보고 파일 ID 목록")
List<UUID> interimReportFileIds,

@Schema(description = "연차보고 파일 ID 목록")
List<UUID> annualReportFileIds
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,14 @@ public record TaskPeriodResponse(
@Schema(description = "과제 참여자 목록")
List<TaskMemberSummary> members,

@Schema(description = "연차별 첨부파일 목록")
List<FileSummary> files
@Schema(description = "연차별 관련 파일 목록")
List<FileSummary> periodFiles,

@Schema(description = "중간보고 파일 목록")
List<FileSummary> interimReportFiles,

@Schema(description = "연차보고 파일 목록")
List<FileSummary> annualReportFiles
) {
public static TaskPeriodResponse from(TaskPeriod period) {
List<TaskMemberSummary> members = period.getMembers().stream()
Expand All @@ -46,11 +52,18 @@ public static TaskPeriodResponse from(TaskPeriod period) {
period.getManager() != null ? period.getManager().getId() : null,
period.getManager() != null ? period.getManager().getName() : null,
members,
List.of(),
List.of(),
List.of()
);
}

public static TaskPeriodResponse from(TaskPeriod period, List<FileSummary> files) {
public static TaskPeriodResponse from(
TaskPeriod period,
List<FileSummary> periodFiles,
List<FileSummary> interimReportFiles,
List<FileSummary> annualReportFiles
) {
List<TaskMemberSummary> members = period.getMembers().stream()
.map(user -> new TaskMemberSummary(user.getId(), user.getName(), user.getEmail()))
.collect(Collectors.toList());
Expand All @@ -63,7 +76,9 @@ public static TaskPeriodResponse from(TaskPeriod period, List<FileSummary> files
period.getManager() != null ? period.getManager().getId() : null,
period.getManager() != null ? period.getManager().getName() : null,
members,
files
periodFiles,
interimReportFiles,
annualReportFiles
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -280,13 +280,8 @@ public void updateBasicInfo(Long userId, Long taskId, TaskBasicInfoUpdateRequest

taskBasicInfoRepository.save(basicInfo);

if (request.rfpFileIds() != null) {
fileService.syncFiles(request.rfpFileIds(), FileDomainType.TASK_RFP, taskId);
}

if (request.announcementFileIds() != null) {
fileService.syncFiles(request.announcementFileIds(), FileDomainType.TASK_ANNOUNCEMENT, taskId);
}
syncFiles(taskId, request.rfpFileIds(), FileDomainType.TASK_RFP);
syncFiles(taskId, request.announcementFileIds(), FileDomainType.TASK_ANNOUNCEMENT);
}

@Transactional
Expand Down Expand Up @@ -315,25 +310,11 @@ public void updateProposal(Long userId, Long taskId, TaskProposalUpdateRequest r

taskProposalRepository.save(proposal);

if (request.finalProposalFileIds() != null) {
fileService.syncFiles(request.finalProposalFileIds(), FileDomainType.TASK_FINAL_PROPOSAL, taskId);
}

if (request.finalSubmissionFileIds() != null) {
fileService.syncFiles(request.finalSubmissionFileIds(), FileDomainType.TASK_FINAL_SUBMISSION, taskId);
}

if (request.relatedFileIds() != null) {
fileService.syncFiles(request.relatedFileIds(), FileDomainType.TASK_PROPOSAL_RELATED, taskId);
}

if (request.meetingNotesFileIds() != null) {
fileService.syncFiles(request.meetingNotesFileIds(), FileDomainType.TASK_PROPOSAL_MEETING_NOTES, taskId);
}

if (request.structureDiagramFileIds() != null) {
fileService.syncFiles(request.structureDiagramFileIds(), FileDomainType.TASK_STRUCTURE_DIAGRAM, taskId);
}
syncFiles(taskId, request.finalProposalFileIds(), FileDomainType.TASK_FINAL_PROPOSAL);
syncFiles(taskId, request.finalSubmissionFileIds(), FileDomainType.TASK_FINAL_SUBMISSION);
syncFiles(taskId, request.relatedFileIds(), FileDomainType.TASK_PROPOSAL_RELATED);
syncFiles(taskId, request.meetingNotesFileIds(), FileDomainType.TASK_PROPOSAL_MEETING_NOTES);
syncFiles(taskId, request.structureDiagramFileIds(), FileDomainType.TASK_STRUCTURE_DIAGRAM);

taskProposalWriterRepository.deleteByTaskProposal(proposal);

Expand Down Expand Up @@ -463,13 +444,8 @@ public void updatePresentation(Long userId, Long taskId, TaskPresentationUpdateR

taskPresentationRepository.save(presentation);

if (request.finalPresentationFileIds() != null) {
fileService.syncFiles(request.finalPresentationFileIds(), FileDomainType.TASK_FINAL_PRESENTATION, taskId);
}

if (request.draftPresentationFileIds() != null) {
fileService.syncFiles(request.draftPresentationFileIds(), FileDomainType.TASK_DRAFT_PRESENTATION, taskId);
}
syncFiles(taskId, request.finalPresentationFileIds(), FileDomainType.TASK_FINAL_PRESENTATION);
syncFiles(taskId, request.draftPresentationFileIds(), FileDomainType.TASK_DRAFT_PRESENTATION);

taskPresentationMakerRepository.deleteByTaskPresentation(presentation);

Expand Down Expand Up @@ -525,13 +501,8 @@ public void updateAgreement(Long userId, Long taskId, TaskAgreementUpdateRequest

taskAgreementRepository.save(agreement);

if (request.agreementFinalProposalFileIds() != null) {
fileService.syncFiles(request.agreementFinalProposalFileIds(), FileDomainType.TASK_AGREEMENT_FINAL_PROPOSAL, taskId);
}

if (request.agreementFinalSubmissionFileIds() != null) {
fileService.syncFiles(request.agreementFinalSubmissionFileIds(), FileDomainType.TASK_AGREEMENT_FINAL_SUBMISSION, taskId);
}
syncFiles(taskId, request.agreementFinalProposalFileIds(), FileDomainType.TASK_AGREEMENT_FINAL_PROPOSAL);
syncFiles(taskId, request.agreementFinalSubmissionFileIds(), FileDomainType.TASK_AGREEMENT_FINAL_SUBMISSION);
}

public TaskPeriodResponse getTaskPeriod(Long userId, Long taskId, Long periodId) {
Expand All @@ -541,12 +512,22 @@ public TaskPeriodResponse getTaskPeriod(Long userId, Long taskId, Long periodId)
TaskPeriod period = taskPeriodRepository.findById(periodId)
.orElseThrow(() -> new ApiException(TaskErrorCode.TASK_NOT_FOUND));

List<FileSummary> files = fileService.findAllByDomainTypeAndEntityId(FileDomainType.TASK_PERIOD, periodId)
List<FileSummary> periodFiles = fileService.findAllByDomainTypeAndEntityId(FileDomainType.TASK_PERIOD_FILES, periodId)
.stream()
.map(FileSummary::from)
.collect(Collectors.toList());

List<FileSummary> interimReportFiles = fileService.findAllByDomainTypeAndEntityId(FileDomainType.TASK_PERIOD_INTERIM_REPORT, periodId)
.stream()
.map(FileSummary::from)
.collect(Collectors.toList());

return TaskPeriodResponse.from(period, files);
List<FileSummary> annualReportFiles = fileService.findAllByDomainTypeAndEntityId(FileDomainType.TASK_PERIOD_ANNUAL_REPORT, periodId)
.stream()
.map(FileSummary::from)
.collect(Collectors.toList());

return TaskPeriodResponse.from(period, periodFiles, interimReportFiles, annualReportFiles);
}

@Transactional
Expand All @@ -571,9 +552,9 @@ public void updateTaskPeriod(Long userId, Long taskId, Long periodId, TaskPeriod

taskPeriodRepository.save(period);

if (request.fileIds() != null) {
fileService.syncFiles(request.fileIds(), FileDomainType.TASK_PERIOD, periodId);
}
syncFiles(periodId, request.periodFileIds(), FileDomainType.TASK_PERIOD_FILES);
syncFiles(periodId, request.interimReportFileIds(), FileDomainType.TASK_PERIOD_INTERIM_REPORT);
syncFiles(periodId, request.annualReportFileIds(), FileDomainType.TASK_PERIOD_ANNUAL_REPORT);
}

@Transactional
Expand Down Expand Up @@ -727,4 +708,10 @@ private Task getTaskById(Long taskId) {

return taskRepository.findById(taskId).orElseThrow(() -> new ApiException(TaskErrorCode.TASK_NOT_FOUND));
}

private void syncFiles(Long entityId, List<java.util.UUID> fileIds, FileDomainType domainType) {
if (fileIds != null && !fileIds.isEmpty()) {
fileService.syncFiles(fileIds, domainType, entityId);
}
}
}
Loading