|
|
|
@@ -96,9 +96,18 @@ open class StockInLineService( |
|
|
|
|
|
|
|
open fun assignLotNo(): String { |
|
|
|
val prefix = "LT" |
|
|
|
val midfix = CodeGenerator.DEFAULT_MIDFIX |
|
|
|
val latestCode = inventoryLotRepository.findLatestLotNoByPrefix("${prefix}-${midfix}") |
|
|
|
return CodeGenerator.generateNo(prefix = prefix, latestCode = latestCode) |
|
|
|
// ✅ 每次调用都取今天的日期段 |
|
|
|
val midfix = LocalDate.now().format(CodeGenerator.DEFAULT_FORMATTER) |
|
|
|
|
|
|
|
// ✅ 用同一个 midfix 去查最新记录 |
|
|
|
val latestCode = inventoryLotRepository.findLatestLotNoByPrefix("$prefix-$midfix") |
|
|
|
|
|
|
|
// ✅ 并且把同一个 midfix 传给 CodeGenerator |
|
|
|
return CodeGenerator.generateNo( |
|
|
|
prefix = prefix, |
|
|
|
midfix = midfix, |
|
|
|
latestCode = latestCode |
|
|
|
) |
|
|
|
} |
|
|
|
|
|
|
|
@Throws(IOException::class) |
|
|
|
@@ -791,7 +800,7 @@ open class StockInLineService( |
|
|
|
|
|
|
|
// Step 2: Create a row in stock_in_line table |
|
|
|
val item = itemRepository.findById(request.itemId).orElseThrow() |
|
|
|
|
|
|
|
val newLotNo = request.lotNo ?: assignLotNo() |
|
|
|
val stockInLine = StockInLine().apply { |
|
|
|
this.item = item |
|
|
|
this.itemNo = request.itemNo |
|
|
|
@@ -802,7 +811,7 @@ open class StockInLineService( |
|
|
|
this.productionDate = LocalDateTime.now() |
|
|
|
this.expiryDate = request.expiryDate |
|
|
|
this.status = StockInLineStatus.COMPLETE.status |
|
|
|
this.lotNo = request.lotNo ?: assignLotNo() |
|
|
|
this.lotNo = newLotNo |
|
|
|
this.productLotNo = request.productLotNo |
|
|
|
this.dnNo = request.dnNo |
|
|
|
this.type = request.type |
|
|
|
@@ -811,7 +820,7 @@ open class StockInLineService( |
|
|
|
|
|
|
|
|
|
|
|
// Step 3: Create a row in inventory_lot table |
|
|
|
val lotNo = request.lotNo ?: assignLotNo() |
|
|
|
val lotNo = newLotNo |
|
|
|
val inventoryLot = InventoryLot().apply { |
|
|
|
this.item = item |
|
|
|
this.stockInLine = savedStockInLine |
|
|
|
|