project.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. package admin
  2. import (
  3. "fmt"
  4. "server/dao"
  5. "server/model/common/request"
  6. "time"
  7. )
  8. type ProjectService struct{}
  9. func (ps *ProjectService) QueryProjectList(info request.SearchProject) (list interface{}, total int64, err error) {
  10. limit := info.PageInfo.PageSize
  11. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  12. project, total, err := dao.QueryProjectList(limit, offset, info.State, info.Name, info.Time)
  13. for i, p := range project {
  14. collection, err := dao.QueryCollection(p.Code)
  15. if err != nil {
  16. return nil, total, err
  17. }
  18. project[i].Collection = collection
  19. }
  20. return project, total, err
  21. }
  22. func (ps *ProjectService) QueryProjectByCode(code string) (project dao.Project, err error) {
  23. project, err = dao.QueryProjectByCode(code)
  24. if err != nil {
  25. return
  26. }
  27. files, err := dao.QueryFilesByCode(code)
  28. if err != nil {
  29. return
  30. }
  31. project.Files = files
  32. return project, err
  33. }
  34. func (ps *ProjectService) QueryFileList(info request.SearchProjectFileList) (list interface{}, total int64, err error) {
  35. limit := info.PageInfo.PageSize
  36. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  37. files, total, err := dao.QueryFileList(limit, offset, info.Genre, info.Code, info.Name)
  38. return files, total, err
  39. }
  40. func (ps *ProjectService) QueryFilesByNameOrGenre(info request.SearchProjectFileList) ([]dao.ProjectFile, error) {
  41. return dao.QueryFilesByNameOrGenre(info.Genre, info.Code, info.Name)
  42. }
  43. func (ps *ProjectService) QueryAllProject() ([]dao.Project, error) {
  44. return dao.QueryAllProject()
  45. }
  46. func (ps *ProjectService) QueryProjectsInfo() (sum float64, totalProject, completeProject, unCompleteProject int, err error) {
  47. projects, err := dao.QueryAllProject()
  48. if err != nil {
  49. return
  50. }
  51. for _, project := range projects {
  52. totalProject++
  53. if project.State == 3 {
  54. completeProject++
  55. }
  56. sum = sum + project.ProjectPrice
  57. }
  58. unCompleteProject = totalProject - completeProject
  59. return
  60. }
  61. func (ps *ProjectService) QueryProjectState() ([]dao.ProjectState, error) {
  62. return dao.QueryProjectState()
  63. }
  64. func (ps *ProjectService) QueryWorkingHours(code string) ([]dao.ProjectWorkingHours, error) {
  65. return dao.QueryWorkingHours(code)
  66. }
  67. func (ps *ProjectService) QueryWorkingHoursList(info request.SearchWorkingHours) (list interface{}, total int64, err error) {
  68. limit := info.PageInfo.PageSize
  69. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  70. return dao.QueryWorkingHoursList(limit, offset, info.People, info.Code, info.Time, info.YearTime)
  71. }
  72. func (ps *ProjectService) QueryWorkingHoursSum(info request.SearchWorkingHours) (list interface{}, total int64, err error) {
  73. limit := info.PageInfo.PageSize
  74. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  75. return dao.QueryWorkingHoursSum(limit, offset, info.People, info.Code, info.Time, info.YearTime)
  76. }
  77. func (ps *ProjectService) QueryCollections(code string) ([]dao.Collection, error) {
  78. return dao.QueryCollection(code)
  79. }
  80. func (ps *ProjectService) QueryCollectionList(info request.SearchProjectList) (list interface{}, total int64, err error) {
  81. limit := info.PageInfo.PageSize
  82. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  83. return dao.QueryCollectionList(limit, offset, info.Code, info.Time)
  84. }
  85. func (ps *ProjectService) QueryReimbursementList(info request.SearchProjectList) (list interface{}, total int64, err error) {
  86. limit := info.PageInfo.PageSize
  87. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  88. reimbursements, total, err := dao.QueryReimbursementList(limit, offset, info.Code, info.Name, info.Time)
  89. if err != nil {
  90. return nil, 0, err
  91. }
  92. for i, reimbursement := range reimbursements {
  93. details, err := dao.QueryFeeDetails(int(reimbursement.ID))
  94. if err != nil {
  95. return nil, 0, err
  96. }
  97. reimbursements[i].FeeDetails = details
  98. }
  99. return reimbursements, total, err
  100. }
  101. func (ps *ProjectService) QueryReimbursement(code string) ([]dao.Reimbursement, error) {
  102. reimbursements, err := dao.QueryReimbursement(code)
  103. if err != nil {
  104. return nil, err
  105. }
  106. for i, reimbursement := range reimbursements {
  107. details, err := dao.QueryFeeDetails(int(reimbursement.ID))
  108. if err != nil {
  109. return nil, err
  110. }
  111. reimbursements[i].FeeDetails = details
  112. }
  113. return reimbursements, err
  114. }
  115. func (ps *ProjectService) QueryProjectSum(code string) (dao.ProjectSum, error) {
  116. return dao.QueryProjectSum(code)
  117. }
  118. func (ps *ProjectService) CreateProject(project dao.Project) error {
  119. return project.CreateProject()
  120. }
  121. func (ps *ProjectService) CreateProjectFile(projectFile dao.ProjectFile) error {
  122. return projectFile.CreateFile()
  123. }
  124. func (ps *ProjectService) CreateProjectState(projectState dao.ProjectState) error {
  125. return projectState.CreateProjectState()
  126. }
  127. func (ps *ProjectService) CreateOrUpdateWorkingHours(workingHours dao.ProjectWorkingHours) error {
  128. return workingHours.CreateWorkingHours()
  129. }
  130. func (ps *ProjectService) CreateCollection(collection dao.Collection) error {
  131. return collection.CreateCollection()
  132. }
  133. func (ps *ProjectService) CreateReimbursement(reimbursement dao.Reimbursement) error {
  134. return reimbursement.CreateReimbursement()
  135. }
  136. func (ps *ProjectService) UpdateProject(project dao.Project) error {
  137. if project.State == 3 {
  138. project.CollectionTime = time.Now().Format("2006-01-02 15:04:05")
  139. } else if project.State == 4 || project.State == 5 {
  140. project.EndTime = time.Now().Format("2006-01-02 15:04:05")
  141. }
  142. return project.UpdateProject()
  143. }
  144. func (ps *ProjectService) UpdateProjectState(projectState dao.ProjectState) error {
  145. return projectState.UpdateProjectState()
  146. }
  147. func (ps *ProjectService) UpdateWorkingHours(workingHours dao.ProjectWorkingHours) error {
  148. return workingHours.UpdateWorkingHours()
  149. }
  150. func (ps *ProjectService) UpdateCollection(collection dao.Collection) error {
  151. return collection.UpdateCollection()
  152. }
  153. func (ps *ProjectService) UpdateReimbursement(reimbursement dao.Reimbursement) error {
  154. return reimbursement.UpdateReimbursement()
  155. }
  156. func (ps *ProjectService) DeleteProject(code string) error {
  157. files, _ := dao.QueryFilesByCode(code)
  158. if len(files) > 0 {
  159. return fmt.Errorf("项目下存在文件")
  160. }
  161. collection, _ := dao.QueryCollection(code)
  162. if len(collection) > 0 {
  163. return fmt.Errorf("项目下存在收款记录")
  164. }
  165. project, _ := dao.QueryProjectByCode(code)
  166. expenses, _ := dao.QueryExpensesByProjectId(int(project.ID))
  167. if len(expenses) > 0 {
  168. return fmt.Errorf("项目下存在费用记录")
  169. }
  170. return dao.DeleteProject(code)
  171. }
  172. func (ps *ProjectService) DeleteProjectFile(id uint) error {
  173. return dao.DeleteFile(id)
  174. }
  175. func (ps *ProjectService) DeleteProjectState(projectState dao.ProjectState) error {
  176. return projectState.DeleteProjectState()
  177. }
  178. func (ps *ProjectService) DeleteWorkingHours(workingHours dao.ProjectWorkingHours) error {
  179. return workingHours.DeleteWorkingHours()
  180. }
  181. func (ps *ProjectService) DeleteCollection(collection dao.Collection) error {
  182. return collection.DeleteCollection()
  183. }
  184. func (ps *ProjectService) DeleteReimbursement(reimbursement dao.Reimbursement) error {
  185. return reimbursement.DeleteReimbursement()
  186. }