diff --git a/src/main/java/com/ffii/tsms/modules/data/service/GradeLogService.kt b/src/main/java/com/ffii/tsms/modules/data/service/GradeLogService.kt index 4dff7f9..9ec034d 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/GradeLogService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/GradeLogService.kt @@ -6,16 +6,42 @@ import com.ffii.tsms.modules.data.entity.Department import com.ffii.tsms.modules.data.entity.DepartmentRepository import com.ffii.tsms.modules.data.entity.GradeLog import com.ffii.tsms.modules.data.entity.GradeLogRepository +import com.ffii.tsms.modules.data.entity.GradeRepository import com.ffii.tsms.modules.data.entity.projections.GradeLogInfo +import com.ffii.tsms.modules.data.web.models.GradeHistory import org.springframework.stereotype.Service @Service open class GradeLogService( private val gradeLogRepository: GradeLogRepository, + private val gradeRepository: GradeRepository, private val jdbcDao: JdbcDao, ) : AbstractBaseEntityService(jdbcDao, gradeLogRepository) { open fun allGradeLog(staffId: Long): List { return gradeLogRepository.findGradeLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) } + open fun editGradeLog(gradeHistory: List, delGradeHistory: List) { + if (delGradeHistory.isNotEmpty()) { + delGradeHistory.forEach { + val gradeLog = gradeLogRepository.findById(it).orElseThrow() + gradeLog.apply { + deleted = true + } + } + } + if (gradeHistory.isNotEmpty()) { + gradeHistory.forEach { + val gradeLog = gradeLogRepository.findById(it.id).orElseThrow() + gradeLog.apply { + this.grade = gradeRepository.findById(it.grade).orElseThrow() + from = it.from + to = it.to + } + gradeLogRepository.save(gradeLog) + } + } + } + + } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/data/service/PositionLogService.kt b/src/main/java/com/ffii/tsms/modules/data/service/PositionLogService.kt index 9ba5cf2..ff1c1bc 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/PositionLogService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/PositionLogService.kt @@ -4,17 +4,41 @@ import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.JdbcDao import com.ffii.tsms.modules.data.entity.PositionLog import com.ffii.tsms.modules.data.entity.PositionLogRepository -import com.ffii.tsms.modules.data.entity.projections.GradeLogInfo +import com.ffii.tsms.modules.data.entity.PositionRepository import com.ffii.tsms.modules.data.entity.projections.PositionLogInfo +import com.ffii.tsms.modules.data.web.models.PositionHistory import org.springframework.stereotype.Service @Service open class PositionLogService ( private val positionLogRepository: PositionLogRepository, + private val positionRepository: PositionRepository, private val jdbcDao: JdbcDao, ) : AbstractBaseEntityService(jdbcDao, positionLogRepository) { open fun allPositionLog(staffId: Long): List { return positionLogRepository.findPositionLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) } + + open fun editPositionLog(positionHistory: List, delPositionHistory: List) { + if (delPositionHistory.isNotEmpty()) { + delPositionHistory.forEach { + val positionLog = positionLogRepository.findById(it).orElseThrow() + positionLog.apply { + deleted = true + } + } + } + if (positionHistory.isNotEmpty()) { + positionHistory.forEach { + val positionLog = positionLogRepository.findById(it.id).orElseThrow() + positionLog.apply { + this.position = positionRepository.findById(it.position).orElseThrow() + from = it.from + to = it.to + } + positionLogRepository.save(positionLog) + } + } + } } \ 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 9dd4710..6772c61 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 @@ -29,11 +29,14 @@ open class StaffsService( private val userRepository: UserRepository, private val positionRepository: PositionRepository, private val positionLogRepository: PositionLogRepository, + private val positionLogService: PositionLogService, private val companyRepository: CompanyRepository, private val gradeRepository: GradeRepository, private val gradeLogRepository: GradeLogRepository, + private val gradeLogService: GradeLogService, private val teamRepository: TeamRepository, private val teamLogRepository: TeamLogRepository, + private val teamLogService: TeamLogService, private val skillRepository: SkillRepository, private val salaryRepository: SalaryRepository, private val salaryEffectiveRepository: SalaryEffectiveRepository, @@ -288,7 +291,9 @@ open class StaffsService( } // salaryEffectiveService.saveSalaryEffective(staff.id!!, salary.salaryPoint.toLong()) salaryEffectiveService.updateSalaryEffective(staff.id!!, req.salaryEffectiveInfo?.sortedBy { it.date }, req.delSalaryEffectiveInfo) - + teamLogService.editTeamLog(req.teamHistory, req.delTeamHistory) + gradeLogService.editGradeLog(req.gradeHistory, req.delGradeHistory) + positionLogService.editPositionLog(req.positionHistory, req.delPositionHistory) return staffRepository.save(staff) } diff --git a/src/main/java/com/ffii/tsms/modules/data/service/TeamLogService.kt b/src/main/java/com/ffii/tsms/modules/data/service/TeamLogService.kt index efcfc71..3f551ca 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/TeamLogService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/TeamLogService.kt @@ -4,16 +4,40 @@ import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.JdbcDao import com.ffii.tsms.modules.data.entity.TeamLog import com.ffii.tsms.modules.data.entity.TeamLogRepository -import com.ffii.tsms.modules.data.entity.projections.PositionLogInfo +import com.ffii.tsms.modules.data.entity.TeamRepository import com.ffii.tsms.modules.data.entity.projections.TeamLogInfo +import com.ffii.tsms.modules.data.web.models.TeamHistory import org.springframework.stereotype.Service @Service open class TeamLogService ( private val teamLogRepository: TeamLogRepository, + private val teamRepository: TeamRepository, private val jdbcDao: JdbcDao, ) : AbstractBaseEntityService(jdbcDao, teamLogRepository) { open fun allTeamLog(staffId: Long): List { return teamLogRepository.findTeamLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) } + + open fun editTeamLog(teamHistory: List, delTeamHistory: List) { + if (delTeamHistory.isNotEmpty()) { + delTeamHistory.forEach { + val teamLog = teamLogRepository.findById(it).orElseThrow() + teamLog.apply { + deleted = true + } + } + } + if (teamHistory.isNotEmpty()) { + teamHistory.forEach { + val teamLog = teamLogRepository.findById(it.id).orElseThrow() + teamLog.apply { + this.team = teamRepository.findById(it.team).orElseThrow() + from = it.from + to = it.to + } + teamLogRepository.save(teamLog) + } + } + } } \ No newline at end of file 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 e923a38..8f64142 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 @@ -38,13 +38,13 @@ data class NewStaffRequest( val departReason: String?, val remark: String?, val salaryEffectiveInfo: List?, - val teamHistory: List?, - val gradeHistory: List?, - val positionHistory: List?, - val delSalaryEffectiveInfo: List?, - val delTeamHistory: List?, - val delGradeHistory: List?, - val delPositionHistory: List?, + val teamHistory: List, + val gradeHistory: List, + val positionHistory: List, + val delSalaryEffectiveInfo: List, + val delTeamHistory: List, + val delGradeHistory: List, + val delPositionHistory: List, ) data class SalaryEffectiveInfo(