|
|
- 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
- }
|