|
|
- package db
-
- import (
- "errors"
- "fmt"
- "github.com/go-xorm/xorm"
- "leit.com/leit_seat_aps/common"
- "xorm.io/core"
- )
-
- //发运包装单表
- type Prod_packorder struct {
- Finr int `xorm:"pk" json:"prod_packorder.finr"`
- Packorderid string `xorm:"pk" json:"prod_packorder.packorderid"`
- Packtemplateid string `json:"prod_packorder.packtemplateid"`
- Status int `json:"prod_packorder.status"`
- Loadstatus int `json:"prod_packorder.loadstatus"` // 装车状态,0=未装车,1=已装车
- Shortpack int `json:"prod_packorder.shortpack"` // 是否短包
- Shortby string `json:"prod_packorder.shortby"`
- Shorttime string `json:"prod_packorder.shorttime"`
- Orderinfo string `json:"prod_packorder.orderinfo"`
- Projnr string `json:"prod_packorder.projnr"`
- Syncsn string `json:"prod_packorder.syncsn"`
- Boxsn string `json:"prod_packorder.boxsn"`
- Packtypeid string `json:"prod_packorder.packtypeid"`
- Printerid string `json:"prod_packorder.printerid"`
- Templatefile string `json:"prod_packorder.templatefile"`
- Planqty int `json:"prod_packorder.planqty"`
- Actqty int `json:"prod_packorder.actqty"`
- Opentime string `json:"prod_packorder.opentime"`
- Closetime string `json:"prod_packorder.closetime"`
- Operator string `json:"prod_packorder.operator"`
- Lastmodif string `json:"prod_packorder.lastmodif"`
- Lastuser string `json:"prod_packorder.lastuser"`
- Credatuz string `json:"prod_packorder.credatuz"`
- Itemlst []Prod_packorder_itemlst `json:"itemlst" xorm:"-"`
- }
-
- type VProdPackorder struct {
- Prod_packorder `xorm:"extends"`
- Prod_packorder_itemlst `xorm:"extends"`
- }
-
- func (t *Prod_packorder) Clipped() {
- common.TrimStruct(t, *t)
- }
- func (t *Prod_packorder) TableName() string {
- return "prod_packorder"
- }
-
- //增
- func (t *Prod_packorder) Add() (err error) {
- var (
- i int
- affw int64
- pkotab Prod_packorder
- )
-
- e := G_DbEngine
- pkotab = Prod_packorder{}
- affw, err = e.Table("prod_packorder").ID(core.PK{G_FINR, t.Packorderid}).Count(pkotab)
- if err != nil {
- return err
- }
- if affw > 0 {
- return errors.New("数据已经存在!")
- }
- _, err = e.Table("prod_packorder").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 *Prod_packorder) Insert(session *xorm.Session) (err error) {
- var (
- i int
- affw int64
- pkotab Prod_packorder
- )
-
- pkotab = Prod_packorder{}
- affw, err = session.Table("prod_packorder").ID(core.PK{G_FINR, t.Packorderid}).Count(pkotab)
- if err != nil {
- return err
- }
- if affw > 0 {
- return errors.New("数据已经存在!")
- }
- _, err = session.Table("prod_packorder").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
- }
-
- //删
- func (t *Prod_packorder) Del() bool {
- e := G_DbEngine
- _, err := e.ID(core.PK{G_FINR, t.Packorderid}).Delete(&Prod_packorder{})
- if err != nil {
- return false
- }
- return true
- }
-
- //改
- func (t *Prod_packorder) Update() bool {
- e := G_DbEngine
- _, err := e.ID(core.PK{G_FINR, t.Packorderid}).Update(t)
- if err != nil {
- return false
- }
- return true
- }
-
- //更新指定字段
- func (t *Prod_packorder) UpdateFields(session *xorm.Session, fields string) (err error) {
- if _, err = session.Table("prod_packorder").ID(core.PK{G_FINR, t.Packorderid}).Cols(fields).Update(t); err != nil {
- return
- }
- return
- }
-
- //查
- func (t *Prod_packorder) SelectOne() (data Prod_packorder, err error) {
- var i int
-
- e := G_DbEngine
- _, err = e.ID(core.PK{G_FINR, t.Packorderid}).Get(&data)
- if err != nil {
- return data, err
- }
- data.Clipped()
-
- // 获取值列表
- if err = e.Where("finr = ? and packorderid = ? ",
- G_FINR, data.Packorderid).OrderBy("pos").Find(&data.Itemlst); err != nil {
- return
- }
- for i, _ = range data.Itemlst {
- data.Itemlst[i].Clipped()
- }
-
- return data, nil
- }
-
- //查
- func (t *Prod_packorder) SelectOneBySession(session *xorm.Session) (data Prod_packorder, err error) {
- var i int
-
- _, err = session.ID(core.PK{G_FINR, t.Packorderid}).Get(&data)
- if err != nil {
- return data, err
- }
- data.Clipped()
-
- // 获取值列表
- if err = session.Where("finr = ? and packorderid = ? ",
- G_FINR, data.Packorderid).OrderBy("pos").Find(&data.Itemlst); err != nil {
- return
- }
- for i, _ = range data.Itemlst {
- data.Itemlst[i].Clipped()
- }
-
- return data, nil
- }
-
- // 基于指定项目和供应组获取开口包装
- func (t *Prod_packorder) GetOpenOnesBySupplyGroup(projnr string, sgid string) (datalst []Prod_packorder, err error) {
- var (
- i int
- pakordict map[string]string
- ok bool
- pakord Prod_packorder
- vdatalst []VProdPackorder
-
- )
-
- e := G_DbEngine
- datalst = []Prod_packorder{}
- query := e.Table("prod_packorder")
- query = query.Join("INNER", "prod_packorder_itemlst", "prod_packorder.finr = prod_packorder_itemlst.finr and prod_packorder.packorderid = prod_packorder_itemlst.packorderid")
- query = query.Where("prod_packorder.finr = ? and prod_packorder.projnr = ? and prod_packorder.status < ? and prod_packorder_itemlst.supplygroupid = ?", G_FINR, projnr, common.PKO_STATUS_RELEASED, sgid )
- query = query.OrderBy("prod_packorder.packorderid")
- // 查询
- if err = query.Find(&vdatalst); err != nil {
- return
- }
-
- pakordict = make( map[string]string )
- for i = 0; i < len(vdatalst); i++ {
- vdatalst[i].Prod_packorder.Clipped()
- vdatalst[i].Prod_packorder_itemlst.Clipped()
-
- if _, ok = pakordict[vdatalst[i].Prod_packorder.Packorderid]; !ok {
- pakordict[vdatalst[i].Prod_packorder.Packorderid] = vdatalst[i].Prod_packorder.Packorderid
- // 查询包装单
- pakord = Prod_packorder{Packorderid: vdatalst[i].Prod_packorder.Packorderid}
- if pakord, err = pakord.SelectOne(); err != nil {
- return
- }
-
- datalst = append(datalst, pakord)
- }
- }
-
- return
- }
-
- // 基于指定项目、oemseq和供应组获取包装
- func (t *Prod_packorder) GetByOemSeqSupplyGroup(projnr string, oemseq int, sgid string) (datalst []Prod_packorder, err error) {
- var (
- i int
- pakordict map[string]string
- ok bool
- pakord Prod_packorder
- vdatalst []VProdPackorder
-
- )
-
- e := G_DbEngine
- datalst = []Prod_packorder{}
- query := e.Table("prod_packorder")
- query = query.Join("INNER", "prod_packorder_itemlst", "prod_packorder.finr = prod_packorder_itemlst.finr and prod_packorder.packorderid = prod_packorder_itemlst.packorderid")
- query = query.Where("prod_packorder.finr = ? and prod_packorder.projnr = ? and prod_packorder_itemlst.oemseq = ? and prod_packorder_itemlst.supplygroupid = ?", G_FINR, projnr, oemseq, sgid )
-
- // 查询
- if err = query.Find(&vdatalst); err != nil {
- return
- }
-
- pakordict = make( map[string]string )
- for i = 0; i < len(vdatalst); i++ {
- vdatalst[i].Prod_packorder.Clipped()
- vdatalst[i].Prod_packorder_itemlst.Clipped()
-
- if _, ok = pakordict[vdatalst[i].Prod_packorder.Packorderid]; !ok {
- fmt.Println(" 基于OEMSEQ获取包装单:",vdatalst[i].Prod_packorder.Packorderid)
- pakordict[vdatalst[i].Prod_packorder.Packorderid] = vdatalst[i].Prod_packorder.Packorderid
- // 查询包装单
- pakord = Prod_packorder{Packorderid: vdatalst[i].Prod_packorder.Packorderid}
- if pakord, err = pakord.SelectOne(); err != nil {
- return
- }
-
- datalst = append(datalst, pakord)
- }
- }
-
- return
- }
-
- // 基于指定项目、schedseq 获取包装
- func (t *Prod_packorder) GetByCheckSeq(session *xorm.Session, projnr string, schedseq int ) (datalst []Prod_packorder, err error) {
- var (
- i int
- pakordict map[string]string
- ok bool
- pakord Prod_packorder
- vdatalst []VProdPackorder
-
- )
-
- datalst = []Prod_packorder{}
- query := session.Table("prod_packorder")
- query = query.Join("INNER", "prod_packorder_itemlst", "prod_packorder.finr = prod_packorder_itemlst.finr and prod_packorder.packorderid = prod_packorder_itemlst.packorderid")
- query = query.Where("prod_packorder.finr = ? and prod_packorder.projnr = ? and prod_packorder_itemlst.seq = ?", G_FINR, projnr, schedseq )
- // 查询
- if err = query.Find(&vdatalst); err != nil {
- return
- }
-
- pakordict = make( map[string]string )
- for i = 0; i < len(vdatalst); i++ {
- vdatalst[i].Prod_packorder.Clipped()
- vdatalst[i].Prod_packorder_itemlst.Clipped()
-
- if _, ok = pakordict[vdatalst[i].Prod_packorder.Packorderid]; !ok {
- pakordict[vdatalst[i].Prod_packorder.Packorderid] = vdatalst[i].Prod_packorder.Packorderid
- // 查询包装单
- pakord = Prod_packorder{Packorderid: vdatalst[i].Prod_packorder.Packorderid}
- if pakord, err = pakord.SelectOneBySession(session); err != nil {
- return
- }
-
- datalst = append(datalst, pakord)
- }
- }
-
- return
- }
-
- // 获取项目未装车的包装订单,status >= 26, loadstatus = 0
- func (t *Prod_packorder) GetUnloadedPackOrders(projnr string) (datalst []Prod_packorder, err error) {
- var i, j int
-
- e := G_DbEngine
- if err = e.Where("finr = ? and projnr = ? and status >= ? and loadstatus = ?",
- G_FINR, projnr, common.PKO_STATUS_PLANNED, common.PKO_STATUS_UNLOADED).OrderBy("packorderid").Find(&datalst); err != nil {
- return
- }
-
- // 获取值列表
- for i = 0; i < len(datalst); i++ {
- datalst[i].Clipped()
- if err = e.Where("finr = ? and packorderid = ? ",
- G_FINR, datalst[i].Packorderid).OrderBy("pos").Find(&datalst[i].Itemlst); err != nil {
- return
- }
- for j, _ = range datalst[i].Itemlst {
- datalst[i].Itemlst[j].Clipped()
- }
- }
-
- return
- }
-
- // 基于syncid数组获取相关包装单
- func (t *Prod_packorder) GetListBySyncidList(session *xorm.Session, projnr string, syncidlst []string) (datalst []Prod_packorder, err error) {
- var i, j int
-
- if err = session.Where("finr = ? and projnr = ?",G_FINR, projnr).In("syncsn", syncidlst).OrderBy("packorderid").Find(&datalst); err != nil {
- return
- }
-
- // 获取值列表
- for i = 0; i < len(datalst); i++ {
- datalst[i].Clipped()
- if err = session.Where("finr = ? and packorderid = ? ",
- G_FINR, datalst[i].Packorderid).OrderBy("pos").Find(&datalst[i].Itemlst); err != nil {
- return
- }
- for j, _ = range datalst[i].Itemlst {
- datalst[i].Itemlst[j].Clipped()
- }
- }
-
- return
- }
-
|