package db import ( "errors" "github.com/go-xorm/xorm" "leit.com/leit_seat_aps/common" "xorm.io/core" ) //SEQ信息缓存表 type Pln_seqdata_landing struct { Finr int `xorm:"pk"` Oemordernr string `xorm:"pk"` Partfamilyid string `xorm:"pk"` Vin string `xorm:"pk"` Version int `xorm:"pk"` Projnr string Seqmode int Swet string Oemseq float64 Assemblyline string Unloadingpoint string Parsed int Edifile string Lastmodif string Lastuser string Credatuz string } func (t *Pln_seqdata_landing) Clipped() { common.TrimStruct(t, *t) } func (t *Pln_seqdata_landing) TableName() string { return "pln_seqdata_landing" } //增 func (t *Pln_seqdata_landing) Add() error { e := G_DbEngine seqdatatab := new(Pln_seqdata_landing) affw, err := e.Table("pln_seqdata_landing").ID(core.PK{G_FINR, t.Oemordernr, t.Partfamilyid, t.Vin, t.Version}).Count(seqdatatab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = e.Table("pln_seqdata_landing").Insert(t) if err != nil { return err } return nil } //增 func (t *Pln_seqdata_landing) Insert(session *xorm.Session) error { seqdatatab := new(Pln_seqdata_landing) affw, err := session.Table("pln_seqdata_landing").ID(core.PK{G_FINR, t.Oemordernr, t.Partfamilyid, t.Vin, t.Version}).Count(seqdatatab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = session.Table("pln_seqdata_landing").Insert(t) if err != nil { return err } return nil } //删 func (t *Pln_seqdata_landing) Del() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Oemordernr, t.Partfamilyid, t.Vin, t.Version}).Delete(&Pln_seqdata_landing{}) if err != nil { return false } return true } //改 func (t *Pln_seqdata_landing) Update() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Oemordernr, t.Partfamilyid, t.Vin, t.Version}).Update(t) if err != nil { return false } return true } //更新指定字段 func (t *Pln_seqdata_landing) UpdateFieldsWithoutSession(fields []string) (err error) { e := G_DbEngine if _, err = e.Table("pln_seqdata_landing").ID(core.PK{G_FINR, t.Oemordernr, t.Partfamilyid, t.Vin, t.Version}).Cols(fields...).Update(t); err != nil { return } return } //更新指定字段 func (t *Pln_seqdata_landing) UpdateFields(session *xorm.Session, fields []string) (err error) { if _, err = session.Table("pln_seqdata_landing").ID(core.PK{G_FINR, t.Oemordernr, t.Partfamilyid, t.Vin, t.Version}).Cols(fields...).Update(t); err != nil { return } return } //查 func (t *Pln_seqdata_landing) SelectOne() (data Pln_seqdata_landing, err error) { e := G_DbEngine _, err = e.ID(core.PK{G_FINR, t.Oemordernr, t.Partfamilyid, t.Vin, t.Version}).Get(&data) if err != nil { return data, err } return data, nil } //获取指定OEM订单号和VIN的SEQ数据的最新版本 func (t *Pln_seqdata_landing) GetLatestVersion() (ver int, err error) { var ( seqlandlsttab []Pln_seqdata_landing ) if err = G_DbEngine.Where("finr = ? and oemordernr = ? and vin = ?", G_FINR, t.Oemordernr, t.Vin).Desc("version").Limit(1, 0).Find(&seqlandlsttab); err != nil { return } if len(seqlandlsttab) > 0 { return seqlandlsttab[0].Version, nil } else { return 0, nil } } //获取指定OEM订单号和VIN的SEQ数据的最新版本 func (t *Pln_seqdata_landing) GetLatestVersionBySession(session *xorm.Session) (ver int, err error) { var ( seqlandlsttab []Pln_seqdata_landing ) if err = session.Where("finr = ? and oemordernr = ? and vin = ? and partfamilyid = ?", G_FINR, t.Oemordernr, t.Vin, t.Partfamilyid).Desc("version").Limit(1, 0).Find(&seqlandlsttab); err != nil { return } if len(seqlandlsttab) > 0 { return seqlandlsttab[0].Version, nil } else { return 0, nil } } //获取未解析的SEQlanding数据,按PartFamily和Oemseq排序 func (t *Pln_seqdata_landing) GetUnparsedLandingData() (seqlandlsttab []Pln_seqdata_landing, err error) { seqlandlsttab = []Pln_seqdata_landing{} e := G_DbEngine if err = e.Where("finr = ? and projnr = ? and parsed = ?", G_FINR, t.Projnr, 0).Asc("version", "partfamilyid", "oemseq").Find(&seqlandlsttab); err != nil { return } for i, _ := range seqlandlsttab { seqlandlsttab[i].Clipped() } return } //获取指定零件族已解析的最大的OEMSEQ号,不含0和9999999999 func (t *Pln_seqdata_landing) GetPFParsedMaxOemseq(projid, pfid string) (oemseq int, err error) { var seqlandlsttab = []Pln_seqdata_landing{} e := G_DbEngine if err = e.Where("finr = ? and projnr = ? and partfamilyid = ? and parsed = ? and oemseq > ? and oemseq < ?", G_FINR, projid, pfid, 0, 0, 9999999999).Desc("oemseq").Limit(1, 0).Find(&seqlandlsttab); err != nil { return } if len(seqlandlsttab) > 0 { oemseq = common.ValueToInt(seqlandlsttab[0].Oemseq, 0) }else{ oemseq = 0 } return } // 获取它的版本1是否已解析 func (t *Pln_seqdata_landing) IsFirstVersionParsed() (is bool, err error) { var seqlandlsttab = []Pln_seqdata_landing{} e := G_DbEngine if err = e.Where("finr = ? and oemordernr = ? and partfamilyid = ? and vin = ? and version = ?", G_FINR, t.Oemordernr, t.Partfamilyid, t.Vin, 1).Asc("version").Desc("oemseq").Limit(1, 0).Find(&seqlandlsttab); err != nil { return } if len(seqlandlsttab) > 0 { if seqlandlsttab[0].Parsed > 0 { is = true }else{ is = false } return }else{ is = false } return }