查打印机状态

This commit is contained in:
suyl
2021-07-01 14:51:27 +08:00
parent 92b6d309e4
commit 3aec25bbdd
3 changed files with 74 additions and 57 deletions

View File

@@ -1,12 +1,20 @@
package cms
import (
"encoding/json"
"fmt"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"net"
"os"
"time"
)
type PrintInfo struct {
PrintNo string
AppID int
}
func AddPrinter(appID int, printNo, printKey, name string) (err error) {
var (
db = dao.GetDB()
@@ -110,3 +118,46 @@ func GetPrintMsg(appID int, msgID string) (printMsg *model.PrintMsg, err error)
}
return printMsg, err
}
func GetPrinterStatus(appID int, printNo string) (status int, err error) {
var (
db = dao.GetDB()
)
//看有没有
if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) == 0 {
return status, fmt.Errorf("该应用下未找到该打印机print_no : %v", printNo)
} else {
server := "print.jxcs.net:8000"
tcpAddr, err := net.ResolveTCPAddr("tcp4", server)
if err != nil {
os.Exit(1)
return status, err
}
conn, err := net.DialTCP("tcp", nil, tcpAddr)
if err != nil {
return status, err
}
status = connHandler(conn, &PrintInfo{
PrintNo: printNo,
AppID: appID,
})
}
return status, err
}
func connHandler(c net.Conn, printInfo *PrintInfo) (status int) {
defer c.Close()
//缓冲
buf := make([]byte, 1024)
for {
data, _ := json.Marshal(printInfo)
//写入数据
c.Write(data)
//服务器端返回的数据写入buf
c.Read(buf)
//status = buf[:]
//服务器端回传的信息
//fmt.Println("server response:", string(buf[0:cnt]))
}
return status
}

View File

@@ -1,66 +1,9 @@
package cms
import (
"fmt"
"git.rosy.net.cn/baseapi/utils"
"net"
"os"
)
var (
textChan chan string
)
func TestTemp() {
server := "127.0.0.1:8000"
tcpAddr, err := net.ResolveTCPAddr("tcp4", server)
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())
os.Exit(1)
}
fmt.Println("tcpaddr", utils.Format4Output(tcpAddr, true))
conn, err := net.DialTCP("tcp", nil, tcpAddr)
if err != nil {
fmt.Println("Dial err:", err)
return
}
textChan = make(chan string, 10)
connHandler(conn)
}
func TestTemp2(data string) {
textChan <- data
}
func connHandler(c net.Conn) {
//接收终端输入
//reader := bufio.NewReader(os.Stdin)
//缓冲
//buf := make([]byte, 1024)
fmt.Println("Please input data...")
go func() {
for {
//读取终端输入直到读取到\n
//input, err := reader.ReadString('\n')
//if err != nil {
// fmt.Println("ReadString err:", err)
// return
//}
s := <-textChan
//写入数据
n, err := c.Write([]byte(s))
if err != nil {
fmt.Println("Write err:", err, n)
return
}
//服务器端返回的数据写入buf
//cnt, err := c.Read(buf)
//if err != nil {
// fmt.Println("Read err:", err)
// return
//}
//服务器端回传的信息
//fmt.Println("server response:", string(buf[0:cnt]))
}
}()
}

View File

@@ -340,3 +340,26 @@ func (c *ApiController) GetPrintMsg(dataMap map[string]interface{}) (data, errCo
}
return data, errCode, err
}
//查询打印机状态
func (c *ApiController) GetPrinterStatus(dataMap map[string]interface{}) (data, errCode string, err error) {
var (
printNo string
appID int
)
globals.SugarLogger.Debugf("Begin API GetPrinterStatus data: [%v]", utils.Format4Output(dataMap, false))
if _, ok := dataMap[keyPrintNo].(string); !ok {
return buildParamErrCodeAndErr(keyPrintNo)
} else {
if printNo = dataMap[keyPrintNo].(string); printNo == "" {
return buildParamErrCodeAndErr(keyPrintNo)
}
}
appID = dataMap[keyAppID].(int)
if status, err := cms.GetPrinterStatus(appID, printNo); err != nil {
return "", model.ErrCodeGeneralFailed, err
} else {
return utils.Int2Str(status), errCode, err
}
return data, errCode, err
}