project_dao.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  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. "strings"
  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) GetPageBsByCategory(pageData viewmodels.ProjectPage, category string) (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. sql := ""
  61. var args = make([]interface{}, 0)
  62. if category != "" {
  63. sql += "inside_category = ?"
  64. args = append(args, category)
  65. }
  66. if pageData.Search != "" {
  67. args = append(args, pageData.Search)
  68. args = append(args, pageData.Search)
  69. search := "(code like ? or name like ?)"
  70. sql = strings.Join([]string{sql, search}, " and ")
  71. }
  72. count, _ := d.engine.
  73. Where(sql, args...).
  74. Count(Project)
  75. _ = d.engine.
  76. Where(sql, args...).
  77. Limit(size, page).
  78. Find(&datalist)
  79. return datalist, count
  80. }
  81. func (d *ProjectDao) GetPageBsByStaffName(pageData viewmodels.ProjectPage, staffName string) (data []models.CmProject, total int64) {
  82. datalist := make([]models.CmProject, 0)
  83. page := pageData.Page
  84. size := pageData.Size
  85. if page == 1 {
  86. page = 0
  87. } else {
  88. page--
  89. page = page * size
  90. }
  91. Project := &models.CmProject{}
  92. sql := ""
  93. var args = make([]interface{}, 0)
  94. if staffName != "" {
  95. sql += "staff_name = ?"
  96. args = append(args, staffName)
  97. }
  98. if pageData.Search != "" {
  99. args = append(args, pageData.Search)
  100. args = append(args, pageData.Search)
  101. search := "(code like ? or name like ?)"
  102. sql = strings.Join([]string{sql, search}, " and ")
  103. }
  104. count, _ := d.engine.
  105. Where(sql, args...).
  106. Count(Project)
  107. _ = d.engine.
  108. Where(sql, args...).
  109. Limit(size, page).
  110. Find(&datalist)
  111. return datalist, count
  112. // if pageData.Search != "" {
  113. // count, _ := d.engine.
  114. // Where(" (code like ? or name like ?) and staff_name = ? ", arr...).
  115. // Count(Project)
  116. // _ = d.engine.
  117. // Where(" (code like ? or name like ?) and staff_name = ? ", pageData.Search, pageData.Search).
  118. // Limit(size, page).
  119. // Find(&datalist)
  120. // return datalist, count
  121. // }
  122. // // Where("project_id = ? and bidsection_id =? and contracts_id=?", projectId, bidsectionId, contractsId).
  123. // count, _ := d.engine.Count(Project)
  124. // _ = d.engine.
  125. // Limit(size, page).
  126. // Find(&datalist)
  127. // return datalist, count
  128. }
  129. func (d *ProjectDao) GetPageBs(pageData viewmodels.ProjectPage) (data []models.CmProject, total int64) {
  130. datalist := make([]models.CmProject, 0)
  131. page := pageData.Page
  132. size := pageData.Size
  133. if page == 1 {
  134. page = 0
  135. } else {
  136. page--
  137. page = page * size
  138. }
  139. Project := &models.CmProject{}
  140. // 多余判断
  141. InsideCategoryId := ""
  142. if pageData.InsideCategoryId != "" {
  143. InsideCategoryId = pageData.InsideCategoryId
  144. }
  145. if InsideCategoryId != "" && pageData.Search != "" {
  146. count, _ := d.engine.
  147. Where("insideCategoryId= ? and (code like ? or name like ?) ", InsideCategoryId, pageData.Search, pageData.Search).
  148. Count(Project)
  149. _ = d.engine.
  150. Where("insideCategoryId= ? and (code like ? or name like ?) ", InsideCategoryId, pageData.Search, pageData.Search).
  151. Limit(size, page).
  152. Find(&datalist)
  153. return datalist, count
  154. }
  155. if InsideCategoryId != "" {
  156. count, _ := d.engine.
  157. Where("insideCategoryId= ?", InsideCategoryId).
  158. Count(Project)
  159. _ = d.engine.
  160. Where("insideCategoryId= ?", InsideCategoryId).
  161. Limit(size, page).
  162. Find(&datalist)
  163. return datalist, count
  164. }
  165. if pageData.Search != "" {
  166. count, _ := d.engine.
  167. Where(" code like ? or name like ? ", pageData.Search, pageData.Search).
  168. Count(Project)
  169. _ = d.engine.
  170. Where(" code like ? or name like ? ", pageData.Search, pageData.Search).
  171. Limit(size, page).
  172. Find(&datalist)
  173. return datalist, count
  174. }
  175. // Where("project_id = ? and bidsection_id =? and contracts_id=?", projectId, bidsectionId, contractsId).
  176. count, _ := d.engine.Count(Project)
  177. _ = d.engine.
  178. Limit(size, page).
  179. Find(&datalist)
  180. return datalist, count
  181. }
  182. //设置的值获得数据
  183. func (d *ProjectDao) GetCode(code string) *models.CmProject {
  184. data := &models.CmProject{}
  185. ok, err := d.engine.
  186. Where("code = ?", code).
  187. Get(data)
  188. if ok && err == nil {
  189. return data
  190. } else {
  191. data.Id = 0
  192. return data
  193. }
  194. }
  195. // 获得一组项目数据
  196. func (d *ProjectDao) GetListByCode(code string) []models.CmProject {
  197. datalist := make([]models.CmProject, 0)
  198. err := d.engine.
  199. Where("code = ?", code).
  200. Desc("id").
  201. Find(&datalist)
  202. if err != nil {
  203. return datalist
  204. } else {
  205. return datalist
  206. }
  207. }
  208. // 新增
  209. func (d *ProjectDao) Add(data *models.CmProject) error {
  210. _, err := d.engine.Insert(data)
  211. return err
  212. }
  213. //更新
  214. func (d *ProjectDao) Update(data *models.CmProject, columns []string) error {
  215. //_, err := d.engine.Id(data.Id).MustCols(columns...).Update(data)
  216. _, err := d.engine.Where("id = ? ", data.Id).MustCols(columns...).Update(data)
  217. return err
  218. }
  219. func (d *ProjectDao) FindById(id int) (*models.CmProject, error) {
  220. data := &models.CmProject{}
  221. _, err := d.engine.Where("id=?", id).Get(data)
  222. return data, err
  223. }