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

256 lines
7.2 KiB

  1. package models
  2. import (
  3. "lapp_-wy/db"
  4. "lapp_-wy/utils"
  5. "errors"
  6. )
  7. type WfApprovalmodel struct {
  8. Approvalmodelid int `json:"approvalmodelid" xorm:"not null pk autoincr INT(11)"`
  9. Active int `json:"active" xorm:"default NULL INT(2)"`
  10. Descr string `json:"descr" xorm:"default 'NULL' VARCHAR(255)"`
  11. Control int `json:"control" xorm:"default NULL INT(2)"`
  12. Lastmodif string `json:"lastmodif" xorm:"default 'NULL' VARCHAR(14)"`
  13. Lastuser string `json:"lastuser" xorm:"default 'NULL' VARCHAR(20)"`
  14. Credatuz string `json:"credatuz" xorm:"default 'NULL' VARCHAR(14)"`
  15. Valst []WfApprovalmodelSteplst `json:"valst" xorm:"-"`
  16. }
  17. func (t *WfApprovalmodel) TableName() string {
  18. return "wf_approvalmodel"
  19. }
  20. // 清除string字段的右侧空格
  21. func (t *WfApprovalmodel) Clipped() {
  22. utils.TrimStruct(t, *t)
  23. }
  24. //增
  25. func (t *WfApprovalmodel) Add() error {
  26. engine := db.MasterEngine()
  27. countrole := new(WfApprovalmodel)
  28. affw, err := engine.Table("wf_approvalmodel").ID(t.Approvalmodelid).Count(countrole)
  29. if err != nil {
  30. return err
  31. }
  32. if affw > 0 {
  33. return errors.New("数据已经存在!")
  34. }
  35. session := engine.NewSession()
  36. defer session.Close()
  37. // add Begin() before any action
  38. err = session.Begin()
  39. if err != nil {
  40. session.Rollback()
  41. return err
  42. }
  43. _, err = session.Table("wf_approvalmodel").Insert(t)
  44. if err != nil {
  45. session.Rollback()
  46. return err
  47. }
  48. //批量删除
  49. _, err = session.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{})
  50. if err != nil {
  51. session.Rollback()
  52. return err
  53. }
  54. //删除
  55. _, err = session.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{})
  56. if err != nil {
  57. session.Rollback()
  58. return err
  59. }
  60. //批量插入
  61. alldata := make([]WfApprovalmodelSteplst, 0)
  62. alluser := make([]WfApprover, 0)
  63. for _, v := range t.Valst {
  64. onedata := WfApprovalmodelSteplst{}
  65. onedata.Descr = v.Descr
  66. onedata.Approvallevel = v.Approvallevel
  67. onedata.Approvalmodelid = t.Approvalmodelid
  68. onedata.Autoapproval = v.Autoapproval
  69. onedata.Control = v.Control
  70. onedata.Daystoautoapproval = v.Daystoautoapproval
  71. onedata.Daystowarn = v.Daystowarn
  72. onedata.Necessaryapprovalnum = v.Necessaryapprovalnum
  73. onedata.Overvoteprevlevel = v.Overvoteprevlevel
  74. onedata.Notetype = v.Notetype
  75. alldata = append(alldata, onedata)
  76. for _, vv := range v.UsersValst {
  77. one := WfApprover{}
  78. one.Approvalmodelid = t.Approvalmodelid
  79. one.Approvallevel = v.Approvallevel
  80. one.Approver = vv.Approver
  81. one.Mustapproval = vv.Mustapproval
  82. alluser = append(alluser, one)
  83. }
  84. }
  85. _, err = session.Table("wf_approvalmodel_steplst").Insert(&alldata)
  86. if err != nil {
  87. session.Rollback()
  88. return err
  89. }
  90. _, err = session.Table("wf_approver").Insert(&alluser)
  91. if err != nil {
  92. session.Rollback()
  93. return err
  94. }
  95. err = session.Commit()
  96. if err != nil {
  97. return err
  98. }
  99. return nil
  100. }
  101. //删
  102. func (t *WfApprovalmodel) Del() bool {
  103. e := db.MasterEngine()
  104. _, err := e.ID(t.Approvalmodelid).Delete(&WfApprovalmodel{})
  105. if err != nil {
  106. return false
  107. }
  108. countrole := new(WfApprovalmodelSteplst)
  109. affw, _ := e.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Count(countrole)
  110. if affw > 0 {
  111. _, err = e.Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{})
  112. if err != nil {
  113. return false
  114. }
  115. //删除
  116. _, err = e.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{})
  117. if err != nil {
  118. return false
  119. }
  120. }
  121. return true
  122. }
  123. //改
  124. func (t *WfApprovalmodel) Update() bool {
  125. engine := db.MasterEngine()
  126. columns := []string{"active","descr","control","lastmodif","lastuser","credatuz"}
  127. session := engine.NewSession()
  128. defer session.Close()
  129. // add Begin() before any action
  130. err := session.Begin()
  131. if err != nil {
  132. session.Rollback()
  133. return false
  134. }
  135. _, err = session.Table("wf_approvalmodel").ID(t.Approvalmodelid).MustCols(columns...).Update(t)
  136. if err != nil {
  137. return false
  138. }
  139. //批量删除
  140. _, err = session.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{})
  141. if err != nil {
  142. session.Rollback()
  143. return false
  144. }
  145. //删除
  146. _, err = session.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{})
  147. if err != nil {
  148. session.Rollback()
  149. return false
  150. }
  151. //批量插入
  152. alldata := make([]WfApprovalmodelSteplst, 0)
  153. alluser := make([]WfApprover, 0)
  154. for _, v := range t.Valst {
  155. onedata := WfApprovalmodelSteplst{}
  156. onedata.Descr = v.Descr
  157. onedata.Approvallevel = v.Approvallevel
  158. onedata.Approvalmodelid = t.Approvalmodelid
  159. onedata.Autoapproval = v.Autoapproval
  160. onedata.Control = v.Control
  161. onedata.Daystoautoapproval = v.Daystoautoapproval
  162. onedata.Daystowarn = v.Daystowarn
  163. onedata.Necessaryapprovalnum = v.Necessaryapprovalnum
  164. onedata.Overvoteprevlevel = v.Overvoteprevlevel
  165. onedata.Notetype = v.Notetype
  166. alldata = append(alldata, onedata)
  167. for _, vv := range v.UsersValst {
  168. one := WfApprover{}
  169. one.Approvalmodelid = t.Approvalmodelid
  170. one.Approvallevel = v.Approvallevel
  171. one.Approver = vv.Approver
  172. one.Mustapproval = vv.Mustapproval
  173. alluser = append(alluser, one)
  174. }
  175. }
  176. _, err = session.Table("wf_approvalmodel_steplst").Insert(&alldata)
  177. if err != nil {
  178. session.Rollback()
  179. return false
  180. }
  181. _, err = session.Table("wf_approver").Insert(&alluser)
  182. if err != nil {
  183. session.Rollback()
  184. return false
  185. }
  186. err = session.Commit()
  187. if err != nil {
  188. return false
  189. }
  190. return true
  191. }
  192. //查
  193. func (t *WfApprovalmodel) SelectOne() (WfApprovalmodel, error) {
  194. e := db.MasterEngine()
  195. var data WfApprovalmodel
  196. _, err := e.Table("wf_approvalmodel").ID(t.Approvalmodelid).Get(&data)
  197. if err != nil {
  198. return data, err
  199. }
  200. var datalist []WfApprovalmodelSteplst
  201. err = e.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Find(&datalist)
  202. if err != nil {
  203. return data, err
  204. }
  205. for k,v := range datalist{
  206. var dataAPP []WfApprover
  207. err = e.Table("wf_approver").Where("approvalmodelid = ? and approvallevel = ?", t.Approvalmodelid,v.Approvallevel).Find(&dataAPP)
  208. if err != nil {
  209. continue
  210. }
  211. datalist[k].UsersValst = dataAPP
  212. }
  213. data.Valst = datalist
  214. return data, nil
  215. }
  216. //分页
  217. func (t *WfApprovalmodel) GetPage(pageSize int, pageIndex int) ([]WfApprovalmodel, int, error) {
  218. data := make([]WfApprovalmodel, 0)
  219. e := db.MasterEngine()
  220. query := e.Table("wf_approvalmodel").Where("1=1")
  221. table := e.Table("wf_approvalmodel").Where("1=1")
  222. if !utils.ValueIsEmpty(t.Descr) {
  223. descr := "%" + t.Descr + "%"
  224. query = query.And("descr like ?", descr)
  225. table = table.And("descr like ?", descr)
  226. }
  227. Offset := (pageIndex - 1) * pageSize
  228. err := query.Limit(pageSize, Offset).Desc("credatuz").Find(&data)
  229. pcount := new(WfApprovalmodel)
  230. count, err := table.Count(pcount)
  231. if err != nil {
  232. return data, 0, err
  233. }
  234. return data, int(count), nil
  235. }
  236. func (t *WfApprovalmodel) AllModels() (models []WfApprovalmodel, err error) {
  237. e := db.MasterEngine()
  238. err = e.Table(t.TableName()).Select("approvalmodelid,descr").Where("active = ?",1).Find(&models)
  239. if err != nil {
  240. return nil,err
  241. }
  242. return models,nil
  243. }