finance.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package admin
  2. import (
  3. "fmt"
  4. "server/dao"
  5. "server/model/common/request"
  6. )
  7. type FinanceService struct{}
  8. func (fs *FinanceService) QueryDailyExpensesList(info request.SearchDailyFee) (list interface{}, total int64, err error) {
  9. limit := info.PageInfo.PageSize
  10. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  11. dailyExpenses, total, err := dao.QueryDailyExpensesList(limit, offset, info.Genre, info.Name, info.Time, info.YearTime)
  12. for i, expenses := range dailyExpenses {
  13. feeDetails, err := dao.QueryDailyFeeDetails(int(expenses.ID))
  14. if err != nil {
  15. return nil, 0, err
  16. }
  17. dailyExpenses[i].DailyFeeDetails = feeDetails
  18. }
  19. return dailyExpenses, total, err
  20. }
  21. func (fs *FinanceService) QueryDailyExpenses(id int) (dao.DailyExpenses, error) {
  22. expenses, err := dao.QueryDailyExpenses(id)
  23. if err != nil {
  24. return dao.DailyExpenses{}, err
  25. }
  26. details, err := dao.QueryDailyFeeDetails(int(expenses.ID))
  27. if err != nil {
  28. return dao.DailyExpenses{}, err
  29. }
  30. expenses.DailyFeeDetails = details
  31. return expenses, err
  32. }
  33. func (fs *FinanceService) QueryExpensesGenre() ([]dao.ExpensesGenre, error) {
  34. return dao.QueryExpensesGenre()
  35. }
  36. func (fs *FinanceService) QueryProjectFeeGenre() ([]dao.ProjectFeeGenre, error) {
  37. return dao.QueryProjectFeeGenre()
  38. }
  39. func (fs *FinanceService) QueryBorrowingList(info request.SearchNameTime) (list interface{}, total int64, err error) {
  40. limit := info.PageInfo.PageSize
  41. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  42. borrowing, total, err := dao.QueryBorrowingList(limit, offset, info.Name, info.Time, info.YearTime)
  43. return borrowing, total, err
  44. }
  45. func (fs *FinanceService) QueryBorrowing(id int) (dao.Borrowing, error) {
  46. return dao.QueryBorrowing(id)
  47. }
  48. func (fs *FinanceService) QueryDailyFileList(info request.SearchIdNameGenre) (list interface{}, total int64, err error) {
  49. limit := info.PageInfo.PageSize
  50. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  51. dailyFiles, total, err := dao.QueryDailyFileList(limit, offset, info.Id, info.Genre, info.Name)
  52. return dailyFiles, total, err
  53. }
  54. func (fs *FinanceService) QueryProjectFinance(code string) (dao.Project, error) {
  55. project, err := dao.QueryProjectByCode(code)
  56. if err != nil {
  57. return dao.Project{}, err
  58. }
  59. collection, collectionTotal, err := dao.QueryCollectionList(8, 0, code, "")
  60. if err != nil {
  61. return dao.Project{}, err
  62. }
  63. reimbursements, reimbursementTotal, err := dao.QueryReimbursementList(8, 0, code, "", "")
  64. if err != nil {
  65. return dao.Project{}, err
  66. }
  67. for i, reimbursement := range reimbursements {
  68. details, err := dao.QueryFeeDetails(int(reimbursement.ID))
  69. if err != nil {
  70. return dao.Project{}, err
  71. }
  72. reimbursements[i].FeeDetails = details
  73. }
  74. workingHours, workingHoursTotal, err := dao.QueryWorkingHoursList(8, 0, 0, code, "", "")
  75. if err != nil {
  76. return dao.Project{}, err
  77. }
  78. fee, feeTotal, err := dao.QueryProjectFeeList(8, 0, 0, 0, code, "", "", "")
  79. if err != nil {
  80. return dao.Project{}, err
  81. }
  82. materials, err := dao.QueryProjectMaterialsByProjectCode(code)
  83. if err != nil {
  84. return dao.Project{}, err
  85. }
  86. project.Collection = collection
  87. project.Reimbursement = reimbursements
  88. project.WorkingHours = workingHours
  89. project.ReimbursementTotal = reimbursementTotal
  90. project.CollectionTotal = collectionTotal
  91. project.WorkingHoursTotal = workingHoursTotal
  92. project.ProjectFee = fee
  93. project.ProjectFeeTotal = feeTotal
  94. project.ProjectMaterials = materials
  95. return project, err
  96. }
  97. func (fs *FinanceService) QueryReserveBalance() (dao.Reserve, error) {
  98. return dao.QueryReserveBalance()
  99. }
  100. func (fs *FinanceService) CreateDailyExpenses(expenses dao.DailyExpenses) error {
  101. return expenses.CreateDailyExpenses()
  102. }
  103. func (fs *FinanceService) CreateExpensesGenre(genre dao.ExpensesGenre) error {
  104. return genre.CreateExpensesGenre()
  105. }
  106. func (fs *FinanceService) CreateProjectFeeGenre(genre dao.ProjectFeeGenre) error {
  107. return genre.CreateProjectFeeGenre()
  108. }
  109. func (fs *FinanceService) CreateBorrowing(borrowing dao.Borrowing) error {
  110. return borrowing.CreateBorrowing()
  111. }
  112. func (fs *FinanceService) CreateDailyFile(file dao.DailyFile) error {
  113. return file.CreateDailyFile()
  114. }
  115. func (fs *FinanceService) UpdateDailyExpenses(expenses dao.DailyExpenses) error {
  116. return expenses.UpdateDailyExpenses()
  117. }
  118. func (fs *FinanceService) UpdateExpensesGenre(genre dao.ExpensesGenre) error {
  119. return genre.UpdateExpensesGenre()
  120. }
  121. func (fs *FinanceService) UpdateProjectFeeGenre(genre dao.ProjectFeeGenre) error {
  122. return genre.UpdateProjectFeeGenre()
  123. }
  124. func (fs *FinanceService) UpdateBorrowing(borrowing dao.Borrowing) error {
  125. return borrowing.UpdateBorrowing()
  126. }
  127. func (fs *FinanceService) DeleteDailyExpenses(expenses dao.DailyExpenses) error {
  128. return expenses.DeleteDailyExpenses()
  129. }
  130. func (fs *FinanceService) DeleteExpensesGenre(genre dao.ExpensesGenre) error {
  131. expenses, _ := dao.QueryExpensesByGenre(int(genre.ID))
  132. if len(expenses) > 0 {
  133. return fmt.Errorf("费用类型正在被使用")
  134. }
  135. return genre.DeleteExpensesGenre()
  136. }
  137. func (fs *FinanceService) DeleteProjectFeeGenre(genre dao.ProjectFeeGenre) error {
  138. fee, _ := dao.QueryProjectFeeByGenre(int(genre.ID))
  139. if len(fee) > 0 {
  140. return fmt.Errorf("费用类型正在被使用")
  141. }
  142. return genre.DeleteProjectFeeGenre()
  143. }
  144. func (fs *FinanceService) DeleteBorrowing(borrowing dao.Borrowing) error {
  145. return borrowing.DeleteBorrowing()
  146. }
  147. func (fs *FinanceService) DeleteDailyFile(file dao.DailyFile) error {
  148. return file.DeleteDailyFile()
  149. }