From b4f39fdb169e8599d46d53ec0eaaeeca0cca42e1 Mon Sep 17 00:00:00 2001 From: "MSI\\2Fi" Date: Wed, 24 Apr 2024 11:23:07 +0800 Subject: [PATCH] 1. Position search By Id 2. Invoice Search 3. Invoice Project Detail --- .../data/entity/PositionRepository.java | 2 ++ .../modules/data/service/PositionService.kt | 4 +++ .../modules/data/web/PositionController.kt | 5 +++ .../data/web/models/NewPositionRequest.kt | 7 ++-- .../project/entity/ProjectRepository.kt | 8 +++++ .../projections/InvoiceInfoSearchInfo.kt | 17 ++++++++++ .../entity/projections/InvoiceSearchInfo.kt | 14 ++++++++ .../project/service/ProjectsService.kt | 14 ++++++++ .../modules/project/web/InvoiceController.kt | 32 +++++++++++++++++++ 9 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/ffii/tsms/modules/project/entity/projections/InvoiceInfoSearchInfo.kt create mode 100644 src/main/java/com/ffii/tsms/modules/project/entity/projections/InvoiceSearchInfo.kt create mode 100644 src/main/java/com/ffii/tsms/modules/project/web/InvoiceController.kt diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java index 4bfd477..bb31f11 100644 --- a/src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java +++ b/src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java @@ -8,4 +8,6 @@ import java.util.List; public interface PositionRepository extends AbstractRepository { List findPositionSearchInfoByDeletedFalse(); + + List findPositionSearchInfoByIdAndDeletedFalse(Long id); } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/service/PositionService.kt b/src/main/java/com/ffii/tsms/modules/data/service/PositionService.kt index 7b0a2ac..3907970 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/PositionService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/PositionService.kt @@ -22,6 +22,10 @@ open class PositionService( return positionRepository.findPositionSearchInfoByDeletedFalse() } + open fun getPositionById(id: Long): List{ + return positionRepository.findPositionSearchInfoByIdAndDeletedFalse(id) + } + open fun savePosition(request: NewPositionRequest): Position { val position = Position().apply { diff --git a/src/main/java/com/ffii/tsms/modules/data/web/PositionController.kt b/src/main/java/com/ffii/tsms/modules/data/web/PositionController.kt index bdd8a0f..67aca56 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/PositionController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/PositionController.kt @@ -26,6 +26,11 @@ class PositionController(private val positionService: PositionService return positionService.allPositions() } + @GetMapping("/{id}") + fun getPositionById(@PathVariable id: Long): List{ + return positionService.getPositionById(id) + } + @PostMapping("/new") fun saveProject(@Valid @RequestBody newPosition: NewPositionRequest): Position { return positionService.savePosition(newPosition) diff --git a/src/main/java/com/ffii/tsms/modules/data/web/models/NewPositionRequest.kt b/src/main/java/com/ffii/tsms/modules/data/web/models/NewPositionRequest.kt index 8f21f57..c0f177d 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/models/NewPositionRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/models/NewPositionRequest.kt @@ -3,9 +3,12 @@ package com.ffii.tsms.modules.data.web.models import jakarta.validation.constraints.NotBlank data class NewPositionRequest ( - @field: NotBlank(message = "Department code cannot be empty") + + val id: Long, + + @field: NotBlank(message = "Position code cannot be empty") val positionCode: String, - @field:NotBlank(message = "Department name cannot be empty") + @field:NotBlank(message = "Position name cannot be empty") val positionName: String, val description: String diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt b/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt index 7e0ec04..233d91c 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/ProjectRepository.kt @@ -1,8 +1,16 @@ package com.ffii.tsms.modules.project.entity; import com.ffii.core.support.AbstractRepository +import com.ffii.tsms.modules.project.entity.projections.InvoiceInfoSearchInfo +import com.ffii.tsms.modules.project.entity.projections.InvoiceSearchInfo import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo interface ProjectRepository : AbstractRepository { fun findProjectSearchInfoBy(): List + + fun findInvoiceSearchInfoBy(): List + + fun findInvoiceSearchInfoById(id: Long): List + + fun findInvoiceInfoSearchInfoById(id: Long): List } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/projections/InvoiceInfoSearchInfo.kt b/src/main/java/com/ffii/tsms/modules/project/entity/projections/InvoiceInfoSearchInfo.kt new file mode 100644 index 0000000..265dd58 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/entity/projections/InvoiceInfoSearchInfo.kt @@ -0,0 +1,17 @@ +package com.ffii.tsms.modules.project.entity.projections + +import org.springframework.beans.factory.annotation.Value + +interface InvoiceInfoSearchInfo { + val id: Long? + + @get:Value("#{target.customer.code} - #{target.customer.name }") + val client: String? + + @get:Value("#{target.custLeadName}") + val attention: String? + + @get:Value("#{target.customer.address}") + val address: String? + +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/projections/InvoiceSearchInfo.kt b/src/main/java/com/ffii/tsms/modules/project/entity/projections/InvoiceSearchInfo.kt new file mode 100644 index 0000000..281e576 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/entity/projections/InvoiceSearchInfo.kt @@ -0,0 +1,14 @@ +package com.ffii.tsms.modules.project.entity.projections + +import org.springframework.beans.factory.annotation.Value + +interface InvoiceSearchInfo { + val id: Long? + + @get:Value("#{target.name}") + val projectName: String? + + @get:Value("#{target.code}") + val projectCode: String? + +} \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt index e2b4ec0..c1a1d92 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt @@ -5,6 +5,8 @@ import com.ffii.tsms.modules.data.service.CustomerContactService import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo import com.ffii.tsms.modules.data.service.CustomerService import com.ffii.tsms.modules.project.entity.* +import com.ffii.tsms.modules.project.entity.projections.InvoiceInfoSearchInfo +import com.ffii.tsms.modules.project.entity.projections.InvoiceSearchInfo import com.ffii.tsms.modules.project.web.models.NewProjectRequest import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -28,6 +30,18 @@ open class ProjectsService( return projectRepository.findProjectSearchInfoBy() } + open fun allInvoices(): List { + return projectRepository.findInvoiceSearchInfoBy() + } + + open fun getProjectDetailById(id: Long): List { + return projectRepository.findInvoiceSearchInfoById(id) + } + + open fun getInvoiceInfoById(id: Long): List { + return projectRepository.findInvoiceInfoSearchInfoById(id) + } + open fun allProjectCategories(): List { return projectCategoryRepository.findAll() } diff --git a/src/main/java/com/ffii/tsms/modules/project/web/InvoiceController.kt b/src/main/java/com/ffii/tsms/modules/project/web/InvoiceController.kt new file mode 100644 index 0000000..e30a538 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/web/InvoiceController.kt @@ -0,0 +1,32 @@ +package com.ffii.tsms.modules.project.web + +import com.ffii.tsms.modules.project.entity.projections.InvoiceInfoSearchInfo +import com.ffii.tsms.modules.project.entity.projections.InvoiceSearchInfo +import com.ffii.tsms.modules.project.service.ProjectsService +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestParam +import org.springframework.web.bind.annotation.RestController + + +@RestController +@RequestMapping("/invoices") +class InvoiceController( + private val projectsService: ProjectsService +) { + + @GetMapping + fun allInvoice(): List { + return projectsService.allInvoices() + } + + @GetMapping("/getProjectDetailById") + fun getInvoiceById(@RequestParam("id") id: Long): List { + return projectsService.getProjectDetailById(id) + } + + @GetMapping("/getInvoiceInfoById") + fun getInvoiceInfoById(@RequestParam("id") id: Long): List { + return projectsService.getInvoiceInfoById(id) + } +} \ No newline at end of file