From 10fbc901b6494b4c879ead317d6724f03b67f1af Mon Sep 17 00:00:00 2001 From: "MSI\\2Fi" Date: Fri, 24 May 2024 17:12:01 +0800 Subject: [PATCH] Any remaining bugetPercentage filter --- .../modules/report/service/ReportService.kt | 29 +++++++++++++++---- .../modules/report/web/model/ReportRequest.kt | 2 +- 2 files changed, 25 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 b7954ba..81fc06a 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 @@ -2183,15 +2183,25 @@ open class ReportService( } } } + val result = costAndExpenseList.map { + item -> + val budget = (item["budget"] as? Double)?.times(0.8) ?: 0.0 + val budgetRemain = budget - (item["manhourExpenditure"] as? Double ?: 0.0) + val remainingPercent = (budgetRemain / budget) + item.toMutableMap().apply { + put("budgetPercentage", remainingPercent) + } + } - return costAndExpenseList + return result } fun createCostAndExpenseWorkbook( templatePath: String, costAndExpenseList: List>, teamId: Long?, - clientId: Long? + clientId: Long?, + budgetPercentage: Double? ): Workbook{ val resource = ClassPathResource(templatePath) val templateInputStream = resource.inputStream @@ -2230,9 +2240,18 @@ open class ReportService( row3Cell.setCellValue(client["name"] as String) } + + val filterList: List> + if(budgetPercentage != null){ + filterList = costAndExpenseList.filter { ((it["budgetPercentage"] as? Double) ?: 0.0) > budgetPercentage } + }else{ + filterList = costAndExpenseList + } + + rowNum = 6 - for(item in costAndExpenseList){ - val index = costAndExpenseList.indexOf(item) + for(item in filterList){ + val index = filterList.indexOf(item) val row: Row = sheet.getRow(rowNum) ?: sheet.createRow(rowNum) val cell = row.getCell(0) ?: row.createCell(0) cell.apply { @@ -2290,7 +2309,7 @@ open class ReportService( val costAndExpenseList = getCostAndExpense(request.clientId, request.teamId) - val workbook: Workbook = createCostAndExpenseWorkbook(COSTANDEXPENSE_REPORT, costAndExpenseList, request.clientId, request.teamId) + val workbook: Workbook = createCostAndExpenseWorkbook(COSTANDEXPENSE_REPORT, costAndExpenseList, request.teamId, request.clientId, request.budgetPercentage) val outputStream: ByteArrayOutputStream = ByteArrayOutputStream() workbook.write(outputStream) diff --git a/src/main/java/com/ffii/tsms/modules/report/web/model/ReportRequest.kt b/src/main/java/com/ffii/tsms/modules/report/web/model/ReportRequest.kt index 4dbc566..c36ca6a 100644 --- a/src/main/java/com/ffii/tsms/modules/report/web/model/ReportRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/report/web/model/ReportRequest.kt @@ -16,7 +16,7 @@ data class PandLReportRequest ( data class costAndExpenseRequest ( val teamId: Long?, val clientId: Long?, - val budgetPercentage: String, + val budgetPercentage: Double?, ) data class ProjectCashFlowReportRequest (