|
@@ -159,8 +159,10 @@ open class SalaryEffectiveService( |
|
|
|
|
|
|
|
|
open fun getMonthlyStaffSalaryData(startDate: LocalDate, endDate: LocalDate): List<MonthlyStaffSalaryData> { |
|
|
open fun getMonthlyStaffSalaryData(startDate: LocalDate, endDate: LocalDate): List<MonthlyStaffSalaryData> { |
|
|
val salaryEffective = salaryEffectiveRepository.findAll() |
|
|
val salaryEffective = salaryEffectiveRepository.findAll() |
|
|
.groupBy { Pair(it.date.year, it.date.month) } |
|
|
|
|
|
.map { (_, se) -> se.maxByOrNull { it.date }!!} |
|
|
|
|
|
|
|
|
.groupBy { Triple(it.staff.id, it.date.year, it.date.month) } |
|
|
|
|
|
.map { (_, se) -> |
|
|
|
|
|
se.maxByOrNull { it.date }!! |
|
|
|
|
|
} |
|
|
salaryEffective.sortedWith(compareBy({it.staff.staffId}, {it.date})) |
|
|
salaryEffective.sortedWith(compareBy({it.staff.staffId}, {it.date})) |
|
|
|
|
|
|
|
|
val staffs = staffRepository.findAll().sortedBy { it.staffId }.filter { it.deleted == false } |
|
|
val staffs = staffRepository.findAll().sortedBy { it.staffId }.filter { it.deleted == false } |
|
@@ -168,15 +170,23 @@ open class SalaryEffectiveService( |
|
|
val result = mutableListOf<MonthlyStaffSalaryData>() |
|
|
val result = mutableListOf<MonthlyStaffSalaryData>() |
|
|
val dateList = (0..ChronoUnit.MONTHS.between(startDate, endDate)).map { startDate.withDayOfMonth(1).plusMonths(it) } |
|
|
val dateList = (0..ChronoUnit.MONTHS.between(startDate, endDate)).map { startDate.withDayOfMonth(1).plusMonths(it) } |
|
|
|
|
|
|
|
|
|
|
|
// logger.info(dateList) |
|
|
staffs.forEach { staff -> |
|
|
staffs.forEach { staff -> |
|
|
dateList.forEach{ date -> |
|
|
dateList.forEach{ date -> |
|
|
val staffSalaryEffective = salaryEffective.filter { it.staff.staffId.equals(staff.staffId) } |
|
|
val staffSalaryEffective = salaryEffective.filter { it.staff.staffId.equals(staff.staffId) } |
|
|
var currentHourlyRate = staffSalaryEffective.filter { date.isEqual(it.date.withDayOfMonth(1)) || date.isAfter(it.date.withDayOfMonth(1)) }.minByOrNull { it.date } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var currentHourlyRate = staffSalaryEffective.filter { |
|
|
|
|
|
date.isEqual(it.date.withDayOfMonth(1)) || date.isAfter(it.date.withDayOfMonth(1)) |
|
|
|
|
|
}.maxByOrNull { it.date } |
|
|
|
|
|
|
|
|
if (currentHourlyRate == null) { |
|
|
if (currentHourlyRate == null) { |
|
|
currentHourlyRate = staffSalaryEffective.minByOrNull { it.date } |
|
|
currentHourlyRate = staffSalaryEffective.minByOrNull { it.date } |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// if (staff.staffId == "B374") { |
|
|
|
|
|
// logger.info("date:${date} | hourlyRate:${currentHourlyRate?.salary?.hourlyRate}") |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
result += MonthlyStaffSalaryData( |
|
|
result += MonthlyStaffSalaryData( |
|
|
staff = staff, |
|
|
staff = staff, |
|
|
date = date, |
|
|
date = date, |
|
|