From e41972afe0ae8170d2e618049556ca233e3ed994 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Mon, 27 Jan 2025 10:58:47 +0900 Subject: [PATCH 1/3] =?UTF-8?q?CLAP-120=20Feat:=20=EC=A0=84=EC=B2=B4=20?= =?UTF-8?q?=EC=9E=91=EC=97=85=20=EB=AA=A9=EB=A1=9D=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/dto/task/FilterAllTasksResponse.java | 19 +++++++++++++++++++ ...java => FilterRequestedTasksResponse.java} | 2 +- .../inbound/web/task/FindTaskController.java | 14 +++++++++++++- .../TaskHistoryPersistenceAdapter.java | 18 ++++++++++++++++++ .../persistense/TaskPersistenceAdapter.java | 15 +++++++++++---- .../entity/task/TaskModificationInfo.java | 6 +++++- .../mapper/TaskHistoryPersistenceMapper.java | 13 +++++++++++++ .../repository/task/TaskCustomRepository.java | 1 + .../task/TaskCustomRepositoryImpl.java | 12 ++++++++++++ .../application/Task/FindTaskListService.java | 11 +++++++++-- .../server/application/mapper/TaskMapper.java | 19 +++++++++++++++++-- .../inbound/task/FindTaskListUsecase.java | 7 +++++-- .../outbound/task/LoadTaskHistoryPort.java | 6 ++++++ .../port/outbound/task/LoadTaskPort.java | 7 ++++++- .../server/domain/model/task/TaskHistory.java | 16 ++++++++++------ 15 files changed, 146 insertions(+), 20 deletions(-) create mode 100644 src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAllTasksResponse.java rename src/main/java/clap/server/adapter/inbound/web/dto/task/{FilterTaskListResponse.java => FilterRequestedTasksResponse.java} (90%) create mode 100644 src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java create mode 100644 src/main/java/clap/server/adapter/outbound/persistense/mapper/TaskHistoryPersistenceMapper.java create mode 100644 src/main/java/clap/server/application/port/outbound/task/LoadTaskHistoryPort.java diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAllTasksResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAllTasksResponse.java new file mode 100644 index 00000000..71e6210b --- /dev/null +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterAllTasksResponse.java @@ -0,0 +1,19 @@ +package clap.server.adapter.inbound.web.dto.task; + +import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus; + +import java.time.LocalDateTime; + +public record FilterAllTasksResponse( + Long taskId, + String taskCode, + LocalDateTime requestedAt, + String mainCategoryName, + String categoryName, + String title, + String processorName, + String requesterName, + TaskStatus taskStatus, + LocalDateTime finishedAt +) { +} diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterTaskListResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterRequestedTasksResponse.java similarity index 90% rename from src/main/java/clap/server/adapter/inbound/web/dto/task/FilterTaskListResponse.java rename to src/main/java/clap/server/adapter/inbound/web/dto/task/FilterRequestedTasksResponse.java index 649cb249..e7bf680b 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterTaskListResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/task/FilterRequestedTasksResponse.java @@ -4,7 +4,7 @@ import java.time.LocalDateTime; -public record FilterTaskListResponse( +public record FilterRequestedTasksResponse( Long taskId, String taskCode, LocalDateTime requestedAt, diff --git a/src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java index 64a715e8..39c6d5ae 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java @@ -29,7 +29,7 @@ public class FindTaskController { @Operation(summary = "사용자 요청 작업 목록 조회") @Secured({"ROLE_USER", "ROLE_MANAGER"}) @GetMapping("/requests") - public ResponseEntity> findTasksRequestedByUser( + public ResponseEntity> findTasksRequestedByUser( @RequestParam(defaultValue = "0") int page, @RequestParam(defaultValue = "20") int pageSize, @ModelAttribute FilterTaskListRequest filterTaskListRequest, @@ -58,4 +58,16 @@ public ResponseEntity> findPendingApprovalTa Pageable pageable = PageRequest.of(page, pageSize); return ResponseEntity.ok(taskListUsecase.findPendingApprovalTasks(userInfo.getUserId(), pageable, filterTaskListRequest)); } + + @Operation(summary = "전체 작업 목록 조회") + @Secured("ROLE_MANAGER") + @GetMapping + public ResponseEntity> findAllTasks( + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "20") int pageSize, + @ModelAttribute FilterTaskListRequest filterTaskListRequest, + @AuthenticationPrincipal SecurityUserDetails userInfo){ + Pageable pageable = PageRequest.of(page, pageSize); + return ResponseEntity.ok(taskListUsecase.findAllTasks(userInfo.getUserId(), pageable, filterTaskListRequest)); + } } \ No newline at end of file diff --git a/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java new file mode 100644 index 00000000..6da99e0d --- /dev/null +++ b/src/main/java/clap/server/adapter/outbound/persistense/TaskHistoryPersistenceAdapter.java @@ -0,0 +1,18 @@ +package clap.server.adapter.outbound.persistense; + + +import clap.server.application.port.outbound.task.LoadTaskHistoryPort; +import clap.server.common.annotation.architecture.PersistenceAdapter; + +import lombok.RequiredArgsConstructor; + + + + + + +@PersistenceAdapter +@RequiredArgsConstructor +public class TaskHistoryPersistenceAdapter implements LoadTaskHistoryPort { + +} diff --git a/src/main/java/clap/server/adapter/outbound/persistense/TaskPersistenceAdapter.java b/src/main/java/clap/server/adapter/outbound/persistense/TaskPersistenceAdapter.java index 24441b1d..c0ea7eea 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/TaskPersistenceAdapter.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/TaskPersistenceAdapter.java @@ -1,8 +1,9 @@ package clap.server.adapter.outbound.persistense; -import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse; +import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse; import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest; -import clap.server.adapter.inbound.web.dto.task.FilterTaskListResponse; +import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse; +import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse; import clap.server.adapter.outbound.persistense.entity.task.TaskEntity; import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus; import clap.server.adapter.outbound.persistense.mapper.TaskPersistenceMapper; @@ -43,10 +44,10 @@ public Optional findById(Long id) { } @Override - public Page findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) { + public Page findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) { Page taskList = taskRepository.findTasksRequestedByUser(requesterId, pageable, filterTaskListRequest) .map(taskPersistenceMapper::toDomain); - return taskList.map(TaskMapper::toFilterTaskListResponse); + return taskList.map(TaskMapper::toFilterRequestedTasksResponse); } @Override @@ -68,4 +69,10 @@ public List findYesterdayTaskByDate(LocalDateTime now) { .stream().map(taskPersistenceMapper::toDomain).toList(); } + @Override + public Page findAllTasks (Pageable pageable, FilterTaskListRequest filterTaskListRequest) { + Page taskList = taskRepository.findAllTasks(pageable, filterTaskListRequest) + .map(taskPersistenceMapper::toDomain); + return taskList.map(TaskMapper::toFilterAllTasksResponse); + } } diff --git a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java index 5ee1dcf1..d7256abb 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java @@ -2,12 +2,16 @@ import clap.server.adapter.outbound.persistense.entity.member.MemberEntity; import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @Getter @NoArgsConstructor @Embeddable +@AllArgsConstructor +@Builder public class TaskModificationInfo { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "task_id") @@ -18,7 +22,7 @@ public class TaskModificationInfo { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "modified_member_id") //처리자가 바뀌는 경우 - private MemberEntity member; + private MemberEntity modifiedMember; @Column(name = "new_value") private String newValue; //상태가 바뀌는 경우 diff --git a/src/main/java/clap/server/adapter/outbound/persistense/mapper/TaskHistoryPersistenceMapper.java b/src/main/java/clap/server/adapter/outbound/persistense/mapper/TaskHistoryPersistenceMapper.java new file mode 100644 index 00000000..db46c6ef --- /dev/null +++ b/src/main/java/clap/server/adapter/outbound/persistense/mapper/TaskHistoryPersistenceMapper.java @@ -0,0 +1,13 @@ +package clap.server.adapter.outbound.persistense.mapper; + +import clap.server.adapter.outbound.persistense.entity.task.TaskHistoryEntity; +import clap.server.adapter.outbound.persistense.entity.task.TaskModificationInfo; +import clap.server.adapter.outbound.persistense.mapper.common.PersistenceMapper; +import clap.server.domain.model.task.TaskHistory; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; + +@Mapper(componentModel = "spring", uses = {CommentPersistenceMapper.class, TaskPersistenceMapper.class, MemberPersistenceMapper.class}) +public interface TaskHistoryPersistenceMapper extends PersistenceMapper { +} diff --git a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepository.java b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepository.java index e0385877..d7f5902d 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepository.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepository.java @@ -9,4 +9,5 @@ public interface TaskCustomRepository { Page findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest); Page findPendingApprovalTasks(Pageable pageable, FilterTaskListRequest findTaskListRequest); + Page findAllTasks(Pageable pageable, FilterTaskListRequest findTaskListRequest); } diff --git a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java index 12b632f3..c1eb1e9e 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java @@ -46,6 +46,18 @@ public Page findPendingApprovalTasks(Pageable pageable, FilterTaskLi return getTasksPage(pageable, whereClause, filterTaskListRequest.orderRequest().sortBy(), filterTaskListRequest.orderRequest().sortDirection()); } + @Override + public Page findAllTasks(Pageable pageable, FilterTaskListRequest filterTaskListRequest) { + BooleanBuilder whereClause = createFilter(filterTaskListRequest); + if (!filterTaskListRequest.nickName().isEmpty()) { + whereClause.and( + taskEntity.requester.nickname.eq(filterTaskListRequest.nickName()) + .or(taskEntity.processor.nickname.eq(filterTaskListRequest.nickName())) + ); + } + return getTasksPage(pageable, whereClause, filterTaskListRequest.orderRequest().sortBy(), filterTaskListRequest.orderRequest().sortDirection()); + } + private BooleanBuilder createFilter(FilterTaskListRequest request) { BooleanBuilder whereClause = new BooleanBuilder(); if (request.term() != null) { diff --git a/src/main/java/clap/server/application/Task/FindTaskListService.java b/src/main/java/clap/server/application/Task/FindTaskListService.java index 57570230..78420693 100644 --- a/src/main/java/clap/server/application/Task/FindTaskListService.java +++ b/src/main/java/clap/server/application/Task/FindTaskListService.java @@ -1,7 +1,8 @@ package clap.server.application.Task; +import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse; import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest; -import clap.server.adapter.inbound.web.dto.task.FilterTaskListResponse; +import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse; import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse; import clap.server.application.port.inbound.domain.MemberService; @@ -29,7 +30,7 @@ public class FindTaskListService implements FindTaskListUsecase { @Override - public Page findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest) { + public Page findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest) { Member requester = memberService.findActiveMember(requesterId); return loadTaskPort.findTasksRequestedByUser(requester.getMemberId(), pageable, findTaskListRequest); } @@ -39,4 +40,10 @@ public Page findPendingApprovalTasks(Long manager memberService.findActiveMember(managerId); return loadTaskPort.findPendingApprovalTasks(pageable, filterTaskListRequest); } + + @Override + public Page findAllTasks(Long managerId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) { + memberService.findActiveMember(managerId); + return loadTaskPort.findAllTasks(pageable, filterTaskListRequest); + } } diff --git a/src/main/java/clap/server/application/mapper/TaskMapper.java b/src/main/java/clap/server/application/mapper/TaskMapper.java index 77eb6df2..b2c93059 100644 --- a/src/main/java/clap/server/application/mapper/TaskMapper.java +++ b/src/main/java/clap/server/application/mapper/TaskMapper.java @@ -27,8 +27,8 @@ public static UpdateTaskResponse toUpdateTaskResponse(Task task) { return new UpdateTaskResponse(task.getTaskId(), task.getCategory().getCategoryId(), task.getTitle()); } - public static FilterTaskListResponse toFilterTaskListResponse(Task task) { - return new FilterTaskListResponse( + public static FilterRequestedTasksResponse toFilterRequestedTasksResponse(Task task) { + return new FilterRequestedTasksResponse( task.getTaskId(), task.getTaskCode(), task.getUpdatedAt(), @@ -94,6 +94,21 @@ public static ApprovalTaskResponse toApprovalTaskResponse(Task approvedTask) { ); } + public static FilterAllTasksResponse toFilterAllTasksResponse(Task task) { + return new FilterAllTasksResponse( + task.getTaskId(), + task.getTaskCode(), + task.getUpdatedAt(), + task.getCategory().getMainCategory().getName(), + task.getCategory().getName(), + task.getTitle(), + task.getRequester().getMemberInfo().getNickname(), + task.getProcessor().getMemberInfo().getNickname(), + task.getTaskStatus(), + task.getCompletedAt() != null ? task.getCompletedAt() : null + ); + } + public static TaskBoardResponse toSliceTaskItemResponse(Slice tasks) { Map> tasksByStatus =tasks.getContent().stream() .map(TaskMapper::toTaskItemResponse) diff --git a/src/main/java/clap/server/application/port/inbound/task/FindTaskListUsecase.java b/src/main/java/clap/server/application/port/inbound/task/FindTaskListUsecase.java index 7aed8dce..903c6563 100644 --- a/src/main/java/clap/server/application/port/inbound/task/FindTaskListUsecase.java +++ b/src/main/java/clap/server/application/port/inbound/task/FindTaskListUsecase.java @@ -1,13 +1,16 @@ package clap.server.application.port.inbound.task; +import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse; import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest; -import clap.server.adapter.inbound.web.dto.task.FilterTaskListResponse; +import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse; import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; public interface FindTaskListUsecase { - Page findTasksRequestedByUser(Long memberId, Pageable pageable, FilterTaskListRequest findTaskListRequest); + Page findTasksRequestedByUser(Long memberId, Pageable pageable, FilterTaskListRequest findTaskListRequest); Page findPendingApprovalTasks(Long userId, Pageable pageable, FilterTaskListRequest filterTaskListRequest); + + Page findAllTasks(Long userId, Pageable pageable, FilterTaskListRequest filterTaskListRequest); } diff --git a/src/main/java/clap/server/application/port/outbound/task/LoadTaskHistoryPort.java b/src/main/java/clap/server/application/port/outbound/task/LoadTaskHistoryPort.java new file mode 100644 index 00000000..b05033d7 --- /dev/null +++ b/src/main/java/clap/server/application/port/outbound/task/LoadTaskHistoryPort.java @@ -0,0 +1,6 @@ +package clap.server.application.port.outbound.task; + + + +public interface LoadTaskHistoryPort { +} diff --git a/src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java b/src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java index 721cb723..98b44ad8 100644 --- a/src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java +++ b/src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java @@ -1,9 +1,12 @@ package clap.server.application.port.outbound.task; import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse; +import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse; import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest; import clap.server.adapter.inbound.web.dto.task.FilterTaskListResponse; import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus; +import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse; +import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse; import clap.server.domain.model.task.Task; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -18,9 +21,11 @@ public interface LoadTaskPort { List findYesterdayTaskByDate(LocalDateTime now); - Page findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest); + Page findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest); Page findPendingApprovalTasks(Pageable pageable, FilterTaskListRequest filterTaskListRequest); + Page findAllTasks(Pageable pageable, FilterTaskListRequest findTaskListRequest); + Slice findByProcessorAndStatus(Long processorId, List statuses, LocalDateTime untilDate, Pageable pageable); } \ No newline at end of file diff --git a/src/main/java/clap/server/domain/model/task/TaskHistory.java b/src/main/java/clap/server/domain/model/task/TaskHistory.java index 28fad208..b41b0fa9 100644 --- a/src/main/java/clap/server/domain/model/task/TaskHistory.java +++ b/src/main/java/clap/server/domain/model/task/TaskHistory.java @@ -1,7 +1,11 @@ package clap.server.domain.model.task; +import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus; import clap.server.adapter.outbound.persistense.entity.task.constant.TaskHistoryType; import clap.server.domain.model.common.BaseTime; +import clap.server.domain.model.member.Member; +import clap.server.domain.model.member.MemberInfo; +import co.elastic.clients.elasticsearch.inference.TaskType; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; @@ -12,7 +16,7 @@ @SuperBuilder @NoArgsConstructor(access = AccessLevel.PROTECTED) public class TaskHistory extends BaseTime { - private Long historyId; + private Long taskHistoryId; private TaskHistoryType type; private TaskModificationInfo taskModificationInfo; private Comment comment; @@ -20,16 +24,16 @@ public class TaskHistory extends BaseTime { @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public static class TaskModificationInfo { - private Long taskId; + private Task task; private String modifiedField; - private Long modifiedMemberId; + private Member modifiedMember; private String newValue; @Builder - public TaskModificationInfo(Long taskId, String modifiedField, Long modifiedMemberId, String newValue) { - this.taskId = taskId; + public TaskModificationInfo(Task task, String modifiedField, Member modifiedMember, String newValue) { + this.task = task; this.modifiedField = modifiedField; - this.modifiedMemberId = modifiedMemberId; + this.modifiedMember = modifiedMember; this.newValue = newValue; } } From 2895709318bb855596baea58b4fe753c12d5bed4 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Mon, 27 Jan 2025 21:45:07 +0900 Subject: [PATCH 2/3] =?UTF-8?q?CLAP-120=20Fix:=20TaskEntity=EC=97=90?= =?UTF-8?q?=EC=84=9C=20completedAt=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/outbound/persistense/entity/task/TaskEntity.java | 3 --- src/main/java/clap/server/application/mapper/TaskMapper.java | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskEntity.java b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskEntity.java index 79f6d60f..0bb81daf 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskEntity.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskEntity.java @@ -60,9 +60,6 @@ public class TaskEntity extends BaseTimeEntity { @Column private LocalDateTime dueDate; - @Column - private LocalDateTime completedAt; - @Column private LocalDateTime finishedAt; } diff --git a/src/main/java/clap/server/application/mapper/TaskMapper.java b/src/main/java/clap/server/application/mapper/TaskMapper.java index b2c93059..550f4fa6 100644 --- a/src/main/java/clap/server/application/mapper/TaskMapper.java +++ b/src/main/java/clap/server/application/mapper/TaskMapper.java @@ -105,7 +105,7 @@ public static FilterAllTasksResponse toFilterAllTasksResponse(Task task) { task.getRequester().getMemberInfo().getNickname(), task.getProcessor().getMemberInfo().getNickname(), task.getTaskStatus(), - task.getCompletedAt() != null ? task.getCompletedAt() : null + task.getFinishedAt() != null ? task.getFinishedAt() : null ); } From 7d8de2a1ac0c320272f20a98b37cd9ac5c5a0866 Mon Sep 17 00:00:00 2001 From: parkjaehak Date: Mon, 27 Jan 2025 22:09:39 +0900 Subject: [PATCH 3/3] =?UTF-8?q?CLAP-120=20Fix:=20=EC=A0=84=EC=B2=B4?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=20=EC=A1=B0=ED=9A=8C=EC=8B=9C=20processor=20?= =?UTF-8?q?null=EC=9D=BC=20=EA=B2=BD=EC=9A=B0=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistense/repository/task/TaskCustomRepositoryImpl.java | 2 +- .../outbound/persistense/repository/task/TaskRepository.java | 2 +- src/main/java/clap/server/application/mapper/TaskMapper.java | 2 +- .../server/application/port/outbound/task/LoadTaskPort.java | 2 -- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java index c1eb1e9e..29b44a93 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java @@ -99,7 +99,7 @@ private Page getTasksPage(Pageable pageable, BooleanBuilder whereCla private OrderSpecifier getOrderSpecifier(String sortBy, String sortDirection) { DateTimePath sortColumn = switch (sortBy) { case "REQUESTED_AT" -> taskEntity.updatedAt; - case "FINISHED_AT" -> taskEntity.completedAt; + case "FINISHED_AT" -> taskEntity.finishedAt; default -> taskEntity.updatedAt; }; return "ASC".equalsIgnoreCase(sortDirection) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskRepository.java b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskRepository.java index bc759b31..6fa3eb6c 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskRepository.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskRepository.java @@ -28,7 +28,7 @@ List findYesterdayTaskByUpdatedAtIsBetween( @Query("SELECT t FROM TaskEntity t " + "WHERE t.processor.memberId = :processorId " + "AND t.taskStatus IN :taskStatus " + - "AND (t.taskStatus != 'COMPLETED' OR t.completedAt >= :untilDate)") + "AND (t.taskStatus != 'COMPLETED' OR t.finishedAt >= :untilDate)") Slice findTasksWithTaskStatusAndCompletedAt( @Param("processorId") Long processorId, @Param("taskStatus") List taskStatus, diff --git a/src/main/java/clap/server/application/mapper/TaskMapper.java b/src/main/java/clap/server/application/mapper/TaskMapper.java index 550f4fa6..4843c235 100644 --- a/src/main/java/clap/server/application/mapper/TaskMapper.java +++ b/src/main/java/clap/server/application/mapper/TaskMapper.java @@ -103,7 +103,7 @@ public static FilterAllTasksResponse toFilterAllTasksResponse(Task task) { task.getCategory().getName(), task.getTitle(), task.getRequester().getMemberInfo().getNickname(), - task.getProcessor().getMemberInfo().getNickname(), + task.getProcessor() != null ? task.getProcessor().getMemberInfo().getNickname() : "", task.getTaskStatus(), task.getFinishedAt() != null ? task.getFinishedAt() : null ); diff --git a/src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java b/src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java index 98b44ad8..8e340eb1 100644 --- a/src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java +++ b/src/main/java/clap/server/application/port/outbound/task/LoadTaskPort.java @@ -3,10 +3,8 @@ import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse; import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse; import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest; -import clap.server.adapter.inbound.web.dto.task.FilterTaskListResponse; import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus; import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse; -import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse; import clap.server.domain.model.task.Task; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable;