| @@ -14,4 +14,16 @@ interface PurchaseOrderInfo { | |||||
| val status: String | val status: String | ||||
| @get:Value("#{target.supplier?.name}") | @get:Value("#{target.supplier?.name}") | ||||
| val supplier: String? | val supplier: String? | ||||
| } | |||||
| // 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? | |||||
| ) | |||||
| @@ -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.PurchaseOrderLineRepository | ||||
| import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrderRepository | 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.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.entity.projections.PurchaseOrderInfo | ||||
| import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus | import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderLineStatus | ||||
| import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus | import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus | ||||
| @@ -41,8 +42,25 @@ open class PurchaseOrderService( | |||||
| private val currencyService: CurrencyService, | private val currencyService: CurrencyService, | ||||
| private val shopService: ShopService, | private val shopService: ShopService, | ||||
| ) : AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) { | ) : AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) { | ||||
| open fun getPoList(): List<PurchaseOrderInfo> { | |||||
| return purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() | |||||
| open fun getPoList(): List<PurchaseOrderDataClass> { | |||||
| 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<PurchaseOrder> { | open fun allPurchaseOrder(): List<PurchaseOrder> { | ||||
| @@ -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.service.ItemsService | ||||
| import com.ffii.fpsms.modules.master.web.models.MessageResponse | import com.ffii.fpsms.modules.master.web.models.MessageResponse | ||||
| import com.ffii.fpsms.modules.purchaseOrder.entity.PurchaseOrder | 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.entity.projections.PurchaseOrderInfo | ||||
| import com.ffii.fpsms.modules.purchaseOrder.service.PurchaseOrderService | import com.ffii.fpsms.modules.purchaseOrder.service.PurchaseOrderService | ||||
| import org.springframework.web.bind.annotation.* | import org.springframework.web.bind.annotation.* | ||||
| @@ -15,7 +16,7 @@ class PurchaseOrderController( | |||||
| private val purchaseOrderService: PurchaseOrderService | private val purchaseOrderService: PurchaseOrderService | ||||
| ) { | ) { | ||||
| @GetMapping("/list") | @GetMapping("/list") | ||||
| fun getPoList(): List<PurchaseOrderInfo> { | |||||
| fun getPoList(): List<PurchaseOrderDataClass> { | |||||
| return purchaseOrderService.getPoList() | return purchaseOrderService.getPoList() | ||||
| } | } | ||||
| @GetMapping("/detail/{id}") // purchaseOrderId | @GetMapping("/detail/{id}") // purchaseOrderId | ||||
| @@ -2,6 +2,7 @@ package com.ffii.fpsms.modules.stock.entity | |||||
| import com.ffii.core.entity.BaseEntity | import com.ffii.core.entity.BaseEntity | ||||
| import com.ffii.fpsms.modules.master.entity.Items | 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.purchaseOrder.entity.PurchaseOrderLine | ||||
| import com.ffii.fpsms.modules.user.entity.User | import com.ffii.fpsms.modules.user.entity.User | ||||
| import jakarta.persistence.* | import jakarta.persistence.* | ||||
| @@ -25,6 +26,10 @@ open class StockInLine : BaseEntity<Long>() { | |||||
| @Column(name = "itemNo", nullable = false, length = 20) | @Column(name = "itemNo", nullable = false, length = 20) | ||||
| open var itemNo: String? = null | open var itemNo: String? = null | ||||
| @ManyToOne | |||||
| @JoinColumn(name = "purchaseOrderId") | |||||
| open var purchaseOrder: PurchaseOrder? = null | |||||
| @ManyToOne | @ManyToOne | ||||
| @JoinColumn(name = "purchaseOrderLineId") | @JoinColumn(name = "purchaseOrderLineId") | ||||
| open var purchaseOrderLine: PurchaseOrderLine? = null | open var purchaseOrderLine: PurchaseOrderLine? = null | ||||
| @@ -14,4 +14,5 @@ interface StockInLineRepository : AbstractRepository<StockInLine, Long> { | |||||
| fun findStockInLineInfoByIdInAndDeletedFalse(id: List<Long>): List<StockInLineInfo> | fun findStockInLineInfoByIdInAndDeletedFalse(id: List<Long>): List<StockInLineInfo> | ||||
| fun findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId: Long, status: String): List<StockInLineInfo> | fun findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId: Long, status: String): List<StockInLineInfo> | ||||
| fun findStockInLineInfoByIdAndStatusAndDeletedFalse(id: Long, status: String): Optional<StockInLineInfo> | fun findStockInLineInfoByIdAndStatusAndDeletedFalse(id: Long, status: String): Optional<StockInLineInfo> | ||||
| fun findAllStockInLineInfoByPurchaseOrderIdAndStatusStartsWithAndDeletedFalse(purchaseOrderId: Long, status: String): List<Optional<StockInLineInfo>> | |||||
| } | } | ||||
| @@ -84,6 +84,7 @@ open class StockInLineService( | |||||
| stockInLine.apply { | stockInLine.apply { | ||||
| this.item = item | this.item = item | ||||
| itemNo = item.code | itemNo = item.code | ||||
| this.purchaseOrder = purchaseOrderLine.purchaseOrder | |||||
| this.purchaseOrderLine = purchaseOrderLine | this.purchaseOrderLine = purchaseOrderLine | ||||
| this.stockIn = stockIn | this.stockIn = stockIn | ||||
| acceptedQty = request.acceptedQty | acceptedQty = request.acceptedQty | ||||
| @@ -270,6 +271,7 @@ open class StockInLineService( | |||||
| newStockInLine.apply { | newStockInLine.apply { | ||||
| this.item = stockInLine.item | this.item = stockInLine.item | ||||
| this.itemNo = stockInLine.itemNo | this.itemNo = stockInLine.itemNo | ||||
| this.purchaseOrder = stockInLine.purchaseOrderLine?.purchaseOrder | |||||
| this.purchaseOrderLine = stockInLine.purchaseOrderLine | this.purchaseOrderLine = stockInLine.purchaseOrderLine | ||||
| this.productLotNo = stockInLine.productLotNo | this.productLotNo = stockInLine.productLotNo | ||||
| this.receiptDate = stockInLine.receiptDate | this.receiptDate = stockInLine.receiptDate | ||||