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 index 8deb4d7..8b9b841 100644 --- 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 @@ -22,4 +22,7 @@ interface StaffSearchInfo { @get:Value("#{target.currentPosition?.name}") val currentPosition: String? + @get:Value("#{target.user?.id}") + val userId: Long? + } 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 00b0dd0..9fd341f 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 @@ -1,5 +1,6 @@ package com.ffii.tsms.modules.data.service +import com.ffii.core.exception.UnprocessableEntityException import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.JdbcDao import com.ffii.tsms.modules.common.SecurityUtils @@ -8,12 +9,10 @@ import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo import com.ffii.tsms.modules.data.web.models.NewStaffRequest import com.ffii.tsms.modules.user.entity.User import com.ffii.tsms.modules.user.entity.UserRepository -import org.springframework.data.jpa.domain.AbstractPersistable_.id import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional import java.util.* -import java.util.stream.Collectors import kotlin.jvm.optionals.getOrNull @@ -96,6 +95,13 @@ open class StaffsService( @Transactional(rollbackFor = [Exception::class]) open fun saveStaff(req: NewStaffRequest): Staff { +// if (req.staffId) + val checkStaffIdList: List = staffRepository.findStaffSearchInfoByAndDeletedFalse() + checkStaffIdList.forEach{ s -> + if (s.staffId == req.staffId) { + throw UnprocessableEntityException("Duplicated StaffId Found") + } + } val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow() val joinPosition = positionRepository.findById(req.joinPositionId).orElseThrow() val company = companyRepository.findById(req.companyId).orElseThrow() diff --git a/src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt b/src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt index 68678e6..580c3aa 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt @@ -39,7 +39,7 @@ open class TeamService( @Transactional(rollbackFor = [Exception::class]) open fun saveTeam(req: NewTeamRequest): Team { val ids = req.addStaffIds!! - println(ids) +// println(ids) val teamLead = staffRepository.findById(ids[0]).orElseThrow() val teamName = "Team " + teamLead.name diff --git a/src/main/java/com/ffii/tsms/modules/data/web/SkillController.kt b/src/main/java/com/ffii/tsms/modules/data/web/SkillController.kt index d766752..a6d9bd0 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/SkillController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/SkillController.kt @@ -7,6 +7,7 @@ import com.ffii.tsms.modules.data.service.SkillService import com.ffii.tsms.modules.data.web.models.NewSkillRequest 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.* @@ -25,6 +26,11 @@ class SkillController(private val skillService: SkillService) { args["id"] = id return skillService.list(args); } + @DeleteMapping("/delete/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + fun delete(@PathVariable id: Long?) { + skillService.markDelete(id) + } @GetMapping fun list(): List> { diff --git a/src/main/java/com/ffii/tsms/modules/data/web/models/NewStaffRequest.kt b/src/main/java/com/ffii/tsms/modules/data/web/models/NewStaffRequest.kt index 1e41acd..c5316f5 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/models/NewStaffRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/models/NewStaffRequest.kt @@ -5,10 +5,6 @@ import jakarta.validation.constraints.NotNull import java.time.LocalDate data class NewStaffRequest( - val id: Long?, - -// @field:NotNull(message = "Staff userId cannot be empty") -// val userId: Long, @field:NotBlank(message = "Staff name cannot be empty") val name: String, @field:NotBlank(message = "Staff staffId cannot be empty") @@ -17,21 +13,30 @@ data class NewStaffRequest( val companyId: Long, @field:NotNull(message = "Staff salaryId cannot be empty") val salaryId: Long, -// @field:NotNull(message = "Staff skillSetId cannot be empty") - val skillSetId: List?, + @field:NotNull(message = "joinDate cannot be empty") val joinDate: LocalDate, + @field:NotNull(message = "Staff currentPositionId cannot be empty") val currentPositionId: Long, -// val salaryEffId: Long, + @field:NotNull(message = "Staff joinPositionId cannot be empty") val joinPositionId: Long, - val gradeId: Long?, - val teamId: Long?, + @field:NotNull(message = "Staff departmentId cannot be empty") val departmentId: Long, + @field:NotBlank(message = "Staff phone1 cannot be empty") val phone1: String, - val phone2: String?, + @field:NotBlank(message = "Staff email cannot be empty") val email: String, + @field:NotBlank(message = "Staff emergContactName cannot be empty") val emergContactName: String, + @field:NotBlank(message = "Staff emergContactPhone cannot be empty") val emergContactPhone: String, + @field:NotBlank(message = "Staff employType cannot be empty") val employType: String, + + val id: Long?, + val skillSetId: List?, + val gradeId: Long?, + val phone2: String?, + val teamId: Long?, val departDate: LocalDate?, val departReason: String?, val remark: String?,