SJA APS后端代码
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.

201 lines
5.4 KiB

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
}