TaskTime.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package Task
  2. import (
  3. "ColdVerify_server/lib"
  4. "ColdVerify_server/logs"
  5. "ColdVerify_server/models/Account"
  6. "github.com/beego/beego/v2/adapter/orm"
  7. orm2 "github.com/beego/beego/v2/client/orm"
  8. _ "github.com/go-sql-driver/mysql"
  9. "time"
  10. )
  11. // 模版
  12. type TaskTime struct {
  13. Id int `orm:"column(ID);size(11);auto;pk"`
  14. T_task_id string `orm:"size(256);"` // 任务ID
  15. T_task_type int `orm:"size(256);"` // 任务类型 方案0 实施1 报告2
  16. T_uuid string `orm:"size(256);null"` // 用户 UUID
  17. T_start_time string `orm:"size(256);null"` // 开始时间
  18. T_end_time string `orm:"size(256);null"` // 结束时间
  19. T_remarks string `orm:"type(text)"` // 备注
  20. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
  21. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新
  22. }
  23. func (t *TaskTime) TableName() string {
  24. return "tasktime" // 数据库名称 // ************** 替换 FormulaList **************
  25. }
  26. func init() {
  27. //注册模型
  28. orm.RegisterModel(new(TaskTime))
  29. }
  30. // -------------------------------------------------------------
  31. type TaskTime_R struct {
  32. Id int
  33. T_task_id string // 任务ID
  34. T_task_type int // 任务类型 方案0 实施1 报告2
  35. T_uuid string // 用户 UUID
  36. T_uuid_name string // 用户 UUID
  37. T_start_time string // 开始时间
  38. T_end_time string // 结束时间
  39. T_remarks string // 验证方案客户签字确认图片
  40. }
  41. // -------------------------------------------------------------
  42. func TaskTimeToTaskTime_R(T TaskTime) (T_r TaskTime_R) {
  43. T_r.Id = T.Id
  44. T_r.T_task_id = T.T_task_id
  45. T_r.T_task_type = T.T_task_type
  46. T_r.T_uuid = T.T_uuid
  47. if err, r := Account.Read_Admin_ByT_uuid(T.T_uuid); err == nil {
  48. T_r.T_uuid_name = r.T_name
  49. }
  50. T_r.T_start_time = T.T_start_time
  51. T_r.T_end_time = T.T_end_time
  52. T_r.T_remarks = T.T_remarks
  53. return T_r
  54. }
  55. // ---------------- 特殊方法 -------------------
  56. // 获取 ById
  57. func Read_TaskTime_ById(id int) (r TaskTime, is bool) {
  58. o := orm.NewOrm()
  59. r = TaskTime{Id: id}
  60. err := o.Read(&r) // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  61. if err != nil {
  62. logs.Error(lib.FuncName(), err)
  63. return r, false
  64. }
  65. return r, true
  66. }
  67. // 获取 By
  68. func Read_TaskTime(T_TaskTime_id string) (r TaskTime, is bool) {
  69. o := orm.NewOrm()
  70. qs := o.QueryTable(new(TaskTime))
  71. err := qs.Filter("T_TaskTime_id", T_TaskTime_id).One(&r)
  72. if err != nil {
  73. return r, false
  74. }
  75. return r, true
  76. }
  77. func Read_TaskTime_T_name(T_name string) (r TaskTime, is bool) {
  78. o := orm.NewOrm()
  79. qs := o.QueryTable(new(TaskTime))
  80. err := qs.Filter("T_name", T_name).One(&r)
  81. if err != nil {
  82. return r, false
  83. }
  84. return r, true
  85. }
  86. // 添加
  87. func Add_TaskTime(r TaskTime) (is bool) {
  88. o := orm.NewOrm()
  89. _, err := o.Insert(&r)
  90. if err != nil {
  91. logs.Error(lib.FuncName(), err)
  92. return false
  93. }
  94. return true
  95. }
  96. // 删除
  97. func Delete_TaskTime(v TaskTime) bool {
  98. o := orm.NewOrm()
  99. if num, err := o.Delete(&v); err == nil {
  100. logs.Println("Number of records deleted in database:", num)
  101. } else {
  102. return false
  103. }
  104. return true
  105. }
  106. // 修改
  107. func Update_TaskTime(m TaskTime, cols ...string) bool {
  108. o := orm.NewOrm()
  109. if num, err := o.Update(&m, cols...); err == nil {
  110. logs.Println("Number of records updated in database:", num)
  111. return true
  112. }
  113. return false
  114. }
  115. // 获取列表
  116. func Read_TaskTime_List(T_task_id string, T_task_type int) ([]TaskTime_R, int64) {
  117. o := orm.NewOrm()
  118. // 也可以直接使用 Model 结构体作为表名
  119. var r []TaskTime
  120. qs := o.QueryTable(new(TaskTime))
  121. cond := orm.NewCondition()
  122. cond1 := cond.And("T_task_id", T_task_id).And("T_task_type", T_task_type)
  123. qs.SetCond((*orm2.Condition)(cond1)).OrderBy("Id").All(&r)
  124. cnt, _ := qs.SetCond((*orm2.Condition)(cond1)).Count()
  125. // 转换
  126. var TaskTime_r []TaskTime_R
  127. for _, v := range r {
  128. TaskTime_r = append(TaskTime_r, TaskTimeToTaskTime_R(v))
  129. }
  130. return TaskTime_r, cnt
  131. }
  132. // 获取项目延时
  133. func Read_TaskTime_Compute(T_task_id string, T_task_type int) int64 {
  134. List, _ := Read_TaskTime_List(T_task_id, T_task_type)
  135. var time_interval_Compute float64
  136. for _, v := range List {
  137. if len(v.T_end_time) == 0 {
  138. continue
  139. }
  140. _, err := time.ParseInLocation("2006-01-02 15:04:05", v.T_end_time, time.Local)
  141. if err != nil {
  142. continue
  143. }
  144. _, err = time.ParseInLocation("2006-01-02 15:04:05", v.T_start_time, time.Local)
  145. if err != nil {
  146. continue
  147. }
  148. time_interval, err := lib.MinutesDifference(v.T_start_time, v.T_end_time)
  149. if err != nil {
  150. continue
  151. }
  152. time_interval_Compute += time_interval
  153. }
  154. logs.Println("Read_TaskTime_Compute", T_task_id, T_task_type, time_interval_Compute)
  155. return int64(time_interval_Compute)
  156. }