diff --git a/business/jxstore/event/event_tcp.go b/business/jxstore/event/event_tcp.go index ccb80626d..d7d2fa55f 100644 --- a/business/jxstore/event/event_tcp.go +++ b/business/jxstore/event/event_tcp.go @@ -209,37 +209,10 @@ func (t *TcpClient) HandleTcpMessages(printNo string) { return } - //fn := func() { - // for { - // if t.TimeoutMap[printNo] == true { - // //if time.Now().Unix()%3 == 0 { - // timeNow := time.Now() - // timeStart := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 0, 0, 0, 0, timeNow.Location()) - // timeEnd := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 23, 59, 59, 0, timeNow.Location()) - // prints, _ := dao.GetPrintMsgs(db, printNo, []int{printMsgWait}, timeStart.AddDate(0, 0, -1), timeEnd, offset, pageSize) - // for _, printMsg := range prints { - // printMsg.Status = printMsgAlreadyLoad - // //先避免重复读再插到channel? - // if _, err := dao.UpdateEntity(db, printMsg, "Status"); err == nil { - // if err = t.addMsgChan(printMsg); err != nil { - // globals.SugarLogger.Debugf("HandleTcpMessages addMsgChan Err: %v", err) - // } - // } - // } - // //} else { - // // continue - // //} - // } else { - // globals.SugarLogger.Debugf("HandleTcpMessages timeout") - // return - // } - // } - //} - //Poll.AddJob(fn) - - go func() { + fn := func() { for { if t.TimeoutMap[printNo] == true { + time.Sleep(2 * time.Second) timeNow := time.Now() timeStart := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 0, 0, 0, 0, timeNow.Location()) timeEnd := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 23, 59, 59, 0, timeNow.Location()) @@ -258,7 +231,31 @@ func (t *TcpClient) HandleTcpMessages(printNo string) { return } } - }() + } + Poll.AddJob(fn) + + //go func() { + // for { + // if t.TimeoutMap[printNo] == true { + // timeNow := time.Now() + // timeStart := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 0, 0, 0, 0, timeNow.Location()) + // timeEnd := time.Date(timeNow.Year(), timeNow.Month(), timeNow.Day(), 23, 59, 59, 0, timeNow.Location()) + // prints, _ := dao.GetPrintMsgs(db, printNo, []int{printMsgWait}, timeStart.AddDate(0, 0, -1), timeEnd, offset, pageSize) + // for _, printMsg := range prints { + // printMsg.Status = printMsgAlreadyLoad + // //先避免重复读再插到channel? + // if _, err := dao.UpdateEntity(db, printMsg, "Status"); err == nil { + // if err = t.addMsgChan(printMsg); err != nil { + // globals.SugarLogger.Debugf("HandleTcpMessages addMsgChan Err: %v", err) + // } + // } + // } + // } else { + // globals.SugarLogger.Debugf("HandleTcpMessages timeout") + // return + // } + // } + //}() } func (t *TcpClient) readTimeoutMap(key string) bool { @@ -276,99 +273,7 @@ func (t *TcpClient) doPrint(key string) (err error) { return err } - //fn := func() { - // if t.TimeoutMap[key] == true { - // select { - // case printMsg, ok := <-t.MsgMap[key]: - // if !ok { - // globals.SugarLogger.Debugf("doPrint err !ok ...") - // return - // } - // var ( - // data []byte - // c net.Conn - // ) - // if printMsg != nil { - // if err = checkPrintMsg(db, printMsg); err == nil { - // status := t.getPrintStatus(printMsg.PrintNo) - // switch status { - // //只有在线才打印内容 - // case printerStatusOnline: - // if c = t.getPrintConn(printMsg.PrintNo); c != nil { - // data, err = buildMsg(printMsg) - // } - // case printerStatusOffline: - // err = fmt.Errorf("打印机离线!") - // case printerStatusOnlineWithoutPaper: - // err = fmt.Errorf("打印机缺纸!") - // default: - // err = fmt.Errorf("打印机状态未知!") - // } - // } - // if err != nil { - // printMsg.Status = printMsgErr - // printMsg.Comment = err.Error() - // dao.UpdateEntity(db, printMsg, "Status", "Comment") - // delete(t.TimeoutMap, key) - // } else { - // if c != nil { - // if _, err = c.Write(data); err != nil { - // globals.SugarLogger.Debugf("handleTcpMessages err [%v]", err) - // //close(t.TimeoutMap[key]) - // delete(t.TimeoutMap, key) - // } else { - // //等待回调 - // dataStr := <-t.CallBackMap[key] - // if dataStr != "" { - // a, b := getCallbackMsgInfo(dataStr) - // t.changePrintMsg(dataStr, a, b) - // // 查询打印机是否扣费,未扣费就扣费,已经扣费不做处理 - // have, err := dao.QueryOrderDeductionRecord(db, b, utils.Int64ToStr(a)) - // if err != nil && !have { - // // 扣除打印机账号金额 - // if err = dao.DeductionPrintBalance(db, b); err != nil { - // globals.SugarLogger.Debugf("扣除用户打印机金额错误 %s", err) - // } else { - // // 添加打印记录(支出记录) - // if err = dao.AddPrintRecord(db, &model.PrintBillRecord{ - // CreatedAt: time.Now(), - // UpdatedAt: time.Now(), - // PrintNo: b, - // PayType: 2, - // PayMoney: 1, // 固定支出一分钱 - // OrderId: utils.Int64ToStr(a), - // UserId: "", - // }); err != nil { - // globals.SugarLogger.Debugf("添加打印机订单支付记录错误 %s", err) - // } - // } - // } else { - // globals.SugarLogger.Debugf("查询打印机扣费记录错误 %s", err) - // } - // //判断音频暂停? - // //收到打印成功回调后,如果消息中有音频,需要等待一下,等上一个音频播完 - // //暂停时间就暂时取的sound标签内内容长度/2 - // if sounds := regexpSoundSpan.FindStringSubmatch(printMsg.Content); len(sounds) > 0 { - // sound := sounds[1] - // lenTime := time.Duration(utf8.RuneCountInString(sound)) * time.Second - // time.Sleep(lenTime / 2) - // } - // } - // } - // } - // } - // } else { - // globals.SugarLogger.Debugf("msgMap is nil") - // } - // } - // } else { - // globals.SugarLogger.Debugf("doPrint timeout") - // return - // } - //} - // - //Poll.AddJob(fn) - go func() { + fn := func() { for { if t.TimeoutMap[key] == true { select { @@ -458,9 +363,103 @@ func (t *TcpClient) doPrint(key string) (err error) { globals.SugarLogger.Debugf("doPrint timeout") return } - } - }() + } + Poll.AddJob(fn) + // + //go func() { + // for { + // if t.TimeoutMap[key] == true { + // select { + // case printMsg, ok := <-t.MsgMap[key]: + // if !ok { + // globals.SugarLogger.Debugf("doPrint err !ok ...") + // return + // } + // var ( + // data []byte + // c net.Conn + // ) + // if printMsg != nil { + // if err = checkPrintMsg(db, printMsg); err == nil { + // status := t.getPrintStatus(printMsg.PrintNo) + // switch status { + // //只有在线才打印内容 + // case printerStatusOnline: + // if c = t.getPrintConn(printMsg.PrintNo); c != nil { + // data, err = buildMsg(printMsg) + // } + // case printerStatusOffline: + // err = fmt.Errorf("打印机离线!") + // case printerStatusOnlineWithoutPaper: + // err = fmt.Errorf("打印机缺纸!") + // default: + // err = fmt.Errorf("打印机状态未知!") + // } + // } + // if err != nil { + // printMsg.Status = printMsgErr + // printMsg.Comment = err.Error() + // dao.UpdateEntity(db, printMsg, "Status", "Comment") + // delete(t.TimeoutMap, key) + // } else { + // if c != nil { + // if _, err = c.Write(data); err != nil { + // globals.SugarLogger.Debugf("handleTcpMessages err [%v]", err) + // //close(t.TimeoutMap[key]) + // delete(t.TimeoutMap, key) + // } else { + // //等待回调 + // dataStr := <-t.CallBackMap[key] + // if dataStr != "" { + // a, b := getCallbackMsgInfo(dataStr) + // t.changePrintMsg(dataStr, a, b) + // // 查询打印机是否扣费,未扣费就扣费,已经扣费不做处理 + // have, err := dao.QueryOrderDeductionRecord(db, b, utils.Int64ToStr(a)) + // if err != nil && !have { + // // 扣除打印机账号金额 + // if err = dao.DeductionPrintBalance(db, b); err != nil { + // globals.SugarLogger.Debugf("扣除用户打印机金额错误 %s", err) + // } else { + // // 添加打印记录(支出记录) + // if err = dao.AddPrintRecord(db, &model.PrintBillRecord{ + // CreatedAt: time.Now(), + // UpdatedAt: time.Now(), + // PrintNo: b, + // PayType: 2, + // PayMoney: 1, // 固定支出一分钱 + // OrderId: utils.Int64ToStr(a), + // UserId: "", + // }); err != nil { + // globals.SugarLogger.Debugf("添加打印机订单支付记录错误 %s", err) + // } + // } + // } else { + // globals.SugarLogger.Debugf("查询打印机扣费记录错误 %s", err) + // } + // //判断音频暂停? + // //收到打印成功回调后,如果消息中有音频,需要等待一下,等上一个音频播完 + // //暂停时间就暂时取的sound标签内内容长度/2 + // if sounds := regexpSoundSpan.FindStringSubmatch(printMsg.Content); len(sounds) > 0 { + // sound := sounds[1] + // lenTime := time.Duration(utf8.RuneCountInString(sound)) * time.Second + // time.Sleep(lenTime / 2) + // } + // } + // } + // } + // } + // } else { + // globals.SugarLogger.Debugf("msgMap is nil") + // } + // } + // } else { + // globals.SugarLogger.Debugf("doPrint timeout") + // return + // } + // + // } + //}() return err }