This commit is contained in:
suyl
2021-07-29 18:11:20 +08:00
parent c8a1d09ba4
commit b18672e92d
2 changed files with 40 additions and 16 deletions

View File

@@ -93,6 +93,7 @@ func (t *TcpClient) handleConn(c net.Conn) {
//t.Clients[printNo] = printInfo
//t.Unlock()
t.addConn(c, printNo, printStatus2JxStatus(data[len(data)-8:len(data)-6]))
t.buildCallBackMap(printNo)
changePrinterStatus(printNo, status)
if status == printerStatusOnline {
printFail()
@@ -114,7 +115,9 @@ func (t *TcpClient) handleConn(c net.Conn) {
}
} else if strings.Contains(data, printText) {
globals.SugarLogger.Debugf("handleConn print callback: %v", data)
printMsgCallbackChan <- data
_, printNo = getCallbackMsgInfo(data)
t.CallBackMap[printNo] <- data
//printMsgCallbackChan <- printMsgCallbackMap
//changePrintMsg(data)
}
}
@@ -167,17 +170,25 @@ func printStatus2JxStatus(printStatus string) (status int) {
return status
}
func (t *TcpClient) changePrintMsg(data string) (err error) {
var (
db = dao.GetDB()
printNo, comment string
orderNo int64
status int
)
//1、先找出打印机编号和订单序列号这两个确定唯一一条消息?
func getCallbackMsgInfo(data string) (orderNo int64, printNo string) {
orderNo = h8l82int(data[len(data)-6:len(data)-4], data[len(data)-4:len(data)-2])
printNoData, _ := hex.DecodeString(data[len(printSuccessText) : len(data)-6])
printNo = string(printNoData)
return orderNo, printNo
}
func (t *TcpClient) changePrintMsg(data string, orderNo int64, printNo string) (err error) {
var (
db = dao.GetDB()
//printNo,
comment string
//orderNo int64
status int
)
//1、先找出打印机编号和订单序列号这两个确定唯一一条消息?
//orderNo = h8l82int(data[len(data)-6:len(data)-4], data[len(data)-4:len(data)-2])
//printNoData, _ := hex.DecodeString(data[len(printSuccessText) : len(data)-6])
//printNo = string(printNoData)
//2、打印成功改变打印表的状态
if strings.Contains(data, printSuccessText) {
//1e001802000150323032313036313530303030313000013c
@@ -285,8 +296,14 @@ func (t *TcpClient) doPrint2(printMsgChan chan *model.PrintMsg) (err error) {
globals.SugarLogger.Debugf("handleTcpMessages success, data: %v", hex.EncodeToString(data))
printMsg.Status = printMsgAlreadySend
dao.UpdateEntity(db, printMsg, "Status", "Comment")
dataStr := <-printMsgCallbackChan
t.changePrintMsg(dataStr)
if t.CallBackMap[printMsg.PrintNo] != nil {
t.RLock()
dataStr := <-t.CallBackMap[printMsg.PrintNo]
t.RUnlock()
a, b := getCallbackMsgInfo(dataStr)
t.changePrintMsg(dataStr, a, b)
}
//dataStr := <-printMsgCallbackChan
}
}
}

View File

@@ -99,9 +99,9 @@ var (
regexpQrr = regexp.MustCompile(byteSignQrRight + "(.*?)" + byteSignQrRightE)
regexpSound = regexp.MustCompile(byteSignSound + "(.*?)" + byteSignSoundE)
printMsgChan = make(chan *model.PrintMsg, 1024)
printMsgCallbackChan = make(chan string, 1024)
printMsgChanFail = make(chan *model.PrintMsg, 1024)
printMsgChan = make(chan *model.PrintMsg, 1024)
//printMsgCallbackMap = make(map[string]chan string, 1024)
printMsgChanFail = make(chan *model.PrintMsg, 1024)
)
type PrintInfo struct {
@@ -112,7 +112,8 @@ type PrintInfo struct {
//连接的客户端,吧每个客户端都放进来
type TcpClient struct {
Clients map[string]*PrintInfo
Clients map[string]*PrintInfo
CallBackMap map[string]chan string
*sync.RWMutex
}
@@ -142,6 +143,11 @@ func (t *TcpClient) addConn(c net.Conn, key string, status int) {
}
}
func (t *TcpClient) buildCallBackMap(key string) {
dataChan := make(chan string, 1024)
t.CallBackMap[key] = dataChan
}
func (t *TcpClient) getPrintStatus(key string) int {
t.RLock()
defer t.RUnlock()
@@ -185,7 +191,8 @@ func (t *TcpClient) setPrintStatus(key string, status int) {
func NewTcpClient() *TcpClient {
t := &TcpClient{
Clients: make(map[string]*PrintInfo),
Clients: make(map[string]*PrintInfo),
CallBackMap: make(map[string]chan string, 1024),
}
t.RWMutex = new(sync.RWMutex)
return t