project_dao.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. /*
  2. * @description:工程项目数据库操作
  3. * @Author: CP
  4. * @Date: 2020-09-03 14:40:06
  5. * @FilePath: \construction_management\dao\project_dao.go
  6. */
  7. package dao
  8. import (
  9. "errors"
  10. "github.com/go-xorm/xorm"
  11. "go.mod/models"
  12. "go.mod/web/viewmodels"
  13. )
  14. //数据库操作引擎
  15. type ProjectDao struct {
  16. engine *xorm.Engine
  17. }
  18. //获得一个DAO对象
  19. func NewProjectDao(engine *xorm.Engine) *ProjectDao {
  20. return &ProjectDao{
  21. engine: engine,
  22. }
  23. }
  24. //CmProjectAccount 设置的值获得数据
  25. // func (d *ProjectDao) Get(data *models.CmProject) {
  26. // //data := data
  27. // ok, err := d.engine.Get(data)
  28. // if ok && err == nil {
  29. // //return nil
  30. // } else {
  31. // data.Id = 0
  32. // //return err
  33. // }
  34. // }
  35. func (d *ProjectDao) GetPage(page int, size int) []models.CmProject {
  36. datalist := make([]models.CmProject, 0)
  37. if page == 1 {
  38. page = 0
  39. } else {
  40. page--
  41. page = page * size
  42. }
  43. // Where("project_id = ? and bidsection_id =? and contracts_id=?", projectId, bidsectionId, contractsId).
  44. _ = d.engine.
  45. Limit(size, page).
  46. Find(&datalist)
  47. return datalist
  48. }
  49. func (d *ProjectDao) GetPageBs(pageData viewmodels.ProjectPage) (data []models.CmProject, total int64) {
  50. datalist := make([]models.CmProject, 0)
  51. page := pageData.Page
  52. size := pageData.Size
  53. if page == 1 {
  54. page = 0
  55. } else {
  56. page--
  57. page = page * size
  58. }
  59. Project := &models.CmProject{}
  60. InsideCategoryId := ""
  61. if len(pageData.InsideCategoryId) > 0 {
  62. InsideCategoryId = pageData.InsideCategoryId[0]
  63. }
  64. if InsideCategoryId != "" && pageData.Search != "" {
  65. count, _ := d.engine.
  66. Where("insideCategoryId= ? and (code like ? or name like ?) ", InsideCategoryId, pageData.Search, pageData.Search).
  67. Count(Project)
  68. _ = d.engine.
  69. Where("insideCategoryId= ? and (code like ? or name like ?) ", InsideCategoryId, pageData.Search, pageData.Search).
  70. Limit(size, page).
  71. Find(&datalist)
  72. return datalist, count
  73. }
  74. if InsideCategoryId != "" {
  75. count, _ := d.engine.
  76. Where("insideCategoryId= ?", InsideCategoryId).
  77. Count(Project)
  78. _ = d.engine.
  79. Where("insideCategoryId= ?", InsideCategoryId).
  80. Limit(size, page).
  81. Find(&datalist)
  82. return datalist, count
  83. }
  84. if pageData.Search != "" {
  85. count, _ := d.engine.
  86. Where(" code like ? or name like ? ", pageData.Search, pageData.Search).
  87. Count(Project)
  88. _ = d.engine.
  89. Where(" code like ? or name like ? ", pageData.Search, pageData.Search).
  90. Limit(size, page).
  91. Find(&datalist)
  92. return datalist, count
  93. }
  94. // Where("project_id = ? and bidsection_id =? and contracts_id=?", projectId, bidsectionId, contractsId).
  95. count, _ := d.engine.Count(Project)
  96. _ = d.engine.
  97. Limit(size, page).
  98. Find(&datalist)
  99. return datalist, count
  100. }
  101. //设置的值获得数据
  102. func (d *ProjectDao) GetCode(code string) *models.CmProject {
  103. data := &models.CmProject{}
  104. ok, err := d.engine.
  105. Where("code = ?", code).
  106. Get(data)
  107. if ok && err == nil {
  108. return data
  109. } else {
  110. data.Id = 0
  111. return data
  112. }
  113. }
  114. // 获得一组项目数据
  115. func (d *ProjectDao) GetListByCode(code string) []models.CmProject {
  116. datalist := make([]models.CmProject, 0)
  117. err := d.engine.
  118. Where("code = ?", code).
  119. Desc("id").
  120. Find(&datalist)
  121. if err != nil {
  122. return datalist
  123. } else {
  124. return datalist
  125. }
  126. }
  127. // 新增
  128. func (d *ProjectDao) Add(data *models.CmProject) error {
  129. _, err := d.engine.Insert(data)
  130. return err
  131. }
  132. //更新
  133. func (d *ProjectDao) Update(data *models.CmProject, columns []string) error {
  134. //_, err := d.engine.Id(data.Id).MustCols(columns...).Update(data)
  135. is, err := d.engine.Where("id = ? ", data.Id).MustCols(columns...).Update(data)
  136. if is == 0 {
  137. return errors.New("未找到项目")
  138. }
  139. return err
  140. }
  141. func (d *ProjectDao) FindById(id int) (*models.CmProject, error) {
  142. data := &models.CmProject{}
  143. _, err := d.engine.Where("id=?", id).Get(data)
  144. return data, err
  145. }