Explorar el Código

write team/position/team log when edit staff

add_swagger
MSI\derek hace 11 meses
padre
commit
bd18525097
Se han modificado 15 ficheros con 99 adiciones y 15 borrados
  1. +4
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/GradeLog.java
  2. +2
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/GradeLogRepository.java
  3. +4
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/PositionLog.java
  4. +4
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/PositionLogRepository.java
  5. +4
    -1
      src/main/java/com/ffii/tsms/modules/data/entity/TeamLog.java
  6. +2
    -2
      src/main/java/com/ffii/tsms/modules/data/entity/TeamLogRepository.java
  7. +2
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/GradeLogInfo.kt
  8. +2
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/PositionLogInfo.kt
  9. +2
    -0
      src/main/java/com/ffii/tsms/modules/data/entity/projections/TeamLogInfo.kt
  10. +1
    -1
      src/main/java/com/ffii/tsms/modules/data/service/GradeLogService.kt
  11. +1
    -1
      src/main/java/com/ffii/tsms/modules/data/service/PositionLogService.kt
  12. +43
    -1
      src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt
  13. +1
    -1
      src/main/java/com/ffii/tsms/modules/data/service/TeamLogService.kt
  14. +2
    -3
      src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt
  15. +25
    -1
      src/main/java/com/ffii/tsms/modules/data/web/models/NewStaffRequest.kt

+ 4
- 1
src/main/java/com/ffii/tsms/modules/data/entity/GradeLog.java Ver fichero

@@ -24,7 +24,6 @@ public class GradeLog extends BaseEntity<Long> {
@Column(name = "from", length = 30)
private LocalDate from;

@NotNull
@Column(name = "to", length = 30)
private LocalDate to;

@@ -43,4 +42,8 @@ public class GradeLog extends BaseEntity<Long> {
public LocalDate getFrom() { return from; }

public void setFrom(LocalDate from) { this.from = from; }

public LocalDate getTo() { return to; }

public void setTo(LocalDate to) { this.to = to; }
}

+ 2
- 1
src/main/java/com/ffii/tsms/modules/data/entity/GradeLogRepository.java Ver fichero

@@ -6,5 +6,6 @@ import com.ffii.tsms.modules.data.entity.projections.GradeLogInfo;
import java.util.List;

public interface GradeLogRepository extends AbstractRepository<GradeLog, Long> {
List<GradeLogInfo> findGradeLogInfoByStaffIdAndDeletedFalse(Long staffId);
List<GradeLogInfo> findGradeLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(Long staffId);
GradeLog findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(Long staffId);
}

+ 4
- 1
src/main/java/com/ffii/tsms/modules/data/entity/PositionLog.java Ver fichero

@@ -24,7 +24,6 @@ public class PositionLog extends BaseEntity<Long> {
@Column(name = "from", length = 30)
private LocalDate from;

@NotNull
@Column(name = "to", length = 30)
private LocalDate to;

@@ -43,4 +42,8 @@ public class PositionLog extends BaseEntity<Long> {
public LocalDate getFrom() { return from; }

public void setFrom(LocalDate from) { this.from = from; }

public LocalDate getTo() { return to; }

public void setTo(LocalDate to) { this.to = to; }
}

+ 4
- 1
src/main/java/com/ffii/tsms/modules/data/entity/PositionLogRepository.java Ver fichero

@@ -7,5 +7,8 @@ import com.ffii.tsms.modules.data.entity.projections.PositionLogInfo;
import java.util.List;

public interface PositionLogRepository extends AbstractRepository<PositionLog, Long> {
List<PositionLogInfo> findPositionLogInfoByStaffIdAndDeletedFalse(Long staffId);
List<PositionLogInfo> findPositionLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(Long staffId);

PositionLog findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(Long staffId);

}

+ 4
- 1
src/main/java/com/ffii/tsms/modules/data/entity/TeamLog.java Ver fichero

@@ -24,7 +24,6 @@ public class TeamLog extends BaseEntity<Long> {
@Column(name = "from", length = 30)
private LocalDate from;

@NotNull
@Column(name = "to", length = 30)
private LocalDate to;

@@ -43,4 +42,8 @@ public class TeamLog extends BaseEntity<Long> {
public LocalDate getFrom() { return from; }

public void setFrom(LocalDate from) { this.from = from; }

public LocalDate getTo() { return to; }

public void setTo(LocalDate to) { this.to = to; }
}

+ 2
- 2
src/main/java/com/ffii/tsms/modules/data/entity/TeamLogRepository.java Ver fichero

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

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

import java.util.List;

public interface TeamLogRepository extends AbstractRepository<TeamLog, Long> {
List<TeamLogInfo> findTeamLogInfoByStaffIdAndDeletedFalse(Long staffId);
List<TeamLogInfo> findTeamLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(Long staffId);
TeamLog findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(Long staffId);
}

+ 2
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/GradeLogInfo.kt Ver fichero

@@ -3,9 +3,11 @@ package com.ffii.tsms.modules.data.entity.projections
import com.ffii.tsms.modules.data.entity.Grade
import org.springframework.beans.factory.annotation.Value
import java.time.LocalDate
import java.time.LocalDateTime

interface GradeLogInfo {
val id: Long
val created: LocalDateTime

@get:Value("#{target.staff.id}")
val staffId: Long


+ 2
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/PositionLogInfo.kt Ver fichero

@@ -2,9 +2,11 @@ package com.ffii.tsms.modules.data.entity.projections
import com.ffii.tsms.modules.data.entity.Position
import org.springframework.beans.factory.annotation.Value
import java.time.LocalDate
import java.time.LocalDateTime

interface PositionLogInfo {
val id: Long
val created: LocalDateTime

@get:Value("#{target.staff.id}")
val staffId: Long


+ 2
- 0
src/main/java/com/ffii/tsms/modules/data/entity/projections/TeamLogInfo.kt Ver fichero

@@ -4,6 +4,7 @@ import com.ffii.tsms.modules.data.entity.Grade
import com.ffii.tsms.modules.data.entity.Team
import org.springframework.beans.factory.annotation.Value
import java.time.LocalDate
import java.time.LocalDateTime

interface TeamInfo {
val id: Long
@@ -23,6 +24,7 @@ interface TeamInfo {

interface TeamLogInfo {
val id: Long
val created: LocalDateTime

@get:Value("#{target.staff.id}")
val staffId: Long


+ 1
- 1
src/main/java/com/ffii/tsms/modules/data/service/GradeLogService.kt Ver fichero

@@ -15,7 +15,7 @@ open class GradeLogService(
private val jdbcDao: JdbcDao,
) : AbstractBaseEntityService<GradeLog, Long, GradeLogRepository>(jdbcDao, gradeLogRepository) {
open fun allGradeLog(staffId: Long): List<GradeLogInfo> {
return gradeLogRepository.findGradeLogInfoByStaffIdAndDeletedFalse(staffId)
return gradeLogRepository.findGradeLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1)
}

}

+ 1
- 1
src/main/java/com/ffii/tsms/modules/data/service/PositionLogService.kt Ver fichero

@@ -15,6 +15,6 @@ open class PositionLogService (
private val jdbcDao: JdbcDao,
) : AbstractBaseEntityService<PositionLog, Long, PositionLogRepository>(jdbcDao, positionLogRepository) {
open fun allPositionLog(staffId: Long): List<PositionLogInfo> {
return positionLogRepository.findPositionLogInfoByStaffIdAndDeletedFalse(staffId)
return positionLogRepository.findPositionLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1)
}
}

+ 43
- 1
src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt Ver fichero

@@ -28,9 +28,12 @@ open class StaffsService(
private val staffRepository: StaffRepository,
private val userRepository: UserRepository,
private val positionRepository: PositionRepository,
private val positionLogRepository: PositionLogRepository,
private val companyRepository: CompanyRepository,
private val gradeRepository: GradeRepository,
private val gradeLogRepository: GradeLogRepository,
private val teamRepository: TeamRepository,
private val teamLogRepository: TeamLogRepository,
private val skillRepository: SkillRepository,
private val salaryRepository: SalaryRepository,
private val salaryEffectiveRepository: SalaryEffectiveRepository,
@@ -49,7 +52,7 @@ open class StaffsService(
open fun allStaff(): List<StaffSearchInfo> {
return staffRepository.findStaffSearchInfoByAndDeletedFalseOrderByStaffIdAsc();
}
open fun StaffWithoutTeam(): List<StaffSearchInfo> {
open fun staffWithoutTeam(): List<StaffSearchInfo> {
return staffRepository.findStaffSearchInfoByAndDeletedFalseAndTeamIdIsNullOrderByStaffIdAsc();
}

@@ -214,6 +217,45 @@ open class StaffsService(
val salary = salaryRepository.findBySalaryPoint(salaryPoint).orElseThrow()
val department = if (req.departmentId != null && req.departmentId > 0L) departmentRepository.findById(req.departmentId).orElseThrow() else null

val latestTeam = teamLogRepository.findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(staff.id)
val latestGrade = gradeLogRepository.findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(staff.id)
val latestPosition = positionLogRepository.findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(staff.id)
if (latestTeam.team.id != req.teamId) {
val teamLog = TeamLog().apply {
this.staff = staff
this.team = team
from = LocalDate.now()
}
val lastRecordTeam = latestTeam.apply {
to = LocalDate.now()
}
teamLogRepository.save(teamLog)
teamLogRepository.save(lastRecordTeam)
}
if (latestGrade.grade.id != req.gradeId) {
val gradeLog = GradeLog().apply {
this.staff = staff
this.grade = grade
from = LocalDate.now()
}
val lastRecordGrade = latestGrade.apply {
to = LocalDate.now()
}
gradeLogRepository.save(gradeLog)
gradeLogRepository.save(lastRecordGrade)
}
if (latestPosition.position.id != req.currentPositionId) {
val positionLog = PositionLog().apply {
this.staff = staff
this.position = currentPosition
from = LocalDate.now()
}
val lastRecordPosition = latestPosition.apply {
to = LocalDate.now()
}
positionLogRepository.save(positionLog)
positionLogRepository.save(lastRecordPosition)
}
staff.apply {
joinDate = req.joinDate
name = req.name


+ 1
- 1
src/main/java/com/ffii/tsms/modules/data/service/TeamLogService.kt Ver fichero

@@ -14,6 +14,6 @@ open class TeamLogService (
private val jdbcDao: JdbcDao,
) : AbstractBaseEntityService<TeamLog, Long, TeamLogRepository>(jdbcDao, teamLogRepository) {
open fun allTeamLog(staffId: Long): List<TeamLogInfo> {
return teamLogRepository.findTeamLogInfoByStaffIdAndDeletedFalse(staffId)
return teamLogRepository.findTeamLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1)
}
}

+ 2
- 3
src/main/java/com/ffii/tsms/modules/data/web/StaffsController.kt Ver fichero

@@ -29,8 +29,8 @@ class StaffsController(private val staffsService: StaffsService) {
}

@GetMapping("/noteam")
fun StaffWithoutTeam(): List<StaffSearchInfo> {
return staffsService.StaffWithoutTeam()
fun staffWithoutTeam(): List<StaffSearchInfo> {
return staffsService.staffWithoutTeam()
}

@GetMapping("/staff-projects/{id}")
@@ -71,7 +71,6 @@ class StaffsController(private val staffsService: StaffsService) {
}
@PostMapping("/save")
fun saveStaff(@Valid @RequestBody newStaff: NewStaffRequest): Staff {
println("---------------------------------------------------------")
return staffsService.saveOrUpdate(newStaff)
}
}

+ 25
- 1
src/main/java/com/ffii/tsms/modules/data/web/models/NewStaffRequest.kt Ver fichero

@@ -38,11 +38,35 @@ data class NewStaffRequest(
val departReason: String?,
val remark: String?,
val salaryEffectiveInfo: List<SalaryEffectiveInfo>?,
val delSalaryEffectiveInfo: List<Long>?
val teamHistory: List<TeamHistory>?,
val gradeHistory: List<GradeHistory>?,
val positionHistory: List<PositionHistory>?,
val delSalaryEffectiveInfo: List<Long>?,
val delTeamHistory: List<Long>?,
val delGradeHistory: List<Long>?,
val delPositionHistory: List<Long>?,
)

data class SalaryEffectiveInfo(
val id: Long,
val salaryPoint: Long,
val date: LocalDate
)
data class TeamHistory(
val id: Long,
val team: Long,
val from: LocalDate,
val to: LocalDate?
)
data class GradeHistory(
val id: Long,
val grade: Long,
val from: LocalDate,
val to: LocalDate?
)
data class PositionHistory(
val id: Long,
val position: Long,
val from: LocalDate,
val to: LocalDate?
)

Cargando…
Cancelar
Guardar