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

238 lines
8.1 KiB

package models
import (
"fmt"
"lapp_-wy/db"
"lapp_-wy/utils"
"lapp_-wy/web/middleware/glog"
"time"
)
type WfApprovalrequest struct {
Approvalrequestid int `json:"approvalrequestid" xorm:"pk INT(11) autoincr"`
Cid int `json:"cid" xorm:"default NULL INT(11)"`
Approvalmodelid int `json:"approvalmodelid" xorm:"default NULL INT(11)"`
Requester string `json:"requester" xorm:"default 'NULL' VARCHAR(20)"`
Agentman string `json:"agentman" xorm:"default 'NULL' VARCHAR(20)"`
Subject string `json:"subject" xorm:"default 'NULL' VARCHAR(255)"`
Requesttime string `json:"requesttime" xorm:"default 'NULL' VARCHAR(14)"`
Status string `json:"status" xorm:"default 'NULL' VARCHAR(2)"`
Approvestatus int `json:"approvestatus" xorm:"default NULL INT(2)"`
Itemname string `json:"itemname" xorm:"default 'NULL' VARCHAR(100)"`
Specmodel string `json:"specmodel" xorm:"default 'NULL' VARCHAR(100)"`
Qty int `json:"qty" xorm:"default '0' INT(8)"`
Price float64 `json:"price" xorm:"default '0.0' DECIMAL(10,2)"`
Money float64 `json:"money" xorm:"default '0.0' DECIMAL(10,2)"`
Requestinfo string `json:"requestinfo" xorm:"default 'NULL' VARCHAR(100)"`
Approvaltype string `json:"approvaltype" xorm:"default 'NULL' VARCHAR(20)"`
Requestobjid string `json:"requestobjid" xorm:"default 'NULL' VARCHAR(40)"`
Callbackfunc string `json:"callbackfunc" xorm:"default 'NULL' VARCHAR(100)"`
Picpath string `json:"picpath" xorm:"default 'NULL' VARCHAR(255)"`
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)"`
Reqtype int `json:"reqtype" xorm:"INT(2)"`
Purpose string `json:"purpose" xorm:"default 'NULL' VARCHAR(255)"`
ConflictPicpath string `json:"wf_approvalrequest_conflict-picpath" xorm:"-"`
Valst []WfApprovalrequestSteplst `json:"valst" xorm:"-"`
Detail []WfApprovalrequestDetail `json:"detail" xorm:"-"`
}
func (t *WfApprovalrequest) TableName() string {
return "wf_approvalrequest"
}
// 清除string字段的右侧空格
func (t *WfApprovalrequest) Clipped() {
utils.TrimStruct(t, *t)
}
type WfApprovalmodelStepApprover struct {
WfApprovalmodelSteplst `xorm:"extends"`
WfApprover `xorm:"extends"`
}
//增
func (t *WfApprovalrequest) Add() error {
engine := db.MasterEngine()
session := engine.NewSession()
defer session.Close()
// add Begin() before any action
err := session.Begin()
if err != nil {
session.Rollback()
return err
}
u := &WfApprovalrequest{
Approvalmodelid: t.Approvalmodelid,
Requester: t.Requester,
Requesttime: utils.TimeFormat(time.Now(), "yyyy-MM-dd HH:mm:ss"),
Status: t.Status,
Agentman: t.Agentman,
Subject: t.Subject,
Approvestatus: t.Approvestatus,
Itemname: t.Itemname,
Specmodel: t.Specmodel,
Qty: t.Qty,
Cid: t.Cid,
Price: t.Price,
Picpath: t.Picpath,
Money: t.Money,
Requestinfo: t.Requestinfo,
Approvaltype: t.Approvaltype,
Requestobjid: t.Requestobjid,
Callbackfunc: t.Callbackfunc,
Lastmodif: t.Lastmodif,
Lastuser: t.Lastuser,
Credatuz: t.Credatuz,
Reqtype: t.Reqtype,
Purpose: t.Purpose,
}
_, err = session.Table("wf_approvalrequest").Insert(u)
fmt.Println("affect=", u.Approvalrequestid)
if err != nil {
session.Rollback()
return err
}
data := new(WfApprovalmodelStepApprover)
ok, err := engine.Table("wf_approvalmodel_steplst").Alias("a").Join("INNER", "wf_approver", "a.approvallevel = wf_approver.approvallevel and a.approvalmodelid = wf_approver.approvalmodelid").Where("a.approvalmodelid = ? and a.approvallevel = ?", t.Approvalmodelid, 1).Get(data)
if err != nil {
glog.InfoExt("添加审核", "info err1 is:", err)
session.Rollback()
return err
}
if ok {
//还需要审核
info := new(WfApprovalrequestSteplst)
info.Approvalrequestid = u.Approvalrequestid
info.Approvallevel = 1
info.Status = "1"
info.Cid = u.Cid
info.Descr = data.Descr
info.Approvestatus = 0
info.Lastmodif = t.Lastmodif
info.Lastuser = t.Lastuser
info.Credatuz = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
info.Approvalmodelid = data.WfApprovalmodelSteplst.Approvalmodelid
_, err := session.Table("wf_approvalrequest_steplst").Insert(info)
if err != nil {
glog.InfoExt("添加审核", "info err2 is:", err)
session.Rollback()
return err
}
}
err = session.Commit()
if err != nil {
return err
}
return nil
}
//删
func (t *WfApprovalrequest) Del() error {
engine := db.MasterEngine()
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_approvalrequest").ID(t.Approvalrequestid).Delete(&WfApprovalrequest{})
if err != nil {
session.Rollback()
return err
}
_, err = session.Where("approvalrequestid = ?", t.Approvalrequestid).Delete(&WfApprovalrequestSteplst{})
if err != nil {
session.Rollback()
return err
}
//删除对应的子项
_, err = session.Table("wf_approvalrequest_detail").Where("approvalrequestid = ?", t.Approvalrequestid).Delete(&WfApprovalrequestDetail{})
if err != nil {
session.Rollback()
return err
}
err = session.Commit()
if err != nil {
return err
}
return nil
}
//改
func (t *WfApprovalrequest) Update() bool {
e := db.MasterEngine()
_, err := e.Table("wf_approvalrequest").ID(t.Approvalrequestid).Update(t)
if err != nil {
return false
}
return true
}
//查
func (t *WfApprovalrequest) SelectOne() (WfApprovalrequest, error) {
e := db.MasterEngine()
var data WfApprovalrequest
_, err := e.Table("wf_approvalrequest").ID(t.Approvalrequestid).Get(&data)
if err != nil {
return data, err
}
var datalist []WfApprovalrequestSteplst
err = e.Table("wf_approvalrequest_steplst").Where("approvalrequestid = ?", t.Approvalrequestid).Find(&datalist)
if err != nil {
return data, err
}
data.Valst = datalist
return data, nil
}
//分页
func (t *WfApprovalrequest) GetPage(pageSize int, pageIndex int) ([]WfApprovalrequest, int, error) {
data := make([]WfApprovalrequest, 0)
e := db.MasterEngine()
query := e.Table("wf_approvalrequest").Where("1=1")
table := e.Table("wf_approvalrequest").Where("1=1")
if t.Reqtype == 1 {
query = query.And("reqtype = 1")
table = table.And("reqtype = 1")
} else {
query = query.And("reqtype != 1 or reqtype is null")
table = table.And("reqtype != 1 or reqtype is null")
}
if !utils.ValueIsEmpty(t.Requestinfo) {
descr := "%" + t.Requestinfo + "%"
query = query.And("descr like ?", descr)
table = table.And("descr like ?", descr)
}
if !utils.ValueIsEmpty(t.Approvaltype) {
query = query.And("approvaltype = ?", t.Approvaltype)
table = table.And("approvaltype = ?", t.Approvaltype)
}
if t.Cid > 0 {
query = query.And("cid = ?", t.Cid)
table = table.And("cid = ?", t.Cid)
}
Offset := (pageIndex - 1) * pageSize
err := query.Limit(pageSize, Offset).Desc("credatuz").Find(&data)
for k, v := range data {
data[k].ConflictPicpath = v.Picpath
//查询对应的子项
sdata := make([]WfApprovalrequestDetail, 0)
err = e.Table("wf_approvalrequest_detail").Where("approvalrequestid = ?", v.Approvalrequestid).Find(&sdata)
if err != nil {
continue
}
if len(sdata) > 0 {
data[k].Detail = sdata
}
}
pcount := new(WfApprovalrequest)
count, err := table.Count(pcount)
if err != nil {
return data, 0, err
}
return data, int(count), nil
}