ops_event_task.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  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. ProjectIds []int `json:"projectIds"` // 项目ID列表(多选)
  55. EventId int `json:"eventId"` // 关联事件ID
  56. TaskTitle string `json:"taskTitle"` // 任务标题(模糊查询)
  57. TaskType []string `json:"taskType"` // 任务类型(多选)
  58. TaskStatus []string `json:"taskStatus"` // 任务状态(多选)
  59. Priority []string `json:"priority"` // 优先级(多选)
  60. OpsUserName []string `json:"opsUserName"` // 执行人姓名(多选)
  61. SortFields []SortField `json:"sortFields"` // 排序字段
  62. // 计划结束日期范围
  63. PlanEndDateStart string `json:"planEndDateStart"` // 计划结束开始日期
  64. PlanEndDateEnd string `json:"planEndDateEnd"` // 计划结束结束日期
  65. // 创建日期范围
  66. CreatedTimeStart string `json:"createdTimeStart"` // 创建开始日期
  67. CreatedTimeEnd string `json:"createdTimeEnd"` // 创建结束日期
  68. // 完成日期范围
  69. CompleteTimeStart string `json:"completeTimeStart"` // 完成开始日期
  70. CompleteTimeEnd string `json:"completeTimeEnd"` // 完成结束日期
  71. // 发布版本为空查询(用于发版任务选择未发版任务)
  72. ReleaseVersionEmpty bool `json:"releaseVersionEmpty"` // 是否查询release_version为空的任务
  73. ScheduleStatus string `json:"scheduleStatus"` // 排期状态: all-全部, scheduled-已排期, unscheduled-未排期
  74. }
  75. // OpsEventTaskAddReq 新增任务请求
  76. type OpsEventTaskAddReq struct {
  77. ProjectId int `json:"projectId" v:"required#项目ID不能为空"` // 项目ID
  78. TaskTitle string `json:"taskTitle" v:"required#任务标题不能为空"` // 任务标题
  79. TaskDesc string `json:"taskDesc" v:"required#任务描述不能为空"` // 任务描述
  80. FunctionName string `json:"functionName" v:"required#功能模块不能为空"` // 功能模块
  81. TaskType string `json:"taskType" v:"required#任务类型不能为空"` // 任务类型
  82. Priority string `json:"priority" v:"required#优先级不能为空"` // 优先级
  83. OpsUserId int `json:"opsUserId"` // 执行人ID
  84. OpsUserName string `json:"opsUserName"` // 执行人姓名
  85. PlanStartTime string `json:"planStartTime"` // 计划开始时间
  86. PlanEndTime string `json:"planEndTime"` // 计划结束时间
  87. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工作量(小时)
  88. DefectType string `json:"defectType"` // 缺陷类型(10前端 20后端)
  89. ReleaseVersion string `json:"releaseVersion"` // 发布版本
  90. Remark string `json:"remark"` // 备注
  91. EventId int `json:"eventId"` // 关联事件ID
  92. EventType string `json:"eventType"` // 关联事件类型
  93. TaskParentId int `json:"taskParentId"` // 父任务ID
  94. Attribute2 string `json:"attribute2"` // 历史遗留(10-是 20-否)
  95. Attachments []Attachment `json:"attachments"` // 附件列表
  96. }
  97. // OpsEventTaskUpdateReq 更新任务请求
  98. type OpsEventTaskUpdateReq struct {
  99. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  100. TaskTitle string `json:"taskTitle"` // 任务标题
  101. TaskDesc string `json:"taskDesc"` // 任务描述
  102. FunctionName string `json:"functionName"` // 功能模块
  103. TaskType string `json:"taskType"` // 任务类型
  104. Priority string `json:"priority"` // 优先级
  105. OpsUserId int `json:"opsUserId"` // 执行人ID
  106. OpsUserName string `json:"opsUserName"` // 执行人姓名
  107. PlanStartTime string `json:"planStartTime"` // 计划开始时间
  108. PlanEndTime string `json:"planEndTime"` // 计划结束时间
  109. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工作量(小时)
  110. DefectType string `json:"defectType"` // 缺陷类型(10前端 20后端)
  111. ReleaseVersion string `json:"releaseVersion"` // 发布版本
  112. Remark string `json:"remark"` // 备注
  113. Attribute2 string `json:"attribute2"` // 历史遗留(10-是 20-否)
  114. }
  115. // OpsEventTaskScheduleReq 任务排期请求
  116. type OpsEventTaskScheduleReq struct {
  117. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  118. OpsUserId int `json:"opsUserId" v:"required#执行人不能为空"` // 执行人ID
  119. OpsUserName string `json:"opsUserName" v:"required#执行人姓名不能为空"` // 执行人姓名
  120. PlanStartTime string `json:"planStartTime" v:"required#计划开始时间不能为空"` // 计划开始时间
  121. PlanEndTime string `json:"planEndTime" v:"required#计划结束时间不能为空"` // 计划结束时间
  122. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工作量(小时)
  123. }
  124. // OpsEventTaskCompleteReq 任务完成请求
  125. type OpsEventTaskCompleteReq struct {
  126. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  127. ActualWorkHour float64 `json:"actualWorkHour"` // 实际工作量(小时)
  128. Remark string `json:"remark"` // 完成备注
  129. Attachments []Attachment `json:"attachments"` // 附件列表
  130. TestResult string `json:"testResult"` // 测试结果:pass-通过,fail-不通过(仅功能测试任务有效)
  131. DevTaskIds []int `json:"devTaskIds"` // 关联的研发任务ID列表(仅系统发版任务有效)
  132. IsReleaseComplete bool `json:"isReleaseComplete"` // 是否系统发版完成操作
  133. CompleteDate string `json:"completeDate"` // 完成日期 (格式: yyyy-MM-dd, 可选)
  134. }
  135. // OpsEventTaskPauseReq 任务暂停请求
  136. type OpsEventTaskPauseReq struct {
  137. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  138. Remark string `json:"remark"` // 暂停原因
  139. }
  140. // OpsEventTaskBlockReq 任务阻塞请求
  141. type OpsEventTaskBlockReq struct {
  142. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  143. Remark string `json:"remark"` // 阻塞原因
  144. }
  145. // OpsEventTaskCancelReq 任务作废请求
  146. type OpsEventTaskCancelReq struct {
  147. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  148. Remark string `json:"remark"` // 作废原因
  149. }
  150. // OpsEventTaskStartReq 任务开始请求
  151. type OpsEventTaskStartReq struct {
  152. Id int `json:"id" v:"required#任务ID不能为空"` // 任务ID
  153. }
  154. // OpsEventTaskDeleteReq 任务删除请求
  155. type OpsEventTaskDeleteReq struct {
  156. Ids []int64 `json:"ids" v:"required#请选择需要删除的任务"` // 任务ID列表
  157. }
  158. // OpsEventTaskRsp 任务响应结构体
  159. type OpsEventTaskRsp struct {
  160. Id int `json:"id"` // 任务ID
  161. TaskNo string `json:"taskNo"` // 任务编号
  162. EventId int `json:"eventId"` // 关联事件ID
  163. EventType string `json:"eventType"` // 关联事件类型
  164. ProjectId int `json:"projectId"` // 项目ID
  165. TaskTitle string `json:"taskTitle"` // 任务标题
  166. TaskDesc string `json:"taskDesc"` // 任务描述
  167. TaskType string `json:"taskType"` // 任务类型
  168. TaskStatus string `json:"taskStatus"` // 任务状态
  169. OpsUserId int `json:"opsUserId"` // 执行人ID
  170. OpsUserName string `json:"opsUserName"` // 执行人姓名
  171. PlanStartTime *gtime.Time `json:"planStartTime"` // 计划开始时间
  172. PlanEndTime *gtime.Time `json:"planEndTime"` // 计划结束时间
  173. CompleteTime *gtime.Time `json:"completeTime"` // 完成时间
  174. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工作量(小时)
  175. ActualWorkHour float64 `json:"actualWorkHour"` // 实际工作量(小时)
  176. TaskParentId int `json:"taskParentId"` // 父任务ID
  177. Priority string `json:"priority"` // 优先级
  178. Remark string `json:"remark"` // 备注
  179. CreatedBy int `json:"createdBy"` // 创建人ID
  180. CreatedName string `json:"createdName"` // 创建人
  181. CreatedTime *gtime.Time `json:"createdTime"` // 创建时间
  182. UpdatedBy int `json:"updatedBy"` // 更新人ID
  183. UpdatedName string `json:"updatedName"` // 更新人
  184. UpdatedTime *gtime.Time `json:"updatedTime"` // 更新时间
  185. // 扩展字段
  186. FunctionName string `json:"functionName"` // 功能模块
  187. DefectType string `json:"defectType"` // 缺陷类型
  188. ReleaseVersion string `json:"releaseVersion"` // 发布版本
  189. Attribute2 string `json:"attribute2"` // 历史遗留(10-是 20-否)
  190. // 关联信息
  191. ProjectName string `json:"projectName"` // 项目名称
  192. ContractNo string `json:"contractNo"` // 合同编号
  193. }
  194. // OpsEventTaskRecordSearchReq 任务过程记录查询请求
  195. type OpsEventTaskRecordSearchReq struct {
  196. TaskId int `json:"taskId" v:"required#任务ID不能为空"` // 任务ID
  197. }
  198. // OpsEventTaskRecordAddReq 添加任务过程记录请求
  199. type OpsEventTaskRecordAddReq struct {
  200. TaskId int `json:"taskId" v:"required#任务ID不能为空"` // 任务ID
  201. HandleContent string `json:"handleContent"` // 处理内容
  202. Attachments []Attachment `json:"attachments"` // 附件列表
  203. }
  204. // OpsEventTaskRecordWithAttachments 任务过程记录(带附件)
  205. type OpsEventTaskRecordWithAttachments struct {
  206. OpsEventTaskRecord
  207. Attachments []*OpsEventTaskAttachment `json:"attachments"` // 附件列表
  208. }
  209. // IdReq ID请求
  210. type IdReq struct {
  211. Id int `json:"id" v:"required#ID不能为空"` // ID
  212. }
  213. // OpsEventTaskReleaseListReq 查询发布版本关联任务请求
  214. type OpsEventTaskReleaseListReq struct {
  215. ReleaseTaskId int `json:"releaseTaskId" v:"required#发版任务ID不能为空"` // 发版任务ID
  216. }
  217. // OpsEventTaskReleaseRsp 发布版本关联任务响应
  218. type OpsEventTaskReleaseRsp struct {
  219. Id int `json:"id"` // 关联记录ID
  220. DevTaskId int `json:"devTaskId"` // 开发任务ID
  221. TaskNo string `json:"taskNo"` // 任务编号
  222. TaskTitle string `json:"taskTitle"` // 任务标题
  223. TaskType string `json:"taskType"` // 任务类型
  224. TaskStatus string `json:"taskStatus"` // 任务状态
  225. OpsUserName string `json:"opsUserName"` // 执行人姓名
  226. ProjectId int `json:"projectId"` // 项目ID
  227. CreatedTime string `json:"createdTime"` // 创建时间
  228. }
  229. // OpsEventTaskWorkHourAddReq 添加工时登记请求
  230. type OpsEventTaskWorkHourAddReq struct {
  231. TaskId int `json:"taskId" v:"required#任务ID不能为空"` // 任务ID
  232. WorkDate string `json:"workDate" v:"required#工作日期不能为空"` // 工作日期
  233. ActualHour float64 `json:"actualHour" v:"required#实际工时不能为空"` // 实际工时
  234. Remark string `json:"remark" v:"required#工作进展不能为空"` // 工作进展
  235. }
  236. // OpsEventTaskWorkHourListReq 查询工时登记列表请求
  237. type OpsEventTaskWorkHourListReq struct {
  238. TaskId int `json:"taskId" v:"required#任务ID不能为空"` // 任务ID
  239. }
  240. // OpsEventTaskWorkHourRsp 工时登记响应
  241. type OpsEventTaskWorkHourRsp struct {
  242. Id int `json:"id"` // ID
  243. TaskId int `json:"taskId"` // 任务ID
  244. WorkDate string `json:"workDate"` // 工作日期
  245. ActualHour float64 `json:"actualHour"` // 实际工时
  246. Remark string `json:"remark"` // 工作进展
  247. CreatedName string `json:"createdName"` // 登记人
  248. CreatedTime string `json:"createdTime"` // 登记时间
  249. }
  250. // OpsEventTaskScheduleStatReq 人员排期统计请求
  251. type OpsEventTaskScheduleStatReq struct {
  252. WeekStart string `json:"weekStart" v:"required#开始日期不能为空"` // 周开始日期 yyyy-MM-dd
  253. WeekEnd string `json:"weekEnd" v:"required#结束日期不能为空"` // 周结束日期 yyyy-MM-dd
  254. ProjectId int `json:"projectId"` // 项目ID (可选,0表示全部)
  255. }
  256. // OpsEventTaskUserDayStat 单个用户某天的排期统计
  257. type OpsEventTaskUserDayStat struct {
  258. Date string `json:"date"` // 日期 yyyy-MM-dd
  259. TaskCount int `json:"taskCount"` // 任务数
  260. EstimateWorkHour float64 `json:"estimateWorkHour"` // 预估工时合计
  261. }
  262. // OpsEventTaskUserScheduleStat 单个用户一周排期统计
  263. type OpsEventTaskUserScheduleStat struct {
  264. OpsUserId int `json:"opsUserId"` // 用户ID
  265. OpsUserName string `json:"opsUserName"` // 用户名称
  266. GroupName string `json:"groupName"` // 所属分组
  267. DayStats []*OpsEventTaskUserDayStat `json:"dayStats"` // 每天统计
  268. WeekTotal *OpsEventTaskUserDayStat `json:"weekTotal"` // 本周合计
  269. }
  270. // OpsEventTaskScheduleStatRsp 人员排期统计响应
  271. type OpsEventTaskScheduleStatRsp struct {
  272. List []*OpsEventTaskUserScheduleStat `json:"list"` // 用户排期统计列表
  273. }