package db
|
|
|
|
import (
|
|
"errors"
|
|
"leit.com/leit_seat_aps/common"
|
|
"xorm.io/core"
|
|
)
|
|
|
|
//供应组
|
|
type Me_supplygroup struct {
|
|
Finr int `xorm:"pk" json:"me_supplygroup.finr"`
|
|
Supplygroupid string `xorm:"pk" json:"me_supplygroup.supplygroupid"`
|
|
Partfamilyid string `json:"me_supplygroup.partfamilyid"`
|
|
Worklineid string `json:"me_supplygroup.worklineid"`
|
|
Sgtype string `json:"me_supplygroup.sgtype"`
|
|
Fsupplygroupid string `json:"me_supplygroup.fsupplygroupid"`
|
|
Shippablesg int `json:"me_supplygroup.shippablesg"`
|
|
Multioutput int `json:"me_supplygroup.multioutput"`
|
|
Modfactor int `json:"me_supplygroup.modfactor"`
|
|
Descr string `json:"me_supplygroup.descr"`
|
|
Sg_cust1 string `json:"me_supplygroup.sg_cust1"`
|
|
Sg_cust2 string `json:"me_supplygroup.sg_cust2"`
|
|
Sg_cust3 string `json:"me_supplygroup.sg_cust3"`
|
|
Sg_cust4 string `json:"me_supplygroup.sg_cust4"`
|
|
Lastmodif string `json:"me_supplygroup.lastmodif"`
|
|
Lastuser string `json:"me_supplygroup.lastuser"`
|
|
Credatuz string `json:"me_supplygroup.credatuz"`
|
|
Atcodlst []Me_supplygroup_atcodlst `xorm:"-"`
|
|
Asnsglst []Me_supplygroup_assignment `xorm:"-"`
|
|
}
|
|
|
|
// 零件族和供应组的综合视图
|
|
type VPartFamily_SupplyGroup struct {
|
|
Me_partfamily `xorm:"extends"`
|
|
Me_supplygroup `xorm:"extends"`
|
|
}
|
|
|
|
func (t *Me_supplygroup) Clipped() {
|
|
common.TrimStruct(t, *t)
|
|
}
|
|
|
|
func (t *Me_supplygroup) TableName() string {
|
|
return "me_supplygroup"
|
|
}
|
|
|
|
//增
|
|
func (t *Me_supplygroup) Add() error {
|
|
e := G_DbEngine
|
|
sgtab := new(Me_supplygroup)
|
|
affw, err := e.Table("me_supplygroup").ID(core.PK{G_FINR, t.Supplygroupid}).Count(sgtab)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if affw > 0 {
|
|
return errors.New("数据已经存在!")
|
|
}
|
|
_, err = e.Table("me_supplygroup").Insert(t)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//删
|
|
func (t *Me_supplygroup) Del() bool {
|
|
e := G_DbEngine
|
|
_, err := e.ID(core.PK{G_FINR, t.Supplygroupid}).Delete(&Me_supplygroup{})
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//改
|
|
func (t *Me_supplygroup) Update() bool {
|
|
e := G_DbEngine
|
|
_, err := e.ID(core.PK{G_FINR, t.Supplygroupid}).Update(t)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//查
|
|
func (t *Me_supplygroup) SelectOne() (data Me_supplygroup, err error) {
|
|
var atcodlst []Me_supplygroup_atcodlst
|
|
|
|
e := G_DbEngine
|
|
_, err = e.ID(core.PK{G_FINR, t.Supplygroupid}).Get(&data)
|
|
if err != nil {
|
|
return data, err
|
|
}
|
|
data.Clipped()
|
|
|
|
// 获取分配的属性列表
|
|
if err = e.Where("finr = ? and supplygroupid = ?", G_FINR, t.Supplygroupid).OrderBy("attrcode").Find(&atcodlst); err != nil {
|
|
return
|
|
}
|
|
for i, _ := range atcodlst {
|
|
atcodlst[i].Clipped()
|
|
}
|
|
data.Atcodlst = atcodlst
|
|
return data, nil
|
|
}
|
|
|
|
// 获取指定项目的供应组列表
|
|
func (t *Me_supplygroup) GetProjectAll(projnr string) (datalst []Me_supplygroup, err error) {
|
|
var (
|
|
pftablst []Me_partfamily
|
|
pfarray []string
|
|
i, j, k int
|
|
)
|
|
|
|
e := G_DbEngine
|
|
if err = e.Where("finr = ? and projnr = ?", G_FINR, projnr).OrderBy("partfamilyid").Find(&pftablst); err != nil {
|
|
return
|
|
}
|
|
pfarray = make([]string, len(pftablst))
|
|
for i = 0; i < len(pftablst); i++ {
|
|
pfarray[i] = pftablst[i].Partfamilyid
|
|
}
|
|
if err = e.Where("finr = ?", G_FINR).In("partfamilyid", pfarray).Find(&datalst); err != nil {
|
|
return
|
|
}
|
|
|
|
// 遍历供应组获取分配的属性列表
|
|
for i, _ = range datalst {
|
|
datalst[i].Clipped()
|
|
datalst[i].Atcodlst = []Me_supplygroup_atcodlst{}
|
|
datalst[i].Asnsglst = []Me_supplygroup_assignment{}
|
|
// 获取属性值列表
|
|
if err = e.Where("finr = ? and supplygroupid = ?", G_FINR, datalst[i].Supplygroupid).OrderBy("attrcode").Find(&datalst[i].Atcodlst); err != nil {
|
|
return
|
|
}
|
|
for j, _ = range datalst[i].Atcodlst {
|
|
datalst[i].Atcodlst[j].Clipped()
|
|
}
|
|
// 获取分配的供应组列表
|
|
if err = e.Where("finr = ? and supplygroupid = ?", G_FINR, datalst[i].Supplygroupid).OrderBy("pos").Find(&datalst[i].Asnsglst); err != nil {
|
|
return
|
|
}
|
|
for k, _ = range datalst[i].Asnsglst {
|
|
datalst[i].Asnsglst[k].Clipped()
|
|
}
|
|
}
|
|
return
|
|
}
|