From f2ab33b0584b738234626fa08733500d7e4af5c9 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Thu, 12 Sep 2024 17:31:51 +0800 Subject: [PATCH] update expense create function --- .../project/service/ProjectExpenseService.kt | 26 +++++++++++++++++++ .../project/web/ProjectExpenseController.kt | 12 ++++++--- .../web/models/ProjectExpenseRequest.kt | 22 ++++++++++++++++ 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/ffii/tsms/modules/project/web/models/ProjectExpenseRequest.kt diff --git a/src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt b/src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt index a289508..b7e69f2 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/ProjectExpenseService.kt @@ -4,11 +4,14 @@ import com.ffii.core.support.AbstractIdEntityService import com.ffii.core.support.JdbcDao import com.ffii.tsms.modules.project.entity.ProjectExpense import com.ffii.tsms.modules.project.entity.ProjectExpenseRepository +import com.ffii.tsms.modules.project.entity.ProjectRepository import com.ffii.tsms.modules.project.entity.projections.ProjectExpenseSearchInfo +import com.ffii.tsms.modules.project.web.models.ProjectExpenseRequest import org.springframework.stereotype.Service @Service open class ProjectExpenseService( + private val projectRepository: ProjectRepository, private val projectExpenseRepository: ProjectExpenseRepository, private val jdbcDao: JdbcDao, ) : AbstractIdEntityService(jdbcDao, projectExpenseRepository){ @@ -16,4 +19,27 @@ open class ProjectExpenseService( return projectExpenseRepository.findExpenseSearchInfoByDeletedFalse() } + open fun createProjectExpense(projectExpenseList: List): Boolean { + try { + for (projectExpense in projectExpenseList) { + val project = projectRepository.findAll().filter { it.deleted == false && it.id == projectExpense.projectId }[0] + val team = project.teamLead!!.team + val newProjectExpense = ProjectExpense().apply { + expenseNo = projectExpense.expenseNo + issueDate = projectExpense.issueDate + receiptDate = projectExpense.receiptDate + amount = projectExpense.amount + this.project = project + this.team = team + remarks = projectExpense.remarks + } + projectExpenseRepository.save(newProjectExpense) + } + } catch (e: Exception) { + println(e) + return false + } + return true + } + } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt b/src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt index 57fca9f..c076d4f 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/ProjectExpenseController.kt @@ -1,10 +1,12 @@ package com.ffii.tsms.modules.project.web +import com.ffii.tsms.modules.data.entity.Staff +import com.ffii.tsms.modules.data.web.models.NewStaffRequest import com.ffii.tsms.modules.project.entity.projections.ProjectExpenseSearchInfo import com.ffii.tsms.modules.project.service.ProjectExpenseService -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController +import com.ffii.tsms.modules.project.web.models.ProjectExpenseRequest +import jakarta.validation.Valid +import org.springframework.web.bind.annotation.* @RestController @RequestMapping("/project-expense") @@ -15,4 +17,8 @@ class ProjectExpenseController( fun allProjectExpense(): List { return projectExpenseService.findProjectExpenseSearchInfo() } + @PostMapping("/create") + fun saveProjectExpense(@Valid @RequestBody newProjectExpense: List): Boolean { + return projectExpenseService.createProjectExpense(newProjectExpense) + } } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectExpenseRequest.kt b/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectExpenseRequest.kt new file mode 100644 index 0000000..4d09045 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectExpenseRequest.kt @@ -0,0 +1,22 @@ +package com.ffii.tsms.modules.project.web.models + +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.NotNull +import java.time.LocalDate + +data class ProjectExpenseRequest ( + val id: Long?, + val expenseNo: String?, + + @field:NotNull(message = "projectId cannot be empty") + val projectId: Long, + + @field:NotNull(message = "issueDate cannot be empty") + val issueDate: LocalDate, + + val receiptDate: LocalDate?, + + @field:NotNull(message = "amount cannot be empty") + val amount: Double, + val remarks: String?, +) \ No newline at end of file