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