service.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package service
  2. import (
  3. "fmt"
  4. "time"
  5. "wails-app/internal/dao"
  6. "wails-app/internal/global"
  7. )
  8. type PrintService struct{}
  9. func NewPrintService() *PrintService {
  10. return &PrintService{}
  11. }
  12. // PrintTicket 打印入场小票
  13. func (s *PrintService) PrintTicket(printerID uint, lotName, channelCode, plateNo string, ticketID uint, ticketNo string) error {
  14. var printer dao.Printer
  15. if err := global.GVA_DB.First(&printer, printerID).Error; err != nil {
  16. return fmt.Errorf("打印机未配置: id=%d", printerID)
  17. }
  18. sp, err := NewSerialPrinter(printer.PortName, printer.BaudRate)
  19. if err != nil {
  20. global.GVA_DB.Model(&printer).Update("status", "offline")
  21. return fmt.Errorf("连接打印机失败: %w", err)
  22. }
  23. defer sp.Close()
  24. now := time.Now().Format("02-01-2006 15:04:05")
  25. slipNo := fmt.Sprintf("%d", ticketID)
  26. write := func(data []byte) { sp.Write(data) }
  27. // Print ticket
  28. write(InitCmd)
  29. write(AlignCenterCmd)
  30. write(DoubleHeightCmd)
  31. write(BoldOnCmd)
  32. write(ESCPOS_Text("PARKING TICKET"))
  33. write(BoldOffCmd)
  34. write(NormalCmd)
  35. write(ESCPOS_Text(""))
  36. write(ESCPOS_Text(lotName))
  37. write(ESCPOS_Text("A-General Car"))
  38. write(ESCPOS_Text(""))
  39. write(BoldOnCmd)
  40. write(ESCPOS_Text("PARK AT YOUR OWN RISK"))
  41. write(BoldOffCmd)
  42. write(InitCmd)
  43. write(AlignLeftCmd)
  44. write(ESCPOS_Text("In-Time::" + now))
  45. if channelCode != "" {
  46. write(ESCPOS_Text("InGate::" + channelCode))
  47. }
  48. if plateNo != "" {
  49. write(ESCPOS_Text("Veh No::" + plateNo))
  50. }
  51. write(InitCmd)
  52. write(ESCPOS_Text(""))
  53. write(ESCPOS_Text("Slip No::" + slipNo))
  54. write(InitCmd)
  55. write(AlignCenterCmd)
  56. write(ESCPOS_Text(""))
  57. write(ESCPOS_QRCode(ticketNo))
  58. write(ESCPOS_Text(""))
  59. write(AlignCenterCmd)
  60. write(ESCPOS_Text("SCAN AND PAY WITH"))
  61. write(ESCPOS_Text("NEW THE CANADIA BANK APP"))
  62. write(InitCmd)
  63. write(ESCPOS_Text(""))
  64. write(ESCPOS_Text(""))
  65. write(CutPaperCmd)
  66. global.GVA_DB.Model(&printer).Update("status", "online")
  67. return nil
  68. }