report_approve_node.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package report_approve
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "github.com/beego/beego/v2/client/orm"
  7. "strings"
  8. "time"
  9. )
  10. const (
  11. NodeApproveTypeRoll = 1
  12. NodeApproveTypeAll = 2
  13. NodeApproveTypeAny = 3
  14. )
  15. const (
  16. NodeUserTypeNormal = "user"
  17. NodeUserTypeRole = "role"
  18. )
  19. // ReportApproveNode 报告审批节点表
  20. type ReportApproveNode struct {
  21. ReportApproveNodeId int `orm:"column(report_approve_node_id);pk" description:"报告审批节点ID"`
  22. ReportApproveFlowId int `description:"报告审批流ID"`
  23. PrevNodeId int `description:"上一个节点ID(0为开始节点)"`
  24. NextNodeId int `description:"下一个节点ID(0为结束节点)"`
  25. NodeType int `description:"节点类型:0-审批;1-抄送"`
  26. ApproveType int `description:"审批类型:1-依次审批;2-会签;3-或签"`
  27. Users string `description:"审批人信息-JSON,user_type:user-用户;role-角色,user_id:用户/角色ID"`
  28. CurrVersion int `description:"当前版本号"`
  29. CreateTime time.Time `description:"创建时间"`
  30. }
  31. var ReportApproveNodeCols = struct {
  32. ReportApproveNodeId string
  33. ReportApproveFlowId string
  34. PrevNodeId string
  35. NextNodeId string
  36. NodeType string
  37. ApproveType string
  38. Users string
  39. CurrVersion string
  40. CreateTime string
  41. }{
  42. ReportApproveNodeId: "report_approve_node_id",
  43. ReportApproveFlowId: "report_approve_flow_id",
  44. PrevNodeId: "prev_node_id",
  45. NextNodeId: "next_node_id",
  46. NodeType: "node_type",
  47. ApproveType: "approve_type",
  48. Users: "users",
  49. CurrVersion: "curr_version",
  50. CreateTime: "create_time",
  51. }
  52. func (m *ReportApproveNode) TableName() string {
  53. return "report_approve_node"
  54. }
  55. func (m *ReportApproveNode) PrimaryId() string {
  56. return "report_approve_node_id"
  57. }
  58. func (m *ReportApproveNode) Create() (err error) {
  59. o := orm.NewOrmUsingDB("rddp")
  60. id, err := o.Insert(m)
  61. if err != nil {
  62. return
  63. }
  64. m.ReportApproveNodeId = int(id)
  65. return
  66. }
  67. func (m *ReportApproveNode) CreateMulti(items []*ReportApproveNode) (err error) {
  68. if len(items) == 0 {
  69. return
  70. }
  71. o := orm.NewOrmUsingDB("rddp")
  72. _, err = o.InsertMulti(len(items), items)
  73. return
  74. }
  75. func (m *ReportApproveNode) Update(cols []string) (err error) {
  76. o := orm.NewOrmUsingDB("rddp")
  77. _, err = o.Update(m, cols...)
  78. return
  79. }
  80. func (m *ReportApproveNode) Del() (err error) {
  81. o := orm.NewOrmUsingDB("rddp")
  82. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  83. _, err = o.Raw(sql, m.ReportApproveNodeId).Exec()
  84. return
  85. }
  86. func (m *ReportApproveNode) MultiDel(menuIds []int) (err error) {
  87. if len(menuIds) == 0 {
  88. return
  89. }
  90. o := orm.NewOrmUsingDB("rddp")
  91. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds)))
  92. _, err = o.Raw(sql, menuIds).Exec()
  93. return
  94. }
  95. func (m *ReportApproveNode) GetItemById(id int) (item *ReportApproveNode, err error) {
  96. o := orm.NewOrmUsingDB("rddp")
  97. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  98. err = o.Raw(sql, id).QueryRow(&item)
  99. return
  100. }
  101. func (m *ReportApproveNode) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *ReportApproveNode, err error) {
  102. o := orm.NewOrmUsingDB("rddp")
  103. order := ``
  104. if orderRule != "" {
  105. order = ` ORDER BY ` + orderRule
  106. }
  107. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
  108. err = o.Raw(sql, pars).QueryRow(&item)
  109. return
  110. }
  111. func (m *ReportApproveNode) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  112. o := orm.NewOrmUsingDB("rddp")
  113. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  114. err = o.Raw(sql, pars).QueryRow(&count)
  115. return
  116. }
  117. func (m *ReportApproveNode) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*ReportApproveNode, err error) {
  118. o := orm.NewOrmUsingDB("rddp")
  119. fields := strings.Join(fieldArr, ",")
  120. if len(fieldArr) == 0 {
  121. fields = `*`
  122. }
  123. order := `ORDER BY create_time DESC, report_approve_node_id ASC`
  124. if orderRule != "" {
  125. order = ` ORDER BY ` + orderRule
  126. }
  127. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  128. _, err = o.Raw(sql, pars).QueryRows(&items)
  129. return
  130. }
  131. func (m *ReportApproveNode) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*ReportApproveNode, err error) {
  132. o := orm.NewOrmUsingDB("rddp")
  133. fields := strings.Join(fieldArr, ",")
  134. if len(fieldArr) == 0 {
  135. fields = `*`
  136. }
  137. order := `ORDER BY create_time DESC`
  138. if orderRule != "" {
  139. order = ` ORDER BY ` + orderRule
  140. }
  141. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
  142. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  143. return
  144. }
  145. // ReportApproveNodeSaveReq 报告审批节点保存请求体
  146. type ReportApproveNodeSaveReq struct {
  147. ApproveType int `description:"审批类型:1-依次审批;2-会签;3-或签"`
  148. Users []ReportApproveNodeUserReq `description:"审批人信息"`
  149. }
  150. // ReportApproveNodeUserReq 报告审批节点用户请求体
  151. type ReportApproveNodeUserReq struct {
  152. UserType string `description:"审批人类型: user-用户; role-角色"`
  153. UserId int `description:"用户/角色ID"`
  154. UserName string `description:"用户/角色姓名"`
  155. Sort int `description:"排序"`
  156. }
  157. // ReportApproveNodeItem 报告审批节点详情信息
  158. type ReportApproveNodeItem struct {
  159. ReportApproveNodeId int `description:"报告审批节点ID"`
  160. ReportApproveFlowId int `description:"报告审批流ID"`
  161. PrevNodeId int `description:"上一个节点ID(0为开始节点)"`
  162. NextNodeId int `description:"下一个节点ID(0为结束节点)"`
  163. NodeType int `description:"节点类型:0-审批;1-抄送"`
  164. ApproveType int `description:"审批类型:1-依次审批;2-会签;3-或签"`
  165. Users []*ReportApproveNodeUserReq `description:"审批人信息"`
  166. }
  167. // FormatReportApproveNode2Item 格式化报告审批节点信息
  168. func FormatReportApproveNode2Item(origin *ReportApproveNode) (item *ReportApproveNodeItem, err error) {
  169. if origin == nil {
  170. return
  171. }
  172. item = new(ReportApproveNodeItem)
  173. item.ReportApproveNodeId = origin.ReportApproveNodeId
  174. item.ReportApproveFlowId = origin.ReportApproveFlowId
  175. item.PrevNodeId = origin.PrevNodeId
  176. item.NextNodeId = origin.NextNodeId
  177. item.NodeType = origin.NodeType
  178. item.ApproveType = origin.ApproveType
  179. item.Users = make([]*ReportApproveNodeUserReq, 0)
  180. if origin.Users != "" {
  181. e := json.Unmarshal([]byte(origin.Users), &item.Users)
  182. if e != nil {
  183. err = fmt.Errorf("node users unmarshal err: %s", e.Error())
  184. return
  185. }
  186. }
  187. return
  188. }