| @@ -1,11 +1,7 @@ | |||
| package com.ffii.tsms.modules.report.service | |||
| import com.ffii.core.support.JdbcDao | |||
| import com.ffii.tsms.modules.data.entity.Customer | |||
| import com.ffii.tsms.modules.data.entity.Grade | |||
| import com.ffii.tsms.modules.data.entity.Salary | |||
| import com.ffii.tsms.modules.data.entity.Staff | |||
| import com.ffii.tsms.modules.data.entity.Team | |||
| import com.ffii.tsms.modules.data.entity.* | |||
| import com.ffii.tsms.modules.data.service.SalaryEffectiveService | |||
| import com.ffii.tsms.modules.project.entity.Invoice | |||
| import com.ffii.tsms.modules.project.entity.Milestone | |||
| @@ -47,7 +43,7 @@ data class DayInfo(val date: String?, val weekday: String?) | |||
| open class ReportService( | |||
| private val jdbcDao: JdbcDao, | |||
| private val projectRepository: ProjectRepository, | |||
| private val salaryEffectiveService: SalaryEffectiveService | |||
| private val salaryEffectiveService: SalaryEffectiveService, private val salaryRepository: SalaryRepository | |||
| ) { | |||
| private val logger: Log = LogFactory.getLog(javaClass) | |||
| private val DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd") | |||
| @@ -2419,9 +2415,9 @@ open class ReportService( | |||
| val staffId = staffInfo["staffId"] as String | |||
| val staffSalaryData = staffSalaryDataList.find { it.staffId == staffId } | |||
| if (staffSalaryData != null) { | |||
| // if (staffSalaryData != null) { | |||
| val updatedFinancialYears = (staffInfo["financialYears"] as List<FinancialYear>).map { financialYear -> | |||
| updateFinancialYear(financialYear, staffSalaryData.salaryData) | |||
| updateFinancialYear(financialYear, staffSalaryData?.salaryData, staffInfo) | |||
| } | |||
| val updatedStaffInfo = staffInfo.toMutableMap().apply { | |||
| @@ -2429,16 +2425,27 @@ open class ReportService( | |||
| } | |||
| staffInfoList[index] = updatedStaffInfo | |||
| } | |||
| // } | |||
| } | |||
| } | |||
| fun updateFinancialYear(financialYear: FinancialYear, salaryDataList: List<SalaryEffectiveService.SalaryData>): FinancialYear { | |||
| fun updateFinancialYear(financialYear: FinancialYear, salaryDataList: List<SalaryEffectiveService.SalaryData>?, staffInfo: Map<String, Any>): FinancialYear { | |||
| println("====================== staffInfo: $staffInfo ===============================") | |||
| if(salaryDataList == null){ | |||
| return financialYear.copy( | |||
| hourlyRate = (staffInfo["hourlyRate"] as BigDecimal).toDouble(), | |||
| salaryPoint = (staffInfo["salaryPoint"] as Long).toInt() | |||
| ) | |||
| } | |||
| val relevantSalaryData = salaryDataList.find { salaryData -> | |||
| val salaryYearMonth = YearMonth.from(salaryData.financialYear) | |||
| salaryYearMonth >= financialYear.start && salaryYearMonth <= financialYear.end | |||
| } | |||
| println("====================== relevantSalaryData: $relevantSalaryData ===============================") | |||
| if (relevantSalaryData != null) { | |||
| return financialYear.copy( | |||
| hourlyRate = relevantSalaryData.hourlyRate.toDouble(), | |||
| @@ -2448,6 +2455,7 @@ open class ReportService( | |||
| val previousHourlyRate = findPreviousValue(salaryDataList, financialYear.start) { it.hourlyRate } | |||
| val previousSalaryPoint = findPreviousValue(salaryDataList, financialYear.start) { it.salaryPoint } | |||
| println("====================== staffInfo: $staffInfo ===============================") | |||
| return financialYear.copy( | |||
| hourlyRate = previousHourlyRate?.toDouble() ?: financialYear.hourlyRate, | |||
| salaryPoint = previousSalaryPoint ?: financialYear.salaryPoint | |||
| @@ -2745,6 +2753,8 @@ open class ReportService( | |||
| val row9Cell2 = row9.getCell(column+1) ?: row9.createCell(column+1) | |||
| sheet.addMergedRegion(CellRangeAddress(rowNum, rowNum, column, column + 1)) | |||
| row9Cell.setCellValue("${financialYears[i].start.format(monthFormat)} - ${financialYears[i].end.format(monthFormat)}") | |||
| CellUtil.setAlignment(row9Cell, HorizontalAlignment.CENTER); | |||
| CellUtil.setVerticalAlignment(row9Cell, VerticalAlignment.CENTER); | |||
| CellUtil.setCellStyleProperty(row9Cell, "borderBottom", BorderStyle.THIN) | |||
| CellUtil.setCellStyleProperty(row9Cell2, "borderBottom", BorderStyle.THIN) | |||
| column = column.plus(2) | |||