package db
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"github.com/go-xorm/xorm"
|
|
"leit.com/leit_seat_aps/common"
|
|
"xorm.io/core"
|
|
)
|
|
|
|
//发运包装单表
|
|
type Jit_packorder struct {
|
|
Finr int `xorm:"pk" json:"jit_packorder.finr"`
|
|
Packorderid string `xorm:"pk" json:"jit_packorder.packorderid"`
|
|
Packtemplateid string `json:"jit_packorder.packtemplateid"`
|
|
Status int `json:"jit_packorder.status"`
|
|
Loadstatus int `json:"jit_packorder.loadstatus"` // 装车状态,0=未装车,1=已装车
|
|
Shortpack int `json:"jit_packorder.shortpack"` // 是否短包
|
|
Shortby string `json:"jit_packorder.shortby"`
|
|
Shorttime string `json:"jit_packorder.shorttime"`
|
|
Orderinfo string `json:"jit_packorder.orderinfo"`
|
|
Projnr string `json:"jit_packorder.projnr"`
|
|
Syncsn string `json:"jit_packorder.syncsn"`
|
|
Boxsn string `json:"jit_packorder.boxsn"`
|
|
Packtypeid string `json:"jit_packorder.packtypeid"`
|
|
Printerid string `json:"jit_packorder.printerid"`
|
|
Templatefile string `json:"jit_packorder.templatefile"`
|
|
Planqty int `json:"jit_packorder.planqty"`
|
|
Actqty int `json:"jit_packorder.actqty"`
|
|
Opentime string `json:"jit_packorder.opentime"`
|
|
Closetime string `json:"jit_packorder.closetime"`
|
|
Operator string `json:"jit_packorder.operator"`
|
|
Lastmodif string `json:"jit_packorder.lastmodif"`
|
|
Lastuser string `json:"jit_packorder.lastuser"`
|
|
Credatuz string `json:"jit_packorder.credatuz"`
|
|
Itemlst []Jit_packorder_itemlst `json:"itemlst" xorm:"-"`
|
|
}
|
|
|
|
// 指定同步号包装单锁关联的客户订单视图
|
|
type VCustorderPackorder struct {
|
|
Pln_custorder `xorm:"extends"`
|
|
Pln_workorder `xorm:"extends"`
|
|
Jit_packorder_itemlst `xorm:"extends"`
|
|
Jit_packorder `xorm:"extends"`
|
|
}
|
|
|
|
type VPackorder struct {
|
|
Jit_packorder `xorm:"extends"`
|
|
Jit_packorder_itemlst `xorm:"extends"`
|
|
}
|
|
|
|
func (t *Jit_packorder) Clipped() {
|
|
common.TrimStruct(t, *t)
|
|
}
|
|
func (t *Jit_packorder) TableName() string {
|
|
return "jit_packorder"
|
|
}
|
|
|
|
//增
|
|
func (t *Jit_packorder) Add() (err error) {
|
|
var (
|
|
i int
|
|
affw int64
|
|
pkotab Jit_packorder
|
|
)
|
|
|
|
e := G_DbEngine
|
|
pkotab = Jit_packorder{}
|
|
affw, err = e.Table("jit_packorder").ID(core.PK{G_FINR, t.Packorderid}).Count(pkotab)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if affw > 0 {
|
|
return errors.New("数据已经存在!")
|
|
}
|
|
_, err = e.Table("jit_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 *Jit_packorder) Insert(session *xorm.Session) (err error) {
|
|
var (
|
|
i int
|
|
affw int64
|
|
pkotab Jit_packorder
|
|
)
|
|
|
|
pkotab = Jit_packorder{}
|
|
affw, err = session.Table("jit_packorder").ID(core.PK{G_FINR, t.Packorderid}).Count(pkotab)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if affw > 0 {
|
|
return errors.New("数据已经存在!")
|
|
}
|
|
_, err = session.Table("jit_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 *Jit_packorder) Del() bool {
|
|
e := G_DbEngine
|
|
_, err := e.ID(core.PK{G_FINR, t.Packorderid}).Delete(&Jit_packorder{})
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//改
|
|
func (t *Jit_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 *Jit_packorder) UpdateFields(session *xorm.Session, fields string) (err error) {
|
|
if _, err = session.Table("jit_packorder").ID(core.PK{G_FINR, t.Packorderid}).Cols(fields).Update(t); err != nil {
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
//查
|
|
func (t *Jit_packorder) SelectOne() (data Jit_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 *Jit_packorder) SelectOneBySession(session *xorm.Session) (data Jit_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
|
|
}
|
|
|
|
// 基于指定项目、checksequence和供应组获取包装
|
|
func (t *Jit_packorder) GetByCheckSeqSupplyGroup(session *xorm.Session, projnr string, cs int, sgid string) (datalst []Jit_packorder, err error) {
|
|
var (
|
|
i int
|
|
pakordict map[string]string
|
|
ok bool
|
|
pakord Jit_packorder
|
|
vdatalst []VPackorder
|
|
|
|
)
|
|
|
|
datalst = []Jit_packorder{}
|
|
query := session.Table("jit_packorder")
|
|
query = query.Join("INNER", "jit_packorder_itemlst", "jit_packorder.finr = jit_packorder_itemlst.finr and jit_packorder.packorderid = jit_packorder_itemlst.packorderid")
|
|
query = query.Where("jit_packorder.finr = ? and jit_packorder.projnr = ? and jit_packorder_itemlst.seq = ? and jit_packorder_itemlst.supplygroupid = ?", G_FINR, projnr, cs, sgid )
|
|
// 查询
|
|
if err = query.Find(&vdatalst); err != nil {
|
|
return
|
|
}
|
|
|
|
pakordict = make( map[string]string )
|
|
for i = 0; i < len(vdatalst); i++ {
|
|
vdatalst[i].Jit_packorder.Clipped()
|
|
vdatalst[i].Jit_packorder_itemlst.Clipped()
|
|
|
|
if _, ok = pakordict[vdatalst[i].Jit_packorder.Packorderid]; !ok {
|
|
pakordict[vdatalst[i].Jit_packorder.Packorderid] = vdatalst[i].Jit_packorder.Packorderid
|
|
// 查询包装单
|
|
pakord = Jit_packorder{Packorderid: vdatalst[i].Jit_packorder.Packorderid}
|
|
if pakord, err = pakord.SelectOneBySession(session); err != nil {
|
|
return
|
|
}
|
|
|
|
datalst = append(datalst, pakord)
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 基于指定项目、oemseq和供应组获取包装
|
|
func (t *Jit_packorder) GetByOemSeqSupplyGroup(session *xorm.Session, projnr string, oemseq int, sgid string) (datalst []Jit_packorder, err error) {
|
|
var (
|
|
i int
|
|
pakordict map[string]string
|
|
ok bool
|
|
pakord Jit_packorder
|
|
vdatalst []VPackorder
|
|
|
|
)
|
|
|
|
datalst = []Jit_packorder{}
|
|
query := session.Table("jit_packorder")
|
|
query = query.Join("INNER", "jit_packorder_itemlst", "jit_packorder.finr = jit_packorder_itemlst.finr and jit_packorder.packorderid = jit_packorder_itemlst.packorderid")
|
|
query = query.Where("jit_packorder.finr = ? and jit_packorder.projnr = ? and jit_packorder_itemlst.oemseq = ? and jit_packorder_itemlst.supplygroupid = ?", G_FINR, projnr, oemseq, sgid )
|
|
|
|
fmt.Println("查询工单OEMSEQ对应的包装单:",oemseq, sgid)
|
|
// 查询
|
|
if err = query.Find(&vdatalst); err != nil {
|
|
return
|
|
}
|
|
|
|
pakordict = make( map[string]string )
|
|
for i = 0; i < len(vdatalst); i++ {
|
|
vdatalst[i].Jit_packorder.Clipped()
|
|
vdatalst[i].Jit_packorder_itemlst.Clipped()
|
|
|
|
if _, ok = pakordict[vdatalst[i].Jit_packorder.Packorderid]; !ok {
|
|
fmt.Println(" 基于OEMSEQ获取包装单:",vdatalst[i].Jit_packorder.Packorderid)
|
|
pakordict[vdatalst[i].Jit_packorder.Packorderid] = vdatalst[i].Jit_packorder.Packorderid
|
|
// 查询包装单
|
|
pakord = Jit_packorder{Packorderid: vdatalst[i].Jit_packorder.Packorderid}
|
|
if pakord, err = pakord.SelectOneBySession(session); err != nil {
|
|
return
|
|
}
|
|
|
|
datalst = append(datalst, pakord)
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 基于指定项目、checksequence获取包装
|
|
func (t *Jit_packorder) GetByCheckSeq(session *xorm.Session, projnr string, cs int ) (datalst []Jit_packorder, err error) {
|
|
var (
|
|
i int
|
|
pakordict map[string]string
|
|
ok bool
|
|
pakord Jit_packorder
|
|
vdatalst []VPackorder
|
|
|
|
)
|
|
|
|
datalst = []Jit_packorder{}
|
|
query := session.Table("jit_packorder")
|
|
query = query.Join("INNER", "jit_packorder_itemlst", "jit_packorder.finr = jit_packorder_itemlst.finr and jit_packorder.packorderid = jit_packorder_itemlst.packorderid")
|
|
query = query.Where("jit_packorder.finr = ? and jit_packorder.projnr = ? and jit_packorder_itemlst.seq = ?", G_FINR, projnr, cs )
|
|
// 查询
|
|
if err = query.Find(&vdatalst); err != nil {
|
|
return
|
|
}
|
|
|
|
pakordict = make( map[string]string )
|
|
for i = 0; i < len(vdatalst); i++ {
|
|
vdatalst[i].Jit_packorder.Clipped()
|
|
vdatalst[i].Jit_packorder_itemlst.Clipped()
|
|
|
|
if _, ok = pakordict[vdatalst[i].Jit_packorder.Packorderid]; !ok {
|
|
pakordict[vdatalst[i].Jit_packorder.Packorderid] = vdatalst[i].Jit_packorder.Packorderid
|
|
// 查询包装单
|
|
pakord = Jit_packorder{Packorderid: vdatalst[i].Jit_packorder.Packorderid}
|
|
if pakord, err = pakord.SelectOneBySession(session); err != nil {
|
|
return
|
|
}
|
|
|
|
datalst = append(datalst, pakord)
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 指定同步号的其它开口包装单
|
|
func (t *Jit_packorder) GetOpenPackOrdersBySyncid(session *xorm.Session, projnr, syncid string, unconsiderpkoid string) (datalst []Jit_packorder, err error) {
|
|
var i, j int
|
|
|
|
if err = session.Where("finr = ? and projnr = ? and status = ? and syncsn = ? and packorderid != ?",
|
|
G_FINR, projnr, common.PKO_STATUS_PLANNED, syncid, unconsiderpkoid).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
|
|
}
|
|
|
|
// 获取项目未装车的包装订单,status >= 26, loadstatus = 0
|
|
func (t *Jit_packorder) GetUnloadedPackOrders(projnr string) (datalst []Jit_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 *Jit_packorder) GetListBySyncidList(session *xorm.Session, projnr string, syncidlst []string) (datalst []Jit_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
|
|
}
|
|
|
|
//获取指定客户订单号关联的特殊开口包装单(带同步ID信息的)
|
|
func (t *Jit_packorder) GetSpecialOpenListByCustorder(session *xorm.Session, conr string) (vdatalst []VCustorderPackorder, err error) {
|
|
var i int
|
|
|
|
query := session.Table("jit_packorder")
|
|
query = query.Join("INNER", "jit_packorder_itemlst", "jit_packorder.finr = jit_packorder_itemlst.finr and jit_packorder.packorderid = jit_packorder_itemlst.packorderid")
|
|
query = query.Join("INNER", "pln_workorder", "jit_packorder_itemlst.finr = pln_workorder.finr and jit_packorder_itemlst.workordernr = pln_workorder.workordernr")
|
|
query = query.Join("INNER", "pln_custorder", "pln_workorder.finr = pln_custorder.finr and pln_workorder.custordernr = pln_custorder.custordernr")
|
|
query = query.Where("pln_custorder.finr = ? and pln_custorder.custordernr = ? and jit_packorder.status < ? and jit_packorder.syncsn != ?", G_FINR, conr, common.PKO_STATUS_RELEASED, "")
|
|
|
|
if err = query.Find(&vdatalst); err != nil {
|
|
return
|
|
}
|
|
for i = 0; i < len(vdatalst); i++ {
|
|
vdatalst[i].Pln_custorder.Clipped()
|
|
vdatalst[i].Pln_workorder.Clipped()
|
|
vdatalst[i].Jit_packorder.Clipped()
|
|
vdatalst[i].Jit_packorder_itemlst.Clipped()
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
//获取指定包装单号关联的客户订单
|
|
func (t *Jit_packorder) GetFullDataByPackorder(pkoid string) (vdatalst []VCustorderPackorder, err error) {
|
|
var i int
|
|
|
|
e := G_DbEngine
|
|
query := e.Table("jit_packorder")
|
|
query = query.Join("INNER", "jit_packorder_itemlst", "jit_packorder.finr = jit_packorder_itemlst.finr and jit_packorder.packorderid = jit_packorder_itemlst.packorderid")
|
|
query = query.Join("INNER", "pln_workorder", "jit_packorder_itemlst.finr = pln_workorder.finr and jit_packorder_itemlst.workordernr = pln_workorder.workordernr")
|
|
query = query.Join("INNER", "pln_custorder", "pln_workorder.finr = pln_custorder.finr and pln_workorder.custordernr = pln_custorder.custordernr")
|
|
query = query.Where("jit_packorder.finr = ? and jit_packorder.packorderid = ?", G_FINR, pkoid)
|
|
|
|
if err = query.Find(&vdatalst); err != nil {
|
|
return
|
|
}
|
|
for i = 0; i < len(vdatalst); i++ {
|
|
vdatalst[i].Pln_custorder.Clipped()
|
|
vdatalst[i].Pln_workorder.Clipped()
|
|
vdatalst[i].Jit_packorder.Clipped()
|
|
vdatalst[i].Jit_packorder_itemlst.Clipped()
|
|
}
|
|
|
|
return
|
|
}
|