|
|
@@ -1,26 +1,74 @@ |
|
|
|
package com.ffii.fpsms.modules.purchaseOrder.service |
|
|
|
|
|
|
|
import com.ffii.core.support.AbstractBaseEntityService |
|
|
|
import com.ffii.core.support.JdbcDao |
|
|
|
import com.ffii.fpsms.m18.entity.M18DataLogRepository |
|
|
|
import com.ffii.fpsms.modules.master.entity.ShopRepository |
|
|
|
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.PurchaseOrderInfo |
|
|
|
import com.ffii.fpsms.modules.purchaseOrder.enums.PurchaseOrderStatus |
|
|
|
import com.ffii.fpsms.modules.purchaseOrder.web.model.SavePurchaseOrderRequest |
|
|
|
import com.ffii.fpsms.modules.purchaseOrder.web.model.SavePurchaseOrderResponse |
|
|
|
import com.ffii.fpsms.modules.stock.entity.StockInLine |
|
|
|
import com.ffii.fpsms.modules.stock.entity.StockInLineRepository |
|
|
|
import com.ffii.fpsms.modules.stock.entity.StockInRepository |
|
|
|
import org.springframework.stereotype.Service |
|
|
|
import java.util.HashMap |
|
|
|
import java.util.Objects |
|
|
|
import kotlin.jvm.optionals.getOrDefault |
|
|
|
import kotlin.jvm.optionals.getOrNull |
|
|
|
|
|
|
|
@Service |
|
|
|
open class PurchaseOrderService( |
|
|
|
val purchaseOrderRepository: PurchaseOrderRepository, |
|
|
|
val shopRepository: ShopRepository, |
|
|
|
val m18DataLogRepository: M18DataLogRepository, |
|
|
|
) { |
|
|
|
private val jdbcDao: JdbcDao, |
|
|
|
private val purchaseOrderRepository: PurchaseOrderRepository, |
|
|
|
private val polRepository: PurchaseOrderLineRepository, |
|
|
|
private val shopRepository: ShopRepository, |
|
|
|
private val m18DataLogRepository: M18DataLogRepository, |
|
|
|
private val stockInRepository: StockInRepository, |
|
|
|
private val stockInLineRepository: StockInLineRepository, |
|
|
|
): AbstractBaseEntityService<PurchaseOrder, Long, PurchaseOrderRepository>(jdbcDao, purchaseOrderRepository) { |
|
|
|
open fun getPoList(): List<PurchaseOrderInfo> { |
|
|
|
return purchaseOrderRepository.findPurchaseOrderInfoByDeletedIsFalse() |
|
|
|
} |
|
|
|
open fun allPurchaseOrder(): List<PurchaseOrder> { |
|
|
|
return purchaseOrderRepository.findAll() |
|
|
|
} |
|
|
|
|
|
|
|
open fun getDetailedPo(id: Long): Map<String, Any> { |
|
|
|
val po = purchaseOrderRepository.findPurchaseOrderInfoByIdAndDeletedIsFalse(id) |
|
|
|
val pol = polRepository.findAllByPurchaseOrderIdAndDeletedIsFalse(id) |
|
|
|
// val pol = polRepository.findAllPurchaseOrderLineInfoByPurchaseOrderIdAndDeletedIsFalse(id) |
|
|
|
val stockIn = stockInRepository.findByPurchaseOrderIdAndDeletedFalse(id) |
|
|
|
val stockInLine = if (stockIn == null) listOf() else { |
|
|
|
stockInLineRepository.findAllByStockInIdAndDeletedFalse(stockIn.id!!) |
|
|
|
} |
|
|
|
val mappedPoLine = pol.map { thisPol -> |
|
|
|
val inLine = stockInLine.filter { it.itemNo.equals(thisPol.itemNo)} |
|
|
|
PoLineWithStockInLine( |
|
|
|
thisPol.id!!, |
|
|
|
thisPol.purchaseOrder!!.id!!, |
|
|
|
thisPol.itemNo!!, |
|
|
|
thisPol.item!!.name, |
|
|
|
thisPol.qty!!, |
|
|
|
thisPol.price!!, |
|
|
|
thisPol.status!!.toString(), |
|
|
|
inLine |
|
|
|
) |
|
|
|
} |
|
|
|
val result = mapOf( |
|
|
|
"id" to po.id, |
|
|
|
"code" to po.code, |
|
|
|
"orderDate" to po.orderDate, |
|
|
|
"estimatedArrivalDate" to po.estimatedArrivalDate, |
|
|
|
"completeDate" to po.completeDate, |
|
|
|
"status" to po.status, |
|
|
|
"pol" to mappedPoLine |
|
|
|
) |
|
|
|
return result |
|
|
|
} |
|
|
|
open fun findPurchaseOrderByM18Id(m18DataLogId: Long): PurchaseOrder? { |
|
|
|
return purchaseOrderRepository.findByM18DataLogIdAndDeletedIsFalse(m18DataLogId) |
|
|
|
} |
|
|
|