From b1568b4ec6fc3bf800d9549996adc4fbd84c6b27 Mon Sep 17 00:00:00 2001 From: Fai Luk Date: Wed, 1 Apr 2026 02:50:48 +0800 Subject: [PATCH 1/2] no message --- .../jobOrder/service/LaserBag2AutoSendService.kt | 16 +++++++--------- .../jobOrder/web/PlasticBagPrinterController.kt | 2 +- src/main/resources/application-prod.yml | 1 + src/main/resources/application.yml | 3 +++ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/LaserBag2AutoSendService.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/LaserBag2AutoSendService.kt index c884e9d..7be6d41 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/LaserBag2AutoSendService.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/LaserBag2AutoSendService.kt @@ -4,6 +4,7 @@ import com.ffii.fpsms.modules.jobOrder.web.model.LaserBag2AutoSendReport import com.ffii.fpsms.modules.jobOrder.web.model.LaserBag2JobSendResult import com.ffii.fpsms.modules.jobOrder.web.model.LaserBag2SendRequest import org.slf4j.LoggerFactory +import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Service import java.time.LocalDate @@ -12,25 +13,22 @@ import java.time.LocalDate * ([LASER_PRINT.itemCodes]), then sends Bag2-style laser TCP payloads via [PlasticBagPrinterService.sendLaserBag2Job], * which uses [com.ffii.fpsms.modules.common.SettingNames.LASER_PRINT_HOST] / [LASER_PRINT_PORT] from the database. * - * Matches /laserPrint row click: [sendsPerJob] rounds with [delayBetweenSendsMs] between rounds (default 3 × 3s like the frontend). + * [sendsPerJob] TCP rounds per job order (default from `laser.bag2.auto-send.sends-per-job`, typically 1). + * [sendLaserBag2Job] may still retry once internally on failure. */ @Service class LaserBag2AutoSendService( private val plasticBagPrinterService: PlasticBagPrinterService, + @Value("\${laser.bag2.auto-send.sends-per-job:1}") private val defaultSendsPerJob: Int, + @Value("\${laser.bag2.auto-send.delay-between-sends-ms:3000}") private val defaultDelayBetweenSendsMs: Long, ) { private val logger = LoggerFactory.getLogger(javaClass) - companion object { - /** Same as LaserPrint page (3 sends per row click). */ - const val DEFAULT_SENDS_PER_JOB = 3 - const val DEFAULT_DELAY_BETWEEN_SENDS_MS = 3000L - } - fun runAutoSend( planStart: LocalDate, limitPerRun: Int = 0, - sendsPerJob: Int = DEFAULT_SENDS_PER_JOB, - delayBetweenSendsMs: Long = DEFAULT_DELAY_BETWEEN_SENDS_MS, + sendsPerJob: Int = defaultSendsPerJob, + delayBetweenSendsMs: Long = defaultDelayBetweenSendsMs, ): LaserBag2AutoSendReport { val (reachable, laserIp, laserPort) = plasticBagPrinterService.probeLaserBag2Tcp() if (!reachable) { diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt index 101f295..727eae5 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt @@ -64,7 +64,7 @@ class PlasticBagPrinterController( /** * Same as /laserPrint row workflow: list job orders for [planStart] filtered by LASER_PRINT.itemCodes, - * then for each (up to [limitPerRun], 0 = all) send laser TCP commands using LASER_PRINT.host/port (3× with 3s gap per job). + * then for each (up to [limitPerRun], 0 = all) send laser TCP using LASER_PRINT.host/port (`laser.bag2.auto-send.sends-per-job` rounds per job). * For manual runs from /testing; scheduler uses [LaserBag2AutoSendScheduler]. */ @PostMapping("/laser-bag2-auto-send") diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index c30a17f..8108c0e 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -39,6 +39,7 @@ laser: bag2: auto-send: enabled: true + sends-per-job: 1 m18: config: diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d6275a9..35b7124 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -62,12 +62,15 @@ ngpcl: # Laser Bag2 (/laserPrint) auto-send: same as listing + TCP send using DB LASER_PRINT.host / port / itemCodes. # Scheduler is off by default. limit-per-run: max job orders per tick (1 = first matching only); 0 = all matches (heavy). +# sends-per-job: TCP payloads per job order per tick (1 = single send; each send may retry once on failure inside sendLaserBag2Job). laser: bag2: auto-send: enabled: false interval-ms: 60000 limit-per-run: 1 + sends-per-job: 1 + delay-between-sends-ms: 3000 bom: import: From 96dac6620f8915c6c8da266c37f6d466395242bd Mon Sep 17 00:00:00 2001 From: Fai Luk Date: Wed, 1 Apr 2026 02:52:20 +0800 Subject: [PATCH 2/2] no message --- .../fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt | 2 +- .../fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt index 29d3f64..06fe6e1 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt @@ -297,7 +297,7 @@ class PlasticBagPrinterService( val codeStr = (itemCode ?: "").trim().replace(";", ",") val nameStr = (itemName ?: "").trim().replace(";", ",") val payload = if (itemId != null && stockInLineId != null) { - "{\"itemID\":$itemId,\"stockInLineId\":$stockInLineId};$codeStr;$nameStr;;" + "{\"itemId\":$itemId,\"stockInLineId\":$stockInLineId};$codeStr;$nameStr;;" } else { "0;$codeStr;$nameStr;;" } diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt index 727eae5..cf7fec3 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt @@ -50,7 +50,7 @@ class PlasticBagPrinterController( } /** - * Bag2.py laser TCP protocol: `{"itemID":n,"stockInLineId":m};code;name;;` or `0;code;name;;` + * Bag2.py laser TCP protocol: `{"itemId":n,"stockInLineId":m};code;name;;` or `0;code;name;;` */ @PostMapping("/print-laser-bag2") fun printLaserBag2(@RequestBody request: LaserBag2SendRequest): ResponseEntity {