瀏覽代碼

1. Add Department API

- save
- get the list (name, code, description)
2. Add Position API
- save
- get the list (name, code, description)
tags/Baseline_30082024_BACKEND_UAT
MSI\2Fi 1 年之前
父節點
當前提交
b38b9d0f01
共有 10 個檔案被更改,包括 171 行新增0 行删除
  1. +4
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java
  2. +5
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java
  3. +12
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/DepartmentSearchInfo.java
  4. +12
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/PositionSearchInfo.java
  5. +28
    -0
      src/main/java/com/ffii/tsms/modules/data/service/DepartmentService.kt
  6. +32
    -0
      src/main/java/com/ffii/tsms/modules/data/service/PositionService.kt
  7. +25
    -0
      src/main/java/com/ffii/tsms/modules/data/web/DepartmentController.kt
  8. +29
    -0
      src/main/java/com/ffii/tsms/modules/data/web/PositionController.kt
  9. +12
    -0
      src/main/java/com/ffii/tsms/modules/data/web/models/NewDepartmentRequest.kt
  10. +12
    -0
      src/main/java/com/ffii/tsms/modules/data/web/models/NewPositionRequest.kt

+ 4
- 0
src/main/java/com/ffii/tsms/modules/data/entity/DepartmentRepository.java 查看文件

@@ -1,6 +1,10 @@
package com.ffii.tsms.modules.data.entity;

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

import java.util.List;

public interface DepartmentRepository extends AbstractRepository<Department, Long> {
List<DepartmentSearchInfo> findDepartmentSearchInfoBy();
}

+ 5
- 0
src/main/java/com/ffii/tsms/modules/data/entity/PositionRepository.java 查看文件

@@ -1,6 +1,11 @@
package com.ffii.tsms.modules.data.entity;

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

import java.util.List;

public interface PositionRepository extends AbstractRepository<Position, Long> {

List<PositionSearchInfo> findPositionSearchInfoBy();
}

+ 12
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/DepartmentSearchInfo.java 查看文件

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

/**
* Projection for {@link com.ffii.tsms.modules.data.entity.Company}
*/
public interface DepartmentSearchInfo {

Long getId();
String getCode();
String getName();
String getDescription();
}

+ 12
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/PositionSearchInfo.java 查看文件

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

/**
* Projection for {@link com.ffii.tsms.modules.data.entity.Company}
*/
public interface PositionSearchInfo {

Long getId();
String getCode();
String getName();
String getDescription();
}

+ 28
- 0
src/main/java/com/ffii/tsms/modules/data/service/DepartmentService.kt 查看文件

@@ -0,0 +1,28 @@
package com.ffii.tsms.modules.data.service

import com.ffii.tsms.modules.data.entity.CompanyRepository
import com.ffii.tsms.modules.data.entity.Department
import com.ffii.tsms.modules.data.entity.DepartmentRepository
import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo
import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo
import com.ffii.tsms.modules.data.web.models.NewDepartmentRequest
import org.springframework.stereotype.Service
@Service
class DepartmentService(
private val departmentRepository: DepartmentRepository
) {
fun allDepartments(): List<DepartmentSearchInfo>{
return departmentRepository.findDepartmentSearchInfoBy()
}

fun saveDepartment(request: NewDepartmentRequest): Department {
val department =
Department().apply {
name = request.departmentName
code = request.departmentCode
description = request.description
}

return departmentRepository.save(department)
}
}

+ 32
- 0
src/main/java/com/ffii/tsms/modules/data/service/PositionService.kt 查看文件

@@ -0,0 +1,32 @@
package com.ffii.tsms.modules.data.service

import com.ffii.tsms.modules.data.entity.CompanyRepository
import com.ffii.tsms.modules.data.entity.Department
import com.ffii.tsms.modules.data.entity.DepartmentRepository
import com.ffii.tsms.modules.data.entity.Position
import com.ffii.tsms.modules.data.entity.PositionRepository
import com.ffii.tsms.modules.data.entity.projections.CompanySearchInfo
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.stereotype.Service
@Service
class PositionService(
private val positionRepository: PositionRepository
) {
fun allPositions(): List<PositionSearchInfo>{
return positionRepository.findPositionSearchInfoBy()
}

fun savePosition(request: NewPositionRequest): Position {
val position =
Position().apply {
name = request.positionName
code = request.positionCode
description = request.description
}

return positionRepository.save(position)
}
}

+ 25
- 0
src/main/java/com/ffii/tsms/modules/data/web/DepartmentController.kt 查看文件

@@ -0,0 +1,25 @@
package com.ffii.tsms.modules.data.web

import com.ffii.tsms.modules.data.entity.Department
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.NewProjectRequest
import jakarta.validation.Valid
import org.springframework.web.bind.annotation.*

@RestController
@RequestMapping("/departments")
class DepartmentController(private val departmentService: DepartmentService
) {
@GetMapping
fun allDepartments(): List<DepartmentSearchInfo>{
return departmentService.allDepartments()
}

@PostMapping("/new")
fun saveProject(@Valid @RequestBody newDepartment: NewDepartmentRequest): Department {
return departmentService.saveDepartment(newDepartment)
}
}

+ 29
- 0
src/main/java/com/ffii/tsms/modules/data/web/PositionController.kt 查看文件

@@ -0,0 +1,29 @@
package com.ffii.tsms.modules.data.web

import com.ffii.tsms.modules.data.entity.Department
import com.ffii.tsms.modules.data.entity.Position
import com.ffii.tsms.modules.data.entity.projections.DepartmentSearchInfo
import com.ffii.tsms.modules.data.entity.projections.PositionSearchInfo
import com.ffii.tsms.modules.data.service.DepartmentService
import com.ffii.tsms.modules.data.service.PositionService
import com.ffii.tsms.modules.data.web.models.NewDepartmentRequest
import com.ffii.tsms.modules.data.web.models.NewPositionRequest
import com.ffii.tsms.modules.project.entity.Project
import com.ffii.tsms.modules.project.web.models.NewProjectRequest
import jakarta.validation.Valid
import org.springframework.web.bind.annotation.*

@RestController
@RequestMapping("/positions")
class PositionController(private val positionService: PositionService
) {
@GetMapping
fun allPositions(): List<PositionSearchInfo>{
return positionService.allPositions()
}

@PostMapping("/new")
fun saveProject(@Valid @RequestBody newPosition: NewPositionRequest): Position {
return positionService.savePosition(newPosition)
}
}

+ 12
- 0
src/main/java/com/ffii/tsms/modules/data/web/models/NewDepartmentRequest.kt 查看文件

@@ -0,0 +1,12 @@
package com.ffii.tsms.modules.data.web.models

import jakarta.validation.constraints.NotBlank

data class NewDepartmentRequest (
@field: NotBlank(message = "Department code cannot be empty")
val departmentCode: String,
@field:NotBlank(message = "Department name cannot be empty")
val departmentName: String,

val description: String
)

+ 12
- 0
src/main/java/com/ffii/tsms/modules/data/web/models/NewPositionRequest.kt 查看文件

@@ -0,0 +1,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 positionCode: String,
@field:NotBlank(message = "Department name cannot be empty")
val positionName: String,

val description: String
)

Loading…
取消
儲存