Ver código fonte

Staff Search related API

tags/Baseline_30082024_BACKEND_UAT
MSI\derek 1 ano atrás
pai
commit
3ecfe9a8b9
4 arquivos alterados com 59 adições e 19 exclusões
  1. +5
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java
  2. +22
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/StaffSearchInfo.kt
  3. +19
    -10
      src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt
  4. +13
    -9
      src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt

+ 5
- 0
src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java Ver arquivo

@@ -2,5 +2,10 @@ package com.ffii.tsms.modules.data.entity;

import com.ffii.core.support.AbstractRepository;

import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo;

import java.util.List;

public interface StaffRepository extends AbstractRepository<Staff, Long> {
List<StaffSearchInfo> findStaffSearchInfoBy();
}

+ 22
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/StaffSearchInfo.kt Ver arquivo

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

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

/**
* Projection for {@link com.ffii.tsms.modules.data.entity.Staff}
*/
interface StaffSearchInfo {
val id: Long?
val staffId: String?
val name: String?

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

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

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

}

+ 19
- 10
src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt Ver arquivo

@@ -10,6 +10,7 @@ import com.ffii.tsms.modules.data.entity.TeamRepository
import com.ffii.tsms.modules.data.entity.SkillRepository
import com.ffii.tsms.modules.data.entity.SalaryEffectiveRepository
import com.ffii.tsms.modules.data.entity.DepartmentRepository
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
import com.ffii.tsms.modules.project.web.models.NewStaffRequest
// import com.ffii.tsms.modules.data.web.models.NewStaffRequest
import org.springframework.stereotype.Service
@@ -35,18 +36,26 @@ public final class StaffsService(
return staffRepository.findAll()
}
fun fetchStaffList(args: Map<String, Any>): List<Map<String, Any>> {
val sql = StringBuilder("select"
+ " s.*,"
+ " date_format(s.created, '%Y-%m-%d') as created,"
+ " date_format(s.departDate, '%Y-%m-%d') as departDate,"
+ " date_format(s.joinDate, '%Y-%m-%d') as joinDate"
+ " from staff s"
+ " where s.deleted = false"
)
return jdbcDao.queryForList(sql.toString(), args)
fun allStaff(): List<StaffSearchInfo> {
return staffRepository.findStaffSearchInfoBy();
}
// fun fetchStaffList(args: Map<String, Any>): List<Map<String, Any>> {
// val sql = StringBuilder("select"
// + " s.*,"
// + " date_format(s.created, '%Y-%m-%d') as created,"
// + " date_format(s.departDate, '%Y-%m-%d') as departDate,"
// + " date_format(s.joinDate, '%Y-%m-%d') as joinDate"
// + " from staff s"
// + " where s.deleted = false"
// )
// if (args != null) {
// if (args.containsKey("staffId"))
// sql.append(" AND s.staffId = :staffId ");
// }
// return jdbcDao.queryForList(sql.toString(), args)
// }
fun saveStaff(req: NewStaffRequest): Staff {
val user = userRepository.findById(req.userId).orElseThrow()
val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow()


+ 13
- 9
src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt Ver arquivo

@@ -8,13 +8,13 @@ import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import com.ffii.tsms.modules.project.web.models.NewStaffRequest
// import com.ffii.tsms.modules.data.web.models.NewStaffRequest
import jakarta.validation.Valid
import org.springframework.web.bind.annotation.*
import jakarta.servlet.http.HttpServletRequest;
import com.ffii.core.utils.CriteriaArgsBuilder;
import com.ffii.core.response.IdRes;
import com.ffii.core.response.RecordsRes;
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
@RestController
@RequestMapping("/staffs")
@@ -23,7 +23,10 @@ class StaffsController(private val staffsService: StaffsService) {
fun teamLeads(): List<Staff> {
return staffsService.getTeamLeads()
}
@GetMapping
fun allStaff(): List<StaffSearchInfo> {
return staffsService.allStaff()
}
@GetMapping("/list")
fun list(): List<Staff> {
return staffsService.getTeamLeads()
@@ -34,11 +37,12 @@ class StaffsController(private val staffsService: StaffsService) {
return staffsService.saveStaff(newStaff)
}
@GetMapping("/newlist")
fun list(request: HttpServletRequest): RecordsRes<Map<String, Any>> {
return RecordsRes(staffsService.fetchStaffList(
CriteriaArgsBuilder.withRequest(request)
.build()
))
}
// @GetMapping("/newlist")
// fun list(request: HttpServletRequest): RecordsRes<Map<String, Any>> {
// return RecordsRes(staffsService.fetchStaffList(
// CriteriaArgsBuilder.withRequest(request)
// .addString("staffId")
// .build()
// ))
// }
}

Carregando…
Cancelar
Salvar