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.

189 lines
4.6 KiB

package db
import (
"errors"
"leit.com/leit_seat_aps/common"
"xorm.io/core"
)
// 车型
type Me_carmodel struct {
Finr int `xorm:"pk"`
Carmodelid string `xorm:"pk"`
Projnr string
Descr string
Cm_cust1 string
Cm_cust2 string
Cm_cust3 string
Cm_cust4 string
Lastmodif string
Lastuser string
Credatuz string
Atcodlst []Me_carmodel_atcodlst `xorm:"-"`
Pflst []Me_carmodel_partfamilylst `xorm:"-"`
Sglst []Me_carmodel_supplygrouplst `xorm:"-"`
Verlst []Me_carmodel_ver `xorm:"-"`
}
func (t *Me_carmodel) Clipped() {
common.TrimStruct(t, *t)
}
func (t *Me_carmodel) TableName() string {
return "me_carmodel"
}
//增
func (t *Me_carmodel) Add() error {
e := G_DbEngine
cmtab := new(Me_carmodel)
affw, err := e.Table("me_carmodel").ID(core.PK{G_FINR, t.Carmodelid}).Count(cmtab)
if err != nil {
return err
}
if affw > 0 {
return errors.New("数据已经存在!")
}
_, err = e.Table("me_carmodel").Insert(t)
if err != nil {
return err
}
return nil
}
//删
func (t *Me_carmodel) Del() bool {
e := G_DbEngine
_, err := e.ID(core.PK{G_FINR, t.Carmodelid}).Delete(&Me_carmodel{})
if err != nil {
return false
}
return true
}
//改
func (t *Me_carmodel) Update() bool {
e := G_DbEngine
_, err := e.ID(core.PK{G_FINR, t.Carmodelid}).Update(t)
if err != nil {
return false
}
return true
}
//查
func (t *Me_carmodel) SelectOne() (data Me_carmodel, err error) {
var atcodlst []Me_carmodel_atcodlst
var pflst []Me_carmodel_partfamilylst
e := G_DbEngine
_, err = e.ID(core.PK{G_FINR, t.Carmodelid}).Get(&data)
if err != nil {
return data, err
}
data.Clipped()
// 获取分配属性列表
if err = e.Where("finr = ? and carmodelid = ?", G_FINR, t.Carmodelid).OrderBy("pos").Find(&atcodlst); err != nil {
return
}
for i, _ := range atcodlst {
atcodlst[i].Clipped()
}
data.Atcodlst = atcodlst
// 获取分配零件族列表
if err = e.Where("finr = ? and carmodelid = ?", G_FINR, t.Carmodelid).OrderBy("partfamilyid").Find(&pflst); err != nil {
return
}
for i, _ := range pflst {
pflst[i].Clipped()
}
data.Pflst = pflst
return data, nil
}
//查
func (t *Me_carmodel) SelectOneWithPartfamily() (data Me_carmodel, err error) {
e := G_DbEngine
_, err = e.ID(core.PK{G_FINR, t.Carmodelid}).Get(&data)
if err != nil {
return data, err
}
data.Clipped()
// 获取分配零件族列表
if err = e.Where("finr = ? and carmodelid = ?", G_FINR, t.Carmodelid).OrderBy("partfamilyid").Find(&data.Pflst); err != nil {
return
}
for i, _ := range data.Pflst {
data.Pflst[i].Clipped()
}
return data, nil
}
// 获取指定项目的零件族列表
func (t *Me_carmodel) GetProjectAll(projnr string) (datalst []Me_carmodel, err error) {
var i, j, k, m, n, p int
e := G_DbEngine
if err = e.Where("finr = ? and projnr = ?", G_FINR, projnr).OrderBy("carmodelid").Find(&datalst); err != nil {
return
}
// 遍历属性获取属性值列表
for i, _ = range datalst {
datalst[i].Clipped()
datalst[i].Atcodlst = []Me_carmodel_atcodlst{}
// 获取属性列表
if err = e.Where("finr = ? and carmodelid = ?", G_FINR, datalst[i].Carmodelid).OrderBy("pos").Find(&datalst[i].Atcodlst); err != nil {
return
}
for j, _ = range datalst[i].Atcodlst {
datalst[i].Atcodlst[j].Clipped()
}
// 获取分配零件族列表
datalst[i].Pflst = []Me_carmodel_partfamilylst{}
if err = e.Where("finr = ? and carmodelid = ?", G_FINR, datalst[i].Carmodelid).OrderBy("pos").Find(&datalst[i].Pflst); err != nil {
return
}
for k, _ = range datalst[i].Pflst {
datalst[i].Pflst[k].Clipped()
}
// 获取分配供应组列表
datalst[i].Sglst = []Me_carmodel_supplygrouplst{}
if err = e.Where("finr = ? and carmodelid = ?", G_FINR, datalst[i].Carmodelid).OrderBy("pos").Find(&datalst[i].Sglst); err != nil {
return
}
for m, _ = range datalst[i].Sglst {
datalst[i].Sglst[m].Clipped()
}
// 获取所有的版本数据
datalst[i].Verlst = []Me_carmodel_ver{}
if err = e.Where("finr = ? and carmodelid = ?", G_FINR, datalst[i].Carmodelid).OrderBy("version").Find(&datalst[i].Verlst); err != nil {
return
}
for n, _ = range datalst[i].Verlst {
datalst[i].Verlst[n].Clipped()
// 获取版本零件数据
datalst[i].Verlst[n].Partlst = []Me_carmodel_ver_partlst{}
if err = e.Where("finr = ? and carmodelid = ? and version = ?", G_FINR, datalst[i].Verlst[n].Carmodelid,
datalst[i].Verlst[n].Version).OrderBy("supplygroupid, partid").Find(&datalst[i].Verlst[n].Partlst); err != nil {
return
}
for p, _ = range datalst[i].Verlst[n].Partlst {
datalst[i].Verlst[n].Partlst[p].Clipped()
}
}
}
return
}