From 64f465ccc7920674d269e2c71fbafa654c0b7e24 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Wed, 13 Aug 2025 17:19:42 +0800 Subject: [PATCH] update import stock take excel uom from sales to stock add supervision approval log related for dashboard --- .../master/entity/ItemUomRespository.kt | 1 + .../modules/master/service/ItemUomService.kt | 3 ++ .../stock/entity/StockInLineRepository.kt | 2 +- .../entity/SupervisionApprovalLogInfo.kt | 20 ++++++++++ .../SupervisionApprovalLogRepository.kt | 5 ++- .../modules/stock/service/InventoryService.kt | 14 +++++-- .../service/SupervisionApprovalLogService.kt | 38 +++++++++++++++++++ .../web/SupervisionApprovalLogController.kt | 19 ++++++++++ 8 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogInfo.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/service/SupervisionApprovalLogService.kt create mode 100644 src/main/java/com/ffii/fpsms/modules/stock/web/SupervisionApprovalLogController.kt diff --git a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt index 86d1a2d..be4d0a8 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/entity/ItemUomRespository.kt @@ -18,6 +18,7 @@ interface ItemUomRespository : AbstractRepository { fun findByItemIdAndPurchaseUnitIsTrueAndDeletedIsFalse(itemId: Serializable): ItemUom? fun findByItemIdAndSalesUnitIsTrueAndDeletedIsFalse(itemId: Serializable): ItemUom? + fun findByItemIdAndStockUnitIsTrueAndDeletedIsFalse(itemId: Serializable): ItemUom? fun findByItemM18IdAndPurchaseUnitIsTrueAndDeletedIsFalse(itemM18Id: Long): ItemUom? fun findBaseUnitByItemIdAndStockUnitIsTrueAndDeletedIsFalse(itemId: Long): ItemUom? diff --git a/src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt b/src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt index a35e4af..e1fae3a 100644 --- a/src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt +++ b/src/main/java/com/ffii/fpsms/modules/master/service/ItemUomService.kt @@ -34,6 +34,9 @@ open class ItemUomService( open fun findSalesUnitByItemId(itemId: Long): ItemUom? { return itemUomRespository.findByItemIdAndSalesUnitIsTrueAndDeletedIsFalse(itemId) } + open fun findStockUnitByItemId(itemId: Long): ItemUom? { + return itemUomRespository.findByItemIdAndStockUnitIsTrueAndDeletedIsFalse(itemId) + } open fun findPurchaseUnitByM18ItemId(m18ItemId: Long): ItemUom? { return itemUomRespository.findByItemM18IdAndPurchaseUnitIsTrueAndDeletedIsFalse(m18ItemId) 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 1003125..19ef084 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 @@ -8,9 +8,9 @@ import java.util.Optional @Repository interface StockInLineRepository : AbstractRepository { - fun findAllByStockInIdAndDeletedFalse(stockInId: Long): List fun findAllStockInLineInfoByStockInIdAndDeletedFalse(stockInId: Long): List fun findStockInLineInfoByIdAndDeletedFalse(id: Long): StockInLineInfo + fun findAllByStockInIdAndDeletedFalse(stockInId: Long): List fun findStockInLineInfoByIdInAndDeletedFalse(id: List): List fun findStockInLineInfoByPurchaseOrderLineIdAndStatusNotAndDeletedFalse(purchaseOrderLineId: Long, status: String): List fun findStockInLineInfoByPurchaseOrderLineIdAndDeletedFalse(purchaseOrderLineId: Long): List diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogInfo.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogInfo.kt new file mode 100644 index 0000000..1ddf36a --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogInfo.kt @@ -0,0 +1,20 @@ +package com.ffii.fpsms.modules.stock.entity + +import org.springframework.beans.factory.annotation.Value + +interface SupervisionApprovalLogInfo { + val id: Long + @get:Value("#{target.stockInLine?.stockIn.purchaseOrder.id}") + val poId: Long + @get:Value("#{target.stockInLine?.purchaseOrderLine.id}") + val polId: Long + @get:Value("#{target.stockInLine?.stockIn.code}") + val poCode: String + @get:Value("#{target.stockInLine?.id}") + val stockInLineId: Long + @get:Value("#{target.stockInLine?.item.name}") + val itemName: String + @get:Value("#{target.type}") + val escalationLevel: String + val reason: String +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogRepository.kt b/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogRepository.kt index 7e42bd6..10d64aa 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogRepository.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/entity/SupervisionApprovalLogRepository.kt @@ -1,8 +1,11 @@ package com.ffii.fpsms.modules.stock.entity import com.ffii.core.support.AbstractRepository +import com.ffii.fpsms.modules.user.entity.User import org.springframework.stereotype.Repository @Repository -interface SupervisionApprovalLogRepository : AbstractRepository { +interface SupervisionApprovalLogRepository: AbstractRepository { +// fun findAllByPersonInCharge(personInCharge: Long): List + fun findAllInfoByDeletedFalse(): List } \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/service/InventoryService.kt b/src/main/java/com/ffii/fpsms/modules/stock/service/InventoryService.kt index 2d2d4d9..2c53af9 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/service/InventoryService.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/service/InventoryService.kt @@ -243,13 +243,15 @@ open class InventoryService( ) requestList.add(request) val item = itemsRepository.findByCodeAndDeletedFalse(request.itemCode) + val salesUnit = itemUomService.findSalesUnitByItemId(itemId = item!!.id!!)!!.uom + val stockUnit = itemUomService.findStockUnitByItemId(itemId = item.id!!)!!.uom // purchase order line val purchaseOrderLine = PurchaseOrderLine() .apply { this.item = item this.itemNo = item.code - this.uom = salesUnit + this.uom = stockUnit this.purchaseOrder = po this.price = BigDecimal.ZERO this.status = PurchaseOrderLineStatus.COMPLETED @@ -301,13 +303,19 @@ open class InventoryService( val inventoryLotLineEntries = requestList.mapIndexed { index, request -> val inventoryLot = savedInventoryLotEntries[index] val warehouse = warehouseRepository.findAll().find { it.code == request.warehouseCode }!! - val salesUnit = itemUomService.findSalesUnitByItemId(itemId = inventoryLot.item!!.id!!) +// val salesUnit = itemUomService.findSalesUnitByItemId(itemId = inventoryLot.item!!.id!!) + val stockUnit = itemUomService.findStockUnitByItemId(itemId = inventoryLot.item!!.id!!) +// val zero = BigDecimal.ZERO +// val one = BigDecimal.ONE +// val ratio = (salesUnit?.ratioN ?: zero).divide(salesUnit?.ratioD ?: one) + InventoryLotLine().apply { this.inventoryLot = inventoryLot this.warehouse = warehouse this.inQty = request.qty this.status = InventoryLotLineStatus.AVAILABLE - this.stockUom = salesUnit + this.stockUom = stockUnit +// this.stockUom = salesUnit } } val savedInventoryLotLine = inventoryLotLineRepository.saveAllAndFlush(inventoryLotLineEntries) diff --git a/src/main/java/com/ffii/fpsms/modules/stock/service/SupervisionApprovalLogService.kt b/src/main/java/com/ffii/fpsms/modules/stock/service/SupervisionApprovalLogService.kt new file mode 100644 index 0000000..fa52e67 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/service/SupervisionApprovalLogService.kt @@ -0,0 +1,38 @@ +package com.ffii.fpsms.modules.stock.service + +import com.ffii.core.support.AbstractBaseEntityService +import com.ffii.core.support.JdbcDao +import com.ffii.fpsms.modules.common.SecurityUtils +import com.ffii.fpsms.modules.stock.entity.SupervisionApprovalLog +import com.ffii.fpsms.modules.stock.entity.SupervisionApprovalLogInfo +import com.ffii.fpsms.modules.stock.entity.SupervisionApprovalLogRepository +import org.springframework.stereotype.Service + +@Service +open class SupervisionApprovalLogService( + private val jdbcDao: JdbcDao, + private val supervisionApprovalLogRepository: SupervisionApprovalLogRepository + ): AbstractBaseEntityService(jdbcDao, supervisionApprovalLogRepository) { + open fun getAllLogs(): List { + return supervisionApprovalLogRepository.findAll() + } + + open fun getStockInLog(): List { + val stockInLog = getAllLogs().filter { + it.stockInLine != null + } + return stockInLog + } + open fun getLogByUser(): List { + val user = SecurityUtils.getUser().orElseThrow() + val filterLog = supervisionApprovalLogRepository + .findAllInfoByDeletedFalse() +// .findAll() +// .findAllByPersonInCharge(user.id!!).filter { +// it.stockInLine != null +// } + println("filterLog") + println(filterLog) + return filterLog + } +} \ No newline at end of file diff --git a/src/main/java/com/ffii/fpsms/modules/stock/web/SupervisionApprovalLogController.kt b/src/main/java/com/ffii/fpsms/modules/stock/web/SupervisionApprovalLogController.kt new file mode 100644 index 0000000..a0a1364 --- /dev/null +++ b/src/main/java/com/ffii/fpsms/modules/stock/web/SupervisionApprovalLogController.kt @@ -0,0 +1,19 @@ +package com.ffii.fpsms.modules.stock.web + +import com.ffii.fpsms.modules.stock.entity.SupervisionApprovalLog +import com.ffii.fpsms.modules.stock.entity.SupervisionApprovalLogInfo +import com.ffii.fpsms.modules.stock.service.SupervisionApprovalLogService +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController + +@RestController +@RequestMapping("/supervisionApprovalLog") +class SupervisionApprovalLogController( + private val supervisionApprovalLogService: SupervisionApprovalLogService +) { + @GetMapping("/stock-in") + fun getStockInQcLog(): List { + return supervisionApprovalLogService.getLogByUser() + } +} \ No newline at end of file