From 5f24fb9943fb231517f024b9343285dda5f2f3b2 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Wed, 17 Jul 2024 16:33:51 +0800 Subject: [PATCH] update staff monthly report ot issue --- .../modules/report/service/ReportService.kt | 37 ++++++++++++++++--- .../modules/report/web/ReportController.kt | 3 +- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt b/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt index 0901353..69c651a 100644 --- a/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt +++ b/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt @@ -219,6 +219,7 @@ open class ReportService( staff: Staff, timesheets: List>, leaves: List>, + totalConsumed: List>, ): ByteArray { // Generate the Excel report with query results val workbook: Workbook = createStaffMonthlyWorkHourAnalysisReport( @@ -227,6 +228,7 @@ open class ReportService( staff, timesheets, leaves, + totalConsumed, MONTHLY_WORK_HOURS_ANALYSIS_REPORT ) @@ -1170,6 +1172,7 @@ open class ReportService( staff: Staff, timesheets: List>, leaves: List>, + totalConsumed: List>, templatePath: String, ): Workbook { var projectList: List = listOf() @@ -1179,7 +1182,7 @@ open class ReportService( println("----leaves-----") println(leaves) // result = timesheet record mapped - var result: Map = mapOf() + var result: Map = mapOf() if (timesheets.isNotEmpty()) { projectList = timesheets.map { "${it["code"]}\n ${it["name"]}" }.toList().distinct() result = timesheets.groupBy( @@ -1323,10 +1326,21 @@ open class ReportService( var otConsumed = 0.0 var leaveHours = 0.0 // normalConsumed data - if (timesheets.isNotEmpty()) { - timesheets.forEach { t -> - normalConsumed += t["normalConsumed"] as Double - otConsumed += t["otConsumed"] as Double +// if (timesheets.isNotEmpty()) { +// timesheets.forEach { t -> +// normalConsumed += t["normalConsumed"] as Double +// otConsumed += t["otConsumed"] as Double +// } +// } + if (totalConsumed.isNotEmpty()) { + totalConsumed.forEach{ t -> + val total = t["totalConsumed"] as Double + if (total > 8.0) { + normalConsumed += 8.0 + otConsumed += total - 8.0 + } else { + normalConsumed += total + } } } tempCell = sheet.getRow(rowIndex).createCell(2) @@ -1950,6 +1964,19 @@ open class ReportService( ) return jdbcDao.queryForList(sql.toString(), args) } + open fun getTotalConsumed(args: Map): List> { + val sql = StringBuilder("SELECT" + + " CAST(DATE_FORMAT(t.recordDate, '%d') AS SIGNED) AS recordDate, " + + " sum(t.normalConsumed) + sum(t.otConsumed) as totalConsumed " + + " from timesheet t " + + " left join project p on p.id = t.projectId " + + " where t.staffId = :staffId " + + " and t.recordDate BETWEEN :startDate and :endDate " + + " group by t.recordDate " + + " order by t.recordDate; " + ) + return jdbcDao.queryForList(sql.toString(), args) + } open fun getLeaves(args: Map): List> { val sql = StringBuilder( diff --git a/src/main/java/com/ffii/tsms/modules/report/web/ReportController.kt b/src/main/java/com/ffii/tsms/modules/report/web/ReportController.kt index 3b51afa..6c98fec 100644 --- a/src/main/java/com/ffii/tsms/modules/report/web/ReportController.kt +++ b/src/main/java/com/ffii/tsms/modules/report/web/ReportController.kt @@ -146,10 +146,11 @@ class ReportController( ) val timesheets = excelReportService.getTimesheet(args) val leaves = excelReportService.getLeaves(args) + val totalConsumed = excelReportService.getTotalConsumed(args) print(timesheets) print(leaves) - val reportResult: ByteArray = excelReportService.generateStaffMonthlyWorkHourAnalysisReport(thisMonth, holidays, staff, timesheets, leaves) + val reportResult: ByteArray = excelReportService.generateStaffMonthlyWorkHourAnalysisReport(thisMonth, holidays, staff, timesheets, leaves, totalConsumed) // val mediaType: MediaType = MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") return ResponseEntity.ok() // .contentType(mediaType)