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 }