| @@ -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<GradeLog, Long, GradeLogRepository>(jdbcDao, gradeLogRepository) { | |||
| open fun allGradeLog(staffId: Long): List<GradeLogInfo> { | |||
| return gradeLogRepository.findGradeLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) | |||
| } | |||
| open fun editGradeLog(gradeHistory: List<GradeHistory>, delGradeHistory: List<Long>) { | |||
| 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) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -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<PositionLog, Long, PositionLogRepository>(jdbcDao, positionLogRepository) { | |||
| open fun allPositionLog(staffId: Long): List<PositionLogInfo> { | |||
| return positionLogRepository.findPositionLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) | |||
| } | |||
| open fun editPositionLog(positionHistory: List<PositionHistory>, delPositionHistory: List<Long>) { | |||
| 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) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -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) | |||
| } | |||
| @@ -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<TeamLog, Long, TeamLogRepository>(jdbcDao, teamLogRepository) { | |||
| open fun allTeamLog(staffId: Long): List<TeamLogInfo> { | |||
| return teamLogRepository.findTeamLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) | |||
| } | |||
| open fun editTeamLog(teamHistory: List<TeamHistory>, delTeamHistory: List<Long>) { | |||
| 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) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -38,13 +38,13 @@ data class NewStaffRequest( | |||
| val departReason: String?, | |||
| val remark: String?, | |||
| val salaryEffectiveInfo: List<SalaryEffectiveInfo>?, | |||
| 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>?, | |||
| 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( | |||