123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- package dao
- import (
- "github.com/shopspring/decimal"
- "gorm.io/gorm"
- "server/global"
- )
- type Reimbursement struct {
- global.GVA_MODEL
- ProjectCode string `json:"projectCode" form:"projectCode" gorm:"comment:项目编号"`
- Name string `json:"name" form:"name" gorm:"comment:项目名称"`
- Applicant string `json:"applicant" form:"applicant" gorm:"comment:报销申请人"`
- ApplicationTime string `json:"applicationTime" form:"applicationTime" gorm:"comment:申请日期"`
- Approval int `json:"approval" form:"approval" gorm:"comment:报销审批人"`
- User SysUser `json:"user" form:"user" gorm:"foreignKey:Approval;references:id;"`
- ReimbursementPrice decimal.Decimal `json:"reimbursementPrice" form:"reimbursementPrice" gorm:"comment:项目金额;type:decimal(10,2)"`
- Genre int `json:"genre" form:"genre" gorm:"comment:费用类型"`
- ExpensesGenre ExpensesGenre `json:"expensesGenre" form:"expensesGenre" gorm:"foreignKey:Genre;references:id;"`
- FeeDetails []FeeDetails `json:"feeDetails" form:"feeDetails" gorm:"-"`
- }
- func (Reimbursement) TableName() string {
- return "reimbursement"
- }
- // TODO:报销查询
- // QueryReimbursementList 查询报销列表
- func QueryReimbursementList(limit, offset int, code, name, time string) (reimbursement []Reimbursement, total int64, err error) {
- // 创建db
- db := global.GVA_DB.Model(&Reimbursement{}).Where("project_code = ?", code)
- // 如果有条件搜索 下方会自动创建搜索语句
- if name != "" {
- db = db.Where("applicant LIKE ?", "%"+name+"%")
- }
- if time != "" {
- db = db.Where("DATE_FORMAT(application_time, '%Y-%m') = ?", time)
- }
- err = db.Count(&total).Error
- if err != nil {
- return
- }
- err = db.Order("id desc").Limit(limit).Offset(offset).Preload("ExpensesGenre").Preload("User").Find(&reimbursement).Error
- return reimbursement, total, err
- }
- func QueryReimbursement(code string) (reimbursement []Reimbursement, err error) {
- err = global.GVA_DB.Model(&Reimbursement{}).Where("project_code = ?", code).Preload("ExpensesGenre").Preload("User").Find(&reimbursement).Error
- return reimbursement, err
- }
- // TODO:报销新增
- // CreateReimbursement 新增报销单
- func (r Reimbursement) CreateReimbursement() error {
- return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
- txErr := tx.Create(&r).Error
- if txErr != nil {
- return txErr
- }
- for _, feeDetail := range r.FeeDetails {
- feeDetail.ReimbursementId = r.ID
- txErr := tx.Create(&feeDetail).Error
- if txErr != nil {
- return txErr
- }
- }
- return txErr
- })
- }
- // TODO:报销修改
- // UpdateReimbursement 修改报销单
- func (r Reimbursement) UpdateReimbursement() error {
- return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
- txErr := tx.Unscoped().Where("reimbursement_id = ?", r.ID).Delete(&FeeDetails{}).Error
- if txErr != nil {
- return txErr
- }
- txErr = tx.Model(&r).Where("id = ?", r.ID).Updates(&r).Error
- if txErr != nil {
- return txErr
- }
- for _, feeDetail := range r.FeeDetails {
- feeDetail.ReimbursementId = r.ID
- txErr := tx.Create(&feeDetail).Error
- if txErr != nil {
- return txErr
- }
- }
- return txErr
- })
- }
- // TODO:报销删除
- // DeleteReimbursement 删除报销单
- func (r Reimbursement) DeleteReimbursement() error {
- return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
- txErr := tx.Unscoped().Where("reimbursement_id = ?", r.ID).Delete(&FeeDetails{}).Error
- if txErr != nil {
- return txErr
- }
- txErr = tx.Unscoped().Delete(&r).Error
- if txErr != nil {
- return txErr
- }
- return txErr
- })
- }
|