diff --git a/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskAgreementUpdateRequest.java b/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskAgreementUpdateRequest.java index aec5fad8..065d5af2 100644 --- a/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskAgreementUpdateRequest.java +++ b/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskAgreementUpdateRequest.java @@ -4,10 +4,18 @@ import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; +import java.util.List; +import java.util.UUID; public record TaskAgreementUpdateRequest( @Schema(description = "협약 체결일", example = "2025-10-01") @DateTimeFormat(pattern = "yyyy-MM-dd") - LocalDate agreementDate + LocalDate agreementDate, + + @Schema(description = "협약 최종 제안서 파일 ID 목록") + List agreementFinalProposalFileIds, + + @Schema(description = "협약 최종 제출본 파일 ID 목록") + List agreementFinalSubmissionFileIds ) { } diff --git a/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskPresentationUpdateRequest.java b/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskPresentationUpdateRequest.java index 485d3fc1..c6b177b5 100644 --- a/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskPresentationUpdateRequest.java +++ b/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskPresentationUpdateRequest.java @@ -5,6 +5,7 @@ import java.time.LocalDateTime; import java.util.List; +import java.util.UUID; public record TaskPresentationUpdateRequest( @Schema(description = "발표자료 제출 마감일", example = "2025-10-15T18:00:00") @@ -28,6 +29,12 @@ public record TaskPresentationUpdateRequest( String attendees, @Schema(description = "발표평가장 위치", example = "서울대병원 본관 3층 대회의실") - String presentationLocation + String presentationLocation, + + @Schema(description = "최종 발표자료 파일 ID 목록") + List finalPresentationFileIds, + + @Schema(description = "발표자료 초안 파일 ID 목록") + List draftPresentationFileIds ) { } diff --git a/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskProposalUpdateRequest.java b/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskProposalUpdateRequest.java index dfce6ee7..556fc051 100644 --- a/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskProposalUpdateRequest.java +++ b/src/main/java/com/bmilab/backend/domain/task/dto/request/TaskProposalUpdateRequest.java @@ -5,6 +5,7 @@ import java.time.LocalDateTime; import java.util.List; +import java.util.UUID; public record TaskProposalUpdateRequest( @@ -37,7 +38,22 @@ public record TaskProposalUpdateRequest( String internalContactEmail, @Schema(description = "원내 담당자 전화번호", example = "010-9876-5432") - String internalContactPhone + String internalContactPhone, + + @Schema(description = "최종 제안서 파일 ID 목록") + List finalProposalFileIds, + + @Schema(description = "최종 제출본 파일 ID 목록") + List finalSubmissionFileIds, + + @Schema(description = "관련자료 파일 ID 목록") + List relatedFileIds, + + @Schema(description = "회의록 파일 ID 목록") + List meetingNotesFileIds, + + @Schema(description = "참여 기관 구조도 파일 ID 목록") + List structureDiagramFileIds ) { } \ No newline at end of file diff --git a/src/main/java/com/bmilab/backend/domain/task/service/TaskService.java b/src/main/java/com/bmilab/backend/domain/task/service/TaskService.java index 59774483..d7c1b85b 100644 --- a/src/main/java/com/bmilab/backend/domain/task/service/TaskService.java +++ b/src/main/java/com/bmilab/backend/domain/task/service/TaskService.java @@ -315,6 +315,26 @@ 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); + } + taskProposalWriterRepository.deleteByTaskProposal(proposal); if (request.proposalWriterIds() != null) { @@ -443,6 +463,14 @@ 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); + } + taskPresentationMakerRepository.deleteByTaskPresentation(presentation); if (request.presentationMakerIds() != null) { @@ -496,6 +524,14 @@ public void updateAgreement(Long userId, Long taskId, TaskAgreementUpdateRequest agreement.update(request.agreementDate()); 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); + } } public TaskPeriodResponse getTaskPeriod(Long userId, Long taskId, Long periodId) {