Procházet zdrojové kódy

print labels setup

master
kelvin.yau před 1 týdnem
rodič
revize
72c8a528c0
2 změnil soubory, kde provedl 64 přidání a 0 odebrání
  1. +21
    -0
      src/main/java/com/ffii/fpsms/modules/common/internalSetup/SetupController.kt
  2. +43
    -0
      src/main/java/com/ffii/fpsms/modules/common/internalSetup/inventorySetup.kt

+ 21
- 0
src/main/java/com/ffii/fpsms/modules/common/internalSetup/SetupController.kt Zobrazit soubor

@@ -186,4 +186,25 @@ class SetupController(
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse)
}
}

@PostMapping("/inventory/print-lot-stockin-labels-by-item-ids")
fun printLotStockInLabelsByItemIds(@RequestBody request: Map<String, Any>): ResponseEntity<Map<String, Any>> {
val printerId = (request["printerId"] as? Number)?.toLong()
val printQty = (request["printQty"] as? Number)?.toInt() ?: 1
val fromIndex = (request["fromIndex"] as? Number)?.toInt()
val toIndex = (request["toIndex"] as? Number)?.toInt()
val itemIds = (request["itemIds"] as? List<*>)?.mapNotNull { (it as? Number)?.toLong() } ?: emptyList()

if (printerId == null) return ResponseEntity.badRequest().body(mapOf("success" to false, "error" to "printerId is required"))
if (itemIds.isEmpty()) return ResponseEntity.badRequest().body(mapOf("success" to false, "error" to "itemIds is required"))

val printedCount = inventorySetup.printLotStockInLabelsByItemIds(
printerId = printerId,
itemIds = itemIds,
printQty = printQty,
fromIndex = fromIndex,
toIndex = toIndex
)
return ResponseEntity.ok(mapOf("success" to true, "message" to "Lot stock-in labels printed successfully", "printedCount" to printedCount))
}
}

+ 43
- 0
src/main/java/com/ffii/fpsms/modules/common/internalSetup/inventorySetup.kt Zobrazit soubor

@@ -311,4 +311,47 @@ open class InventorySetup {
return printedCount
}

@Transactional(rollbackFor = [Exception::class])
open fun printLotStockInLabelsByItemIds(
printerId: Long,
itemIds: List<Long>,
printQty: Int = 1,
fromIndex: Int? = null,
toIndex: Int? = null
): Int {
if (itemIds.isEmpty()) return 0

val allInventoryLotLines = inventoryLotLineRepository
.findAllByItemIdIn(itemIds)
.filter { it.deleted == false && it.inventoryLot?.stockInLine != null }

if (allInventoryLotLines.isEmpty()) return 0

val inventoryLotLinesToPrint = if (fromIndex != null && toIndex != null) {
val startIndex = fromIndex.coerceAtLeast(0)
val endIndex = toIndex.coerceAtMost(allInventoryLotLines.size - 1)
if (startIndex > endIndex || startIndex >= allInventoryLotLines.size) return 0
allInventoryLotLines.subList(startIndex, endIndex + 1)
} else {
allInventoryLotLines
}

var printedCount = 0
for ((index, inventoryLotLine) in inventoryLotLinesToPrint.withIndex()) {
val stockInLineId = inventoryLotLine.inventoryLot?.stockInLine?.id
?: throw IllegalArgumentException("Stock in line missing")
val actualIndex = if (fromIndex != null) fromIndex + index else index
println("Processing lot ${actualIndex + 1}/${allInventoryLotLines.size}: Lot No: ${inventoryLotLine.inventoryLot?.lotNo}, StockInLineId: $stockInLineId")
stockInLineService.printQrCode(
PrintQrCodeForSilRequest(
stockInLineId = stockInLineId,
printerId = printerId,
printQty = printQty
)
)
printedCount++
}
return printedCount
}

}

Načítá se…
Zrušit
Uložit