浏览代码

update team master

tags/Baseline_30082024_BACKEND_UAT
MSI\derek 1年前
父节点
当前提交
d83f620595
共有 7 个文件被更改,包括 105 次插入8 次删除
  1. +2
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/StaffRepository.java
  2. +4
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/TeamRepository.java
  3. +21
    -5
      src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt
  4. +34
    -0
      src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt
  5. +17
    -0
      src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt
  6. +17
    -3
      src/main/java/com/ffii/tsms/modules/data/web/TeamController.kt
  7. +10
    -0
      src/main/java/com/ffii/tsms/modules/data/web/models/NewTeamRequest.kt

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

@@ -7,9 +7,11 @@ import org.springframework.data.repository.query.Param;


import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;


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


List<StaffSearchInfo> findAllStaffSearchInfoByIdIn(List<Long> ids); List<StaffSearchInfo> findAllStaffSearchInfoByIdIn(List<Long> ids);
Optional<Staff> findByStaffId(@Param("staffId") String staffId);
} }

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

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


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

import java.util.List;


public interface TeamRepository extends AbstractRepository<Team, Long> { public interface TeamRepository extends AbstractRepository<Team, Long> {
List<Team> findByDeletedFalse();
} }

+ 21
- 5
src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt 查看文件

@@ -4,13 +4,16 @@ import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.data.entity.* import com.ffii.tsms.modules.data.entity.*
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
//import com.ffii.tsms.modules.data.web.models.NewCustomerResponse
import com.ffii.tsms.modules.data.web.models.NewStaffRequest import com.ffii.tsms.modules.data.web.models.NewStaffRequest
import com.ffii.tsms.modules.data.web.models.NewStaffResponse
import com.ffii.tsms.modules.user.entity.User import com.ffii.tsms.modules.user.entity.User
import com.ffii.tsms.modules.user.entity.UserRepository import com.ffii.tsms.modules.user.entity.UserRepository
import org.springframework.beans.BeanUtils import org.springframework.beans.BeanUtils
import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional import org.springframework.transaction.annotation.Transactional
import java.util.*




@Service @Service
@@ -63,13 +66,17 @@ open class StaffsService(
// return jdbcDao.queryForList(sql.toString(), args) // return jdbcDao.queryForList(sql.toString(), args)
// } // }


open fun findByStaffId(id: String): Optional<Staff> {
return staffRepository.findByStaffId(id);
}

@Transactional(rollbackFor = [Exception::class]) @Transactional(rollbackFor = [Exception::class])
open fun saveStaff(req: NewStaffRequest): Staff { open fun saveStaff(req: NewStaffRequest): Staff {
val user = userRepository.saveAndFlush( val user = userRepository.saveAndFlush(
User().apply { User().apply {
username = req.name
password = passwordEncoder.encode("mms1234")
name = req.name
username = req.name
password = passwordEncoder.encode("mms1234")
name = req.name
} }
) )
val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow() val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow()
@@ -113,7 +120,6 @@ open class StaffsService(
logger.info(staff.id) logger.info(staff.id)
return staff return staff
} }

@Transactional(rollbackFor = [Exception::class]) @Transactional(rollbackFor = [Exception::class])
open fun updateStaff(req: NewStaffRequest, staff: Staff): Staff { open fun updateStaff(req: NewStaffRequest, staff: Staff): Staff {
val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow() val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow()
@@ -152,7 +158,7 @@ open class StaffsService(
salaryEffectiveService.saveSalaryEffective(staff.id!!, salary.id!!) salaryEffectiveService.saveSalaryEffective(staff.id!!, salary.id!!)


return staffRepository.save(staff) return staffRepository.save(staff)
}
}


@Transactional(rollbackFor = [Exception::class]) @Transactional(rollbackFor = [Exception::class])
open fun saveOrUpdate(req: NewStaffRequest): Staff { open fun saveOrUpdate(req: NewStaffRequest): Staff {
@@ -164,4 +170,14 @@ open class StaffsService(
} }
return staff; return staff;
} }

open fun combo(args: Map<String, Any>): List<Map<String, Any>> {
val sql = StringBuilder("select"
+ " s.id as id,"
+ " s.name as label"
+ " from staff s"
+ " where s.deleted = false "
)
return jdbcDao.queryForList(sql.toString(), args)
}
} }

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

@@ -2,16 +2,50 @@ package com.ffii.tsms.modules.data.service


import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.entity.StaffRepository
import com.ffii.tsms.modules.data.entity.Team import com.ffii.tsms.modules.data.entity.Team
import com.ffii.tsms.modules.data.entity.TeamRepository import com.ffii.tsms.modules.data.entity.TeamRepository
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
import com.ffii.tsms.modules.data.web.models.NewTeamRequest
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional


@Service @Service
open class TeamService( open class TeamService(
private val teamRepository: TeamRepository, private val teamRepository: TeamRepository,
private val staffRepository: StaffRepository,
private val jdbcDao: JdbcDao, private val jdbcDao: JdbcDao,
) : AbstractBaseEntityService<Team, Long, TeamRepository>(jdbcDao, teamRepository) { ) : AbstractBaseEntityService<Team, Long, TeamRepository>(jdbcDao, teamRepository) {


open fun allTeam(): List<Team> {
return teamRepository.findByDeletedFalse();
}

@Transactional(rollbackFor = [Exception::class])
open fun saveTeam(req: NewTeamRequest): Team {
val ids = req.addStaffIds
val teamLead = staffRepository.findById(ids[0]).orElseThrow()
val teamName = "Team " + teamLead.name

val initials = teamLead.name.split(" ").map { it.first() }
val teamCode = initials.joinToString("")

val team = Team().apply {
name = teamName
code = teamCode
}
teamRepository.saveAndFlush(team)
for (id in ids) {
val staff = staffRepository.findById(id).orElseThrow()
staff.apply {
this.team = team
}
staffRepository.save(staff)
}
return team
}

open fun combo(args: Map<String, Any>): List<Map<String, Any>> { open fun combo(args: Map<String, Any>): List<Map<String, Any>> {
val sql = StringBuilder("select" val sql = StringBuilder("select"
+ " t.id as id," + " t.id as id,"


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

@@ -1,13 +1,18 @@
package com.ffii.tsms.modules.data.web package com.ffii.tsms.modules.data.web


import com.ffii.core.exception.NotFoundException import com.ffii.core.exception.NotFoundException
import com.ffii.core.response.RecordsRes
import com.ffii.core.utils.CriteriaArgsBuilder
import com.ffii.core.utils.Params import com.ffii.core.utils.Params
import com.ffii.tsms.modules.data.entity.Staff import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
import com.ffii.tsms.modules.data.service.StaffsService import com.ffii.tsms.modules.data.service.StaffsService
import com.ffii.tsms.modules.data.web.models.NewStaffRequest import com.ffii.tsms.modules.data.web.models.NewStaffRequest
import com.ffii.tsms.modules.data.web.models.NewStaffResponse
import jakarta.servlet.http.HttpServletRequest
import jakarta.validation.Valid import jakarta.validation.Valid
import org.springframework.http.HttpStatus import org.springframework.http.HttpStatus
import org.springframework.web.bind.ServletRequestBindingException
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*




@@ -38,6 +43,18 @@ class StaffsController(private val staffsService: StaffsService) {
fun delete(@PathVariable id: Long?) { fun delete(@PathVariable id: Long?) {
staffsService.markDelete(id) staffsService.markDelete(id)
} }

@GetMapping("/combo")
@Throws(ServletRequestBindingException::class)
fun combo(request: HttpServletRequest?): RecordsRes<Map<String, Any>> {
println(request)
return RecordsRes<Map<String, Any>>(
staffsService.combo(
CriteriaArgsBuilder.withRequest(request)
.build()
)
)
}
@PostMapping("/save") @PostMapping("/save")
fun saveStaff(@Valid @RequestBody newStaff: NewStaffRequest): Staff { fun saveStaff(@Valid @RequestBody newStaff: NewStaffRequest): Staff {
return staffsService.saveOrUpdate(newStaff) return staffsService.saveOrUpdate(newStaff)


+ 17
- 3
src/main/java/com/ffii/tsms/modules/data/web/TeamController.kt 查看文件

@@ -2,18 +2,32 @@ package com.ffii.tsms.modules.data.web


import com.ffii.core.response.RecordsRes import com.ffii.core.response.RecordsRes
import com.ffii.core.utils.CriteriaArgsBuilder import com.ffii.core.utils.CriteriaArgsBuilder
import com.ffii.tsms.modules.data.entity.Staff
import com.ffii.tsms.modules.data.entity.Team
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo
import com.ffii.tsms.modules.data.service.TeamService import com.ffii.tsms.modules.data.service.TeamService
import com.ffii.tsms.modules.data.web.models.NewStaffRequest
import com.ffii.tsms.modules.data.web.models.NewTeamRequest
import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletRequest
import jakarta.validation.Valid
import org.springframework.web.bind.ServletRequestBindingException import org.springframework.web.bind.ServletRequestBindingException
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.*




@RestController @RestController
@RequestMapping("/team") @RequestMapping("/team")
class TeamController(private val teamService: TeamService) { class TeamController(private val teamService: TeamService) {


@GetMapping
fun allStaff(): List<Team> {
return teamService.allTeam()
}

@PostMapping("/save")
fun saveStaff(@Valid @RequestBody newTeam: NewTeamRequest): Team {
return teamService.saveTeam(newTeam)
}

@GetMapping("/combo") @GetMapping("/combo")
@Throws(ServletRequestBindingException::class) @Throws(ServletRequestBindingException::class)
fun combo(request: HttpServletRequest?): RecordsRes<Map<String, Any>> { fun combo(request: HttpServletRequest?): RecordsRes<Map<String, Any>> {


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

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

import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.NotNull
import java.time.LocalDate

data class NewTeamRequest (
@field:NotNull(message = "ids cannot be empty")
val addStaffIds: List<Long>
)

正在加载...
取消
保存