package db
|
|
|
|
import (
|
|
"errors"
|
|
"leit.com/leit_seat_aps/common"
|
|
"xorm.io/core"
|
|
)
|
|
|
|
//共用件数量分配表
|
|
type Me_partrule struct {
|
|
Finr int `xorm:"pk"`
|
|
Partid string `xorm:"pk"`
|
|
Projnr string `xorm:"pk"`
|
|
Ruleid string `xorm:"pk"`
|
|
Descr string
|
|
Partruletype string
|
|
Partrule_iprecond int
|
|
Partrule_cprecond string
|
|
Lastmodif string
|
|
Lastuser string
|
|
Credatuz string
|
|
Qtyasnlst []Me_partrule_qtyassign `xorm:"-"`
|
|
}
|
|
|
|
func (t *Me_partrule) Clipped() {
|
|
common.TrimStruct(t, *t)
|
|
}
|
|
|
|
func (t *Me_partrule) TableName() string {
|
|
return "me_partrule"
|
|
}
|
|
|
|
//增
|
|
func (t *Me_partrule) Add() error {
|
|
e := G_DbEngine
|
|
ptruletab := new(Me_partrule)
|
|
affw, err := e.Table("me_partrule").ID(core.PK{G_FINR, t.Partid, t.Projnr, t.Ruleid}).Count(ptruletab)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if affw > 0 {
|
|
return errors.New("数据已经存在!")
|
|
}
|
|
_, err = e.Table("me_partrule").Insert(t)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//删
|
|
func (t *Me_partrule) Del() bool {
|
|
e := G_DbEngine
|
|
_, err := e.ID(core.PK{G_FINR, t.Partid, t.Projnr, t.Ruleid}).Delete(&Me_partrule{})
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//改
|
|
func (t *Me_partrule) Update() bool {
|
|
e := G_DbEngine
|
|
_, err := e.ID(core.PK{G_FINR, t.Partid, t.Projnr, t.Ruleid}).Update(t)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//查
|
|
func (t *Me_partrule) SelectOne() (data Me_partrule, err error) {
|
|
var qtyasnlst []Me_partrule_qtyassign
|
|
|
|
e := G_DbEngine
|
|
_, err = e.ID(core.PK{G_FINR, t.Partid, t.Projnr, t.Ruleid}).Get(&data)
|
|
if err != nil {
|
|
return data, err
|
|
}
|
|
data.Clipped()
|
|
|
|
// 获取数量分配列表
|
|
if err = e.Where("finr = ? and partid = ? and projnr = ? and ruleid = ?",
|
|
G_FINR, t.Partid, t.Projnr, t.Ruleid).OrderBy("supplygroupid").Find(&qtyasnlst); err != nil {
|
|
return
|
|
}
|
|
for i, _ := range qtyasnlst {
|
|
qtyasnlst[i].Clipped()
|
|
}
|
|
data.Qtyasnlst = qtyasnlst
|
|
return data, nil
|
|
}
|
|
|
|
// 获取指定项目的零件数量分配列表
|
|
func (t *Me_partrule) GetProjectAll(projnr string) (datalst []Me_partrule, err error) {
|
|
var i, j int
|
|
|
|
e := G_DbEngine
|
|
if err = e.Where("finr = ? and projnr = ?", G_FINR, projnr).OrderBy("partid, ruleid").Find(&datalst); err != nil {
|
|
return
|
|
}
|
|
|
|
// 遍历零件获取数量分配列表
|
|
for i, _ = range datalst {
|
|
datalst[i].Clipped()
|
|
datalst[i].Qtyasnlst = []Me_partrule_qtyassign{}
|
|
// 获取数量分配列表
|
|
if err = e.Where("finr = ? and partid = ? and projnr = ? and ruleid = ?",
|
|
G_FINR, datalst[i].Partid, datalst[i].Projnr, datalst[i].Ruleid).OrderBy("supplygroupid").Find(&datalst[i].Qtyasnlst); err != nil {
|
|
return
|
|
}
|
|
for j, _ = range datalst[i].Qtyasnlst {
|
|
datalst[i].Qtyasnlst[j].Clipped()
|
|
}
|
|
}
|
|
return
|
|
}
|