浏览代码

no message

master
[email protected] 22 小时前
父节点
当前提交
17cd8a64cb
共有 2 个文件被更改,包括 63 次插入0 次删除
  1. +52
    -0
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt
  2. +11
    -0
      src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt

+ 52
- 0
src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt 查看文件

@@ -419,4 +419,56 @@ open class PlasticBagPrinterService(
println("Han's Laser TCP 連接已關閉")
}
}

fun sendDataFlex6330Zpl(request: PrintRequest) {
Socket().use { socket ->
try {
// Connect with timeout
socket.connect(InetSocketAddress(request.printerIp, request.printerPort), 5000)
socket.soTimeout = 5000 // read timeout if expecting response (optional)

val out = socket.getOutputStream()

// Build ZPL dynamically
val zpl = buildString {
append("^XA\n")
append("^PW500\n") // Print width ~42mm @300dpi; adjust 400-630 based on head
append("^LL280\n") // Label height ~23mm; tune for your pouch
append("^PON\n") // Normal orientation
append("^CI28\n") // UTF-8 / extended char set for Chinese

// Chinese product name / description (top)
append("^FO20,20^A@N,36,36,E:SIMSUN.FNT^FD${request.itemName}^FS\n") // Assumes font loaded

// Item code
append("^FO20,80^A0N,32,32^FD${request.itemCode}^FS\n")

// Expiry date
append("^FO20,120^A0N,28,28^FDEXP: ${request.expiryDate}^FS\n")

// Lot / Batch No.
append("^FO20,160^A0N,28,28^FDLOT: ${request.lotNo}^FS\n")

// QR code encoding lotNo (or combine: item|lot|exp)
// Position right side, mag 6 (~good size), model 2
val qrData = request.lotNo // or "${request.itemCode}|${request.lotNo}|${request.expiryDate}"
append("^FO320,20^BQN,2,6^FDQA,$qrData^FS\n") // QA, prefix for alphanumeric mode

append("^XZ\n")
}

// Send as bytes (UTF-8 safe)
out.write(zpl.toByteArray(Charsets.UTF_8))
out.flush()

println("DataFlex 6330 ZPL: Print job sent to ${request.printerIp}:${request.printerPort}")
// Optional: read response if printer echoes anything (rare in raw ZPL)
// val response = socket.getInputStream().readBytes().decodeToString()
// println("Response: $response")

} catch (e: Exception) {
throw RuntimeException("DataFlex 6330 ZPL communication failed: ${e.message}", e)
}
}
}
}

+ 11
- 0
src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt 查看文件

@@ -46,6 +46,7 @@ class PlasticBagPrinterController(
response.outputStream.flush()
}

/*
@PostMapping("/print-dataflex")
fun printDataFlex(@RequestBody request: PrintRequest): ResponseEntity<String> {
return try {
@@ -54,6 +55,16 @@ class PlasticBagPrinterController(
} catch (e: Exception) {
ResponseEntity.status(500).body("Error: ${e.message}")
}
}*/

@PostMapping("/print-dataflex")
fun printDataFlex6330Zpl(@RequestBody request: PrintRequest): ResponseEntity<String> {
return try {
plasticBagPrinterService.sendDataFlex6330Zpl(request)
ResponseEntity.ok("DataFlex 6330 ZPL print command sent successfully to ${request.printerIp}:${request.printerPort}")
} catch (e: Exception) {
ResponseEntity.status(500).body("Error sending ZPL to DataFlex 6330: ${e.message}")
}
}

@PostMapping("/print-laser")


正在加载...
取消
保存