ops_event_task.go 14 KB

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