From 2ab506d2e4c4396ee39effea63936c7c5148ed25 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Thu, 8 Jul 2021 18:19:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E6=9C=BA=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/event/event_tcp.go | 44 ++++++++++++++++++++++++++++- business/model/dao/dao_print.go | 36 +++++++++++++++++++++-- 2 files changed, 76 insertions(+), 4 deletions(-) diff --git a/business/jxstore/event/event_tcp.go b/business/jxstore/event/event_tcp.go index 1d033aac7..47a1d0cde 100644 --- a/business/jxstore/event/event_tcp.go +++ b/business/jxstore/event/event_tcp.go @@ -189,6 +189,48 @@ func handleConn(c net.Conn) { Status: printStatus2JxStatus(data[len(data)-8 : len(data)-6]), } tcpClient.Clients[printNo] = printInfo + //新开机的打印失败和错误的 + var ( + db = dao.GetDB() + ) + prints, _ := dao.GetPrintMsgsFail(db, time.Now().Add(time.Hour*3), time.Now()) + for _, printMsg := range prints { + var ( + data []byte + c net.Conn + ) + if printMsg != nil { + if err = checkPrintMsg(printMsg); err == nil { + if tcpClient.Clients[printMsg.PrintNo] != nil { + if tcpClient.Clients[printMsg.PrintNo].C != nil { + c = tcpClient.Clients[printMsg.PrintNo].C + data, err = buildMsg(printMsg) + } + } + } + } + if err != nil { + printMsg.Status = printMsgErr + printMsg.Comment = err.Error() + dao.UpdateEntity(db, printMsg, "Status", "Comment") + delete(tcpClient.Clients, printMsg.PrintNo) + if c != nil { + c.Close() + } + } else { + if c != nil { + if _, err = c.Write(data); err != nil { + globals.SugarLogger.Debugf("handleTcpMessages err [%v]", err) + delete(tcpClient.Clients, printMsg.PrintNo) + c.Close() + } else { + globals.SugarLogger.Debugf("handleTcpMessages success, data: %v", hex.EncodeToString(data)) + printMsg.Status = printMsgAlreadySend + dao.UpdateEntity(db, printMsg, "Status", "Comment") + } + } + } + } } else { //改变打印机状态 //changePrinterStatus(printNo, printerStatusOnline) @@ -261,7 +303,7 @@ func HandleTcpMessages() { //一直读? var err error time.Sleep(time.Second / 2) - prints, _ := dao.GetPrintMsgs(db, printMsgWait, offset, pageSize) + prints, _ := dao.GetPrintMsgs(db, printMsgWait, time.Now().Add(time.Hour*3), time.Now(), offset, pageSize) for _, printMsg := range prints { var ( data []byte diff --git a/business/model/dao/dao_print.go b/business/model/dao/dao_print.go index 0a8ba0862..f614b8ac3 100644 --- a/business/model/dao/dao_print.go +++ b/business/model/dao/dao_print.go @@ -3,6 +3,7 @@ package dao import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" + "time" ) func GetPrintMsg(db *DaoDB, printNo string, orderNo int64) (prints *model.PrintMsg, err error) { @@ -24,15 +25,44 @@ func GetPrintMsg(db *DaoDB, printNo string, orderNo int64) (prints *model.PrintM return prints, err } -func GetPrintMsgs(db *DaoDB, status, offset, pageSize int) (prints []*model.PrintMsg, err error) { +func GetPrintMsgs(db *DaoDB, status int, beginAt, endAt time.Time, offset, pageSize int) (prints []*model.PrintMsg, err error) { sql := ` SELECT * FROM print_msg WHERE 1 = 1 AND deleted_at = ? AND status = ? - LIMIT ? OFFSET ? ` - sqlParams := []interface{}{utils.DefaultTimeValue, status, pageSize, offset} + sqlParams := []interface{}{utils.DefaultTimeValue, status} + if !utils.IsTimeZero(beginAt) { + sql += " AND created_at > ?" + sqlParams = append(sqlParams, beginAt) + } + if !utils.IsTimeZero(endAt) { + sql += " AND created_at < ?" + sqlParams = append(sqlParams, endAt) + } + sql += " LIMIT ? OFFSET ?" + sqlParams = append(sqlParams, pageSize, offset) + err = GetRows(db, &prints, sql, sqlParams) + return prints, err +} + +func GetPrintMsgsFail(db *DaoDB, beginAt, endAt time.Time) (prints []*model.PrintMsg, err error) { + sql := ` + SELECT * + FROM print_msg + WHERE 1 = 1 AND deleted_at = ? + AND status <> ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue, 1} + if !utils.IsTimeZero(beginAt) { + sql += " AND created_at > ?" + sqlParams = append(sqlParams, beginAt) + } + if !utils.IsTimeZero(endAt) { + sql += " AND created_at < ?" + sqlParams = append(sqlParams, endAt) + } err = GetRows(db, &prints, sql, sqlParams) return prints, err }