settle_account_main.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package settle_account_main
  2. import (
  3. "dashoo.cn/micro_libary/request"
  4. "errors"
  5. "fmt"
  6. "github.com/gogf/gf/os/gtime"
  7. "github.com/gogf/gf/util/gconv"
  8. "lims_adapter/dao/account"
  9. "lims_adapter/model"
  10. accountModel "lims_adapter/model/account"
  11. )
  12. // Service 会议室服务
  13. type Service struct {
  14. Dao *account.SettleAccountMainDao
  15. Tenant string
  16. }
  17. // NewSrv 服务初始化
  18. func NewService(tenant string) Service {
  19. return Service{Dao: account.NewSettleAccountMainDao(tenant), Tenant: tenant}
  20. }
  21. // List 会议室列表
  22. func (s Service) List(req model.ListReq) ([]accountModel.SettleAccountMain, int, error) {
  23. entityModel := s.Dao.M
  24. where := "1=1"
  25. if req.Entity != nil {
  26. entity := new(accountModel.SettleAccountMainReq)
  27. err := gconv.Struct(req.Entity, entity)
  28. if err != nil {
  29. return nil, 0, err
  30. }
  31. if entity.MainUserId != 0 {
  32. where += fmt.Sprintf(" AND MainUserId='%v'", entity.MainUserId)
  33. }
  34. if entity.MainUser != "" {
  35. where += fmt.Sprintf(" AND MainUser LIKE '%%%v%%'", entity.MainUser)
  36. }
  37. if entity.AttachUserId != 0 {
  38. where += fmt.Sprintf(" AND AttachUserId='%v'", entity.AttachUserId)
  39. }
  40. if entity.AttachUser != "" {
  41. where += fmt.Sprintf(" AND AttachUser LIKE '%%%v%%'", entity.AttachUser)
  42. }
  43. if entity.InstrumentId != 0 {
  44. where += fmt.Sprintf(" AND InstrumentId='%v'", entity.InstrumentId)
  45. }
  46. if entity.AppointUserId != 0 {
  47. where += fmt.Sprintf(" AND AppointUserId='%v'", entity.AppointUserId)
  48. }
  49. if entity.AppointUser != "" {
  50. where += fmt.Sprintf(" AND AppointUser LIKE '%%%v%%'", entity.AppointUser)
  51. }
  52. if entity.Status != "" {
  53. where += fmt.Sprintf(" AND Status='%v'", entity.Status)
  54. }
  55. if entity.SettleStatus != "" {
  56. where += fmt.Sprintf(" AND SettleStatus='%v'", entity.SettleStatus)
  57. }
  58. if entity.FeeType != "" {
  59. where += fmt.Sprintf(" AND FeeType='%v'", entity.FeeType)
  60. }
  61. if entity.AppointStartDate != "" && entity.AppointEndDate != "" {
  62. where += fmt.Sprintf(" AND AppointStartDate>'%v' AND AppointEndDate<'%v'", entity.AppointStartDate, entity.AppointEndDate)
  63. }
  64. }
  65. entityModel = entityModel.Where(where)
  66. total, err := entityModel.Count()
  67. if err != nil {
  68. return nil, 0, err
  69. }
  70. if total == 0 {
  71. return nil, 0, nil
  72. }
  73. res, err := entityModel.Page(req.Current, req.Size).Order("settle_account_main.CreateOn DESC").Fields("settle_account_main.*").FindAll()
  74. if err != nil {
  75. return nil, 0, err
  76. }
  77. if res.IsEmpty() {
  78. return nil, 0, nil
  79. }
  80. list := make([]accountModel.SettleAccountMain, 0)
  81. err = res.Structs(&list)
  82. if err != nil {
  83. return nil, 0, err
  84. }
  85. return list, total, nil
  86. }
  87. // 新增
  88. func (s Service) Add(req accountModel.AccountMainAddReq, user request.UserInfo) error {
  89. now := gtime.Now() // 获取当前时间
  90. // 更新必要信息
  91. req.Main.CreateUserId = int(user.Id)
  92. req.Main.CreateBy = user.RealName
  93. req.Main.CreateOn = now
  94. req.Main.UpdateUserId = int(user.Id)
  95. req.Main.UpdateBy = user.RealName
  96. req.Main.UpdateOn = now
  97. tx, err := s.Dao.DB.Begin()
  98. if err != nil {
  99. return err
  100. }
  101. result, err := tx.Insert("settle_account_main", req.Main)
  102. if err != nil {
  103. tx.Rollback()
  104. return err
  105. }
  106. id , _ := result.LastInsertId()
  107. for index := range req.Details { // 更新必要信息
  108. req.Details[index].CreateUserId = int(user.Id)
  109. req.Details[index].CreateBy = user.RealName
  110. req.Details[index].CreateOn = now
  111. req.Details[index].UpdateUserId = int(user.Id)
  112. req.Details[index].UpdateBy = user.RealName
  113. req.Details[index].UpdateOn = now
  114. req.Details[index].Pid = int(id)
  115. }
  116. _, err = tx.Insert("settle_account_detail", req.Details)
  117. if err != nil {
  118. tx.Rollback()
  119. return err
  120. }
  121. return tx.Commit()
  122. }
  123. // 确认
  124. func (s Service) Confirm(req accountModel.AccountMainConfirmReq, user request.UserInfo) error {
  125. if req.MainId == 0 {
  126. return errors.New("参数缺失")
  127. }
  128. _, err := s.Dao.M.Update(fmt.Sprintf("SettleStatus='1',SettleUserId='%v',SettleUser='%v',SettleDate='%v'", user.Id, user.RealName, gtime.Now()), fmt.Sprintf("Id='%v'", req.MainId))
  129. return err
  130. }