Skip to content

Commit ec0b5f7

Browse files
committed
CLAP-120 Feat: 전체 작업 목록 조회
1 parent 7a03d28 commit ec0b5f7

File tree

15 files changed

+144
-21
lines changed

15 files changed

+144
-21
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package clap.server.adapter.inbound.web.dto.task;
2+
3+
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
4+
5+
import java.time.LocalDateTime;
6+
7+
public record FilterAllTasksResponse(
8+
Long taskId,
9+
String taskCode,
10+
LocalDateTime requestedAt,
11+
String mainCategoryName,
12+
String categoryName,
13+
String title,
14+
String processorName,
15+
String requesterName,
16+
TaskStatus taskStatus,
17+
LocalDateTime finishedAt
18+
) {
19+
}

src/main/java/clap/server/adapter/inbound/web/dto/task/FilterTaskListResponse.java renamed to src/main/java/clap/server/adapter/inbound/web/dto/task/FilterRequestedTasksResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.time.LocalDateTime;
66

7-
public record FilterTaskListResponse(
7+
public record FilterRequestedTasksResponse(
88
Long taskId,
99
String taskCode,
1010
LocalDateTime requestedAt,

src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class FindTaskController {
2929
@Operation(summary = "사용자 요청 작업 목록 조회")
3030
@Secured({"ROLE_USER", "ROLE_MANAGER"})
3131
@GetMapping("/requests")
32-
public ResponseEntity<Page<FilterTaskListResponse>> findTasksRequestedByUser(
32+
public ResponseEntity<Page<FilterRequestedTasksResponse>> findTasksRequestedByUser(
3333
@RequestParam(defaultValue = "0") int page,
3434
@RequestParam(defaultValue = "20") int pageSize,
3535
@ModelAttribute FilterTaskListRequest filterTaskListRequest,
@@ -56,4 +56,16 @@ public ResponseEntity<Page<FilterPendingApprovalResponse>> findPendingApprovalTa
5656
Pageable pageable = PageRequest.of(page, pageSize);
5757
return ResponseEntity.ok(taskListUsecase.findPendingApprovalTasks(userInfo.getUserId(), pageable, filterTaskListRequest));
5858
}
59+
60+
@Operation(summary = "전체 작업 목록 조회")
61+
@Secured("ROLE_MANAGER")
62+
@GetMapping
63+
public ResponseEntity<Page<FilterAllTasksResponse>> findAllTasks(
64+
@RequestParam(defaultValue = "0") int page,
65+
@RequestParam(defaultValue = "20") int pageSize,
66+
@ModelAttribute FilterTaskListRequest filterTaskListRequest,
67+
@AuthenticationPrincipal SecurityUserDetails userInfo){
68+
Pageable pageable = PageRequest.of(page, pageSize);
69+
return ResponseEntity.ok(taskListUsecase.findAllTasks(userInfo.getUserId(), pageable, filterTaskListRequest));
70+
}
5971
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package clap.server.adapter.outbound.persistense;
2+
3+
4+
import clap.server.application.port.outbound.task.LoadTaskHistoryPort;
5+
import clap.server.common.annotation.architecture.PersistenceAdapter;
6+
7+
import lombok.RequiredArgsConstructor;
8+
9+
10+
11+
12+
13+
14+
@PersistenceAdapter
15+
@RequiredArgsConstructor
16+
public class TaskHistoryPersistenceAdapter implements LoadTaskHistoryPort {
17+
18+
}

src/main/java/clap/server/adapter/outbound/persistense/TaskPersistenceAdapter.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package clap.server.adapter.outbound.persistense;
22

3-
import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse;
3+
import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse;
44
import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest;
5-
import clap.server.adapter.inbound.web.dto.task.FilterTaskListResponse;
5+
import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse;
6+
import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse;
67
import clap.server.adapter.outbound.persistense.entity.task.TaskEntity;
78
import clap.server.adapter.outbound.persistense.mapper.TaskPersistenceMapper;
89
import clap.server.adapter.outbound.persistense.repository.task.TaskRepository;
@@ -39,10 +40,10 @@ public Optional<Task> findById(Long id) {
3940
}
4041

4142
@Override
42-
public Page<FilterTaskListResponse> findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
43+
public Page<FilterRequestedTasksResponse> findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
4344
Page<Task> taskList = taskRepository.findTasksRequestedByUser(requesterId, pageable, filterTaskListRequest)
4445
.map(taskPersistenceMapper::toDomain);
45-
return taskList.map(TaskMapper::toFilterTaskListResponse);
46+
return taskList.map(TaskMapper::toFilterRequestedTasksResponse);
4647
}
4748

4849
@Override
@@ -58,4 +59,10 @@ public List<Task> findYesterdayTaskByDate(LocalDateTime now) {
5859
.stream().map(taskPersistenceMapper::toDomain).toList();
5960
}
6061

62+
@Override
63+
public Page<FilterAllTasksResponse> findAllTasks (Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
64+
Page<Task> taskList = taskRepository.findAllTasks(pageable, filterTaskListRequest)
65+
.map(taskPersistenceMapper::toDomain);
66+
return taskList.map(TaskMapper::toFilterAllTasksResponse);
67+
}
6168
}

src/main/java/clap/server/adapter/outbound/persistense/entity/task/TaskModificationInfo.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22

33
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
44
import jakarta.persistence.*;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
57
import lombok.Getter;
68
import lombok.NoArgsConstructor;
79

810
@Getter
911
@NoArgsConstructor
1012
@Embeddable
13+
@AllArgsConstructor
14+
@Builder
1115
public class TaskModificationInfo {
1216
@ManyToOne(fetch = FetchType.LAZY)
1317
@JoinColumn(name = "task_id")
@@ -18,7 +22,7 @@ public class TaskModificationInfo {
1822

1923
@ManyToOne(fetch = FetchType.LAZY)
2024
@JoinColumn(name = "modified_member_id") //처리자가 바뀌는 경우
21-
private MemberEntity member;
25+
private MemberEntity modifiedMember;
2226

2327
@Column(name = "new_value")
2428
private String newValue; //상태가 바뀌는 경우
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package clap.server.adapter.outbound.persistense.mapper;
2+
3+
import clap.server.adapter.outbound.persistense.entity.task.TaskHistoryEntity;
4+
import clap.server.adapter.outbound.persistense.entity.task.TaskModificationInfo;
5+
import clap.server.adapter.outbound.persistense.mapper.common.PersistenceMapper;
6+
import clap.server.domain.model.task.TaskHistory;
7+
import org.mapstruct.Mapper;
8+
import org.mapstruct.Mapping;
9+
import org.mapstruct.Mappings;
10+
11+
@Mapper(componentModel = "spring", uses = {CommentPersistenceMapper.class, TaskPersistenceMapper.class, MemberPersistenceMapper.class})
12+
public interface TaskHistoryPersistenceMapper extends PersistenceMapper<TaskHistoryEntity, TaskHistory> {
13+
}

src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ public interface TaskCustomRepository {
99

1010
Page<TaskEntity> findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest);
1111
Page<TaskEntity> findPendingApprovalTasks(Pageable pageable, FilterTaskListRequest findTaskListRequest);
12+
Page<TaskEntity> findAllTasks(Pageable pageable, FilterTaskListRequest findTaskListRequest);
1213
}

src/main/java/clap/server/adapter/outbound/persistense/repository/task/TaskCustomRepositoryImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,18 @@ public Page<TaskEntity> findPendingApprovalTasks(Pageable pageable, FilterTaskLi
4646
return getTasksPage(pageable, whereClause, filterTaskListRequest.orderRequest().sortBy(), filterTaskListRequest.orderRequest().sortDirection());
4747
}
4848

49+
@Override
50+
public Page<TaskEntity> findAllTasks(Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
51+
BooleanBuilder whereClause = createFilter(filterTaskListRequest);
52+
if (!filterTaskListRequest.nickName().isEmpty()) {
53+
whereClause.and(
54+
taskEntity.requester.nickname.eq(filterTaskListRequest.nickName())
55+
.or(taskEntity.processor.nickname.eq(filterTaskListRequest.nickName()))
56+
);
57+
}
58+
return getTasksPage(pageable, whereClause, filterTaskListRequest.orderRequest().sortBy(), filterTaskListRequest.orderRequest().sortDirection());
59+
}
60+
4961
private BooleanBuilder createFilter(FilterTaskListRequest request) {
5062
BooleanBuilder whereClause = new BooleanBuilder();
5163
if (request.term() != null) {

src/main/java/clap/server/application/Task/FindTaskListService.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package clap.server.application.Task;
22

3+
import clap.server.adapter.inbound.web.dto.task.FilterAllTasksResponse;
34
import clap.server.adapter.inbound.web.dto.task.FilterTaskListRequest;
4-
import clap.server.adapter.inbound.web.dto.task.FilterTaskListResponse;
5+
import clap.server.adapter.inbound.web.dto.task.FilterRequestedTasksResponse;
56

67
import clap.server.adapter.inbound.web.dto.task.FilterPendingApprovalResponse;
78
import clap.server.application.port.inbound.domain.MemberService;
@@ -29,7 +30,7 @@ public class FindTaskListService implements FindTaskListUsecase {
2930

3031

3132
@Override
32-
public Page<FilterTaskListResponse> findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest) {
33+
public Page<FilterRequestedTasksResponse> findTasksRequestedByUser(Long requesterId, Pageable pageable, FilterTaskListRequest findTaskListRequest) {
3334
Member requester = memberService.findActiveMember(requesterId);
3435
return loadTaskPort.findTasksRequestedByUser(requester.getMemberId(), pageable, findTaskListRequest);
3536
}
@@ -39,4 +40,10 @@ public Page<FilterPendingApprovalResponse> findPendingApprovalTasks(Long manager
3940
memberService.findActiveMember(managerId);
4041
return loadTaskPort.findPendingApprovalTasks(pageable, filterTaskListRequest);
4142
}
43+
44+
@Override
45+
public Page<FilterAllTasksResponse> findAllTasks(Long managerId, Pageable pageable, FilterTaskListRequest filterTaskListRequest) {
46+
memberService.findActiveMember(managerId);
47+
return loadTaskPort.findAllTasks(pageable, filterTaskListRequest);
48+
}
4249
}

0 commit comments

Comments
 (0)