dataDownloadDomain.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. package domain
  2. import (
  3. "time"
  4. "go.mongodb.org/mongo-driver/bson/primitive"
  5. )
  6. type DataDownloadKind string
  7. const (
  8. DataDownloadPowerFlow DataDownloadKind = "power_flow"
  9. DataDownloadMqttLog DataDownloadKind = "mqtt_log"
  10. DataDownloadEventAlarm DataDownloadKind = "event_alarm"
  11. DataDownloadAlarmSnapshot DataDownloadKind = "alarm_snapshot"
  12. DataDownloadEmsLog DataDownloadKind = "ems_log"
  13. DataDownloadFaultRecord DataDownloadKind = "fault_record"
  14. DataDownloadUpdateLog DataDownloadKind = "update_log"
  15. )
  16. type DataDownloadState string
  17. const (
  18. DataDownloadMutable DataDownloadState = "mutable"
  19. DataDownloadFrozen DataDownloadState = "frozen"
  20. DataDownloadDynamic DataDownloadState = "dynamic"
  21. )
  22. type DataDownloadStatus string
  23. const (
  24. DataDownloadPending DataDownloadStatus = "pending"
  25. DataDownloadRunning DataDownloadStatus = "running"
  26. DataDownloadCancelling DataDownloadStatus = "cancelling"
  27. DataDownloadSucceeded DataDownloadStatus = "complete"
  28. DataDownloadItemSucceeded DataDownloadStatus = "success"
  29. DataDownloadSkipped DataDownloadStatus = "skipped"
  30. DataDownloadPartial DataDownloadStatus = "partial_success"
  31. DataDownloadFailed DataDownloadStatus = "failed"
  32. DataDownloadError DataDownloadStatus = "error"
  33. DataDownloadCancelled DataDownloadStatus = "cancelled"
  34. DataDownloadExpired DataDownloadStatus = "expired"
  35. )
  36. type DataDownloadCompleteness string
  37. const (
  38. DataDownloadCompletenessComplete DataDownloadCompleteness = "complete"
  39. DataDownloadCompletenessPartial DataDownloadCompleteness = "partial"
  40. )
  41. type DataDownloadOptions struct {
  42. PowerFlow bool `bson:"powerFlow" json:"powerFlow"`
  43. MqttLogs []string `bson:"mqttLogs,omitempty" json:"mqttLogs,omitempty"`
  44. EventAlarm bool `bson:"eventAlarm" json:"eventAlarm"`
  45. AlarmSnapshot bool `bson:"alarmSnapshot" json:"alarmSnapshot"`
  46. EmsLogs []string `bson:"emsLogs,omitempty" json:"emsLogs,omitempty"`
  47. FaultRecord bool `bson:"faultRecord" json:"faultRecord"`
  48. UpdateLog bool `bson:"updateLog" json:"updateLog"`
  49. }
  50. func (o DataDownloadOptions) Empty() bool {
  51. return !o.PowerFlow && len(o.MqttLogs) == 0 && !o.EventAlarm && !o.AlarmSnapshot && len(o.EmsLogs) == 0 && !o.FaultRecord && !o.UpdateLog
  52. }
  53. type DataDownloadTask struct {
  54. ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
  55. OwnerID string `bson:"ownerId" json:"ownerId"`
  56. OwnerName string `bson:"ownerName" json:"ownerName"`
  57. SNs []string `bson:"sns" json:"sns"`
  58. Description string `bson:"description" json:"description"`
  59. StartDate string `bson:"startDate,omitempty" json:"startDate,omitempty"`
  60. EndDate string `bson:"endDate,omitempty" json:"endDate,omitempty"`
  61. Options DataDownloadOptions `bson:"options" json:"options"`
  62. Status DataDownloadStatus `bson:"status" json:"status"`
  63. Total int64 `bson:"total" json:"total"`
  64. Succeeded int64 `bson:"succeeded" json:"succeeded"`
  65. Failed int64 `bson:"failed" json:"failed"`
  66. Empty int64 `bson:"empty" json:"empty"`
  67. CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
  68. UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
  69. FinishedAt *time.Time `bson:"finishedAt,omitempty" json:"finishedAt,omitempty"`
  70. }
  71. type DataDownloadItem struct {
  72. ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
  73. TaskID primitive.ObjectID `bson:"taskId" json:"taskId"`
  74. ItemKey string `bson:"itemKey" json:"itemKey"`
  75. Kind DataDownloadKind `bson:"kind" json:"kind"`
  76. SiteSN string `bson:"siteSn" json:"siteSn"`
  77. DeviceSN string `bson:"deviceSn,omitempty" json:"deviceSn,omitempty"`
  78. Date string `bson:"date,omitempty" json:"date,omitempty"`
  79. Subtype string `bson:"subtype,omitempty" json:"subtype,omitempty"`
  80. DeviceType string `bson:"deviceType,omitempty" json:"deviceType,omitempty"`
  81. Timezone string `bson:"timezone" json:"timezone"`
  82. Status DataDownloadStatus `bson:"status" json:"status"`
  83. Stage string `bson:"stage,omitempty" json:"stage,omitempty"`
  84. FailureReason string `bson:"failureReason,omitempty" json:"failureReason,omitempty"`
  85. Attempt int `bson:"attempt" json:"attempt"`
  86. CallRequestedAt *time.Time `bson:"callRequestedAt,omitempty" json:"callRequestedAt,omitempty"`
  87. CallRecordID int64 `bson:"callRecordId,omitempty" json:"callRecordId,omitempty"`
  88. CallRequestedCount int `bson:"callRequestedCount,omitempty" json:"callRequestedCount,omitempty"`
  89. CallRecordStatus *int `bson:"callRecordStatus,omitempty" json:"callRecordStatus,omitempty"`
  90. CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
  91. UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
  92. }
  93. type DataDownloadDocument struct {
  94. ID string `bson:"_id" json:"id"`
  95. RequestKey string `bson:"requestKey" json:"requestKey"`
  96. Kind DataDownloadKind `bson:"kind" json:"kind"`
  97. SiteSN string `bson:"siteSn" json:"siteSn"`
  98. DeviceSN string `bson:"deviceSn,omitempty" json:"deviceSn,omitempty"`
  99. Date string `bson:"date,omitempty" json:"date,omitempty"`
  100. Subtype string `bson:"subtype,omitempty" json:"subtype,omitempty"`
  101. DeviceType string `bson:"deviceType,omitempty" json:"deviceType,omitempty"`
  102. Timezone string `bson:"timezone" json:"timezone"`
  103. State DataDownloadState `bson:"state" json:"state"`
  104. Completeness DataDownloadCompleteness `bson:"completeness,omitempty" json:"completeness,omitempty"`
  105. Empty bool `bson:"empty" json:"empty"`
  106. FileCount int64 `bson:"fileCount,omitempty" json:"fileCount"`
  107. FailedFileCount int64 `bson:"failedFileCount,omitempty" json:"failedFileCount"`
  108. ContentGeneration int64 `bson:"contentGeneration" json:"contentGeneration"`
  109. BinaryObjectKey string `bson:"binaryObjectKey,omitempty" json:"-"`
  110. HasBinary bool `bson:"-" json:"hasBinary"`
  111. Checksum string `bson:"checksum,omitempty" json:"checksum,omitempty"`
  112. SourceFetchedAt time.Time `bson:"sourceFetchedAt" json:"sourceFetchedAt"`
  113. FrozenAt *time.Time `bson:"frozenAt,omitempty" json:"frozenAt,omitempty"`
  114. CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
  115. UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
  116. }
  117. type DataDownloadFaultRecordEntry struct {
  118. ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
  119. DocumentID string `bson:"documentId" json:"documentId"`
  120. SourceFileID string `bson:"sourceFileId" json:"sourceFileId"`
  121. FaultID int64 `bson:"faultId" json:"faultId"`
  122. SubRecordID int64 `bson:"subRecordId" json:"subRecordId"`
  123. FileName string `bson:"fileName" json:"fileName"`
  124. ContentType string `bson:"contentType" json:"contentType"`
  125. Size int64 `bson:"size" json:"size"`
  126. Checksum string `bson:"checksum" json:"checksum"`
  127. ObjectKey string `bson:"objectKey" json:"-"`
  128. LastSuccessfulAt time.Time `bson:"lastSuccessfulAt" json:"lastSuccessfulAt"`
  129. CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
  130. UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
  131. }
  132. type DataDownloadFileAttempt struct {
  133. ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
  134. TaskID primitive.ObjectID `bson:"taskId" json:"taskId"`
  135. ItemID primitive.ObjectID `bson:"itemId" json:"itemId"`
  136. DocumentID string `bson:"documentId" json:"documentId"`
  137. SourceFileID string `bson:"sourceFileId" json:"sourceFileId"`
  138. FileName string `bson:"fileName,omitempty" json:"fileName,omitempty"`
  139. Status DataDownloadStatus `bson:"status" json:"status"`
  140. EntryID *primitive.ObjectID `bson:"entryId,omitempty" json:"entryId,omitempty"`
  141. AttemptCount int `bson:"attemptCount" json:"attemptCount"`
  142. FailureStage string `bson:"failureStage,omitempty" json:"failureStage,omitempty"`
  143. FailureReason string `bson:"failureReason,omitempty" json:"failureReason,omitempty"`
  144. CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
  145. UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
  146. }
  147. type DataDownloadTaskDocument struct {
  148. ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
  149. TaskID primitive.ObjectID `bson:"taskId" json:"taskId"`
  150. ItemKey string `bson:"itemKey" json:"itemKey"`
  151. DocumentID string `bson:"documentId" json:"documentId"`
  152. LogicalPath string `bson:"logicalPath" json:"logicalPath"`
  153. Empty bool `bson:"empty" json:"empty"`
  154. CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
  155. }
  156. type DataDownloadRenderSlot struct {
  157. ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
  158. DocumentID string `bson:"documentId" json:"documentId"`
  159. Format string `bson:"format" json:"format"`
  160. ContentGeneration int64 `bson:"contentGeneration" json:"contentGeneration"`
  161. ArtifactID *primitive.ObjectID `bson:"artifactId,omitempty" json:"artifactId,omitempty"`
  162. UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
  163. }
  164. type DataDownloadArtifact struct {
  165. ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
  166. DocumentID string `bson:"documentId" json:"documentId"`
  167. Format string `bson:"format" json:"format"`
  168. ContentGeneration int64 `bson:"contentGeneration" json:"contentGeneration"`
  169. ObjectKey string `bson:"objectKey" json:"-"`
  170. Filename string `bson:"filename" json:"filename"`
  171. Size int64 `bson:"size" json:"size"`
  172. Checksum string `bson:"checksum" json:"checksum"`
  173. ExpiresAt time.Time `bson:"expiresAt" json:"expiresAt"`
  174. CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
  175. }
  176. type DataDownloadPackageJob struct {
  177. ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
  178. TaskIDs []primitive.ObjectID `bson:"taskIds" json:"taskIds"`
  179. OwnerID string `bson:"ownerId" json:"ownerId"`
  180. Status DataDownloadStatus `bson:"status" json:"status"`
  181. ObjectKey string `bson:"objectKey,omitempty" json:"-"`
  182. Filename string `bson:"filename,omitempty" json:"filename,omitempty"`
  183. Size int64 `bson:"size,omitempty" json:"size,omitempty"`
  184. TotalCount int64 `bson:"totalCount" json:"totalCount"`
  185. DoneCount int64 `bson:"doneCount" json:"doneCount"`
  186. FailureReason string `bson:"failureReason,omitempty" json:"failureReason,omitempty"`
  187. StartedAt *time.Time `bson:"startedAt,omitempty" json:"startedAt,omitempty"`
  188. CompletedAt *time.Time `bson:"completedAt,omitempty" json:"completedAt,omitempty"`
  189. ExpiresAt *time.Time `bson:"expiresAt,omitempty" json:"expiresAt,omitempty"`
  190. PurgeAt *time.Time `bson:"purgeAt,omitempty" json:"purgeAt,omitempty"`
  191. CreatedAt time.Time `bson:"createdAt" json:"createdAt"`
  192. UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"`
  193. }