From 3a9f81cfe8557b1a2292926e82404d785216b3ac Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Tue, 3 Mar 2026 13:34:13 +0800 Subject: [PATCH] update purchase order --- .../service/PurchaseOrderService.kt | 43 +++++++++++++++++++ .../web/PurchaseOrderController.kt | 9 +++- .../web/model/SavePurchaseOrderResponse.kt | 9 ++++ 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt index a805538..d403378 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/service/PurchaseOrderService.kt @@ -38,6 +38,7 @@ import java.util.HashMap import java.util.Objects import kotlin.jvm.optionals.getOrDefault import kotlin.jvm.optionals.getOrNull +import com.ffii.fpsms.modules.purchaseOrder.web.model.PurchaseOrderSummary @Service open class PurchaseOrderService( @@ -64,6 +65,48 @@ open class PurchaseOrderService( // sql.append(" AND i.name like :name "); // } // } +open fun getPoSummariesByIds(ids: List): List { + if (ids.isEmpty()) return emptyList() + + val sql = """ + select + po.id, + po.code, + po.status, + po.orderDate, + po.estimatedArrivalDate, + s.name as supplierName, + exists( + select 1 from stock_in_line sil + where sil.purchaseOrderId = po.id + and sil.status like 'determine%' + and sil.deleted = false + ) as escalated + from purchase_order po + left join shop s on s.id = po.supplierId + where po.deleted = false + and po.id in (:ids) + order by po.orderDate desc + """.trimIndent() + + val args = mutableMapOf( + "ids" to ids + ) + + val list = jdbcDao.queryForList(sql, args) + + return list.map { + PurchaseOrderSummary( + id = (it["id"] as Number).toLong(), + code = it["code"] as String, + status = it["status"] as String?, + orderDate = it["orderDate"] as LocalDateTime?, + estimatedArrivalDate = it["estimatedArrivalDate"] as LocalDateTime?, + supplierName = it["supplierName"] as String?, + escalated = (it["escalated"] as Boolean?) ?: false, + ) + } +} open fun getPoList(args: MutableMap): List { val sql = StringBuilder( "select * from ( " + diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt index fa847d1..4e3c769 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/PurchaseOrderController.kt @@ -23,7 +23,7 @@ import org.springframework.data.domain.Page import org.springframework.data.domain.PageRequest import org.springframework.web.bind.annotation.* import java.io.File - +import com.ffii.fpsms.modules.purchaseOrder.web.model.PurchaseOrderSummary @RestController @RequestMapping("/po") class PurchaseOrderController( @@ -57,7 +57,12 @@ class PurchaseOrderController( return RecordsRes(paginatedList, fullList.size) } - + @GetMapping("/po/summary") + fun getPoSummaries( + @RequestParam ids: List + ): List { + return purchaseOrderService.getPoSummariesByIds(ids) + } @GetMapping("/testing") fun testing(request: HttpServletRequest) { diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderResponse.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderResponse.kt index 2edb05d..2bf36aa 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderResponse.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/web/model/SavePurchaseOrderResponse.kt @@ -14,4 +14,13 @@ data class SavePurchaseOrderResponse ( val estimatedArrivalDate: LocalDateTime?, val completeDate: LocalDateTime?, val status: String?, +) +data class PurchaseOrderSummary( + val id: Long, + val code: String, + val status: String?, + val orderDate: LocalDateTime?, + val estimatedArrivalDate: LocalDateTime?, + val supplierName: String?, + val escalated: Boolean = false, ) \ No newline at end of file