Conversation
창고아이디 별로 카테고리, 그룹, 자동 주문 상태 필터링 품목 코드, 이름으로 검색 query dsl 사용
WalkthroughROP 조회 기능에 동적 필터링 및 페이지네이션 지원을 추가했습니다. 컨트롤러 엔드포인트를 수정하고, 새로운 필터 DTO 및 QueryDSL 기반 저장소 구현을 도입하였으며, Rop 엔티티의 시간 추적 기능을 활성화했습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant RopController
participant RopService
participant RopRepository
participant Database
Client->>RopController: GET /rops?warehouseId=1&categoryId=2&page=0&size=20
RopController->>RopController: 쿼리 파라미터 파싱 및 RopFilterDto 생성
RopController->>RopService: getRops(ropFilterDto, page, size)
RopService->>RopService: Pageable 객체 생성
RopService->>RopRepository: search(ropFilterDto, pageable)
RopRepository->>Database: QueryDSL 쿼리 실행 (필터, 조인, 프로젝션)
Database-->>RopRepository: 페이지네이션된 결과 반환
RopRepository-->>RopService: Page<RopResDto>
RopService-->>RopController: Page<RopResDto>
RopController-->>Client: ApiResponse<Page<RopResDto>>
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20-25 minutes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
src/main/java/com/sampoom/backend/api/inventory/service/InventoryService.java(0 hunks)src/main/java/com/sampoom/backend/api/rop/controller/RopController.java(2 hunks)src/main/java/com/sampoom/backend/api/rop/dto/RopFilterDto.java(1 hunks)src/main/java/com/sampoom/backend/api/rop/dto/RopResDto.java(1 hunks)src/main/java/com/sampoom/backend/api/rop/entity/Rop.java(2 hunks)src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepository.java(1 hunks)src/main/java/com/sampoom/backend/api/rop/repository/RopQueryRepositoryImpl.java(1 hunks)src/main/java/com/sampoom/backend/api/rop/repository/RopRepository.java(1 hunks)src/main/java/com/sampoom/backend/api/rop/service/RopService.java(2 hunks)
💤 Files with no reviewable changes (1)
- src/main/java/com/sampoom/backend/api/inventory/service/InventoryService.java
🧰 Additional context used
🧬 Code graph analysis (2)
src/main/java/com/sampoom/backend/api/rop/dto/RopFilterDto.java (1)
src/main/java/com/sampoom/backend/api/rop/dto/RopResDto.java (1)
Getter(9-42)
src/main/java/com/sampoom/backend/api/rop/dto/RopResDto.java (3)
src/main/java/com/sampoom/backend/api/rop/dto/RopFilterDto.java (1)
Getter(9-19)src/main/java/com/sampoom/backend/api/rop/dto/UpdateRopReqDto.java (1)
Getter(6-14)src/main/java/com/sampoom/backend/api/rop/dto/RopItem.java (1)
Getter(8-15)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Analyze (java-kotlin)
🔇 Additional comments (5)
src/main/java/com/sampoom/backend/api/rop/dto/RopResDto.java (3)
3-10: 클래스 구조가 잘 정의되어 있습니다.QueryDSL 프로젝션을 위한 적절한 임포트와 Lombok 어노테이션이 올바르게 사용되었습니다.
12-23: 필드 구성이 적절합니다.ROP 조회 응답에 필요한 모든 필드가 적절한 타입으로 정의되어 있습니다.
25-41: QueryDSL 프로젝션 생성자가 올바르게 구현되었습니다.12개의 파라미터를 가진 생성자는 많아 보이지만, QueryDSL 프로젝션 용도로는 적절합니다.
@QueryProjection어노테이션을 통해 타입 안전한 프로젝션이 가능합니다.src/main/java/com/sampoom/backend/api/rop/controller/RopController.java (2)
3-3: 필요한 임포트가 추가되었습니다.새로운 필터링 및 페이지네이션 기능을 위한 적절한 임포트입니다.
Also applies to: 9-9, 13-13
43-50: 필터 DTO 구성 및 서비스 호출이 잘 구현되었습니다.Builder 패턴을 사용하여
RopFilterDto를 구성하고 서비스 레이어로 적절히 위임하고 있습니다. 코드가 명확하고 읽기 쉽습니다.
📝 Summary
창고아이디 별로
카테고리, 그룹, 자동 주문 상태 필터링
품목 코드, 이름으로 검색
query dsl 사용
🙏 Question & PR point
📬 Reference
Summary by CodeRabbit
릴리스 노트