reimbursement.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package dao
  2. import (
  3. "github.com/shopspring/decimal"
  4. "gorm.io/gorm"
  5. "server/global"
  6. )
  7. type Reimbursement struct {
  8. global.GVA_MODEL
  9. ProjectCode string `json:"projectCode" form:"projectCode" gorm:"comment:项目编号"`
  10. Name string `json:"name" form:"name" gorm:"comment:项目名称"`
  11. Applicant string `json:"applicant" form:"applicant" gorm:"comment:报销申请人"`
  12. Approval string `json:"approval" form:"approval" gorm:"comment:报销审批人"`
  13. Price decimal.Decimal `json:"price" form:"price" gorm:"comment:项目金额"`
  14. Genre string `json:"genre" form:"genre" gorm:"comment:项目类型"`
  15. FeeDetails []FeeDetails `json:"feeDetails" form:"feeDetails" gorm:"-"`
  16. }
  17. func (Reimbursement) TableName() string {
  18. return "reimbursement"
  19. }
  20. // TODO:报销查询
  21. // QueryReimbursementList 查询报销
  22. func QueryReimbursementList(limit, offset int, code, name string) (reimbursement []Reimbursement, total int64, err error) {
  23. // 创建db
  24. db := global.GVA_DB.Model(&Project{}).Where("project_code = ?", code)
  25. // 如果有条件搜索 下方会自动创建搜索语句
  26. if name != "" {
  27. db = db.Where("name LIKE ?", "%"+name+"%")
  28. }
  29. err = db.Count(&total).Error
  30. if err != nil {
  31. return
  32. }
  33. err = db.Order("id desc").Limit(limit).Offset(offset).Find(&reimbursement).Error
  34. return reimbursement, total, err
  35. }
  36. func QueryReimbursement(code string) (reimbursement []Reimbursement, err error) {
  37. err = global.GVA_DB.Model(&Reimbursement{}).Where("project_code = ?", code).Find(&reimbursement).Error
  38. return reimbursement, err
  39. }
  40. // TODO:报销新增
  41. // CreateReimbursement 新增报销单
  42. func (r Reimbursement) CreateReimbursement() error {
  43. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  44. txErr := tx.Create(&r).Error
  45. if txErr != nil {
  46. return txErr
  47. }
  48. for _, feeDetail := range r.FeeDetails {
  49. txErr := tx.Create(&feeDetail).Error
  50. if txErr != nil {
  51. return txErr
  52. }
  53. }
  54. return txErr
  55. })
  56. }
  57. // TODO:报销修改
  58. // UpdateReimbursement 修改报销单
  59. func (r Reimbursement) UpdateReimbursement() error {
  60. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  61. txErr := tx.Unscoped().Where("reimbursement_id = ?", r.ID).Delete(&FeeDetails{}).Error
  62. if txErr != nil {
  63. return txErr
  64. }
  65. txErr = tx.Model(&r).Updates(&r).Error
  66. if txErr != nil {
  67. return txErr
  68. }
  69. return txErr
  70. })
  71. }
  72. // TODO:报销删除
  73. // DeleteReimbursement 删除报销单
  74. func (r Reimbursement) DeleteReimbursement() error {
  75. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  76. txErr := tx.Unscoped().Where("reimbursement_id = ?", r.ID).Delete(&FeeDetails{}).Error
  77. if txErr != nil {
  78. return txErr
  79. }
  80. txErr = tx.Unscoped().Delete(&r).Error
  81. if txErr != nil {
  82. return txErr
  83. }
  84. return txErr
  85. })
  86. }