projectWorkingHours.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package dao
  2. import (
  3. "server/global"
  4. )
  5. type ProjectWorkingHours struct {
  6. global.GVA_MODEL
  7. ProjectCode string `json:"projectCode" form:"projectCode" gorm:"comment:项目编号"`
  8. People int `json:"people" form:"people" gorm:"comment:报工人"`
  9. Constructor Constructor `json:"constructor" form:"constructor" gorm:"foreignKey:People;references:id;"`
  10. Days float64 `json:"days" form:"days" gorm:"type:double(5,1);not null;comment:天数"`
  11. PeopleTime string `json:"peopleTime" form:"peopleTime" gorm:"comment:报工时间"`
  12. }
  13. func (ProjectWorkingHours) TableName() string {
  14. return "project_working_hours"
  15. }
  16. // TODO:工时查询
  17. // QueryWorkingHoursList 查询工时详情列表
  18. func QueryWorkingHoursList(limit, offset, people int, code, time string) (projectWorkingHours []ProjectWorkingHours, total int64, err error) {
  19. // 创建db
  20. db := global.GVA_DB.Model(&ProjectWorkingHours{})
  21. // 如果有条件搜索 下方会自动创建搜索语句
  22. if code != "" {
  23. db = db.Where("project_code = ?", "%"+code+"%")
  24. }
  25. if people != 0 {
  26. db = db.Where("people = ?", people)
  27. }
  28. if time != "" {
  29. db = db.Where("DATE_FORMAT(people_time, '%Y-%m') = ?", time)
  30. }
  31. err = db.Count(&total).Error
  32. if err != nil {
  33. return
  34. }
  35. err = db.Order("id desc").Limit(limit).Offset(offset).Preload("Constructor").Find(&projectWorkingHours).Error
  36. return projectWorkingHours, total, err
  37. }
  38. func QueryWorkingHoursSum(limit, offset, people int, code, time string) (list interface{}, total int64, err error) {
  39. type Result struct {
  40. People uint
  41. Name string
  42. SumDay float64
  43. PriceSum float64
  44. }
  45. var results []Result
  46. db := global.GVA_DB.Model(&ProjectWorkingHours{}).Select("people,constructor.`name`,SUM(days) as sum_day,(SUM(days) * price) as price_sum").
  47. Joins("JOIN constructor ON project_working_hours.people = constructor.id")
  48. // 如果有条件搜索 下方会自动创建搜索语句
  49. if code != "" {
  50. db = db.Where("project_code = ?", "%"+code+"%")
  51. }
  52. if people != 0 {
  53. db = db.Where("people = ?", people)
  54. }
  55. if time != "" {
  56. db = db.Where("DATE_FORMAT(people_time, '%Y-%m') = ?", time)
  57. }
  58. err = db.Group("people").Order("project_working_hours.id desc").Limit(limit).Offset(offset).Preload("Constructor").Count(&total).Scan(&results).Error
  59. return results, total, err
  60. }
  61. // QueryWorkingHours 查询工时
  62. func QueryWorkingHours(code string) (workingHours []ProjectWorkingHours, err error) {
  63. err = global.GVA_DB.Model(&ProjectWorkingHours{}).Where("project_code = ?", code).Preload("Constructor").Find(&workingHours).Error
  64. return workingHours, err
  65. }
  66. // QueryWorkingHoursByCode 查询单个工时 按id
  67. func QueryWorkingHoursByCode(code string, people string) (workingHours ProjectWorkingHours, err error) {
  68. err = global.GVA_DB.Model(&ProjectWorkingHours{}).Where("code = ? and people = ?", code, people).Preload("Constructor").First(&workingHours).Error
  69. return workingHours, err
  70. }
  71. // TODO:工时新增
  72. // CreateWorkingHours 创建工时
  73. func (pwh ProjectWorkingHours) CreateWorkingHours() error {
  74. return global.GVA_DB.Create(&pwh).Error
  75. }
  76. // TODO:工时修改
  77. // UpdateWorkingHours 修改工时
  78. func (pwh ProjectWorkingHours) UpdateWorkingHours() error {
  79. return global.GVA_DB.Model(&ProjectWorkingHours{}).Updates(&pwh).Error
  80. }
  81. // TODO:工时删除
  82. // DeleteWorkingHours 删除工时
  83. func (pwh ProjectWorkingHours) DeleteWorkingHours() error {
  84. return global.GVA_DB.Model(&ProjectWorkingHours{}).Unscoped().Delete(&pwh).Error
  85. }