@@ -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( | ||||