diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java b/src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java index 8fe4cd8..3c0b6e3 100644 --- a/src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java +++ b/src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java @@ -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 { + List findStaffSearchInfoBy(); } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/projections/StaffSearchInfo.kt b/src/main/java/com/ffii/tsms/modules/data/entity/projections/StaffSearchInfo.kt new file mode 100644 index 0000000..308925d --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/entity/projections/StaffSearchInfo.kt @@ -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? + +} diff --git a/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt b/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt index f28710f..3db2df5 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt @@ -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): List> { - 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 { + return staffRepository.findStaffSearchInfoBy(); } +// fun fetchStaffList(args: Map): List> { +// 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() diff --git a/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt b/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt index 8c764f9..16997a4 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt @@ -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 { return staffsService.getTeamLeads() } - + @GetMapping + fun allStaff(): List { + return staffsService.allStaff() + } @GetMapping("/list") fun list(): List { return staffsService.getTeamLeads() @@ -34,11 +37,12 @@ class StaffsController(private val staffsService: StaffsService) { return staffsService.saveStaff(newStaff) } - @GetMapping("/newlist") - fun list(request: HttpServletRequest): RecordsRes> { - return RecordsRes(staffsService.fetchStaffList( - CriteriaArgsBuilder.withRequest(request) - .build() - )) - } +// @GetMapping("/newlist") +// fun list(request: HttpServletRequest): RecordsRes> { +// return RecordsRes(staffsService.fetchStaffList( +// CriteriaArgsBuilder.withRequest(request) +// .addString("staffId") +// .build() +// )) +// } } \ No newline at end of file