projectWorkingHours.go 3.6 KB

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