package db import ( "errors" "github.com/go-xorm/xorm" "leit.com/leit_seat_aps/common" "xorm.io/core" ) //客户订单更新版本表:记录了客户订单更新数据的来源(文件名)和时间及相应的工艺版本号及自身的变更版本号(流水号) type Pln_custorder_ver struct { Finr int `xorm:"pk"` Custordernr string `xorm:"pk"` Version int `xorm:"pk"` Oemordernr string Parsed int Seqmode int Partfamilyid string Ordertime string Swet string Edifile string Edifiletype string Lastmodif string Lastuser string Credatuz string Partlst []Pln_custorder_ver_partlst `xorm:"-"` } func (t *Pln_custorder_ver) Clipped() { common.TrimStruct(t, *t) } func (t *Pln_custorder_ver) TableName() string { return "pln_custorder_ver" } //增 func (t *Pln_custorder_ver) Add() error { e := G_DbEngine covtab := new(Pln_custorder_ver) affw, err := e.Table("pln_custorder_ver").ID(core.PK{G_FINR, t.Custordernr, t.Version}).Count(covtab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = e.Table("pln_custorder_ver").Insert(t) if err != nil { return err } return nil } //增 func (t *Pln_custorder_ver) Insert(session *xorm.Session) error { covtab := new(Pln_custorder_ver) affw, err := session.Table("pln_custorder_ver").ID(core.PK{G_FINR, t.Custordernr, t.Version}).Count(covtab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = session.Table("pln_custorder_ver").Insert(t) if err != nil { return err } return nil } //删 func (t *Pln_custorder_ver) Del() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Custordernr, t.Version}).Delete(&Pln_custorder_ver{}) if err != nil { return false } return true } //改 func (t *Pln_custorder_ver) Update() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Custordernr, t.Version}).Update(t) if err != nil { return false } return true } //更新指定字段 func (t *Pln_custorder_ver) UpdateFields(session *xorm.Session, fields string) (err error) { if _, err = session.Table("pln_custorder_ver").ID(core.PK{G_FINR, t.Custordernr, t.Version}).Cols(fields).Update(t); err != nil { return } return } //查 func (t *Pln_custorder_ver) SelectOne() (data Pln_custorder_ver, err error) { var i int e := G_DbEngine _, err = e.ID(core.PK{G_FINR, t.Custordernr, t.Version}).Get(&data) if err != nil { return data, err } data.Clipped() // 获取值列表 if err = e.Where("finr = ? and custordernr = ? and version = ?", G_FINR, data.Custordernr, data.Version).OrderBy("supplygroupid, partid").Find(&data.Partlst); err != nil { return } for i, _ = range data.Partlst { data.Partlst[i].Clipped() } return data, nil } //查 func (t *Pln_custorder_ver) SelectInfo() bool { var data Pln_custorder_ver e := G_DbEngine ok, err := e.Table("pln_custorder_ver").In("parsed",common.EDI_PARSE_NO,common.EDI_PARSE_ERROR).Where("finr = ? and custordernr = ? and version < ? and edifiletype = ?", G_FINR, t.Custordernr, t.Version, common.EDI_TOD).Get(&data) if err != nil { return false } if !ok { return false } return true } // 获取指定项目的未解析且客户订单处理状态!=ER的客户订单版本数据 func (t *Pln_custorder_ver) GetProjectUnparsedTOD(projnr string) (vcovlst []VCustorderVer, err error) { var i int e := G_DbEngine if err = e.Table("pln_custorder").Alias("co").Join("INNER", []string{"pln_custorder_ver", "cov"}, "co.finr = cov.finr and co.custordernr = cov.custordernr").In("cov.parsed", common.EDI_PARSE_NO, common.EDI_PARSE_TWO).Where("co.finr = ? and co.projnr = ? and co.handlestatus != ? and cov.edifiletype = ?", G_FINR, projnr, common.CO_PARSE_STATUS_ERROR, common.EDI_TOD).Asc("cov.version", "cov.custordernr").Find(&vcovlst); err != nil { return } // 遍历COV列表 for i, _ = range vcovlst { vcovlst[i].Pln_custorder_ver.Clipped() vcovlst[i].Pln_custorder_ver.Partlst = []Pln_custorder_ver_partlst{} // 获取零件清单 if err = e.Where("finr = ? and custordernr = ? and version = ?", G_FINR, vcovlst[i].Pln_custorder_ver.Custordernr, vcovlst[i].Pln_custorder_ver.Version).OrderBy("supplygroupid, partid").Find(&vcovlst[i].Pln_custorder_ver.Partlst); err != nil { return } } return } //删除状态为9的数据 func (t *Pln_custorder_ver) DelCustorderVer() (err error) { e := G_DbEngine _, err = e.Table("pln_custorder_ver").Where("finr = ? and parsed = ?", G_FINR, 9).Delete(&Pln_custorder_ver{}) if err != nil { return } return } //更新状态为9的数据为0 func (t *Pln_custorder_ver) UpCustorderVer() (err error) { e := G_DbEngine info := Pln_custorder_ver{} info.Parsed = 0 _, err = e.Table("pln_custorder_ver").Cols("parsed").Where("finr = ? and parsed = ?", G_FINR, 9).Update(&info) if err != nil { return } return }