ai_task.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package rag
  2. import (
  3. "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "time"
  8. )
  9. // AiTask ai这边的任务表
  10. type AiTask struct {
  11. AiTaskID int `gorm:"primaryKey;column:ai_task_id" description:"-"`
  12. TaskName string `gorm:"column:task_name" description:"任务名称"`
  13. TaskType string `gorm:"column:task_type" description:"任务类型"`
  14. Status string `gorm:"column:status" description:"任务状态"`
  15. StartTime time.Time `gorm:"column:start_time" description:"开始时间"`
  16. EndTime time.Time `gorm:"column:end_time" description:"结束时间"`
  17. CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
  18. UpdateTime time.Time `gorm:"column:update_time" description:"更新时间"`
  19. Parameters string `gorm:"column:parameters" description:"执行参数"`
  20. Logs string `gorm:"column:logs" description:"日志"`
  21. Errormessage string `gorm:"column:ErrorMessage" description:"错误信息"`
  22. Priority int `gorm:"column:priority" description:"优先级"`
  23. RetryCount int `gorm:"column:retry_count" description:"重试次数"`
  24. EstimatedCompletionTime time.Time `gorm:"column:estimated_completion_time" description:"预计完成时间"`
  25. ActualCompletitonTime time.Time `gorm:"column:actual_completiton_time" description:"实际完成时间"`
  26. Remark string `gorm:"column:remark" description:"备注"`
  27. SysUserID int `gorm:"column:sys_user_id" description:"任务创建人id"`
  28. SysUserRealName string `gorm:"column:sys_user_real_name" description:"任务创建人名称"`
  29. }
  30. // TableName get sql table name.获取数据库表名
  31. func (m *AiTask) TableName() string {
  32. return "ai_task"
  33. }
  34. // AiTaskColumns get sql column name.获取数据库列名
  35. var AiTaskColumns = struct {
  36. AiTaskID string
  37. TaskName string
  38. TaskType string
  39. Status string
  40. StartTime string
  41. EndTime string
  42. CreateTime string
  43. UpdateTime string
  44. Parameters string
  45. Logs string
  46. Errormessage string
  47. Priority string
  48. RetryCount string
  49. EstimatedCompletionTime string
  50. ActualCompletitonTime string
  51. Remark string
  52. SysUserID string
  53. SysUserRealName string
  54. }{
  55. AiTaskID: "ai_task_id",
  56. TaskName: "task_name",
  57. TaskType: "task_type",
  58. Status: "status",
  59. StartTime: "start_time",
  60. EndTime: "end_time",
  61. CreateTime: "create_time",
  62. UpdateTime: "update_time",
  63. Parameters: "parameters",
  64. Logs: "logs",
  65. Errormessage: "ErrorMessage",
  66. Priority: "priority",
  67. RetryCount: "retry_count",
  68. EstimatedCompletionTime: "estimated_completion_time",
  69. ActualCompletitonTime: "actual_completiton_time",
  70. Remark: "remark",
  71. SysUserID: "sys_user_id",
  72. SysUserRealName: "sys_user_real_name",
  73. }
  74. func (m *AiTask) Create() (err error) {
  75. err = global.DbMap[utils.DbNameAI].Create(&m).Error
  76. return
  77. }
  78. func (m *AiTask) Update(updateCols []string) (err error) {
  79. err = global.DbMap[utils.DbNameAI].Select(updateCols).Updates(&m).Error
  80. return
  81. }
  82. func (m *AiTask) Del() (err error) {
  83. err = global.DbMap[utils.DbNameAI].Delete(&m).Error
  84. return
  85. }
  86. func (m *AiTask) GetByID(id int) (item *AiTask, err error) {
  87. err = global.DbMap[utils.DbNameAI].Where(fmt.Sprintf("%s = ?", AiTaskColumns.AiTaskID), id).First(&item).Error
  88. return
  89. }
  90. func (m *AiTask) GetByCondition(condition string, pars []interface{}) (item *AiTask, err error) {
  91. sqlStr := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  92. err = global.DbMap[utils.DbNameAI].Raw(sqlStr, pars...).First(&item).Error
  93. return
  94. }
  95. func (m *AiTask) GetListByCondition(field, condition string, pars []interface{}, startSize, pageSize int) (items []*AiTask, err error) {
  96. if field == "" {
  97. field = "*"
  98. }
  99. sqlStr := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s order by AiTask_id desc LIMIT ?,?`, field, m.TableName(), condition)
  100. pars = append(pars, startSize, pageSize)
  101. err = global.DbMap[utils.DbNameAI].Raw(sqlStr, pars...).Find(&items).Error
  102. return
  103. }
  104. func (m *AiTask) GetCountByCondition(condition string, pars []interface{}) (total int, err error) {
  105. var intNull sql.NullInt64
  106. sqlStr := fmt.Sprintf(`SELECT COUNT(1) total FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  107. err = global.DbMap[utils.DbNameAI].Raw(sqlStr, pars...).Scan(&intNull).Error
  108. if err == nil && intNull.Valid {
  109. total = int(intNull.Int64)
  110. }
  111. return
  112. }
  113. // AddAiTask
  114. // @Description: 添加Ai模块的任务
  115. // @author: Roc
  116. // @datetime 2025-04-16 16:55:36
  117. // @param aiTask *AiTask
  118. // @param aiRecordList []*AiTaskRecord
  119. // @return err error
  120. func AddAiTask(aiTask *AiTask, aiRecordList []*AiTaskRecord) (err error) {
  121. to := global.DbMap[utils.DbNameAI].Begin()
  122. defer func() {
  123. if err != nil {
  124. _ = to.Rollback()
  125. } else {
  126. _ = to.Commit()
  127. }
  128. }()
  129. err = to.Create(aiTask).Error
  130. if err != nil {
  131. return
  132. }
  133. for _, aiTaskRecord := range aiRecordList {
  134. aiTaskRecord.AiTaskID = aiTask.AiTaskID
  135. }
  136. err = to.CreateInBatches(aiRecordList, utils.MultiAddNum).Error
  137. if err != nil {
  138. return
  139. }
  140. return
  141. }