package db
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/go-xorm/xorm"
|
|
"leit.com/leit_seat_aps/common"
|
|
"xorm.io/core"
|
|
)
|
|
|
|
//拣料单模板头
|
|
type Pln_picktemplate struct {
|
|
Finr int `xorm:"pk" json:"pln_picktemplate.finr"`
|
|
Picktemplateid string `xorm:"pk" json:"pln_picktemplate.picktemplateid"`
|
|
Active int `json:"pln_picktemplate.active"`
|
|
Descr string `json:"pln_picktemplate.descr"`
|
|
Adaptway string `json:"pln_picktemplate.adaptway"` // A = 属性 P = 零件
|
|
Worklineid string `json:"pln_picktemplate.worklineid"`
|
|
Printerid string `json:"pln_picktemplate.printerid"`
|
|
Templatefile string `json:"pln_picktemplate.templatefile"`
|
|
Printqty int `json:"pln_picktemplate.printqty"` // 打印数量
|
|
Planqty int `json:"pln_picktemplate.planqty"` // 计划总数
|
|
Countmode string `json:"pln_picktemplate.countmode"` // 计数模式: 按单 = WORD / 按总数 = TQTY
|
|
Twodsheet int `json:"pln_picktemplate.twodsheet"`
|
|
Orientation int `json:"pln_picktemplate.orientation"`
|
|
Lastmodif string `json:"pln_picktemplate.lastmodif"`
|
|
Lastuser string `json:"pln_picktemplate.lastuser"`
|
|
Credatuz string `json:"pln_picktemplate.credatuz"`
|
|
Attrlst []Pln_picktemplate_attrlst `xorm:"-"`
|
|
Itemlst []Pln_picktemplate_itemlst `xorm:"-"`
|
|
Printlst []Pln_picktemplate_printlst `xorm:"-"`
|
|
}
|
|
|
|
func (t *Pln_picktemplate) Clipped() {
|
|
common.TrimStruct(t, *t)
|
|
}
|
|
|
|
func (t *Pln_picktemplate) TableName() string {
|
|
return "pln_picktemplate"
|
|
}
|
|
|
|
//增
|
|
func (t *Pln_picktemplate) Add() error {
|
|
e := G_DbEngine
|
|
pkttab := new(Pln_picktemplate)
|
|
affw, err := e.Table("pln_picktemplate").ID(core.PK{G_FINR, t.Picktemplateid}).Count(pkttab)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if affw > 0 {
|
|
return errors.New("数据已经存在!")
|
|
}
|
|
_, err = e.Table("pln_picktemplate").Insert(t)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//增
|
|
func (t *Pln_picktemplate) Insert(session *xorm.Session) error {
|
|
pkttab := new(Pln_picktemplate)
|
|
affw, err := session.Table("pln_picktemplate").ID(core.PK{G_FINR, t.Picktemplateid}).Count(pkttab)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if affw > 0 {
|
|
return errors.New("数据已经存在!")
|
|
}
|
|
_, err = session.Table("pln_picktemplate").Insert(t)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//删
|
|
func (t *Pln_picktemplate) Del() bool {
|
|
e := G_DbEngine
|
|
_, err := e.ID(core.PK{G_FINR, t.Picktemplateid}).Delete(&Pln_picktemplate{})
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//改
|
|
func (t *Pln_picktemplate) Update() bool {
|
|
e := G_DbEngine
|
|
_, err := e.ID(core.PK{G_FINR, t.Picktemplateid}).Update(t)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//更新指定字段
|
|
func (t *Pln_picktemplate) UpdateFields(session *xorm.Session, fields string) (err error) {
|
|
if _, err = session.Table("pln_picktemplate").ID(core.PK{G_FINR, t.Picktemplateid}).Cols(fields).Update(t); err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
//查
|
|
func (t *Pln_picktemplate) SelectOne() (data Pln_picktemplate, err error) {
|
|
var (
|
|
i, j, k int
|
|
attrtablst []Pln_picktemplate_attrlst
|
|
itemtablst []Pln_picktemplate_itemlst
|
|
printtablst []Pln_picktemplate_printlst
|
|
)
|
|
|
|
e := G_DbEngine
|
|
_, err = e.ID(core.PK{t.Finr, t.Picktemplateid}).Get(&data)
|
|
if err != nil {
|
|
return data, err
|
|
}
|
|
|
|
// 获取分配的属性值列表
|
|
attrtablst = []Pln_picktemplate_attrlst{}
|
|
if err = e.Where("finr = ? and picktemplateid = ?", G_FINR, t.Picktemplateid).OrderBy("attrcode").Find(&attrtablst); err != nil {
|
|
return
|
|
}
|
|
for i, _ = range attrtablst {
|
|
attrtablst[i].Clipped()
|
|
}
|
|
data.Attrlst = attrtablst
|
|
|
|
// 获取分配的零件列表
|
|
itemtablst = []Pln_picktemplate_itemlst{}
|
|
if err = e.Where("finr = ? and picktemplateid = ?", G_FINR, t.Picktemplateid).OrderBy("partid").Find(&itemtablst); err != nil {
|
|
return
|
|
}
|
|
for j, _ = range itemtablst {
|
|
itemtablst[j].Clipped()
|
|
}
|
|
data.Itemlst = itemtablst
|
|
|
|
// 获取打印设置列表
|
|
printtablst = []Pln_picktemplate_printlst{}
|
|
if err = e.Where("finr = ? and picktemplateid = ?", G_FINR, t.Picktemplateid).OrderBy("pos").Find(&printtablst); err != nil {
|
|
return
|
|
}
|
|
for k, _ = range printtablst {
|
|
printtablst[k].Clipped()
|
|
}
|
|
data.Printlst = printtablst
|
|
|
|
return data, nil
|
|
}
|
|
|
|
//查询所有激活的拣料单模板及其主数据
|
|
func (t *Pln_picktemplate) GetAllActive() (datalst []Pln_picktemplate, err error) {
|
|
var (
|
|
i, j, k, l int
|
|
attrtablst []Pln_picktemplate_attrlst
|
|
itemtablst []Pln_picktemplate_itemlst
|
|
printtablst []Pln_picktemplate_printlst
|
|
)
|
|
|
|
e := G_DbEngine
|
|
if err = e.Where("finr = ? and active = ?", G_FINR, common.OBJ_ACTIVE).OrderBy("picktemplateid").Find(&datalst); err != nil {
|
|
return
|
|
}
|
|
|
|
// 遍历模板头
|
|
for i = 0; i < len(datalst); i++ {
|
|
datalst[i].Clipped()
|
|
// 获取分配的属性值列表
|
|
attrtablst = []Pln_picktemplate_attrlst{}
|
|
if err = e.Where("finr = ? and picktemplateid = ?", G_FINR, datalst[i].Picktemplateid).OrderBy("attrcode").Find(&attrtablst); err != nil {
|
|
return
|
|
}
|
|
for j, _ = range attrtablst {
|
|
attrtablst[j].Clipped()
|
|
}
|
|
datalst[i].Attrlst = attrtablst
|
|
|
|
// 获取分配的零件列表
|
|
itemtablst = []Pln_picktemplate_itemlst{}
|
|
if err = e.Where("finr = ? and picktemplateid = ?", G_FINR, datalst[i].Picktemplateid).OrderBy("partid").Find(&itemtablst); err != nil {
|
|
return
|
|
}
|
|
for k, _ = range itemtablst {
|
|
itemtablst[k].Clipped()
|
|
}
|
|
datalst[i].Itemlst = itemtablst
|
|
|
|
// 获取打印设置列表
|
|
printtablst = []Pln_picktemplate_printlst{}
|
|
if err = e.Where("finr = ? and picktemplateid = ?", G_FINR, datalst[i].Picktemplateid).OrderBy("pos").Find(&printtablst); err != nil {
|
|
return
|
|
}
|
|
for l, _ = range printtablst {
|
|
printtablst[l].Clipped()
|
|
}
|
|
datalst[i].Printlst = printtablst
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 获取指定属性的位置值
|
|
func (t *Pln_picktemplate) GetAttributePos(iatcod int) int {
|
|
var i int
|
|
|
|
for i = 0; i < len(t.Attrlst); i++ {
|
|
if t.Attrlst[i].Attrcode == iatcod {
|
|
return i
|
|
}
|
|
}
|
|
|
|
return -1
|
|
}
|
|
|
|
// 获取指定零件的位置值
|
|
func (t *Pln_picktemplate) GetPartPos(partid string) int {
|
|
var i int
|
|
|
|
for i = 0; i < len(t.Itemlst); i++ {
|
|
if t.Itemlst[i].Partid == partid {
|
|
return i
|
|
}
|
|
}
|
|
|
|
return -1
|
|
}
|