From 4d7f5ccdfbd67ce7e20d454dfe00bc9a8624747a Mon Sep 17 00:00:00 2001 From: gowthaman Date: Mon, 29 Apr 2024 22:38:00 +0530 Subject: [PATCH] more changes to inward inventory --- build.gradle.kts | 1 + src/main/kotlin/com/restapi/Main.kt | 2 +- .../com/restapi/controllers/Entities.kt | 1 - .../kotlin/com/restapi/controllers/Filters.kt | 46 +++++++++++-------- src/main/kotlin/com/restapi/domain/models.kt | 4 ++ src/main/resources/logback.xml | 2 +- 6 files changed, 34 insertions(+), 22 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 46026e4..747f748 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,6 +18,7 @@ repositories { dependencies { testImplementation(kotlin("test")) + implementation("net.jodah:expiringmap:0.5.11") implementation("javax.xml.bind:jaxb-api:2.3.1") implementation("com.sun.xml.bind:jaxb-impl:2.3.9") implementation("io.javalin:javalin:5.6.3") diff --git a/src/main/kotlin/com/restapi/Main.kt b/src/main/kotlin/com/restapi/Main.kt index cc87717..4d006d4 100644 --- a/src/main/kotlin/com/restapi/Main.kt +++ b/src/main/kotlin/com/restapi/Main.kt @@ -70,7 +70,7 @@ fun main(args: Array) { before("/api/*") { ctx -> NaiveRateLimit.requestPerTimeUnit( - ctx, appConfig.rateLimit().getOrDefault(30), TimeUnit.MINUTES + ctx, appConfig.rateLimit().getOrDefault(10000), TimeUnit.MINUTES ) val authToken = ctx.getAuthHeader() ?: throw UnauthorizedResponse() diff --git a/src/main/kotlin/com/restapi/controllers/Entities.kt b/src/main/kotlin/com/restapi/controllers/Entities.kt index f318138..c92b8a0 100644 --- a/src/main/kotlin/com/restapi/controllers/Entities.kt +++ b/src/main/kotlin/com/restapi/controllers/Entities.kt @@ -709,7 +709,6 @@ object VendorCtrl { fun getAll(ctx: Context) { val filters = ctx.bodyAsClass() - logger.info("filters = {}", filters) val excel: String? = ctx.queryParam("excel") val vendors = searchVendors(filters.common, filters.vendorFilters) if (excel !== null) { diff --git a/src/main/kotlin/com/restapi/controllers/Filters.kt b/src/main/kotlin/com/restapi/controllers/Filters.kt index d340e03..c70854e 100644 --- a/src/main/kotlin/com/restapi/controllers/Filters.kt +++ b/src/main/kotlin/com/restapi/controllers/Filters.kt @@ -2,7 +2,9 @@ package com.restapi.controllers import com.restapi.domain.* import com.restapi.domain.Session.database +import net.jodah.expiringmap.ExpiringMap import java.time.LocalDate +import java.util.concurrent.TimeUnit //constants const val IGNORE = "%" @@ -98,16 +100,16 @@ data class PaymentFilters( ) : CustomFilters - data class FleetFilters( val fleetNameLike: String = IGNORE -):CustomFilters +) : CustomFilters data class ReminderLogFilters( val reminderType: String = IGNORE, val actedUpon: Boolean? = null, val fleetId: Long? = null ) + fun applyVendorHelper(q: io.ebean.ExpressionList, vids: List?) { if (vids.isNullOrEmpty()) return // q.apply { @@ -163,17 +165,23 @@ fun searchVendors(commonFilters: CommonFilters, vendorFilters: VendorFilters): L return q.findList() } -fun searchProducts(commonFilters: CommonFilters, productFilters: ProductFilters): List { - val q = database.find(Product::class.java) - .where() - .ilike("name", "%" + productFilters.nameLike + "%") - .ilike("hsnCode", "%" + productFilters.hsnLike + "%") +private val productCache = ExpiringMap.builder() + .expiration(5, TimeUnit.MINUTES) + .build>() - if (productFilters.uom != UOM.ALL) { - q.eq("uom", productFilters.uom) +fun searchProducts(commonFilters: CommonFilters, productFilters: ProductFilters): List { + return productCache.computeIfAbsent("$commonFilters:$productFilters:${Session.currentUser()}") { + val q = database.find(Product::class.java) + .where() + .ilike("name", "%" + productFilters.nameLike + "%") + .ilike("hsnCode", "%" + productFilters.hsnLike + "%") + + if (productFilters.uom != UOM.ALL) { + q.eq("uom", productFilters.uom) + } + applySortHelper(q, commonFilters.sortBy, commonFilters.sortAsc) + q.findList() } - applySortHelper(q, commonFilters.sortBy, commonFilters.sortAsc) - return q.findList() } fun searchDocs(commonFilters: CommonFilters, documentFilters: DocumentFilters): List { @@ -267,17 +275,17 @@ fun searchInvoices(commonFilters: CommonFilters, invoiceFilters: InvoiceFilters) fun searchPayments(commonFilters: CommonFilters, paymentFilters: PaymentFilters): List { val q = database.find(Payment::class.java) - .where() + .where() .ilike("refNumber", "%" + paymentFilters.refNumberLike + "%") - // .ge("amount", paymentFilters.amountExceeds) - //.le("amount", paymentFilters.amountLessThan) + // .ge("amount", paymentFilters.amountExceeds) + //.le("amount", paymentFilters.amountLessThan) applyFromToHelper(q, commonFilters.from, commonFilters.to, "date") applyVendorHelper(q, commonFilters.vendor) applySortHelper(q, commonFilters.sortBy, commonFilters.sortAsc) return q.findList() } -fun searchFleets(filters: CommonFilters, fleetFilters: FleetFilters) : List { +fun searchFleets(filters: CommonFilters, fleetFilters: FleetFilters): List { val q = database.find(Fleet::class.java) .where() .ilike("name", "%" + fleetFilters.fleetNameLike + "%") @@ -290,17 +298,17 @@ fun searchFleets(filters: CommonFilters, fleetFilters: FleetFilters) : List { +fun searchReminderLogs(filters: CommonFilters, reminderLogFilters: ReminderLogFilters): List { val q = database.find(ReminderLog::class.java) .where() .ilike("reminder_type", reminderLogFilters.reminderType) - if(reminderLogFilters.actedUpon != null){ + if (reminderLogFilters.actedUpon != null) { q.eq("acted_upon", reminderLogFilters.actedUpon) } - if(reminderLogFilters.fleetId != null){ + if (reminderLogFilters.fleetId != null) { q.eq("fleet_sys_pk", reminderLogFilters.fleetId) } return q.findList() diff --git a/src/main/kotlin/com/restapi/domain/models.kt b/src/main/kotlin/com/restapi/domain/models.kt index b9338a5..264214b 100644 --- a/src/main/kotlin/com/restapi/domain/models.kt +++ b/src/main/kotlin/com/restapi/domain/models.kt @@ -17,6 +17,10 @@ data class POProducts( val productName: String = "", val unitPrice: Double = 0.0, val quantity: Double = 0.0, + val billQty: Double = 0.0, + val gstPct: Double = 0.0, + val taxableValue: Double = 0.0, + val totalValue: Double = 0.0, val description: String = "", val uom: String = "", ) diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 5ba8f96..ed0ecb9 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -21,7 +21,7 @@ - +