487 lines
20 KiB
Go
487 lines
20 KiB
Go
package dto
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
|
|
)
|
|
|
|
// --- SensorData ---
|
|
|
|
// ListSensorDataRequest 定义了获取传感器数据列表的请求参数
|
|
type ListSensorDataRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
DeviceID *uint32 `json:"device_id" query:"device_id"`
|
|
SensorType *string `json:"sensor_type" query:"sensor_type"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// SensorDataDTO 是用于API响应的传感器数据结构
|
|
type SensorDataDTO struct {
|
|
Time time.Time `json:"time"`
|
|
DeviceID uint32 `json:"device_id"`
|
|
AreaControllerID uint32 `json:"area_controller_id"`
|
|
SensorType models.SensorType `json:"sensor_type"`
|
|
Data json.RawMessage `json:"data"`
|
|
}
|
|
|
|
// ListSensorDataResponse 是获取传感器数据列表的响应结构
|
|
type ListSensorDataResponse struct {
|
|
List []SensorDataDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- DeviceCommandLog ---
|
|
|
|
// ListDeviceCommandLogRequest 定义了获取设备命令日志列表的请求参数
|
|
type ListDeviceCommandLogRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
DeviceID *uint32 `json:"device_id" query:"device_id"`
|
|
ReceivedSuccess *bool `json:"received_success" query:"received_success"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// DeviceCommandLogDTO 是用于API响应的设备命令日志结构
|
|
type DeviceCommandLogDTO struct {
|
|
MessageID string `json:"message_id"`
|
|
DeviceID uint32 `json:"device_id"`
|
|
SentAt time.Time `json:"sent_at"`
|
|
AcknowledgedAt *time.Time `json:"acknowledged_at"`
|
|
ReceivedSuccess bool `json:"received_success"`
|
|
}
|
|
|
|
// ListDeviceCommandLogResponse 是获取设备命令日志列表的响应结构
|
|
type ListDeviceCommandLogResponse struct {
|
|
List []DeviceCommandLogDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- PlanExecutionLog ---
|
|
|
|
// ListPlanExecutionLogRequest 定义了获取计划执行日志列表的请求参数
|
|
type ListPlanExecutionLogRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PlanID *uint32 `json:"plan_id" query:"plan_id"`
|
|
Status *string `json:"status" query:"status"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// PlanExecutionLogDTO 是用于API响应的计划执行日志结构
|
|
type PlanExecutionLogDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
PlanID uint32 `json:"plan_id"`
|
|
PlanName string `json:"plan_name"`
|
|
Status models.ExecutionStatus `json:"status"`
|
|
StartedAt time.Time `json:"started_at"`
|
|
EndedAt time.Time `json:"ended_at"`
|
|
Error string `json:"error"`
|
|
}
|
|
|
|
// ListPlanExecutionLogResponse 是获取计划执行日志列表的响应结构
|
|
type ListPlanExecutionLogResponse struct {
|
|
List []PlanExecutionLogDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- TaskExecutionLog ---
|
|
|
|
// ListTaskExecutionLogRequest 定义了获取任务执行日志列表的请求参数
|
|
type ListTaskExecutionLogRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PlanExecutionLogID *uint32 `json:"plan_execution_log_id" query:"plan_execution_log_id"`
|
|
TaskID *int `json:"task_id" query:"task_id"`
|
|
Status *string `json:"status" query:"status"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// TaskDTO 是用于API响应的简化版任务结构
|
|
type TaskDTO struct {
|
|
ID uint32 `json:"id"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
}
|
|
|
|
// TaskExecutionLogDTO 是用于API响应的任务执行日志结构
|
|
type TaskExecutionLogDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
PlanExecutionLogID uint32 `json:"plan_execution_log_id"`
|
|
TaskID int `json:"task_id"`
|
|
Task TaskDTO `json:"task"` // 嵌套的任务信息
|
|
Status models.ExecutionStatus `json:"status"`
|
|
Output string `json:"output"`
|
|
StartedAt time.Time `json:"started_at"`
|
|
EndedAt time.Time `json:"ended_at"`
|
|
}
|
|
|
|
// ListTaskExecutionLogResponse 是获取任务执行日志列表的响应结构
|
|
type ListTaskExecutionLogResponse struct {
|
|
List []TaskExecutionLogDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- PendingCollection ---
|
|
|
|
// ListPendingCollectionRequest 定义了获取待采集请求列表的请求参数
|
|
type ListPendingCollectionRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
DeviceID *uint32 `json:"device_id" query:"device_id"`
|
|
Status *string `json:"status" query:"status"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// PendingCollectionDTO 是用于API响应的待采集请求结构
|
|
type PendingCollectionDTO struct {
|
|
CorrelationID string `json:"correlation_id"`
|
|
DeviceID uint32 `json:"device_id"`
|
|
CommandMetadata models.UintArray `json:"command_metadata"`
|
|
Status models.PendingCollectionStatus `json:"status"`
|
|
FulfilledAt *time.Time `json:"fulfilled_at"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
// ListPendingCollectionResponse 是获取待采集请求列表的响应结构
|
|
type ListPendingCollectionResponse struct {
|
|
List []PendingCollectionDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- UserActionLog ---
|
|
|
|
// ListUserActionLogRequest 定义了获取用户操作日志列表的请求参数
|
|
type ListUserActionLogRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
UserID *uint32 `json:"user_id" query:"user_id"`
|
|
Username *string `json:"username" query:"username"`
|
|
ActionType *string `json:"action_type" query:"action_type"`
|
|
Status *string `json:"status" query:"status"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// UserActionLogDTO 是用于API响应的用户操作日志结构
|
|
type UserActionLogDTO struct {
|
|
ID uint32 `json:"id"`
|
|
Time time.Time `json:"time"`
|
|
UserID uint32 `json:"user_id"`
|
|
Username string `json:"username"`
|
|
SourceIP string `json:"source_ip"`
|
|
ActionType string `json:"action_type"`
|
|
TargetResource json.RawMessage `json:"target_resource"`
|
|
Description string `json:"description"`
|
|
Status models.AuditStatus `json:"status"`
|
|
HTTPPath string `json:"http_path"`
|
|
HTTPMethod string `json:"http_method"`
|
|
ResultDetails string `json:"result_details"`
|
|
}
|
|
|
|
// ListUserActionLogResponse 是获取用户操作日志列表的响应结构
|
|
type ListUserActionLogResponse struct {
|
|
List []UserActionLogDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- MedicationLog ---
|
|
|
|
// ListMedicationLogRequest 定义了获取用药记录列表的请求参数
|
|
type ListMedicationLogRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PigBatchID *uint32 `json:"pig_batch_id" query:"pig_batch_id"`
|
|
MedicationID *uint32 `json:"medication_id" query:"medication_id"`
|
|
Reason *string `json:"reason" query:"reason"`
|
|
OperatorID *uint32 `json:"operator_id" query:"operator_id"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// MedicationDTO 是用于API响应的简化版药品结构
|
|
type MedicationDTO struct {
|
|
ID uint32 `json:"id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
// MedicationLogDTO 是用于API响应的用药记录结构
|
|
type MedicationLogDTO struct {
|
|
ID uint32 `json:"id"`
|
|
PigBatchID uint32 `json:"pig_batch_id"`
|
|
MedicationID uint32 `json:"medication_id"`
|
|
Medication MedicationDTO `json:"medication"`
|
|
DosageUsed float32 `json:"dosage_used"`
|
|
TargetCount int `json:"target_count"`
|
|
Reason models.MedicationReasonType `json:"reason"`
|
|
Description string `json:"description"`
|
|
OperatorID uint32 `json:"operator_id"`
|
|
HappenedAt time.Time `json:"happened_at"`
|
|
}
|
|
|
|
// ListMedicationLogResponse 是获取用药记录列表的响应结构
|
|
type ListMedicationLogResponse struct {
|
|
List []MedicationLogDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- PigBatchLog ---
|
|
|
|
// ListPigBatchLogRequest 定义了获取猪批次日志列表的请求参数
|
|
type ListPigBatchLogRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PigBatchID *uint32 `json:"pig_batch_id" query:"pig_batch_id"`
|
|
ChangeType *string `json:"change_type" query:"change_type"`
|
|
OperatorID *uint32 `json:"operator_id" query:"operator_id"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// PigBatchLogDTO 是用于API响应的猪批次日志结构
|
|
type PigBatchLogDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
PigBatchID uint32 `json:"pig_batch_id"`
|
|
ChangeType models.LogChangeType `json:"change_type"`
|
|
ChangeCount int `json:"change_count"`
|
|
Reason string `json:"reason"`
|
|
BeforeCount int `json:"before_count"`
|
|
AfterCount int `json:"after_count"`
|
|
OperatorID uint32 `json:"operator_id"`
|
|
HappenedAt time.Time `json:"happened_at"`
|
|
}
|
|
|
|
// ListPigBatchLogResponse 是获取猪批次日志列表的响应结构
|
|
type ListPigBatchLogResponse struct {
|
|
List []PigBatchLogDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- WeighingBatch ---
|
|
|
|
// ListWeighingBatchRequest 定义了获取批次称重记录列表的请求参数
|
|
type ListWeighingBatchRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PigBatchID *uint32 `json:"pig_batch_id" query:"pig_batch_id"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// WeighingBatchDTO 是用于API响应的批次称重记录结构
|
|
type WeighingBatchDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
WeighingTime time.Time `json:"weighing_time"`
|
|
Description string `json:"description"`
|
|
PigBatchID uint32 `json:"pig_batch_id"`
|
|
}
|
|
|
|
// ListWeighingBatchResponse 是获取批次称重记录列表的响应结构
|
|
type ListWeighingBatchResponse struct {
|
|
List []WeighingBatchDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- WeighingRecord ---
|
|
|
|
// ListWeighingRecordRequest 定义了获取单次称重记录列表的请求参数
|
|
type ListWeighingRecordRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
WeighingBatchID *uint32 `json:"weighing_batch_id" query:"weighing_batch_id"`
|
|
PenID *uint32 `json:"pen_id" query:"pen_id"`
|
|
OperatorID *uint32 `json:"operator_id" query:"operator_id"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// WeighingRecordDTO 是用于API响应的单次称重记录结构
|
|
type WeighingRecordDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
Weight float32 `json:"weight"`
|
|
WeighingBatchID uint32 `json:"weighing_batch_id"`
|
|
PenID uint32 `json:"pen_id"`
|
|
OperatorID uint32 `json:"operator_id"`
|
|
Remark string `json:"remark"`
|
|
WeighingTime time.Time `json:"weighing_time"`
|
|
}
|
|
|
|
// ListWeighingRecordResponse 是获取单次称重记录列表的响应结构
|
|
type ListWeighingRecordResponse struct {
|
|
List []WeighingRecordDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- PigTransferLog ---
|
|
|
|
// ListPigTransferLogRequest 定义了获取猪只迁移日志列表的请求参数
|
|
type ListPigTransferLogRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PigBatchID *uint32 `json:"pig_batch_id" query:"pig_batch_id"`
|
|
PenID *uint32 `json:"pen_id" query:"pen_id"`
|
|
TransferType *string `json:"transfer_type" query:"transfer_type"`
|
|
OperatorID *uint32 `json:"operator_id" query:"operator_id"`
|
|
CorrelationID *string `json:"correlation_id" query:"correlation_id"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// PigTransferLogDTO 是用于API响应的猪只迁移日志结构
|
|
type PigTransferLogDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
TransferTime time.Time `json:"transfer_time"`
|
|
PigBatchID uint32 `json:"pig_batch_id"`
|
|
PenID uint32 `json:"pen_id"`
|
|
Quantity int `json:"quantity"`
|
|
Type models.PigTransferType `json:"type"`
|
|
CorrelationID string `json:"correlation_id"`
|
|
OperatorID uint32 `json:"operator_id"`
|
|
Remarks string `json:"remarks"`
|
|
}
|
|
|
|
// ListPigTransferLogResponse 是获取猪只迁移日志列表的响应结构
|
|
type ListPigTransferLogResponse struct {
|
|
List []PigTransferLogDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- PigSickLog ---
|
|
|
|
// ListPigSickLogRequest 定义了获取病猪日志列表的请求参数
|
|
type ListPigSickLogRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PigBatchID *uint32 `json:"pig_batch_id" query:"pig_batch_id"`
|
|
PenID *uint32 `json:"pen_id" query:"pen_id"`
|
|
Reason *string `json:"reason" query:"reason"`
|
|
TreatmentLocation *string `json:"treatment_location" query:"treatment_location"`
|
|
OperatorID *uint32 `json:"operator_id" query:"operator_id"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// PigSickLogDTO 是用于API响应的病猪日志结构
|
|
type PigSickLogDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
PigBatchID uint32 `json:"pig_batch_id"`
|
|
PenID uint32 `json:"pen_id"`
|
|
ChangeCount int `json:"change_count"`
|
|
Reason models.PigBatchSickPigReasonType `json:"reason"`
|
|
BeforeCount int `json:"before_count"`
|
|
AfterCount int `json:"after_count"`
|
|
Remarks string `json:"remarks"`
|
|
TreatmentLocation models.PigBatchSickPigTreatmentLocation `json:"treatment_location"`
|
|
OperatorID uint32 `json:"operator_id"`
|
|
HappenedAt time.Time `json:"happened_at"`
|
|
}
|
|
|
|
// ListPigSickLogResponse 是获取病猪日志列表的响应结构
|
|
type ListPigSickLogResponse struct {
|
|
List []PigSickLogDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- PigPurchase ---
|
|
|
|
// ListPigPurchaseRequest 定义了获取猪只采购记录列表的请求参数
|
|
type ListPigPurchaseRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PigBatchID *uint32 `json:"pig_batch_id" query:"pig_batch_id"`
|
|
Supplier *string `json:"supplier" query:"supplier"`
|
|
OperatorID *uint32 `json:"operator_id" query:"operator_id"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// PigPurchaseDTO 是用于API响应的猪只采购记录结构
|
|
type PigPurchaseDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
PigBatchID uint32 `json:"pig_batch_id"`
|
|
PurchaseDate time.Time `json:"purchase_date"`
|
|
Supplier string `json:"supplier"`
|
|
Quantity int `json:"quantity"`
|
|
UnitPrice float32 `json:"unit_price"`
|
|
TotalPrice float32 `json:"total_price"`
|
|
Remarks string `json:"remarks"`
|
|
OperatorID uint32 `json:"operator_id"`
|
|
}
|
|
|
|
// ListPigPurchaseResponse 是获取猪只采购记录列表的响应结构
|
|
type ListPigPurchaseResponse struct {
|
|
List []PigPurchaseDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// --- PigSale ---
|
|
|
|
// ListPigSaleRequest 定义了获取猪只销售记录列表的请求参数
|
|
type ListPigSaleRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
PigBatchID *uint32 `json:"pig_batch_id" query:"pig_batch_id"`
|
|
Buyer *string `json:"buyer" query:"buyer"`
|
|
OperatorID *uint32 `json:"operator_id" query:"operator_id"`
|
|
StartTime *time.Time `json:"start_time" query:"start_time"`
|
|
EndTime *time.Time `json:"end_time" query:"end_time"`
|
|
OrderBy string `json:"order_by" query:"order_by"`
|
|
}
|
|
|
|
// PigSaleDTO 是用于API响应的猪只销售记录结构
|
|
type PigSaleDTO struct {
|
|
ID uint32 `json:"id"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
PigBatchID uint32 `json:"pig_batch_id"`
|
|
SaleDate time.Time `json:"sale_date"`
|
|
Buyer string `json:"buyer"`
|
|
Quantity int `json:"quantity"`
|
|
UnitPrice float32 `json:"unit_price"`
|
|
TotalPrice float32 `json:"total_price"`
|
|
Remarks string `json:"remarks"`
|
|
OperatorID uint32 `json:"operator_id"`
|
|
}
|
|
|
|
// ListPigSaleResponse 是获取猪只销售记录列表的响应结构
|
|
type ListPigSaleResponse struct {
|
|
List []PigSaleDTO `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|