package db import ( "errors" "github.com/go-xorm/xorm" "leit.com/leit_seat_aps/common" "xorm.io/core" ) // BOM 头 type Me_bomhead struct { Finr int `xorm:"pk"` Bomid string `xorm:"pk"` Matnr string Descr string Bomhead_cval1 string Bomhead_cval2 string Bomhead_ival1 int Bomhead_ival2 int Bomhead_dval1 float32 Bomhead_dval2 float32 Lastmodif string Lastuser string Credatuz string Itemlst []Me_bomlst `xorm:"-"` } func (t *Me_bomhead) Clipped() { common.TrimStruct(t, *t) } func (t *Me_bomhead) TableName() string { return "me_bomhead" } //增 func (t *Me_bomhead) Add() error { e := G_DbEngine bomtab := new(Me_bomhead) affw, err := e.Table("me_bomhead").ID(core.PK{G_FINR, t.Bomid}).Count(bomtab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = e.Table("me_bomhead").Insert(t) if err != nil { return err } return nil } //增 func (t *Me_bomhead) Insert(session *xorm.Session) error { bomtab := new(Me_bomhead) affw, err := session.Table("me_bomhead").ID(core.PK{G_FINR, t.Bomid}).Count(bomtab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = session.Table("me_bomhead").Insert(t) if err != nil { return err } return nil } //删 func (t *Me_bomhead) Del() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Bomid}).Delete(&Me_bomhead{}) if err != nil { return false } return true } //改 func (t *Me_bomhead) Update() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Bomid}).Update(t) if err != nil { return false } return true } //更新指定字段 func (t *Me_bomhead) UpdateFields(session *xorm.Session, fields string) (err error) { if _, err = session.ID(core.PK{G_FINR, t.Bomid}).Cols(fields).Update(t); err != nil { return } return } //查 func (t *Me_bomhead) SelectOne() (data Me_bomhead, err error) { var itemlst []Me_bomlst e := G_DbEngine _, err = e.ID(core.PK{G_FINR, t.Bomid}).Get(&data) if err != nil { return data, err } // 获取值列表 if err = e.Where("finr = ? and bomid = ?", G_FINR, data.Bomid).OrderBy("position, fmatnr, cmatnr").Find(&itemlst); err != nil { return } for i, _ := range itemlst { itemlst[i].Clipped() } data.Itemlst = itemlst return data, nil } // 获取指定项目的BOM列表 func (t *Me_bomhead) GetAll() (datalst []Me_bomhead, err error) { var ( i, j int itemlst []Me_bomlst ) e := G_DbEngine if err = e.Where("finr = ?", G_FINR).OrderBy("bomid").Find(&datalst); err != nil { return } for i, _ = range datalst { datalst[i].Clipped() // 获取值列表 if err = e.Where("finr = ? and bomid = ?", G_FINR, datalst[i].Bomid).OrderBy("position, fmatnr, cmatnr").Find(&itemlst); err != nil { return } for j, _ = range itemlst { itemlst[j].Clipped() } datalst[i].Itemlst = itemlst } return }