| @@ -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.DepartmentRepository | ||||
| import com.ffii.tsms.modules.data.entity.GradeLog | import com.ffii.tsms.modules.data.entity.GradeLog | ||||
| import com.ffii.tsms.modules.data.entity.GradeLogRepository | 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.entity.projections.GradeLogInfo | ||||
| import com.ffii.tsms.modules.data.web.models.GradeHistory | |||||
| import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
| @Service | @Service | ||||
| open class GradeLogService( | open class GradeLogService( | ||||
| private val gradeLogRepository: GradeLogRepository, | private val gradeLogRepository: GradeLogRepository, | ||||
| private val gradeRepository: GradeRepository, | |||||
| private val jdbcDao: JdbcDao, | private val jdbcDao: JdbcDao, | ||||
| ) : AbstractBaseEntityService<GradeLog, Long, GradeLogRepository>(jdbcDao, gradeLogRepository) { | ) : AbstractBaseEntityService<GradeLog, Long, GradeLogRepository>(jdbcDao, gradeLogRepository) { | ||||
| open fun allGradeLog(staffId: Long): List<GradeLogInfo> { | open fun allGradeLog(staffId: Long): List<GradeLogInfo> { | ||||
| return gradeLogRepository.findGradeLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) | 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.core.support.JdbcDao | ||||
| import com.ffii.tsms.modules.data.entity.PositionLog | import com.ffii.tsms.modules.data.entity.PositionLog | ||||
| import com.ffii.tsms.modules.data.entity.PositionLogRepository | 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.entity.projections.PositionLogInfo | ||||
| import com.ffii.tsms.modules.data.web.models.PositionHistory | |||||
| import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
| @Service | @Service | ||||
| open class PositionLogService ( | open class PositionLogService ( | ||||
| private val positionLogRepository: PositionLogRepository, | private val positionLogRepository: PositionLogRepository, | ||||
| private val positionRepository: PositionRepository, | |||||
| private val jdbcDao: JdbcDao, | private val jdbcDao: JdbcDao, | ||||
| ) : AbstractBaseEntityService<PositionLog, Long, PositionLogRepository>(jdbcDao, positionLogRepository) { | ) : AbstractBaseEntityService<PositionLog, Long, PositionLogRepository>(jdbcDao, positionLogRepository) { | ||||
| open fun allPositionLog(staffId: Long): List<PositionLogInfo> { | open fun allPositionLog(staffId: Long): List<PositionLogInfo> { | ||||
| return positionLogRepository.findPositionLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) | 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 userRepository: UserRepository, | ||||
| private val positionRepository: PositionRepository, | private val positionRepository: PositionRepository, | ||||
| private val positionLogRepository: PositionLogRepository, | private val positionLogRepository: PositionLogRepository, | ||||
| private val positionLogService: PositionLogService, | |||||
| private val companyRepository: CompanyRepository, | private val companyRepository: CompanyRepository, | ||||
| private val gradeRepository: GradeRepository, | private val gradeRepository: GradeRepository, | ||||
| private val gradeLogRepository: GradeLogRepository, | private val gradeLogRepository: GradeLogRepository, | ||||
| private val gradeLogService: GradeLogService, | |||||
| private val teamRepository: TeamRepository, | private val teamRepository: TeamRepository, | ||||
| private val teamLogRepository: TeamLogRepository, | private val teamLogRepository: TeamLogRepository, | ||||
| private val teamLogService: TeamLogService, | |||||
| private val skillRepository: SkillRepository, | private val skillRepository: SkillRepository, | ||||
| private val salaryRepository: SalaryRepository, | private val salaryRepository: SalaryRepository, | ||||
| private val salaryEffectiveRepository: SalaryEffectiveRepository, | private val salaryEffectiveRepository: SalaryEffectiveRepository, | ||||
| @@ -288,7 +291,9 @@ open class StaffsService( | |||||
| } | } | ||||
| // salaryEffectiveService.saveSalaryEffective(staff.id!!, salary.salaryPoint.toLong()) | // salaryEffectiveService.saveSalaryEffective(staff.id!!, salary.salaryPoint.toLong()) | ||||
| salaryEffectiveService.updateSalaryEffective(staff.id!!, req.salaryEffectiveInfo?.sortedBy { it.date }, req.delSalaryEffectiveInfo) | 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) | return staffRepository.save(staff) | ||||
| } | } | ||||
| @@ -4,16 +4,40 @@ 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.TeamLog | import com.ffii.tsms.modules.data.entity.TeamLog | ||||
| import com.ffii.tsms.modules.data.entity.TeamLogRepository | 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.entity.projections.TeamLogInfo | ||||
| import com.ffii.tsms.modules.data.web.models.TeamHistory | |||||
| import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
| @Service | @Service | ||||
| open class TeamLogService ( | open class TeamLogService ( | ||||
| private val teamLogRepository: TeamLogRepository, | private val teamLogRepository: TeamLogRepository, | ||||
| private val teamRepository: TeamRepository, | |||||
| private val jdbcDao: JdbcDao, | private val jdbcDao: JdbcDao, | ||||
| ) : AbstractBaseEntityService<TeamLog, Long, TeamLogRepository>(jdbcDao, teamLogRepository) { | ) : AbstractBaseEntityService<TeamLog, Long, TeamLogRepository>(jdbcDao, teamLogRepository) { | ||||
| open fun allTeamLog(staffId: Long): List<TeamLogInfo> { | open fun allTeamLog(staffId: Long): List<TeamLogInfo> { | ||||
| return teamLogRepository.findTeamLogInfoByStaffIdAndDeletedFalseOrderByCreatedDesc(staffId).drop(1) | 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 departReason: String?, | ||||
| val remark: String?, | val remark: String?, | ||||
| val salaryEffectiveInfo: List<SalaryEffectiveInfo>?, | 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( | data class SalaryEffectiveInfo( | ||||