Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

master
CANCERYS\kw093 6 часов назад
Родитель
Сommit
7fbbcad738
5 измененных файлов: 14 добавлений и 12 удалений
  1. +7
    -9
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/LaserBag2AutoSendService.kt
  2. +1
    -1
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt
  3. +2
    -2
      src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt
  4. +1
    -0
      src/main/resources/application-prod.yml
  5. +3
    -0
      src/main/resources/application.yml

+ 7
- 9
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.LaserBag2JobSendResult
import com.ffii.fpsms.modules.jobOrder.web.model.LaserBag2SendRequest import com.ffii.fpsms.modules.jobOrder.web.model.LaserBag2SendRequest
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.time.LocalDate 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], * ([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. * 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 @Service
class LaserBag2AutoSendService( class LaserBag2AutoSendService(
private val plasticBagPrinterService: PlasticBagPrinterService, 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) 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( fun runAutoSend(
planStart: LocalDate, planStart: LocalDate,
limitPerRun: Int = 0, limitPerRun: Int = 0,
sendsPerJob: Int = DEFAULT_SENDS_PER_JOB,
delayBetweenSendsMs: Long = DEFAULT_DELAY_BETWEEN_SENDS_MS,
sendsPerJob: Int = defaultSendsPerJob,
delayBetweenSendsMs: Long = defaultDelayBetweenSendsMs,
): LaserBag2AutoSendReport { ): LaserBag2AutoSendReport {
val (reachable, laserIp, laserPort) = plasticBagPrinterService.probeLaserBag2Tcp() val (reachable, laserIp, laserPort) = plasticBagPrinterService.probeLaserBag2Tcp()
if (!reachable) { if (!reachable) {


+ 1
- 1
src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt Просмотреть файл

@@ -297,7 +297,7 @@ class PlasticBagPrinterService(
val codeStr = (itemCode ?: "").trim().replace(";", ",") val codeStr = (itemCode ?: "").trim().replace(";", ",")
val nameStr = (itemName ?: "").trim().replace(";", ",") val nameStr = (itemName ?: "").trim().replace(";", ",")
val payload = if (itemId != null && stockInLineId != null) { val payload = if (itemId != null && stockInLineId != null) {
"{\"itemID\":$itemId,\"stockInLineId\":$stockInLineId};$codeStr;$nameStr;;"
"{\"itemId\":$itemId,\"stockInLineId\":$stockInLineId};$codeStr;$nameStr;;"
} else { } else {
"0;$codeStr;$nameStr;;" "0;$codeStr;$nameStr;;"
} }


+ 2
- 2
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") @PostMapping("/print-laser-bag2")
fun printLaserBag2(@RequestBody request: LaserBag2SendRequest): ResponseEntity<LaserBag2SendResponse> { fun printLaserBag2(@RequestBody request: LaserBag2SendRequest): ResponseEntity<LaserBag2SendResponse> {
@@ -64,7 +64,7 @@ class PlasticBagPrinterController(


/** /**
* Same as /laserPrint row workflow: list job orders for [planStart] filtered by LASER_PRINT.itemCodes, * 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]. * For manual runs from /testing; scheduler uses [LaserBag2AutoSendScheduler].
*/ */
@PostMapping("/laser-bag2-auto-send") @PostMapping("/laser-bag2-auto-send")


+ 1
- 0
src/main/resources/application-prod.yml Просмотреть файл

@@ -39,6 +39,7 @@ laser:
bag2: bag2:
auto-send: auto-send:
enabled: true enabled: true
sends-per-job: 1


m18: m18:
config: config:


+ 3
- 0
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. # 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). # 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: laser:
bag2: bag2:
auto-send: auto-send:
enabled: false enabled: false
interval-ms: 60000 interval-ms: 60000
limit-per-run: 1 limit-per-run: 1
sends-per-job: 1
delay-between-sends-ms: 3000


bom: bom:
import: import:


Загрузка…
Отмена
Сохранить