From 669c900fca87c3cb2d6e58cb583e299813cbdc37 Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Tue, 20 Oct 2026 12:23:33 +0800 Subject: [PATCH] scan pick block --- .../service/DoWorkbenchMainService.kt | 18 ++++++++++++++++++ .../service/StockOutLineWorkbenchService.kt | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoWorkbenchMainService.kt b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoWorkbenchMainService.kt index e1563c53..ac81e3ee 100644 --- a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoWorkbenchMainService.kt +++ b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DoWorkbenchMainService.kt @@ -44,6 +44,7 @@ import com.ffii.fpsms.modules.stock.entity.SuggestPickLotRepository import com.ffii.fpsms.modules.stock.entity.enum.InventoryLotLineStatus import com.ffii.fpsms.modules.stock.entity.projection.StockOutLineInfo import com.ffii.fpsms.modules.stock.service.StockOutLineWorkbenchService +import com.ffii.fpsms.modules.stock.service.StockTakeLocationGuard import com.ffii.fpsms.modules.stock.service.SuggestedPickLotWorkbenchService import com.ffii.fpsms.modules.stock.service.StockLedgerLotSnapshot import com.ffii.fpsms.modules.stock.service.WorkbenchStockOutLinePickProgress @@ -136,6 +137,7 @@ open class DoWorkbenchMainService( private val transactionManager: PlatformTransactionManager, private val doReplenishmentService: DoReplenishmentService, private val doFloorSupplierSettingsService: DoFloorSupplierSettingsService, + private val stockTakeLocationGuard: StockTakeLocationGuard, ) { @PersistenceContext private lateinit var entityManager: EntityManager @@ -450,6 +452,22 @@ open class DoWorkbenchMainService( println("Scanned lot does not match pick line item") } + val stockTakeBlock = stockTakeLocationGuard.blockMessage( + scannedIll.warehouse?.id, + scannedIll.inventoryLot?.item?.id, + ) + if (stockTakeBlock != null) { + return MessageResponse( + id = sol.id, + name = "scan_pick", + code = "CONFLICT", + type = "workbench_scan_pick", + message = stockTakeBlock, + errorPosition = null, + entity = null, + ) + } + sol.inventoryLotLine = scannedIll val required = pol.qty ?: BigDecimal.ZERO diff --git a/src/main/java/com/ffii/fpsms/modules/stock/service/StockOutLineWorkbenchService.kt b/src/main/java/com/ffii/fpsms/modules/stock/service/StockOutLineWorkbenchService.kt index efcf4c3c..98b40de4 100644 --- a/src/main/java/com/ffii/fpsms/modules/stock/service/StockOutLineWorkbenchService.kt +++ b/src/main/java/com/ffii/fpsms/modules/stock/service/StockOutLineWorkbenchService.kt @@ -71,6 +71,7 @@ open class StockOutLineWorkbenchService( private val doPickOrderLineRepository: DoPickOrderLineRepository, private val doPickOrderLineRecordRepository: DoPickOrderLineRecordRepository, private val deliveryOrderRepository: DeliveryOrderRepository, + private val stockTakeLocationGuard: StockTakeLocationGuard, ) { @Transactional(rollbackFor = [Exception::class]) @@ -318,6 +319,22 @@ open class StockOutLineWorkbenchService( ) } + val stockTakeBlock = stockTakeLocationGuard.blockMessage( + scannedIll.warehouse?.id, + scannedIll.inventoryLot?.item?.id, + ) + if (stockTakeBlock != null) { + return MessageResponse( + id = sol.id, + name = "scan_pick", + code = "CONFLICT", + type = "workbench_scan_pick", + message = stockTakeBlock, + errorPosition = null, + entity = null, + ) + } + val polUomId = pol.uom?.id val lotUomId = scannedIll.stockUom?.uom?.id if (polUomId != null && lotUomId != null && polUomId != lotUomId) {