package db import ( "errors" "github.com/go-xorm/xorm" "leit.com/leit_seat_aps/common" "xorm.io/core" ) //发运包装单表 type Jit_shiporder struct { Finr int `xorm:"pk" json:"jit_shiporder.finr"` Shiporderid string `xorm:"pk" json:"jit_shiporder.shiporderid"` Shiptemplateid string `json:"jit_shiporder.shiptemplateid"` Projnr string `json:"jit_shiporder.projnr"` Status int `json:"jit_shiporder.status"` Shiptype string `json:"jit_shiporder.shiptype"` Orderinfo string `json:"jit_shiporder.orderinfo"` Printerid string `json:"jit_shiporder.printerid"` Templatefile string `json:"jit_shiporder.templatefile"` Planqty int `json:"jit_shiporder.planqty"` Actqty int `json:"jit_shiporder.actqty"` Opentime string `json:"jit_shiporder.opentime"` Closetime string `json:"jit_shiporder.closetime"` Operator string `json:"jit_shiporder.operator"` Lastmodif string `json:"jit_shiporder.lastmodif"` Lastuser string `json:"jit_shiporder.lastuser"` Credatuz string `json:"jit_shiporder.credatuz"` Itemlst []Jit_shiporder_itemlst `json:"itemlst" xorm:"-"` } func (t *Jit_shiporder) Clipped() { common.TrimStruct(t, *t) } func (t *Jit_shiporder) TableName() string { return "jit_shiporder" } //增 func (t *Jit_shiporder) Add() (err error) { var ( i int affw int64 spotab Jit_shiporder ) e := G_DbEngine spotab = Jit_shiporder{} affw, err = e.Table("jit_shiporder").ID(core.PK{G_FINR, t.Shiporderid}).Count(spotab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = e.Table("jit_shiporder").Insert(t) if err != nil { return err } // 遍历子项并插入 for i = 0; i < len(t.Itemlst); i++ { if err = t.Itemlst[i].Add(); err != nil { return } } return nil } //增 func (t *Jit_shiporder) Insert(session *xorm.Session) (err error) { var ( i int affw int64 spotab Jit_shiporder ) spotab = Jit_shiporder{} affw, err = session.Table("jit_shiporder").ID(core.PK{G_FINR, t.Shiporderid}).Count(spotab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = session.Table("jit_shiporder").Insert(t) if err != nil { return err } // 遍历子项并插入 for i = 0; i < len(t.Itemlst); i++ { if err = t.Itemlst[i].Insert(session); err != nil { return } } return nil } //删 func (t *Jit_shiporder) Del() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Shiporderid}).Delete(&Jit_shiporder{}) if err != nil { return false } return true } //改 func (t *Jit_shiporder) Update() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Shiporderid}).Update(t) if err != nil { return false } return true } //更新指定字段 func (t *Jit_shiporder) UpdateFields(session *xorm.Session, fields string) (err error) { if _, err = session.Table("jit_shiporder").ID(core.PK{G_FINR, t.Shiporderid}).Cols(fields).Update(t); err != nil { return } return } //查 func (t *Jit_shiporder) SelectOne() (data Jit_shiporder, err error) { var i, j int e := G_DbEngine _, err = e.ID(core.PK{G_FINR, t.Shiporderid}).Get(&data) if err != nil { return data, err } data.Clipped() // 获取值列表 if err = e.Where("finr = ? and shiporderid = ? ", G_FINR, data.Shiporderid).OrderBy("pos").Find(&data.Itemlst); err != nil { return } for i, _ = range data.Itemlst { data.Itemlst[i].Clipped() if err = e.Where("finr = ? and shiporderid = ? and packtypeid = ?", G_FINR, data.Shiporderid, data.Itemlst[i].Packtypeid).OrderBy("packorderid").Find(&data.Itemlst[i].Itemlst); err != nil { return } for j, _ = range data.Itemlst[i].Itemlst { data.Itemlst[i].Itemlst[j].Clipped() } } return data, nil } //查 func (t *Jit_shiporder) SelectOneBySession(session *xorm.Session) (data Jit_shiporder, err error) { var i, j int _, err = session.ID(core.PK{G_FINR, t.Shiporderid}).Get(&data) if err != nil { return data, err } // 获取值列表 if err = session.Where("finr = ? and shiporderid = ? ", G_FINR, data.Shiporderid).OrderBy("pos").Find(&data.Itemlst); err != nil { return } for i, _ = range data.Itemlst { data.Itemlst[i].Clipped() if err = session.Where("finr = ? and shiporderid = ? and packtypeid = ?", G_FINR, data.Shiporderid, data.Itemlst[i].Packtypeid).OrderBy("packorderid").Find(&data.Itemlst[i].Itemlst); err != nil { return } for j, _ = range data.Itemlst[i].Itemlst { data.Itemlst[i].Itemlst[j].Clipped() } } return data, nil } // 指定项目状态为20的开口发运车 func (t *Jit_shiporder) GetOpenShipOrders(projnr string) (datalst []Jit_shiporder, err error) { var i, j, k int e := G_DbEngine if err = e.Where("finr = ? and projnr = ? and status >= ? and status <= ? and shiptype != ?", G_FINR, projnr, common.SPO_STATUS_UNPLANNED, common.SPO_STATUS_PLANNED, "REO").OrderBy("shiporderid").Find(&datalst); err != nil { return } // 获取发运车子项列表 for i = 0; i < len(datalst); i++ { datalst[i].Clipped() if err = e.Where("finr = ? and shiporderid = ? ", G_FINR, datalst[i].Shiporderid).OrderBy("pos").Find(&datalst[i].Itemlst); err != nil { return } // 获取发运车子项的包装单数据 for j, _ = range datalst[i].Itemlst { datalst[i].Itemlst[j].Clipped() if err = e.Where("finr = ? and shiporderid = ? and packtypeid = ?", G_FINR, datalst[i].Shiporderid, datalst[i].Itemlst[j].Packtypeid).OrderBy("packorderid").Find(&datalst[i].Itemlst[j].Itemlst); err != nil { return } for k, _ = range datalst[i].Itemlst[j].Itemlst { datalst[i].Itemlst[j].Itemlst[k].Clipped() } } } return }