From d2da1b3557f1427d44d88dc5bf2e18fcbf8064bd Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Fri, 26 Apr 2024 16:12:08 +0800 Subject: [PATCH] update teamLead col --- .../ffii/tsms/modules/data/entity/Team.java | 14 +++++++--- .../modules/data/service/StaffsService.kt | 18 ++++++++----- .../tsms/modules/data/service/TeamService.kt | 26 +++++++++++++++---- .../tsms/modules/data/web/TeamController.kt | 4 +-- .../20240426_01_derek/01_addTeamLeadCol.sql | 5 ++++ 5 files changed, 50 insertions(+), 17 deletions(-) create mode 100644 src/main/resources/db/changelog/changes/20240426_01_derek/01_addTeamLeadCol.sql diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Team.java b/src/main/java/com/ffii/tsms/modules/data/entity/Team.java index e5e1b5e..784d0c3 100644 --- a/src/main/java/com/ffii/tsms/modules/data/entity/Team.java +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Team.java @@ -1,9 +1,8 @@ package com.ffii.tsms.modules.data.entity; import com.ffii.core.entity.BaseEntity; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Table; +import com.ffii.tsms.modules.user.entity.User; +import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; @Entity @@ -20,6 +19,11 @@ public class Team extends BaseEntity { @Column(name = "code", length = 30) private String code; + @NotNull + @OneToOne + @JoinColumn(name = "teamLead", unique = true) + private Staff staff; + public String getDescription() { return description; } @@ -43,4 +47,8 @@ public class Team extends BaseEntity { public void setCode(String code) { this.code = code; } + + public Staff getStaff() { return staff;} + + public void setStaff(Staff staff) { this.staff = staff; } } \ No newline at end of file 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 72cfad7..49f75d2 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 @@ -80,13 +80,6 @@ open class StaffsService( @Transactional(rollbackFor = [Exception::class]) open fun saveStaff(req: NewStaffRequest): Staff { - val user = userRepository.saveAndFlush( - User().apply { - username = req.name - password = passwordEncoder.encode("mms1234") - name = req.name - } - ) val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow() val joinPosition = positionRepository.findById(req.joinPositionId).orElseThrow() val company = companyRepository.findById(req.companyId).orElseThrow() @@ -97,6 +90,17 @@ open class StaffsService( // val salaryEffective = salaryEffectiveRepository.findById(req.salaryEffId).orElseThrow() val department = departmentRepository.findById(req.departmentId).orElseThrow() + val user = userRepository.saveAndFlush( + User().apply { + username = req.name + password = passwordEncoder.encode("mms1234") + name = req.name + phone1 = req.phone1 +// phone2 = req.phone2 ?: null + email = req.email ?: null + } + ) + // // TODO: Add tasks, milestones, allocated val staff = Staff().apply { joinDate = req.joinDate 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 4040b18..ad890d5 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 @@ -20,8 +20,20 @@ open class TeamService( private val jdbcDao: JdbcDao, ) : AbstractBaseEntityService(jdbcDao, teamRepository) { - open fun allTeam(): List { - return teamRepository.findByDeletedFalse(); +// open fun allTeam(): List { +// return teamRepository.findByDeletedFalse(); +// } + + open fun allTeam(args: Map): List> { + val sql = StringBuilder("select" + + " t.*, " + + " s.staffId, " + + " s.name as staffName" + + " from team t " + + " left join staff s on t.teamLead = s.id " + + " where t.deleted = false " + ) + return jdbcDao.queryForList(sql.toString(), args) } @Transactional(rollbackFor = [Exception::class]) @@ -53,21 +65,25 @@ open class TeamService( open fun updateTeam(req: NewTeamRequest, team: Team): Team { val addIds = req.addStaffIds ?: listOf() + val teamLead: Staff val teamName: String val teamCode: String if (addIds.isNotEmpty()) { - val teamLead = staffRepository.findById(addIds[0].toLong()).orElseThrow() - teamName = "Team " + teamLead.name + val leader = staffRepository.findById(addIds[0].toLong()).orElseThrow() + teamName = "Team " + leader.name + teamLead = leader; - val initials = teamLead.name.split(" ").map { it.first() } + val initials = leader.name.split(" ").map { it.first() } teamCode = initials.joinToString("") } else { + teamLead = team.staff teamName = team.name teamCode = team.code } team.apply { + this.staff = teamLead name = teamName code = teamCode description = req.description diff --git a/src/main/java/com/ffii/tsms/modules/data/web/TeamController.kt b/src/main/java/com/ffii/tsms/modules/data/web/TeamController.kt index 5af73db..871c268 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/TeamController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/TeamController.kt @@ -18,8 +18,8 @@ import org.springframework.web.bind.annotation.* class TeamController(private val teamService: TeamService) { @GetMapping - fun allStaff(): List { - return teamService.allTeam() + fun allStaff(args: Map): List> { + return teamService.allTeam(args) } @PostMapping("/save") diff --git a/src/main/resources/db/changelog/changes/20240426_01_derek/01_addTeamLeadCol.sql b/src/main/resources/db/changelog/changes/20240426_01_derek/01_addTeamLeadCol.sql new file mode 100644 index 0000000..d5c1a48 --- /dev/null +++ b/src/main/resources/db/changelog/changes/20240426_01_derek/01_addTeamLeadCol.sql @@ -0,0 +1,5 @@ +-- liquibase formatted sql +-- changeset derek:add teamLead col in team + +ALTER TABLE `team` + ADD COLUMN `teamLead` int(11) NULL AFTER `code`;