package models import ( "LAPP_SJA_ME/db" "LAPP_SJA_ME/utils" "github.com/360EntSecGroup-Skylar/excelize" "time" "xorm.io/core" ) type Tabcolname struct { Tabname string `xorm:"pk comment('表名') VARCHAR(40)" json:"tabcolname-tabname"` Colname string `xorm:"pk comment('字段名') VARCHAR(40)" json:"tabcolname-colname"` Textlabel string `xorm:"comment('文本') VARCHAR(30)" json:"tabcolname-textlabel"` Longlabel string `xorm:"comment('超文本') VARCHAR(60)" json:"tabcolname-longlabel"` Valformat string `xorm:"comment('值类型') VARCHAR(60)" json:"tabcolname-valformat"` Lastmodif string `xorm:"comment('更新时间') VARCHAR(14)" json:"tabcolname-lastmodif"` Lastuser string `xorm:"comment('更新人员') VARCHAR(20)" json:"tabcolname-lastuser"` Credatuz string `xorm:"comment('创建时间') VARCHAR(14)" json:"tabcolname-credatuz"` } func (t *Tabcolname) TableName() string { return "tabcolname" } // 清除string字段的右侧空格 func (t *Tabcolname) Clipped() { utils.TrimStruct(t, *t) } //excel表格导入数据库 func (t *Tabcolname)ReadXlsx(path string) bool { e := db.Eloquent.Master() xlsx, err := excelize.OpenFile(path) if err != nil { return false } rows := xlsx.GetRows("Sheet1") for k, row := range rows { if k == 0{ continue } data := Tabcolname{} data.Tabname = row[0] data.Colname = row[1] data.Textlabel = row[2] data.Longlabel = row[3] data.Valformat = row[4] data.Lastuser = t.Lastuser data.Credatuz = utils.TimeFormat(time.Now(),"yyyyMMddHHmmss") data.Lastmodif = utils.TimeFormat(time.Now(),"yyyyMMddHHmmss") has, _ := e.Where("tabname = ? & colname = ?", data.Tabname,data.Colname).Get(t) if !has{ _, err := e.Insert(&data) if err != nil{ continue } }else{ _, err := e.Id(core.PK{data.Tabname,data.Colname}).Update(&data) if err != nil{ continue } } } return true } //分页查询 func (t *Tabcolname) DataListPage(pageSize int, pageIndex int)([]Tabcolname, int, error){ doc := make([]Tabcolname, 0) e := db.Eloquent.Master() query := e.Where("1=1") where := "where 1=1 " if !utils.ValueIsEmpty(t.Colname) { query = query.And("colname = ?", t.Colname) where += " and colname like " + "'%" + t.Colname + "%'" } Offset := (pageIndex - 1) * pageSize err := e.SQL("SELECT TOP " + utils.ValueToString(pageSize, "") + " tabcolname.* FROM tabcolname " + where + " AND (convert(varchar(10),tabname)+convert(varchar(40),colname) NOT IN (SELECT TOP " + utils.ValueToString(Offset, "") + " convert(varchar(10),tabname)+convert(varchar(40),colname) FROM tabcolname " + where + " ORDER BY credatuz DESC)) ORDER BY credatuz DESC").Find(&doc) if err != nil { return nil, 0, err } for k, _ := range doc { doc[k].Clipped() } tcount := new(Tabcolname) count, _ := query.Count(tcount) return doc, int(count), nil } //查询数据 func(t * Tabcolname) DataList()([]Tabcolname,error){ e := db.Eloquent.Master() data := make([]Tabcolname,0) err := e.Find(&data) for k, _ := range data { data[k].Clipped() } if err != nil{ return nil,err } return data,nil } //删除数据 func(t * Tabcolname) DelData()(success bool, err error){ e := db.Eloquent.Master() if _,err = e.Table(t.TableName()).ID(core.PK{t.Tabname,t.Colname}).Delete(&Tabcolname{}); err != nil { success = false return } success = true return }