package models

import (
	"LAPP_LF_MOM_BACKEND/db"
	"LAPP_LF_MOM_BACKEND/utils"
	"errors"
	"xorm.io/core"
	"github.com/go-xorm/xorm"
)

type PmWoAttrlst struct {
	Finr          int    `json:"finr" xorm:"not null pk INT(4)"`
	Maintwoid     string `json:"maintwoid" xorm:"not null pk VARCHAR(18)"`
	Mainservicenr string `json:"mainservicenr" xorm:"not null pk VARCHAR(18)"`
	Pos           int    `json:"pos" xorm:"not null INT(4)"`
	Descr         string `json:"descr" xorm:"not null VARCHAR(40)"`
	Bitmap        string `json:"bitmap" xorm:"not null VARCHAR(30)"`
	Attrnr        int    `json:"attrnr" xorm:"not null pk INT(4)"`
	Parameter     string `json:"parameter" xorm:"not null VARCHAR(40)"`
	Paravalue     string `json:"paravalue" xorm:"not null VARCHAR(100)"`
	Operator      int    `json:"operator" xorm:"not null INT(4)"`
	Actvalue      string `json:"actvalue" xorm:"not null VARCHAR(250)"`
	Operatetime   string `json:"operatetime" xorm:"not null VARCHAR(14)"`
	Lastmodif     string `json:"lastmodif" xorm:"not null VARCHAR(14)"`
	Lastuser      string `json:"lastuser" xorm:"not null VARCHAR(20)"`
	Credatuz      string `json:"credatuz" xorm:"not null VARCHAR(14)"`
}

func (t *PmWoAttrlst) TableName() string {
	return "pm_wo_attrlst"
}

// 清除string字段的右侧空格
func (t *PmWoAttrlst) Clipped() {
	utils.TrimStruct(t, *t)
}

//增
func (t *PmWoAttrlst) Add() error {
	e := db.Eloquent.Master()
	count := new(PmWoAttrlst)
	affw, err := e.Table("pm_wo_attrlst").ID(core.PK{t.Finr, t.Maintwoid, t.Mainservicenr, t.Attrnr}).Count(count)
	if err != nil {
		return err
	}
	if affw > 0 {
		return errors.New("数据已经存在！")
	}
	_, err = e.Table("pm_wo_attrlst").Insert(t)

	if err != nil {
		return err
	}
	return nil
}

//增
func (t *PmWoAttrlst) AddSession(session *xorm.Session) error {
	count := new(PmWoAttrlst)
	affw, err := session.Table("pm_wo_attrlst").ID(core.PK{t.Finr, t.Maintwoid, t.Mainservicenr, t.Attrnr}).Count(count)
	if err != nil {
		return err
	}
	if affw > 0 {
		return errors.New("数据已经存在！")
	}
	_, err = session.Table("pm_wo_attrlst").Insert(t)

	if err != nil {
		return err
	}
	return nil
}

//改
func (t *PmWoAttrlst) Update() error {
	e := db.Eloquent.Master()
	_, err := e.Cols("pos", "descr", "bitmap", "attrnr", "parameter", "paravalue", "operator", "actvalue", "operatetime", "lastmodif", "lastuser").ID(core.PK{t.Finr, t.Maintwoid, t.Mainservicenr, t.Attrnr}).Update(t)
	if err != nil {
		return err
	}
	return nil
}

//查
func (t *PmWoAttrlst) SelectOne() (PmWoAttrlst, error) {
	e := db.Eloquent.Master()
	var data PmWoAttrlst
	_, err := e.ID(core.PK{t.Finr, t.Maintwoid, t.Mainservicenr, t.Pos}).Get(&data)
	if err != nil {
		return data, err
	}
	return data, nil
}
