沈阳玫苑物业管理后端
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.

257 lines
7.2 KiB

package models
import (
"lapp_-wy/db"
"lapp_-wy/utils"
"errors"
)
type WfApprovalmodel struct {
Approvalmodelid int `json:"approvalmodelid" xorm:"not null pk autoincr INT(11)"`
Active int `json:"active" xorm:"default NULL INT(2)"`
Descr string `json:"descr" xorm:"default 'NULL' VARCHAR(255)"`
Control int `json:"control" xorm:"default NULL INT(2)"`
Lastmodif string `json:"lastmodif" xorm:"default 'NULL' VARCHAR(14)"`
Lastuser string `json:"lastuser" xorm:"default 'NULL' VARCHAR(20)"`
Credatuz string `json:"credatuz" xorm:"default 'NULL' VARCHAR(14)"`
Valst []WfApprovalmodelSteplst `json:"valst" xorm:"-"`
}
func (t *WfApprovalmodel) TableName() string {
return "wf_approvalmodel"
}
// 清除string字段的右侧空格
func (t *WfApprovalmodel) Clipped() {
utils.TrimStruct(t, *t)
}
//增
func (t *WfApprovalmodel) Add() error {
engine := db.MasterEngine()
countrole := new(WfApprovalmodel)
affw, err := engine.Table("wf_approvalmodel").ID(t.Approvalmodelid).Count(countrole)
if err != nil {
return err
}
if affw > 0 {
return errors.New("数据已经存在!")
}
session := engine.NewSession()
defer session.Close()
// add Begin() before any action
err = session.Begin()
if err != nil {
session.Rollback()
return err
}
_, err = session.Table("wf_approvalmodel").Insert(t)
if err != nil {
session.Rollback()
return err
}
//批量删除
_, err = session.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{})
if err != nil {
session.Rollback()
return err
}
//删除
_, err = session.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{})
if err != nil {
session.Rollback()
return err
}
//批量插入
alldata := make([]WfApprovalmodelSteplst, 0)
alluser := make([]WfApprover, 0)
for _, v := range t.Valst {
onedata := WfApprovalmodelSteplst{}
onedata.Descr = v.Descr
onedata.Approvallevel = v.Approvallevel
onedata.Approvalmodelid = t.Approvalmodelid
onedata.Autoapproval = v.Autoapproval
onedata.Control = v.Control
onedata.Daystoautoapproval = v.Daystoautoapproval
onedata.Daystowarn = v.Daystowarn
onedata.Necessaryapprovalnum = v.Necessaryapprovalnum
onedata.Overvoteprevlevel = v.Overvoteprevlevel
onedata.Notetype = v.Notetype
alldata = append(alldata, onedata)
for _, vv := range v.UsersValst {
one := WfApprover{}
one.Approvalmodelid = t.Approvalmodelid
one.Approvallevel = v.Approvallevel
one.Approver = vv.Approver
one.Mustapproval = vv.Mustapproval
alluser = append(alluser, one)
}
}
_, err = session.Table("wf_approvalmodel_steplst").Insert(&alldata)
if err != nil {
session.Rollback()
return err
}
_, err = session.Table("wf_approver").Insert(&alluser)
if err != nil {
session.Rollback()
return err
}
err = session.Commit()
if err != nil {
return err
}
return nil
}
//删
func (t *WfApprovalmodel) Del() bool {
e := db.MasterEngine()
_, err := e.ID(t.Approvalmodelid).Delete(&WfApprovalmodel{})
if err != nil {
return false
}
countrole := new(WfApprovalmodelSteplst)
affw, _ := e.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Count(countrole)
if affw > 0 {
_, err = e.Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{})
if err != nil {
return false
}
//删除
_, err = e.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{})
if err != nil {
return false
}
}
return true
}
//改
func (t *WfApprovalmodel) Update() bool {
engine := db.MasterEngine()
columns := []string{"active","descr","control","lastmodif","lastuser","credatuz"}
session := engine.NewSession()
defer session.Close()
// add Begin() before any action
err := session.Begin()
if err != nil {
session.Rollback()
return false
}
_, err = session.Table("wf_approvalmodel").ID(t.Approvalmodelid).MustCols(columns...).Update(t)
if err != nil {
return false
}
//批量删除
_, err = session.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{})
if err != nil {
session.Rollback()
return false
}
//删除
_, err = session.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{})
if err != nil {
session.Rollback()
return false
}
//批量插入
alldata := make([]WfApprovalmodelSteplst, 0)
alluser := make([]WfApprover, 0)
for _, v := range t.Valst {
onedata := WfApprovalmodelSteplst{}
onedata.Descr = v.Descr
onedata.Approvallevel = v.Approvallevel
onedata.Approvalmodelid = t.Approvalmodelid
onedata.Autoapproval = v.Autoapproval
onedata.Control = v.Control
onedata.Daystoautoapproval = v.Daystoautoapproval
onedata.Daystowarn = v.Daystowarn
onedata.Necessaryapprovalnum = v.Necessaryapprovalnum
onedata.Overvoteprevlevel = v.Overvoteprevlevel
onedata.Notetype = v.Notetype
alldata = append(alldata, onedata)
for _, vv := range v.UsersValst {
one := WfApprover{}
one.Approvalmodelid = t.Approvalmodelid
one.Approvallevel = v.Approvallevel
one.Approver = vv.Approver
one.Mustapproval = vv.Mustapproval
alluser = append(alluser, one)
}
}
_, err = session.Table("wf_approvalmodel_steplst").Insert(&alldata)
if err != nil {
session.Rollback()
return false
}
_, err = session.Table("wf_approver").Insert(&alluser)
if err != nil {
session.Rollback()
return false
}
err = session.Commit()
if err != nil {
return false
}
return true
}
//查
func (t *WfApprovalmodel) SelectOne() (WfApprovalmodel, error) {
e := db.MasterEngine()
var data WfApprovalmodel
_, err := e.Table("wf_approvalmodel").ID(t.Approvalmodelid).Get(&data)
if err != nil {
return data, err
}
var datalist []WfApprovalmodelSteplst
err = e.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Find(&datalist)
if err != nil {
return data, err
}
for k,v := range datalist{
var dataAPP []WfApprover
err = e.Table("wf_approver").Where("approvalmodelid = ? and approvallevel = ?", t.Approvalmodelid,v.Approvallevel).Find(&dataAPP)
if err != nil {
continue
}
datalist[k].UsersValst = dataAPP
}
data.Valst = datalist
return data, nil
}
//分页
func (t *WfApprovalmodel) GetPage(pageSize int, pageIndex int) ([]WfApprovalmodel, int, error) {
data := make([]WfApprovalmodel, 0)
e := db.MasterEngine()
query := e.Table("wf_approvalmodel").Where("1=1")
table := e.Table("wf_approvalmodel").Where("1=1")
if !utils.ValueIsEmpty(t.Descr) {
descr := "%" + t.Descr + "%"
query = query.And("descr like ?", descr)
table = table.And("descr like ?", descr)
}
Offset := (pageIndex - 1) * pageSize
err := query.Limit(pageSize, Offset).Desc("credatuz").Find(&data)
pcount := new(WfApprovalmodel)
count, err := table.Count(pcount)
if err != nil {
return data, 0, err
}
return data, int(count), nil
}
func (t *WfApprovalmodel) AllModels() (models []WfApprovalmodel, err error) {
e := db.MasterEngine()
err = e.Table(t.TableName()).Select("approvalmodelid,descr").Where("active = ?",1).Find(&models)
if err != nil {
return nil,err
}
return models,nil
}