From 44fba1ac6641b682186dff46e2447ac250a036f8 Mon Sep 17 00:00:00 2001 From: "MSI\\2Fi" Date: Tue, 7 May 2024 11:46:09 +0800 Subject: [PATCH] Edit Department adn Edit Position --- .../data/entity/DepartmentRepository.java | 6 +++- .../modules/data/service/DepartmentService.kt | 29 ++++++++++++++----- .../modules/data/service/PositionService.kt | 20 +++++++++---- .../modules/data/web/DepartmentController.kt | 14 +++++++++ .../modules/data/web/PositionController.kt | 7 +++++ .../data/web/models/NewDepartmentRequest.kt | 5 ++-- .../data/web/models/NewPositionRequest.kt | 6 ++-- 7 files changed, 68 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java index 7fb5f2e..7dd9233 100644 --- a/src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java +++ b/src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java @@ -4,7 +4,11 @@ import com.ffii.core.support.AbstractRepository; import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo; import java.util.List; +import java.util.Optional; public interface DepartmentRepository extends AbstractRepository { - List findDepartmentSearchInfoBy(); + List findDepartmentSearchInfoByAndDeletedFalse(); + + Optional findDepartmentSearchInfoById(Long departmentId); + } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/service/DepartmentService.kt b/src/main/java/com/ffii/tsms/modules/data/service/DepartmentService.kt index 373f9c4..17142c9 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/DepartmentService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/DepartmentService.kt @@ -6,7 +6,10 @@ import com.ffii.tsms.modules.data.entity.Department import com.ffii.tsms.modules.data.entity.DepartmentRepository import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo import com.ffii.tsms.modules.data.web.models.NewDepartmentRequest +import com.ffii.tsms.modules.project.web.models.EditProjectDetails +import org.springframework.beans.BeanUtils import org.springframework.stereotype.Service +import kotlin.jvm.optionals.getOrNull @Service open class DepartmentService( @@ -14,20 +17,32 @@ open class DepartmentService( private val jdbcDao: JdbcDao, ) : AbstractBaseEntityService(jdbcDao, departmentRepository) { open fun allDepartments(): List{ - return departmentRepository.findDepartmentSearchInfoBy() + return departmentRepository.findDepartmentSearchInfoByAndDeletedFalse() } open fun saveDepartment(request: NewDepartmentRequest): Department { - val department = - Department().apply { - name = request.departmentName - code = request.departmentCode - description = request.description - } + var department = Department() + + if (request.id != null && request.id > 0) { + department = departmentRepository.findById(request.id).orElseThrow() + + BeanUtils.copyProperties(request, department) + + }else{ + department.name = request.name + department.code = request.code + department.description = request.description + } return departmentRepository.save(department) } + open fun getDepartmentDetails(departmentId: Long): DepartmentSearchInfo? { + val department = departmentRepository.findDepartmentSearchInfoById(departmentId).orElseThrow() + + return department + } + open fun combo(args: Map): List> { val sql = StringBuilder("select" + " d.id as id," 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 3907970..a0e4555 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 @@ -12,6 +12,7 @@ import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo import com.ffii.tsms.modules.data.entity.projections.PositionSearchInfo import com.ffii.tsms.modules.data.web.models.NewDepartmentRequest import com.ffii.tsms.modules.data.web.models.NewPositionRequest +import org.springframework.beans.BeanUtils import org.springframework.stereotype.Service @Service open class PositionService( @@ -27,12 +28,19 @@ open class PositionService( } open fun savePosition(request: NewPositionRequest): Position { - val position = - Position().apply { - name = request.positionName - code = request.positionCode - description = request.description - } + + var position = Position() + + if (request.id != null && request.id > 0 ){ + position = positionRepository.findById(request.id).orElseThrow() + + BeanUtils.copyProperties(request, position) + + }else{ + position.name = request.name + position.code = request.code + position.description = request.description + } return positionRepository.save(position) } diff --git a/src/main/java/com/ffii/tsms/modules/data/web/DepartmentController.kt b/src/main/java/com/ffii/tsms/modules/data/web/DepartmentController.kt index 89f33ef..e9dd030 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/DepartmentController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/DepartmentController.kt @@ -1,5 +1,6 @@ package com.ffii.tsms.modules.data.web +import com.ffii.core.exception.NotFoundException import com.ffii.core.response.RecordsRes import com.ffii.core.utils.CriteriaArgsBuilder import com.ffii.tsms.modules.data.entity.Department @@ -7,9 +8,11 @@ import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo import com.ffii.tsms.modules.data.service.DepartmentService import com.ffii.tsms.modules.data.web.models.NewDepartmentRequest import com.ffii.tsms.modules.project.entity.Project +import com.ffii.tsms.modules.project.web.models.EditProjectDetails import com.ffii.tsms.modules.project.web.models.NewProjectRequest import jakarta.servlet.http.HttpServletRequest import jakarta.validation.Valid +import org.springframework.http.HttpStatus import org.springframework.web.bind.ServletRequestBindingException import org.springframework.web.bind.annotation.* @@ -22,11 +25,22 @@ class DepartmentController(private val departmentService: DepartmentService return departmentService.allDepartments() } + @GetMapping("/departmentDetails/{id}") + fun departmentDetails(@PathVariable id: Long): DepartmentSearchInfo { + return departmentService.getDepartmentDetails(id) ?: throw NotFoundException() + } + @PostMapping("/new") fun saveProject(@Valid @RequestBody newDepartment: NewDepartmentRequest): Department { return departmentService.saveDepartment(newDepartment) } + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + fun deleteDepartment(@PathVariable id: Long) { + departmentService.markDelete(id) + } + @GetMapping("/combo") @Throws(ServletRequestBindingException::class) fun combo(request: HttpServletRequest?): RecordsRes> { 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 67aca56..dfb674d 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 @@ -14,6 +14,7 @@ import com.ffii.tsms.modules.project.entity.Project import com.ffii.tsms.modules.project.web.models.NewProjectRequest import jakarta.servlet.http.HttpServletRequest import jakarta.validation.Valid +import org.springframework.http.HttpStatus import org.springframework.web.bind.ServletRequestBindingException import org.springframework.web.bind.annotation.* @@ -36,6 +37,12 @@ class PositionController(private val positionService: PositionService return positionService.savePosition(newPosition) } + @DeleteMapping("/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + fun deletePosition(@PathVariable id: Long) { + positionService.markDelete(id) + } + @GetMapping("/combo") @Throws(ServletRequestBindingException::class) fun combo(request: HttpServletRequest?): RecordsRes> { diff --git a/src/main/java/com/ffii/tsms/modules/data/web/models/NewDepartmentRequest.kt b/src/main/java/com/ffii/tsms/modules/data/web/models/NewDepartmentRequest.kt index eb43676..87ee7c2 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/models/NewDepartmentRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/models/NewDepartmentRequest.kt @@ -3,10 +3,11 @@ package com.ffii.tsms.modules.data.web.models import jakarta.validation.constraints.NotBlank data class NewDepartmentRequest ( + val id: Long?, @field: NotBlank(message = "Department code cannot be empty") - val departmentCode: String, + val code: String, @field:NotBlank(message = "Department name cannot be empty") - val departmentName: String, + val name: String, val description: String ) 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 c0f177d..b41d13a 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 @@ -4,12 +4,12 @@ import jakarta.validation.constraints.NotBlank data class NewPositionRequest ( - val id: Long, + val id: Long?, @field: NotBlank(message = "Position code cannot be empty") - val positionCode: String, + val code: String, @field:NotBlank(message = "Position name cannot be empty") - val positionName: String, + val name: String, val description: String )