This commit is contained in:
suyl
2021-07-14 15:29:12 +08:00
parent 7c7542ba91
commit f2fcb46f48

View File

@@ -192,6 +192,7 @@ func handleConn(c net.Conn) {
printNoData, _ := hex.DecodeString(data[len(heartText) : len(data)-8])
printNo = string(printNoData)
globals.SugarLogger.Debugf("handleConn printno :[%v]", printNo)
status := printStatus2JxStatus(data[len(data)-8 : len(data)-6])
tcpClient.s.Lock()
if tcpClient.Clients[printNo] == nil {
printInfo := &PrintInfo{
@@ -200,12 +201,14 @@ func handleConn(c net.Conn) {
StatusTime: time.Now(),
}
tcpClient.Clients[printNo] = printInfo
printFail()
changePrinterStatus(printNo, status)
if status > 0 {
printFail()
}
} else {
//改变打印机状态
//changePrinterStatus(printNo, printerStatusOnline)
changePrinterStatus(printNo, status)
if tcpClient.Clients[printNo] != nil {
status := printStatus2JxStatus(data[len(data)-8 : len(data)-6])
if tcpClient.Clients[printNo].Status != status {
tcpClient.Clients[printNo].Status = status
}
@@ -220,6 +223,32 @@ func handleConn(c net.Conn) {
}
}
func changePrinterStatus(printNo string, status int) {
var (
db = dao.GetDB()
)
if printer, err := dao.GetPrinter(db, printNo); err == nil && printer != nil {
feilds := []string{}
if printer.Status != status {
printer.Status = status
feilds = append(feilds, "Status")
}
isOnline := 0
if status == printerStatusOnline || status == printerStatusOnlineWithoutPaper {
isOnline = model.YES
} else {
isOnline = model.NO
}
if isOnline != printer.IsOnline {
printer.IsOnline = isOnline
feilds = append(feilds, "IsOnline")
}
if len(feilds) > 0 {
dao.UpdateEntity(db, printer, feilds...)
}
}
}
func printFail() (err error) {
//新开机的打印失败和错误的
var (
@@ -241,7 +270,7 @@ func printFail() (err error) {
}
}
tcpClient.s.RUnlock()
if c != nil {
if c != nil && tcpClient.Clients[printMsg.PrintNo].Status == printerStatusOnline {
if _, err = c.Write(data); err != nil {
globals.SugarLogger.Debugf("handleTcpMessages err [%v]", err)
delete(tcpClient.Clients, printMsg.PrintNo)
@@ -324,15 +353,18 @@ func HandleTcpMessages() {
if err = checkPrintMsg(printMsg); err == nil {
tcpClient.s.RLock()
if tcpClient.Clients[printMsg.PrintNo] != nil {
if tcpClient.Clients[printMsg.PrintNo].C != nil {
c = tcpClient.Clients[printMsg.PrintNo].C
data, err = buildMsg(printMsg)
if tcpClient.Clients[printMsg.PrintNo].Status == printerStatusOnline {
if tcpClient.Clients[printMsg.PrintNo].C != nil {
c = tcpClient.Clients[printMsg.PrintNo].C
data, err = buildMsg(printMsg)
}
} else if tcpClient.Clients[printMsg.PrintNo].Status == printerStatusOffline {
err = fmt.Errorf("打印机离线!")
} else if tcpClient.Clients[printMsg.PrintNo].Status == printerStatusOnlineWithoutPaper {
err = fmt.Errorf("打印机缺纸!")
}
}
tcpClient.s.RUnlock()
//else {
// changePrinterStatus(printMsg.PrintNo, printerStatusOffline)
//}
}
} else {
err = fmt.Errorf("未查询到此printMsg")
@@ -374,6 +406,7 @@ func HandleCheckTcpHeart() {
}
tcpClient.s.Unlock()
for _, v := range keys {
changePrinterStatus(v, printerStatusOffline)
delete(tcpClient.Clients, v)
}
}