From 4219c7478d188057e280e66db2f3ce05b4366499 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Tue, 10 Jun 2025 17:28:09 +0800 Subject: [PATCH] update showing escalation in po list view --- .../entity/projections/PurchaseOrderInfo.kt | 14 +++++++++++- .../service/PurchaseOrderService.kt | 22 +++++++++++++++++-- .../web/PurchaseOrderController.kt | 3 ++- .../fpsms/modules/stock/entity/StockInLine.kt | 5 +++++ .../stock/entity/StockInLineRepository.kt | 1 + .../stock/service/StockInLineService.kt | 2 ++ 6 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderInfo.kt b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderInfo.kt index bf7d569..afa2f7a 100644 --- a/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderInfo.kt +++ b/src/main/java/com/ffii/fpsms/modules/purchaseOrder/entity/projections/PurchaseOrderInfo.kt @@ -14,4 +14,16 @@ interface PurchaseOrderInfo { val status: String @get:Value("#{target.supplier?.name}") val supplier: String? -} \ No newline at end of file +// var escalated: Boolean? +} + +data class PurchaseOrderDataClass( + val id: Long, + val code: String, + val orderDate: LocalDateTime?, + val estimatedArrivalDate: LocalDateTime?, + val completeDate: LocalDateTime?, + val status: String, + val supplier: String?, + var escalated: Boolean? +) \ No newline at end of file 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 1c58289..c2797e9 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 @@ -11,6 +11,7 @@ import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLineRepository import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PoLineWithStockInLine +import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderDataClass import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus @@ -41,8 +42,25 @@ open class PurchaseOrderService( private val currencyService: CurrencyService, private val shopService: ShopService, ) : AbstractBaseEntityService(jdbcDao, purchaseOrderRepository) { - open fun getPoList(): List { - return purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() + open fun getPoList(): List { + val list = purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() + val mappedList = list.map { + val escalated = stockInLineRepository.findAllStockInLineInfoByPurchaseOrderIdAndStatusStartsWithAndDeletedFalse( + purchaseOrderId = it.id, + status = "determine" + ) + PurchaseOrderDataClass( + id = it.id, + code = it.code, + orderDate = it.orderDate, + estimatedArrivalDate = it.estimatedArrivalDate, + completeDate = it.completeDate, + status = it.status, + supplier = it.supplier, + escalated = escalated.isNotEmpty(), + ) + } + return mappedList } open fun allPurchaseOrder(): List { 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 fd1b6d7..bbe8e45 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 @@ -5,6 +5,7 @@ import com.ffii.fpsms.modules.master.entity.Items import com.ffii.fpsms.modules.master.service.ItemsService import com.ffii.fpsms.modules.master.web.models.MessageResponse import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder +import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderDataClass import com.ffii.fpsms.modules.purchaseOrder.entity.projections.PurchaseOrderInfo import com.ffii.fpsms.modules.purchaseOrder.service.PurchaseOrderService import org.springframework.web.bind.annotation.* @@ -15,7 +16,7 @@ class PurchaseOrderController( private val purchaseOrderService: PurchaseOrderService ) { @GetMapping("/list") - fun getPoList(): List { + fun getPoList(): List { return purchaseOrderService.getPoList() } @GetMapping("/detail/{id}") // purchaseOrderId diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLine.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLine.kt index d93f1dc..6ce0170 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLine.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLine.kt @@ -2,6 +2,7 @@ package com.ffii.fpsms.modules.stock.entity import com.ffii.core.entity.BaseEntity import com.ffii.fpsms.modules.master.entity.Items +import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderLine import com.ffii.fpsms.modules.user.entity.User import jakarta.persistence.* @@ -25,6 +26,10 @@ open class StockInLine : BaseEntity() { @Column(name = "itemNo", nullable = false, length = 20) open var itemNo: String? = null + @ManyToOne + @JoinColumn(name = "purchaseOrderId") + open var purchaseOrder: PurchaseOrder? = null + @ManyToOne @JoinColumn(name = "purchaseOrderLineId") open var purchaseOrderLine: PurchaseOrderLine? = null diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt index 4453bbe..8759bff 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/StockInLineRepository.kt @@ -14,4 +14,5 @@ interface StockInLineRepository : AbstractRepository { fun findStockInLineInfoByIdInAndDeletedFalse(id: List): List fun findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId: Long, status: String): List fun findStockInLineInfoByIdAndStatusAndDeletedFalse(id: Long, status: String): Optional + fun findAllStockInLineInfoByPurchaseOrderIdAndStatusStartsWithAndDeletedFalse(purchaseOrderId: Long, status: String): List> } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt b/src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt index 84ac724..a19afa0 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt @@ -84,6 +84,7 @@ open class StockInLineService( stockInLine.apply { this.item = item itemNo = item.code + this.purchaseOrder = purchaseOrderLine.purchaseOrder this.purchaseOrderLine = purchaseOrderLine this.stockIn = stockIn acceptedQty = request.acceptedQty @@ -270,6 +271,7 @@ open class StockInLineService( newStockInLine.apply { this.item = stockInLine.item this.itemNo = stockInLine.itemNo + this.purchaseOrder = stockInLine.purchaseOrderLine?.purchaseOrder this.purchaseOrderLine = stockInLine.purchaseOrderLine this.productLotNo = stockInLine.productLotNo this.receiptDate = stockInLine.receiptDate