ops_event_task.go 18 KB

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