LAPP 打印服务 支持条码打印和表单打印 通过Socket或windows打印方式
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

145 lines
4.7 KiB

package db
import (
"errors"
"fmt"
"LAPP_PRN_Service/common"
conf "LAPP_PRN_Service/config"
"LAPP_PRN_Service/glog"
"strings"
"xorm.io/core"
)
/******************************************************************************
*
* @Struct Name : Printer
*-----------------------------------------------------------------------------
*
* @Description : Printer的实体映射
*
* @Author : lou wenzhi
*
* @Date : 2021-04-13 13:08:46
*
******************************************************************************/
type Printer struct {
PlantNr int `xorm:"pk int 'PlantNr'" json:"Printer-PlantNr"`
PrinterId string `xorm:"pk varchar(18) 'PrinterId'" json:"Printer-PrinterId"`
Descr string `xorm:"varchar(30) 'Descr' not null" json:"Printer-Descr"`
PrinterType string `xorm:"varchar(1) 'PrinterType' not null" json:"Printer-PrinterType"`
PrinterName string `xorm:"varchar(100) 'PrinterName' not null" json:"Printer-PrinterName"`
IpAddress string `xorm:"varchar(15) 'IpAddress' not null" json:"Printer-IpAddress"`
SerialName string `xorm:"varchar(15) 'SerialName' not null" json:"Printer-SerialName"`
SerialPort int `xorm:"int 'SerialPort' not null" json:"Printer-SerialPort"`
Active int `xorm:"smallint 'Active' not null" json:"Printer-Active"`
PrinterSpec string `xorm:"varchar(30) 'PrinterSpec' not null" json:"Printer-PrinterSpec"`
PageSize string `xorm:"varchar(18) 'PageSize' not null" json:"Printer-PageSize"`
Port int `xorm:"int 'Port' not null" json:"Printer-Port"`
PrintInterval int `xorm:"int 'PrintInterval' not null" json:"Printer-PrintInterval"`
LastModify common.DateTime `xorm:"datetime 'LastModify' not null updated" json:"Printer-LastModify"`
LastUser string `xorm:"nvarchar(20) 'LastUser' not null" json:"Printer-LastUser"`
CreateTime common.DateTime `xorm:"datetime 'CreateTime' not null created" json:"Printer-CreateTime"`
}
func (t *Printer) TableName() string {
return "Printer"
}
//增
func (t *Printer) Add() error {
e := G_DbEngine
countrole := new(Printer)
affw, err := e.Table("Printer").ID(core.PK{t.PlantNr, t.PrinterId}).Count(countrole)
if err != nil {
return err
}
if affw > 0 {
return errors.New("数据已经存在!")
}
_, err = e.Table("Printer").Insert(t)
if err != nil {
fmt.Printf("err is :%v", err)
return err
}
return nil
}
//删
func (t *Printer) Del() bool {
e := G_DbEngine
_, err := e.ID(core.PK{t.PlantNr, t.PrinterId}).Delete(&Printer{})
if err != nil {
return false
}
return true
}
//改
func (t *Printer) Update() bool {
e := G_DbEngine
_, err := e.ID(core.PK{t.PlantNr, t.PrinterId}).Cols("PlantNr", "PrinterId", "Descr", "PrinterType", "PrinterName", "IpAddress", "Active", "PrinterSpec", "PageSize", "Port", "PrintInterval", "LastModify", "LastUser", "CreateTime").Update(t)
if err != nil {
return false
}
return true
}
//查
func (t *Printer) SelectOne() (Printer, error) {
e := G_DbEngine
var data Printer
_, err := e.ID(core.PK{t.PlantNr, t.PrinterId}).Get(&data)
if err != nil {
return data, err
}
return data, nil
}
// 获取所有激活的打印机对象列表
func (t *Printer) GetPrinterList(conf *conf.EnvConfig) ([]Printer, error) {
var (
printertablist []Printer
pt []string
printers []string
)
e := G_DbEngine
pt = strings.Split(conf.PrinterType, ",")
printers = strings.Split(conf.Printers, ",")
if len(printers) > 0 {
err := e.Where("PlantNr = ? and Active = ?", conf.PlantNr, 1).In("PrinterId", printers).In("PrinterType", pt).Find(&printertablist)
if err != nil {
glog.Infoln("failed to query Printer for type: %s due to: %v", pt, err)
return nil, err
}
} else {
err := e.Where("PlantNr = ? and Active = ?", conf.PlantNr, 1).In("PrinterType", pt).Find(&printertablist)
if err != nil {
glog.Infoln("failed to query Printer for type: %s due to: %v", pt, err)
return nil, err
}
}
return printertablist, nil
}
// 获取打印机ID列表
func (t *Printer) GetPrinterIdList(conf *conf.EnvConfig) ([]string, error) {
var (
printertablist []Printer
prnlist, printers, pt []string
)
e := G_DbEngine
pt = strings.Split(conf.PrinterType, ",")
printers = strings.Split(conf.Printers, ",")
err := e.Where("PlantNr = ? and Active = ?", conf.PlantNr, 1).In("PrinterId", printers).In("PrinterType", pt).Find(&printertablist)
if err != nil {
glog.Infoln("failed to query printertab for type: due to:", pt, err)
return nil, err
}
for i := range printertablist {
prnlist = append(prnlist, strings.TrimSpace(printertablist[i].PrinterId))
}
return prnlist, nil
}