SJA APS后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
3.6 KiB

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
}