projectWorkingHours.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. SysUser SysUser `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, yearTime 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 like ?", "%"+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. if yearTime != "" {
  32. db = db.Where("DATE_FORMAT(people_time, '%Y') = ?", yearTime)
  33. }
  34. err = db.Count(&total).Error
  35. if err != nil {
  36. return
  37. }
  38. err = db.Order("id desc").Limit(limit).Offset(offset).Preload("SysUser").Find(&projectWorkingHours).Error
  39. return projectWorkingHours, total, err
  40. }
  41. func QueryWorkingHoursSum(limit, offset, people int, code, time, yearTime string) (list interface{}, total int64, err error) {
  42. type Result struct {
  43. People uint
  44. Name string
  45. SumDay float64
  46. PriceSum float64
  47. }
  48. var results []Result
  49. db := global.GVA_DB.Model(&ProjectWorkingHours{}).Select("people,sys_users.`nick_name` as name,SUM(days) as sum_day,(SUM(days) * one_price) as price_sum").
  50. Joins("JOIN sys_users ON project_working_hours.people = sys_users.id")
  51. // 如果有条件搜索 下方会自动创建搜索语句
  52. if code != "" {
  53. db = db.Where("project_code like ?", "%"+code+"%")
  54. }
  55. if people != 0 {
  56. db = db.Where("people = ?", people)
  57. }
  58. if time != "" {
  59. db = db.Where("DATE_FORMAT(people_time, '%Y-%m') = ?", time)
  60. }
  61. if yearTime != "" {
  62. db = db.Where("DATE_FORMAT(people_time, '%Y') = ?", yearTime)
  63. }
  64. err = db.Group("people").Limit(limit).Offset(offset).Preload("SysUser").Count(&total).Scan(&results).Error
  65. return results, total, err
  66. }
  67. // QueryWorkingHours 查询工时
  68. func QueryWorkingHours(code string) (workingHours []ProjectWorkingHours, err error) {
  69. err = global.GVA_DB.Model(&ProjectWorkingHours{}).Where("project_code = ?", code).Preload("SysUser").Find(&workingHours).Error
  70. return workingHours, err
  71. }
  72. // QueryWorkingHoursByCode 查询单个工时 按id
  73. func QueryWorkingHoursByCode(code string, people int) (workingHours ProjectWorkingHours, err error) {
  74. err = global.GVA_DB.Model(&ProjectWorkingHours{}).Where("code = ? and people = ?", code, people).Preload("SysUser").First(&workingHours).Error
  75. return workingHours, err
  76. }
  77. // TODO:工时新增
  78. // CreateWorkingHours 创建工时
  79. func (pwh ProjectWorkingHours) CreateWorkingHours() error {
  80. return global.GVA_DB.Create(&pwh).Error
  81. }
  82. // TODO:工时修改
  83. // UpdateWorkingHours 修改工时
  84. func (pwh ProjectWorkingHours) UpdateWorkingHours() error {
  85. return global.GVA_DB.Model(&ProjectWorkingHours{}).Where("id = ?", pwh.ID).Updates(&pwh).Error
  86. }
  87. // TODO:工时删除
  88. // DeleteWorkingHours 删除工时
  89. func (pwh ProjectWorkingHours) DeleteWorkingHours() error {
  90. return global.GVA_DB.Model(&ProjectWorkingHours{}).Unscoped().Delete(&pwh).Error
  91. }