aa
This commit is contained in:
@@ -93,6 +93,7 @@ func (t *TcpClient) handleConn(c net.Conn) {
|
|||||||
//t.Clients[printNo] = printInfo
|
//t.Clients[printNo] = printInfo
|
||||||
//t.Unlock()
|
//t.Unlock()
|
||||||
t.addConn(c, printNo, printStatus2JxStatus(data[len(data)-8:len(data)-6]))
|
t.addConn(c, printNo, printStatus2JxStatus(data[len(data)-8:len(data)-6]))
|
||||||
|
t.buildCallBackMap(printNo)
|
||||||
changePrinterStatus(printNo, status)
|
changePrinterStatus(printNo, status)
|
||||||
if status == printerStatusOnline {
|
if status == printerStatusOnline {
|
||||||
printFail()
|
printFail()
|
||||||
@@ -114,7 +115,9 @@ func (t *TcpClient) handleConn(c net.Conn) {
|
|||||||
}
|
}
|
||||||
} else if strings.Contains(data, printText) {
|
} else if strings.Contains(data, printText) {
|
||||||
globals.SugarLogger.Debugf("handleConn print callback: %v", data)
|
globals.SugarLogger.Debugf("handleConn print callback: %v", data)
|
||||||
printMsgCallbackChan <- data
|
_, printNo = getCallbackMsgInfo(data)
|
||||||
|
t.CallBackMap[printNo] <- data
|
||||||
|
//printMsgCallbackChan <- printMsgCallbackMap
|
||||||
//changePrintMsg(data)
|
//changePrintMsg(data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -167,17 +170,25 @@ func printStatus2JxStatus(printStatus string) (status int) {
|
|||||||
return status
|
return status
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TcpClient) changePrintMsg(data string) (err error) {
|
func getCallbackMsgInfo(data string) (orderNo int64, printNo string) {
|
||||||
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])
|
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])
|
printNoData, _ := hex.DecodeString(data[len(printSuccessText) : len(data)-6])
|
||||||
printNo = string(printNoData)
|
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、打印成功改变打印表的状态
|
//2、打印成功改变打印表的状态
|
||||||
if strings.Contains(data, printSuccessText) {
|
if strings.Contains(data, printSuccessText) {
|
||||||
//1e001802000150323032313036313530303030313000013c
|
//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))
|
globals.SugarLogger.Debugf("handleTcpMessages success, data: %v", hex.EncodeToString(data))
|
||||||
printMsg.Status = printMsgAlreadySend
|
printMsg.Status = printMsgAlreadySend
|
||||||
dao.UpdateEntity(db, printMsg, "Status", "Comment")
|
dao.UpdateEntity(db, printMsg, "Status", "Comment")
|
||||||
dataStr := <-printMsgCallbackChan
|
if t.CallBackMap[printMsg.PrintNo] != nil {
|
||||||
t.changePrintMsg(dataStr)
|
t.RLock()
|
||||||
|
dataStr := <-t.CallBackMap[printMsg.PrintNo]
|
||||||
|
t.RUnlock()
|
||||||
|
a, b := getCallbackMsgInfo(dataStr)
|
||||||
|
t.changePrintMsg(dataStr, a, b)
|
||||||
|
}
|
||||||
|
//dataStr := <-printMsgCallbackChan
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,9 +99,9 @@ var (
|
|||||||
regexpQrr = regexp.MustCompile(byteSignQrRight + "(.*?)" + byteSignQrRightE)
|
regexpQrr = regexp.MustCompile(byteSignQrRight + "(.*?)" + byteSignQrRightE)
|
||||||
regexpSound = regexp.MustCompile(byteSignSound + "(.*?)" + byteSignSoundE)
|
regexpSound = regexp.MustCompile(byteSignSound + "(.*?)" + byteSignSoundE)
|
||||||
|
|
||||||
printMsgChan = make(chan *model.PrintMsg, 1024)
|
printMsgChan = make(chan *model.PrintMsg, 1024)
|
||||||
printMsgCallbackChan = make(chan string, 1024)
|
//printMsgCallbackMap = make(map[string]chan string, 1024)
|
||||||
printMsgChanFail = make(chan *model.PrintMsg, 1024)
|
printMsgChanFail = make(chan *model.PrintMsg, 1024)
|
||||||
)
|
)
|
||||||
|
|
||||||
type PrintInfo struct {
|
type PrintInfo struct {
|
||||||
@@ -112,7 +112,8 @@ type PrintInfo struct {
|
|||||||
|
|
||||||
//连接的客户端,吧每个客户端都放进来
|
//连接的客户端,吧每个客户端都放进来
|
||||||
type TcpClient struct {
|
type TcpClient struct {
|
||||||
Clients map[string]*PrintInfo
|
Clients map[string]*PrintInfo
|
||||||
|
CallBackMap map[string]chan string
|
||||||
*sync.RWMutex
|
*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 {
|
func (t *TcpClient) getPrintStatus(key string) int {
|
||||||
t.RLock()
|
t.RLock()
|
||||||
defer t.RUnlock()
|
defer t.RUnlock()
|
||||||
@@ -185,7 +191,8 @@ func (t *TcpClient) setPrintStatus(key string, status int) {
|
|||||||
|
|
||||||
func NewTcpClient() *TcpClient {
|
func NewTcpClient() *TcpClient {
|
||||||
t := &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)
|
t.RWMutex = new(sync.RWMutex)
|
||||||
return t
|
return t
|
||||||
|
|||||||
Reference in New Issue
Block a user