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.

122 lines
3.0 KiB

package db
import (
"errors"
"leit.com/leit_seat_aps/common"
"xorm.io/core"
)
//零件表
type Me_part struct {
Finr int `xorm:"pk"`
Partid string `xorm:"pk"`
Projnr string `xorm:"pk"`
Custpartid string
Intpartid string
Oripartid string
Ai string
Status string
Descr1 string
Descr2 string
Uom string
Lastmodif string
Lastuser string
Credatuz string
Attrlst []Me_part_atcodlst `xorm:"-"`
}
func (t *Me_part) Clipped() {
common.TrimStruct(t, *t)
}
func (t *Me_part) TableName() string {
return "me_part"
}
//增
func (t *Me_part) Add() error {
e := G_DbEngine
partab := new(Me_part)
affw, err := e.Table("me_part").ID(core.PK{G_FINR, t.Partid, t.Projnr}).Count(partab)
if err != nil {
return err
}
if affw > 0 {
return errors.New("数据已经存在!")
}
_, err = e.Table("me_part").Insert(t)
if err != nil {
return err
}
return nil
}
//删
func (t *Me_part) Del() bool {
e := G_DbEngine
_, err := e.ID(core.PK{G_FINR, t.Partid, t.Projnr}).Delete(&Me_part{})
if err != nil {
return false
}
return true
}
//改
func (t *Me_part) Update() bool {
e := G_DbEngine
_, err := e.ID(core.PK{G_FINR, t.Partid, t.Projnr}).Update(t)
if err != nil {
return false
}
return true
}
//查
func (t *Me_part) SelectOne() (data Me_part, err error) {
var attrlst []Me_part_atcodlst
e := G_DbEngine
_, err = e.ID(core.PK{G_FINR, t.Partid, t.Projnr}).Get(&data)
if err != nil {
return data, err
}
data.Clipped()
// 获取值列表
if err = e.Table("me_part_atcodlst").Join("left", "me_part_atcodver", "me_part_atcodlst.finr = me_part_atcodver.finr and me_part_atcodlst.version = me_part_atcodver.version").Where("me_part_atcodlst.finr = ? and me_part_atcodlst.partid = ? and me_part_atcodlst.projnr = ? and me_part_atcodver.released = ?",
G_FINR, data.Partid, data.Projnr, 1).OrderBy("me_part_atcodlst.attrcode").Find(&attrlst); err != nil {
return
}
for i, _ := range attrlst {
attrlst[i].Clipped()
}
data.Attrlst = attrlst
return data, nil
}
// 获取指定项目的零件族列表
func (t *Me_part) GetProjectAll(projnr string) (datalst []Me_part, err error) {
var i, j int
e := G_DbEngine
if err = e.Where("finr = ? and projnr = ?", G_FINR, projnr).OrderBy("partid").Find(&datalst); err != nil {
return
}
// 遍历属性获取属性值列表
for i, _ = range datalst {
datalst[i].Clipped()
datalst[i].Attrlst = []Me_part_atcodlst{}
// 获取值列表
if err = e.Table("me_part_atcodlst").Join("left", "me_part_atcodver", "me_part_atcodlst.finr = me_part_atcodver.finr and me_part_atcodlst.version = me_part_atcodver.version").Where("me_part_atcodlst.finr = ? and me_part_atcodlst.partid = ? and me_part_atcodlst.projnr = ? and me_part_atcodver.released = ?",
G_FINR, datalst[i].Partid, datalst[i].Projnr, 1).OrderBy("me_part_atcodlst.attrcode").Find(&datalst[i].Attrlst); err != nil {
return
}
for j, _ = range datalst[i].Attrlst {
datalst[i].Attrlst[j].Clipped()
}
}
return
}