Procházet zdrojové kódy

refining the onpack zip

production
Fai Luk před 2 týdny
rodič
revize
8f99f1b258
2 změnil soubory, kde provedl 24 přidání a 4 odebrání
  1. +15
    -3
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt
  2. +9
    -1
      src/test/kotlin/com/ffii/fpsms/modules/jobOrder/service/OnPackExpiryZipStemTest.kt

+ 15
- 3
src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt Zobrazit soubor

@@ -69,11 +69,13 @@ data class OnPackZipResult(


private data class OnPackBmpExportItem( private data class OnPackBmpExportItem(
val codeLower: String, val codeLower: String,
/** ZIP / template file stem (e.g. `pp2211` or `pp2211-2` for expiry multi-JO). */
/** ZIP / template file stem. First JO stays `pp2211` so operators select that template. */
val fileStem: String, val fileStem: String,
val itemId: Long, val itemId: Long,
val stockInLineId: Long, val stockInLineId: Long,
val itemCode: String, val itemCode: String,
/** Code BMP text. When that item has 2+ JOs, first bag shows `PP2211-1`. */
val printItemCode: String,
val productName: String, val productName: String,
val planDate: LocalDate?, val planDate: LocalDate?,
) )
@@ -164,6 +166,11 @@ class PlasticBagPrinterService(
fun onPackExpiryFileStem(itemCodeLower: String, indexOneBased: Int, totalForItem: Int): String = fun onPackExpiryFileStem(itemCodeLower: String, indexOneBased: Int, totalForItem: Int): String =
if (totalForItem > 1 && indexOneBased > 1) "$itemCodeLower-$indexOneBased" else itemCodeLower if (totalForItem > 1 && indexOneBased > 1) "$itemCodeLower-$indexOneBased" else itemCodeLower


fun onPackExpiryPrintCode(itemCode: String, indexOneBased: Int, totalForItem: Int): String {
val code = itemCode.trim().uppercase()
return if (totalForItem > 1) "$code-$indexOneBased" else code
}

/** ISO `yyyy-MM-dd`, compact `yyyyMMdd`, or already `Expiry Date yyyyMMdd`. */ /** ISO `yyyy-MM-dd`, compact `yyyyMMdd`, or already `Expiry Date yyyyMMdd`. */
fun formatLaserExpiryParam(expiryDate: String?): String { fun formatLaserExpiryParam(expiryDate: String?): String {
val raw = expiryDate?.trim().orEmpty() val raw = expiryDate?.trim().orEmpty()
@@ -325,6 +332,7 @@ class PlasticBagPrinterService(
itemId = itemId, itemId = itemId,
stockInLineId = stockInLineId, stockInLineId = stockInLineId,
itemCode = itemCode, itemCode = itemCode,
printItemCode = itemCode,
productName = productName, productName = productName,
planDate = jo?.planStart?.toLocalDate(), planDate = jo?.planStart?.toLocalDate(),
) )
@@ -789,7 +797,11 @@ class PlasticBagPrinterService(
} }
if (includeExpiry) { if (includeExpiry) {
items.mapIndexed { index, item -> items.mapIndexed { index, item ->
item.copy(fileStem = onPackExpiryFileStem(codeLower, index + 1, items.size))
val n = index + 1
item.copy(
fileStem = onPackExpiryFileStem(codeLower, n, items.size),
printItemCode = onPackExpiryPrintCode(item.itemCode, n, items.size),
)
} }
} else { } else {
items items
@@ -879,7 +891,7 @@ class PlasticBagPrinterService(
ONPACK_PRODUCT_BMP_HEIGHT, ONPACK_PRODUCT_BMP_HEIGHT,
) )
val codeBmp = createMonochromeBitmapFixed( val codeBmp = createMonochromeBitmapFixed(
item.itemCode,
item.printItemCode,
ONPACK_CODE_BMP_WIDTH, ONPACK_CODE_BMP_WIDTH,
ONPACK_CODE_BMP_HEIGHT, ONPACK_CODE_BMP_HEIGHT,
) )


+ 9
- 1
src/test/kotlin/com/ffii/fpsms/modules/jobOrder/service/OnPackExpiryZipStemTest.kt Zobrazit soubor

@@ -8,13 +8,21 @@ import org.junit.jupiter.api.Test
class OnPackExpiryZipStemTest { class OnPackExpiryZipStemTest {


@Test @Test
fun expiry_file_stem_suffixes_from_second_job_only() {
fun expiry_file_stem_keeps_first_as_plain_item_code() {
assertEquals("pp2211", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 1, 1)) assertEquals("pp2211", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 1, 1))
assertEquals("pp2211", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 1, 2)) assertEquals("pp2211", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 1, 2))
assertEquals("pp2211-2", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 2, 2)) assertEquals("pp2211-2", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 2, 2))
assertEquals("pp2211-3", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 3, 3)) assertEquals("pp2211-3", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 3, 3))
} }


@Test
fun expiry_print_code_shows_dash_one_on_first_bag_when_multiple() {
assertEquals("PP2211", PlasticBagPrinterService.onPackExpiryPrintCode("PP2211", 1, 1))
assertEquals("PP2211-1", PlasticBagPrinterService.onPackExpiryPrintCode("pp2211", 1, 2))
assertEquals("PP2211-2", PlasticBagPrinterService.onPackExpiryPrintCode("PP2211", 2, 2))
assertEquals("PP2211-3", PlasticBagPrinterService.onPackExpiryPrintCode("PP2211", 3, 3))
}

@Test @Test
fun export_job_orders_sort_by_job_order_code_then_id() { fun export_job_orders_sort_by_job_order_code_then_id() {
val jo10 = JobOrder().apply { id = 10L; code = "JO-002" } val jo10 = JobOrder().apply { id = 10L; code = "JO-002" }


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