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 }