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.

229 lines
6.4 KiB

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
}