Browse Source

Use projections for project search

tags/Baseline_30082024_BACKEND_UAT
Wayne 1 year ago
parent
commit
b3bb5f381e
4 changed files with 28 additions and 3 deletions
  1. +21
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/ProjectSearchInfo.kt
  2. +2
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt
  3. +3
    -2
      src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt
  4. +2
    -1
      src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt

+ 21
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/ProjectSearchInfo.kt View File

@@ -0,0 +1,21 @@
package com.ffii.tsms.modules.data.entity.projections

import org.springframework.beans.factory.annotation.Value

/**
* Projection for {@link com.ffii.tsms.modules.project.entity.Project}
*/
interface ProjectSearchInfo {
val id: Long?
val name: String?
val code: String?

@get:Value("#{target.projectCategory.name}")
val category: String?

@get:Value("#{target.teamLead.team.code}")
val team: String?

@get:Value("#{target.customer.name}")
val client: String?
}

+ 2
- 0
src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt View File

@@ -1,6 +1,8 @@
package com.ffii.tsms.modules.project.entity; package com.ffii.tsms.modules.project.entity;


import com.ffii.core.support.AbstractRepository import com.ffii.core.support.AbstractRepository
import com.ffii.tsms.modules.data.entity.projections.ProjectSearchInfo


interface ProjectRepository : AbstractRepository<Project, Long> { interface ProjectRepository : AbstractRepository<Project, Long> {
fun findProjectSearchInfoBy(): List<ProjectSearchInfo>
} }

+ 3
- 2
src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt View File

@@ -1,6 +1,7 @@
package com.ffii.tsms.modules.project.service package com.ffii.tsms.modules.project.service


import com.ffii.tsms.modules.data.entity.StaffRepository import com.ffii.tsms.modules.data.entity.StaffRepository
import com.ffii.tsms.modules.data.entity.projections.ProjectSearchInfo
import com.ffii.tsms.modules.data.service.CustomerService import com.ffii.tsms.modules.data.service.CustomerService
import com.ffii.tsms.modules.project.entity.Project import com.ffii.tsms.modules.project.entity.Project
import com.ffii.tsms.modules.project.entity.ProjectCategory import com.ffii.tsms.modules.project.entity.ProjectCategory
@@ -15,8 +16,8 @@ class ProjectsService(
private val customerService: CustomerService, private val projectCategoryRepository: ProjectCategoryRepository, private val customerService: CustomerService, private val projectCategoryRepository: ProjectCategoryRepository,
private val staffRepository: StaffRepository private val staffRepository: StaffRepository
) { ) {
fun allProjects(): List<Project> {
return projectRepository.findAll()
fun allProjects(): List<ProjectSearchInfo> {
return projectRepository.findProjectSearchInfoBy()
} }


fun allProjectCategories(): List<ProjectCategory> { fun allProjectCategories(): List<ProjectCategory> {


+ 2
- 1
src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt View File

@@ -1,5 +1,6 @@
package com.ffii.tsms.modules.project.web package com.ffii.tsms.modules.project.web


import com.ffii.tsms.modules.data.entity.projections.ProjectSearchInfo
import com.ffii.tsms.modules.project.entity.Project import com.ffii.tsms.modules.project.entity.Project
import com.ffii.tsms.modules.project.entity.ProjectCategory import com.ffii.tsms.modules.project.entity.ProjectCategory
import com.ffii.tsms.modules.project.service.ProjectsService import com.ffii.tsms.modules.project.service.ProjectsService
@@ -11,7 +12,7 @@ import org.springframework.web.bind.annotation.*
@RequestMapping("/projects") @RequestMapping("/projects")
class ProjectsController(private val projectsService: ProjectsService) { class ProjectsController(private val projectsService: ProjectsService) {
@GetMapping @GetMapping
fun allProjects(): List<Project> {
fun allProjects(): List<ProjectSearchInfo> {
return projectsService.allProjects() return projectsService.allProjects()
} }




Loading…
Cancel
Save