ops_event_task.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. // ==========================================================================
  2. // Software Delivery Task Model - Contains DTOs and constants for ops_event_task
  3. // ==========================================================================
  4. package opsdev
  5. import (
  6. "dashoo.cn/opms_libary/request"
  7. "dashoo.cn/opms_parent/app/model/opsdev/internal"
  8. "github.com/gogf/gf/os/gtime"
  9. )
  10. // OpsEventTask is the golang structure for table ops_event_task.
  11. type OpsEventTask internal.OpsEventTask
  12. // Task Status Constants
  13. const (
  14. TaskStatusTodo = "10" // 待处理
  15. TaskStatusProcessing = "20" // 处理中
  16. TaskStatusPaused = "25" // 暂停
  17. TaskStatusCompleted = "30" // 已完成
  18. TaskStatusBlocked = "70" // 阻塞
  19. TaskStatusCancelled = "90" // 作废
  20. )
  21. // Task Type Constants
  22. const (
  23. TaskTypeReqReview = "10" // 需求评审
  24. TaskTypeFeatureDev = "20" // 功能开发
  25. TaskTypeFeatureTest = "30" // 功能测试
  26. TaskTypeBug = "35" // BUG
  27. TaskTypeSystemRelease = "40" // 系统发版
  28. )
  29. // Priority Constants
  30. const (
  31. PriorityUrgent = "10" // 紧急
  32. PriorityHigh = "20" // 高
  33. PriorityMedium = "30" // 中
  34. PriorityLow = "40" // 低
  35. )
  36. // Event Type Constants (for EventId reference)
  37. const (
  38. EventTypeDelivery = "10" // 交付
  39. EventTypeOps = "20" // 运维
  40. )
  41. // Attachment 附件信息
  42. type Attachment struct {
  43. FileName string `json:"fileName"` // 文件名
  44. FileUrl string `json:"fileUrl"` // 文件URL
  45. FileType string `json:"fileType"` // 文件类型
  46. }
  47. // OpsEventTaskSearchReq 任务列表查询请求
  48. type OpsEventTaskSearchReq struct {
  49. request.PageReq
  50. ProjectId int `json:"projectId"` // 项目ID
  51. TaskTitle string `json:"taskTitle"` // 任务标题(模糊查询)
  52. TaskType []string `json:"taskType"` // 任务类型(多选)
  53. TaskStatus []string `json:"taskStatus"` // 任务状态(多选)
  54. Priority []string `json:"priority"` // 优先级(多选)
  55. OpsUserName []string `json:"opsUserName"` // 执行人姓名(多选)
  56. SortFields []SortField `json:"sortFields"` // 排序字段
  57. // 计划结束日期范围
  58. PlanEndDateStart string `json:"planEndDateStart"` // 计划结束开始日期
  59. PlanEndDateEnd string `json:"planEndDateEnd"` // 计划结束结束日期
  60. // 创建日期范围
  61. CreatedTimeStart string `json:"createdTimeStart"` // 创建开始日期
  62. CreatedTimeEnd string `json:"createdTimeEnd"` // 创建结束日期
  63. // 完成日期范围
  64. CompleteTimeStart string `json:"completeTimeStart"` // 完成开始日期
  65. CompleteTimeEnd string `json:"completeTimeEnd"` // 完成结束日期
  66. }
  67. // OpsEventTaskAddReq 新增任务请求
  68. type OpsEventTaskAddReq struct {
  69. ProjectId int `json:"projectId" v:"required#项目ID不能为空"` // 项目ID
  70. TaskTitle string `json:"taskTitle" v:"required#任务标题不能为空"` // 任务标题
  71. TaskDesc string `json:"taskDesc" v:"required#任务描述不能为空"` // 任务描述
  72. FunctionName string `json:"functionName" v:"required#功能模块不能为空"` // 功能模块
  73. TaskType string `json:"taskType" v:"required#任务类型不能为空"` // 任务类型
  74. Priority string `json:"priority" v:"required#优先级不能为空"` // 优先级
  75. OpsUserId int `json:"opsUserId"` // 执行人ID
  76. OpsUserName string `json:"opsUserName"` // 执行人姓名
  77. PlanStartTime string `json:"planStartTime"` // 计划开始时间
  78. PlanEndTime string `json:"planEndTime"` // 计划结束时间
  79. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工作量(小时)
  80. DefectType string `json:"defectType"` // 缺陷类型(10前端 20后端)
  81. ReleaseVersion string `json:"releaseVersion"` // 发布版本
  82. Remark string `json:"remark"` // 备注
  83. EventId int `json:"eventId"` // 关联事件ID
  84. EventType string `json:"eventType"` // 关联事件类型
  85. TaskParentId int `json:"taskParentId"` // 父任务ID
  86. Attachments []Attachment `json:"attachments"` // 附件列表
  87. }
  88. // OpsEventTaskUpdateReq 更新任务请求
  89. type OpsEventTaskUpdateReq struct {
  90. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  91. TaskTitle string `json:"taskTitle"` // 任务标题
  92. TaskDesc string `json:"taskDesc"` // 任务描述
  93. FunctionName string `json:"functionName"` // 功能模块
  94. TaskType string `json:"taskType"` // 任务类型
  95. Priority string `json:"priority"` // 优先级
  96. OpsUserId int `json:"opsUserId"` // 执行人ID
  97. OpsUserName string `json:"opsUserName"` // 执行人姓名
  98. PlanStartTime string `json:"planStartTime"` // 计划开始时间
  99. PlanEndTime string `json:"planEndTime"` // 计划结束时间
  100. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工作量(小时)
  101. DefectType string `json:"defectType"` // 缺陷类型(10前端 20后端)
  102. ReleaseVersion string `json:"releaseVersion"` // 发布版本
  103. Remark string `json:"remark"` // 备注
  104. }
  105. // OpsEventTaskScheduleReq 任务排期请求
  106. type OpsEventTaskScheduleReq struct {
  107. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  108. OpsUserId int `json:"opsUserId" v:"required#执行人不能为空"` // 执行人ID
  109. OpsUserName string `json:"opsUserName" v:"required#执行人姓名不能为空"` // 执行人姓名
  110. PlanStartTime string `json:"planStartTime" v:"required#计划开始时间不能为空"` // 计划开始时间
  111. PlanEndTime string `json:"planEndTime" v:"required#计划结束时间不能为空"` // 计划结束时间
  112. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工作量(小时)
  113. }
  114. // OpsEventTaskCompleteReq 任务完成请求
  115. type OpsEventTaskCompleteReq struct {
  116. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  117. ActualWorkHour float64 `json:"actualWorkHour"` // 实际工作量(小时)
  118. Remark string `json:"remark"` // 完成备注
  119. Attachments []Attachment `json:"attachments"` // 附件列表
  120. TestResult string `json:"testResult"` // 测试结果:pass-通过,fail-不通过(仅功能测试任务有效)
  121. DevTaskIds []int `json:"devTaskIds"` // 关联的研发任务ID列表(仅系统发版任务有效)
  122. IsReleaseComplete bool `json:"isReleaseComplete"` // 是否系统发版完成操作
  123. }
  124. // OpsEventTaskPauseReq 任务暂停请求
  125. type OpsEventTaskPauseReq struct {
  126. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  127. Remark string `json:"remark"` // 暂停原因
  128. }
  129. // OpsEventTaskBlockReq 任务阻塞请求
  130. type OpsEventTaskBlockReq struct {
  131. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  132. Remark string `json:"remark"` // 阻塞原因
  133. }
  134. // OpsEventTaskCancelReq 任务作废请求
  135. type OpsEventTaskCancelReq struct {
  136. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  137. Remark string `json:"remark"` // 作废原因
  138. }
  139. // OpsEventTaskStartReq 任务开始请求
  140. type OpsEventTaskStartReq struct {
  141. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  142. }
  143. // OpsEventTaskDeleteReq 任务删除请求
  144. type OpsEventTaskDeleteReq struct {
  145. Ids []int64 `json:"ids" v:"required#请选择需要删除的任务"` // 任务ID列表
  146. }
  147. // OpsEventTaskRsp 任务响应结构体
  148. type OpsEventTaskRsp struct {
  149. Id int `json:"id"` // 任务ID
  150. TaskNo string `json:"taskNo"` // 任务编号
  151. EventId int `json:"eventId"` // 关联事件ID
  152. EventType string `json:"eventType"` // 关联事件类型
  153. ProjectId int `json:"projectId"` // 项目ID
  154. TaskTitle string `json:"taskTitle"` // 任务标题
  155. TaskDesc string `json:"taskDesc"` // 任务描述
  156. TaskType string `json:"taskType"` // 任务类型
  157. TaskStatus string `json:"taskStatus"` // 任务状态
  158. OpsUserId int `json:"opsUserId"` // 执行人ID
  159. OpsUserName string `json:"opsUserName"` // 执行人姓名
  160. PlanStartTime *gtime.Time `json:"planStartTime"` // 计划开始时间
  161. PlanEndTime *gtime.Time `json:"planEndTime"` // 计划结束时间
  162. CompleteTime *gtime.Time `json:"completeTime"` // 完成时间
  163. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工作量(小时)
  164. ActualWorkHour float64 `json:"actualWorkHour"` // 实际工作量(小时)
  165. TaskParentId int `json:"taskParentId"` // 父任务ID
  166. Priority string `json:"priority"` // 优先级
  167. Remark string `json:"remark"` // 备注
  168. CreatedBy int `json:"createdBy"` // 创建人ID
  169. CreatedName string `json:"createdName"` // 创建人
  170. CreatedTime *gtime.Time `json:"createdTime"` // 创建时间
  171. UpdatedBy int `json:"updatedBy"` // 更新人ID
  172. UpdatedName string `json:"updatedName"` // 更新人
  173. UpdatedTime *gtime.Time `json:"updatedTime"` // 更新时间
  174. // 扩展字段
  175. FunctionName string `json:"functionName"` // 功能模块
  176. DefectType string `json:"defectType"` // 缺陷类型
  177. ReleaseVersion string `json:"releaseVersion"` // 发布版本
  178. // 关联信息
  179. ProjectName string `json:"projectName"` // 项目名称
  180. ContractNo string `json:"contractNo"` // 合同编号
  181. }
  182. // OpsEventTaskRecordSearchReq 任务过程记录查询请求
  183. type OpsEventTaskRecordSearchReq struct {
  184. TaskId int `json:"taskId" v:"required#任务ID不能为空"` // 任务ID
  185. }
  186. // OpsEventTaskRecordAddReq 添加任务过程记录请求
  187. type OpsEventTaskRecordAddReq struct {
  188. TaskId int `json:"taskId" v:"required#任务ID不能为空"` // 任务ID
  189. HandleContent string `json:"handleContent"` // 处理内容
  190. Attachments []Attachment `json:"attachments"` // 附件列表
  191. }
  192. // OpsEventTaskRecordWithAttachments 任务过程记录(带附件)
  193. type OpsEventTaskRecordWithAttachments struct {
  194. OpsEventTaskRecord
  195. Attachments []*OpsEventTaskAttachment `json:"attachments"` // 附件列表
  196. }
  197. // IdReq ID请求
  198. type IdReq struct {
  199. Id int `json:"id" v:"required#ID不能为空"` // ID
  200. }
  201. // IdsReq 批量ID请求
  202. type IdsReq struct {
  203. Ids []int64 `json:"ids" v:"required#ID列表不能为空"` // ID列表
  204. }
  205. // OpsEventTaskReleaseListReq 查询发布版本关联任务请求
  206. type OpsEventTaskReleaseListReq struct {
  207. ReleaseTaskId int `json:"releaseTaskId" v:"required#发版任务ID不能为空"` // 发版任务ID
  208. }
  209. // OpsEventTaskReleaseRsp 发布版本关联任务响应
  210. type OpsEventTaskReleaseRsp struct {
  211. Id int `json:"id"` // 关联记录ID
  212. DevTaskId int `json:"devTaskId"` // 开发任务ID
  213. TaskNo string `json:"taskNo"` // 任务编号
  214. TaskTitle string `json:"taskTitle"` // 任务标题
  215. TaskType string `json:"taskType"` // 任务类型
  216. TaskStatus string `json:"taskStatus"` // 任务状态
  217. OpsUserName string `json:"opsUserName"` // 执行人姓名
  218. ProjectId int `json:"projectId"` // 项目ID
  219. CreatedTime string `json:"createdTime"` // 创建时间
  220. }
  221. // OpsEventTaskWorkHourAddReq 添加工时登记请求
  222. type OpsEventTaskWorkHourAddReq struct {
  223. TaskId int `json:"taskId" v:"required#任务ID不能为空"` // 任务ID
  224. WorkDate string `json:"workDate" v:"required#工作日期不能为空"` // 工作日期
  225. ActualHour float64 `json:"actualHour" v:"required#实际工时不能为空"` // 实际工时
  226. Remark string `json:"remark" v:"required#工作进展不能为空"` // 工作进展
  227. }
  228. // OpsEventTaskWorkHourListReq 查询工时登记列表请求
  229. type OpsEventTaskWorkHourListReq struct {
  230. TaskId int `json:"taskId" v:"required#任务ID不能为空"` // 任务ID
  231. }
  232. // OpsEventTaskWorkHourRsp 工时登记响应
  233. type OpsEventTaskWorkHourRsp struct {
  234. Id int `json:"id"` // ID
  235. TaskId int `json:"taskId"` // 任务ID
  236. WorkDate string `json:"workDate"` // 工作日期
  237. ActualHour float64 `json:"actualHour"` // 实际工时
  238. Remark string `json:"remark"` // 工作进展
  239. CreatedName string `json:"createdName"` // 登记人
  240. CreatedTime string `json:"createdTime"` // 登记时间
  241. }