package db import ( "errors" "github.com/go-xorm/xorm" "leit.com/leit_seat_aps/common" "strings" "xorm.io/core" ) // 计划原材料 type Pln_material struct { Finr int `xorm:"pk"` Materialid string `xorm:"pk"` Projnr string `xorm:"pk"` Cust_materialid string Active int Descr1 string Descr2 string Uom string Materialtype string Aggregatedemand int Aggtomonth int Aggtoweek int Aggtoday int Aggtohour int Genworkorder int Orderaggtype string Runmrp int Leadtime int Timeuom string Worklineid string Jph float32 Lastmodif string Lastuser string Credatuz string } func (t *Pln_material) Clipped() { common.TrimStruct(t, *t) } func (t *Pln_material) TableName() string { return "pln_material" } //增 func (t *Pln_material) Add() error { e := G_DbEngine mattab := new(Pln_material) affw, err := e.Table("pln_material").ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Count(mattab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = e.Table("pln_material").Insert(t) if err != nil { return err } return nil } //增 func (t *Pln_material) Insert(session *xorm.Session) error { mattab := new(Pln_material) affw, err := session.Table("pln_material").ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Count(mattab) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } _, err = session.Table("pln_material").Insert(t) if err != nil { return err } return nil } //删 func (t *Pln_material) Del() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Delete(&Pln_material{}) if err != nil { return false } return true } //改 func (t *Pln_material) Update() bool { e := G_DbEngine _, err := e.ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Update(t) if err != nil { return false } return true } //更新指定字段 func (t *Pln_material) UpdateFields(session *xorm.Session, fields string) (err error) { if _, err = session.ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Cols(fields).Update(t); err != nil { return } return } //查 func (t *Pln_material) SelectOne() (data Pln_material, err error) { e := G_DbEngine _, err = e.ID(core.PK{G_FINR, t.Materialid, t.Projnr}).Get(&data) if err != nil { return data, err } return data, nil } // 获取指定项目的物料列表 func (t *Pln_material) GetAll() (datalst []Pln_material, err error) { var i int e := G_DbEngine if err = e.Where("finr = ? and active = ?", G_FINR, 1).OrderBy("materialid").Find(&datalst); err != nil { return } for i, _ = range datalst { datalst[i].Clipped() } return } // 获取指定项目的物料列表 func (t *Pln_material) GetProjectAll(projnr string) (datalst []Pln_material, err error) { var i int e := G_DbEngine if err = e.Where("finr = ? and projnr = ? and active = ?", G_FINR, projnr, 1).OrderBy("materialid").Find(&datalst); err != nil { return } for i, _ = range datalst { datalst[i].Clipped() } return } // 获取物料以秒计算的生产提前期 func (t *Pln_material) GetLeadTimeInSecond() (lt int) { switch strings.ToUpper(strings.TrimSpace(t.Timeuom)) { case "S": lt = t.Leadtime case "SEC": lt = t.Leadtime case "SECOND": lt = t.Leadtime case "M": lt = t.Leadtime * 60 case "MIN": lt = t.Leadtime * 60 case "MINUTE": lt = t.Leadtime * 60 case "H": lt = t.Leadtime * 60 * 60 case "HOUR": lt = t.Leadtime * 60 * 60 case "D": lt = t.Leadtime * 60 * 60 * 24 case "DAY": lt = t.Leadtime * 60 * 60 * 24 default: lt = t.Leadtime } return }