484 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			484 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package dto
 | ||
| 
 | ||
| import (
 | ||
| 	"encoding/json"
 | ||
| 
 | ||
| 	"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
 | ||
| )
 | ||
| 
 | ||
| // NewListSensorDataResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListSensorDataResponse(data []models.SensorData, total int64, page, pageSize int) *ListSensorDataResponse {
 | ||
| 	dtos := make([]SensorDataDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = SensorDataDTO{
 | ||
| 			Time:                 item.Time,
 | ||
| 			DeviceID:             item.DeviceID,
 | ||
| 			RegionalControllerID: item.RegionalControllerID,
 | ||
| 			SensorType:           item.SensorType,
 | ||
| 			Data:                 json.RawMessage(item.Data),
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListSensorDataResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListDeviceCommandLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListDeviceCommandLogResponse(data []models.DeviceCommandLog, total int64, page, pageSize int) *ListDeviceCommandLogResponse {
 | ||
| 	dtos := make([]DeviceCommandLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = DeviceCommandLogDTO{
 | ||
| 			MessageID:       item.MessageID,
 | ||
| 			DeviceID:        item.DeviceID,
 | ||
| 			SentAt:          item.SentAt,
 | ||
| 			AcknowledgedAt:  item.AcknowledgedAt,
 | ||
| 			ReceivedSuccess: item.ReceivedSuccess,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListDeviceCommandLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListPlanExecutionLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListPlanExecutionLogResponse(data []models.PlanExecutionLog, total int64, page, pageSize int) *ListPlanExecutionLogResponse {
 | ||
| 	dtos := make([]PlanExecutionLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = PlanExecutionLogDTO{
 | ||
| 			ID:        item.ID,
 | ||
| 			CreatedAt: item.CreatedAt,
 | ||
| 			UpdatedAt: item.UpdatedAt,
 | ||
| 			PlanID:    item.PlanID,
 | ||
| 			Status:    item.Status,
 | ||
| 			StartedAt: item.StartedAt,
 | ||
| 			EndedAt:   item.EndedAt,
 | ||
| 			Error:     item.Error,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListPlanExecutionLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListTaskExecutionLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListTaskExecutionLogResponse(data []models.TaskExecutionLog, total int64, page, pageSize int) *ListTaskExecutionLogResponse {
 | ||
| 	dtos := make([]TaskExecutionLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = TaskExecutionLogDTO{
 | ||
| 			ID:                 item.ID,
 | ||
| 			CreatedAt:          item.CreatedAt,
 | ||
| 			UpdatedAt:          item.UpdatedAt,
 | ||
| 			PlanExecutionLogID: item.PlanExecutionLogID,
 | ||
| 			TaskID:             item.TaskID,
 | ||
| 			Task: TaskDTO{
 | ||
| 				ID:          uint(item.Task.ID),
 | ||
| 				Name:        item.Task.Name,
 | ||
| 				Description: item.Task.Description,
 | ||
| 			},
 | ||
| 			Status:    item.Status,
 | ||
| 			Output:    item.Output,
 | ||
| 			StartedAt: item.StartedAt,
 | ||
| 			EndedAt:   item.EndedAt,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListTaskExecutionLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListPendingCollectionResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListPendingCollectionResponse(data []models.PendingCollection, total int64, page, pageSize int) *ListPendingCollectionResponse {
 | ||
| 	dtos := make([]PendingCollectionDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = PendingCollectionDTO{
 | ||
| 			CorrelationID:   item.CorrelationID,
 | ||
| 			DeviceID:        item.DeviceID,
 | ||
| 			CommandMetadata: item.CommandMetadata,
 | ||
| 			Status:          item.Status,
 | ||
| 			FulfilledAt:     item.FulfilledAt,
 | ||
| 			CreatedAt:       item.CreatedAt,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListPendingCollectionResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListUserActionLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListUserActionLogResponse(data []models.UserActionLog, total int64, page, pageSize int) *ListUserActionLogResponse {
 | ||
| 	dtos := make([]UserActionLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = UserActionLogDTO{
 | ||
| 			ID:             item.ID,
 | ||
| 			Time:           item.Time,
 | ||
| 			UserID:         item.UserID,
 | ||
| 			Username:       item.Username,
 | ||
| 			SourceIP:       item.SourceIP,
 | ||
| 			ActionType:     item.ActionType,
 | ||
| 			TargetResource: json.RawMessage(item.TargetResource),
 | ||
| 			Description:    item.Description,
 | ||
| 			Status:         item.Status,
 | ||
| 			HTTPPath:       item.HTTPPath,
 | ||
| 			HTTPMethod:     item.HTTPMethod,
 | ||
| 			ResultDetails:  item.ResultDetails,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListUserActionLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListRawMaterialPurchaseResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListRawMaterialPurchaseResponse(data []models.RawMaterialPurchase, total int64, page, pageSize int) *ListRawMaterialPurchaseResponse {
 | ||
| 	dtos := make([]RawMaterialPurchaseDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = RawMaterialPurchaseDTO{
 | ||
| 			ID:            item.ID,
 | ||
| 			RawMaterialID: item.RawMaterialID,
 | ||
| 			RawMaterial: RawMaterialDTO{
 | ||
| 				ID:   item.RawMaterial.ID,
 | ||
| 				Name: item.RawMaterial.Name,
 | ||
| 			},
 | ||
| 			Supplier:     item.Supplier,
 | ||
| 			Amount:       item.Amount,
 | ||
| 			UnitPrice:    item.UnitPrice,
 | ||
| 			TotalPrice:   item.TotalPrice,
 | ||
| 			PurchaseDate: item.PurchaseDate,
 | ||
| 			CreatedAt:    item.CreatedAt,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListRawMaterialPurchaseResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListRawMaterialStockLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListRawMaterialStockLogResponse(data []models.RawMaterialStockLog, total int64, page, pageSize int) *ListRawMaterialStockLogResponse {
 | ||
| 	dtos := make([]RawMaterialStockLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = RawMaterialStockLogDTO{
 | ||
| 			ID:            item.ID,
 | ||
| 			RawMaterialID: item.RawMaterialID,
 | ||
| 			ChangeAmount:  item.ChangeAmount,
 | ||
| 			SourceType:    item.SourceType,
 | ||
| 			SourceID:      item.SourceID,
 | ||
| 			HappenedAt:    item.HappenedAt,
 | ||
| 			Remarks:       item.Remarks,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListRawMaterialStockLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListFeedUsageRecordResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListFeedUsageRecordResponse(data []models.FeedUsageRecord, total int64, page, pageSize int) *ListFeedUsageRecordResponse {
 | ||
| 	dtos := make([]FeedUsageRecordDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = FeedUsageRecordDTO{
 | ||
| 			ID:    item.ID,
 | ||
| 			PenID: item.PenID,
 | ||
| 			Pen: PenDTO{
 | ||
| 				ID:   item.Pen.ID,
 | ||
| 				Name: item.Pen.PenNumber,
 | ||
| 			},
 | ||
| 			FeedFormulaID: item.FeedFormulaID,
 | ||
| 			FeedFormula: FeedFormulaDTO{
 | ||
| 				ID:   item.FeedFormula.ID,
 | ||
| 				Name: item.FeedFormula.Name,
 | ||
| 			},
 | ||
| 			Amount:     item.Amount,
 | ||
| 			RecordedAt: item.RecordedAt,
 | ||
| 			OperatorID: item.OperatorID,
 | ||
| 			Remarks:    item.Remarks,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListFeedUsageRecordResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListMedicationLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListMedicationLogResponse(data []models.MedicationLog, total int64, page, pageSize int) *ListMedicationLogResponse {
 | ||
| 	dtos := make([]MedicationLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = MedicationLogDTO{
 | ||
| 			ID:           item.ID,
 | ||
| 			PigBatchID:   item.PigBatchID,
 | ||
| 			MedicationID: item.MedicationID,
 | ||
| 			Medication: MedicationDTO{
 | ||
| 				ID:   item.Medication.ID,
 | ||
| 				Name: item.Medication.Name,
 | ||
| 			},
 | ||
| 			DosageUsed:  item.DosageUsed,
 | ||
| 			TargetCount: item.TargetCount,
 | ||
| 			Reason:      item.Reason,
 | ||
| 			Description: item.Description,
 | ||
| 			OperatorID:  item.OperatorID,
 | ||
| 			HappenedAt:  item.HappenedAt,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListMedicationLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListPigBatchLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListPigBatchLogResponse(data []models.PigBatchLog, total int64, page, pageSize int) *ListPigBatchLogResponse {
 | ||
| 	dtos := make([]PigBatchLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = PigBatchLogDTO{
 | ||
| 			ID:          item.ID,
 | ||
| 			CreatedAt:   item.CreatedAt,
 | ||
| 			UpdatedAt:   item.UpdatedAt,
 | ||
| 			PigBatchID:  item.PigBatchID,
 | ||
| 			ChangeType:  item.ChangeType,
 | ||
| 			ChangeCount: item.ChangeCount,
 | ||
| 			Reason:      item.Reason,
 | ||
| 			BeforeCount: item.BeforeCount,
 | ||
| 			AfterCount:  item.AfterCount,
 | ||
| 			OperatorID:  item.OperatorID,
 | ||
| 			HappenedAt:  item.HappenedAt,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListPigBatchLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListWeighingBatchResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListWeighingBatchResponse(data []models.WeighingBatch, total int64, page, pageSize int) *ListWeighingBatchResponse {
 | ||
| 	dtos := make([]WeighingBatchDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = WeighingBatchDTO{
 | ||
| 			ID:           item.ID,
 | ||
| 			CreatedAt:    item.CreatedAt,
 | ||
| 			UpdatedAt:    item.UpdatedAt,
 | ||
| 			WeighingTime: item.WeighingTime,
 | ||
| 			Description:  item.Description,
 | ||
| 			PigBatchID:   item.PigBatchID,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListWeighingBatchResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListWeighingRecordResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListWeighingRecordResponse(data []models.WeighingRecord, total int64, page, pageSize int) *ListWeighingRecordResponse {
 | ||
| 	dtos := make([]WeighingRecordDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = WeighingRecordDTO{
 | ||
| 			ID:              item.ID,
 | ||
| 			CreatedAt:       item.CreatedAt,
 | ||
| 			UpdatedAt:       item.UpdatedAt,
 | ||
| 			Weight:          item.Weight,
 | ||
| 			WeighingBatchID: item.WeighingBatchID,
 | ||
| 			PenID:           item.PenID,
 | ||
| 			OperatorID:      item.OperatorID,
 | ||
| 			Remark:          item.Remark,
 | ||
| 			WeighingTime:    item.WeighingTime,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListWeighingRecordResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListPigTransferLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListPigTransferLogResponse(data []models.PigTransferLog, total int64, page, pageSize int) *ListPigTransferLogResponse {
 | ||
| 	dtos := make([]PigTransferLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		// 注意:PigTransferLog 的 ID, CreatedAt, UpdatedAt 字段是 gorm.Model 嵌入的
 | ||
| 		dtos[i] = PigTransferLogDTO{
 | ||
| 			ID:            item.ID,
 | ||
| 			CreatedAt:     item.CreatedAt,
 | ||
| 			UpdatedAt:     item.UpdatedAt,
 | ||
| 			TransferTime:  item.TransferTime,
 | ||
| 			PigBatchID:    item.PigBatchID,
 | ||
| 			PenID:         item.PenID,
 | ||
| 			Quantity:      item.Quantity,
 | ||
| 			Type:          item.Type,
 | ||
| 			CorrelationID: item.CorrelationID,
 | ||
| 			OperatorID:    item.OperatorID,
 | ||
| 			Remarks:       item.Remarks,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListPigTransferLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListPigSickLogResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListPigSickLogResponse(data []models.PigSickLog, total int64, page, pageSize int) *ListPigSickLogResponse {
 | ||
| 	dtos := make([]PigSickLogDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = PigSickLogDTO{
 | ||
| 			ID:                item.ID,
 | ||
| 			CreatedAt:         item.CreatedAt,
 | ||
| 			UpdatedAt:         item.UpdatedAt,
 | ||
| 			PigBatchID:        item.PigBatchID,
 | ||
| 			PenID:             item.PenID,
 | ||
| 			ChangeCount:       item.ChangeCount,
 | ||
| 			Reason:            item.Reason,
 | ||
| 			BeforeCount:       item.BeforeCount,
 | ||
| 			AfterCount:        item.AfterCount,
 | ||
| 			Remarks:           item.Remarks,
 | ||
| 			TreatmentLocation: item.TreatmentLocation,
 | ||
| 			OperatorID:        item.OperatorID,
 | ||
| 			HappenedAt:        item.HappenedAt,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListPigSickLogResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListPigPurchaseResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListPigPurchaseResponse(data []models.PigPurchase, total int64, page, pageSize int) *ListPigPurchaseResponse {
 | ||
| 	dtos := make([]PigPurchaseDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = PigPurchaseDTO{
 | ||
| 			ID:           item.ID,
 | ||
| 			CreatedAt:    item.CreatedAt,
 | ||
| 			UpdatedAt:    item.UpdatedAt,
 | ||
| 			PigBatchID:   item.PigBatchID,
 | ||
| 			PurchaseDate: item.PurchaseDate,
 | ||
| 			Supplier:     item.Supplier,
 | ||
| 			Quantity:     item.Quantity,
 | ||
| 			UnitPrice:    item.UnitPrice,
 | ||
| 			TotalPrice:   item.TotalPrice,
 | ||
| 			Remarks:      item.Remarks,
 | ||
| 			OperatorID:   item.OperatorID,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListPigPurchaseResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| // NewListPigSaleResponse 从模型数据创建列表响应 DTO
 | ||
| func NewListPigSaleResponse(data []models.PigSale, total int64, page, pageSize int) *ListPigSaleResponse {
 | ||
| 	dtos := make([]PigSaleDTO, len(data))
 | ||
| 	for i, item := range data {
 | ||
| 		dtos[i] = PigSaleDTO{
 | ||
| 			ID:         item.ID,
 | ||
| 			CreatedAt:  item.CreatedAt,
 | ||
| 			UpdatedAt:  item.UpdatedAt,
 | ||
| 			PigBatchID: item.PigBatchID,
 | ||
| 			SaleDate:   item.SaleDate,
 | ||
| 			Buyer:      item.Buyer,
 | ||
| 			Quantity:   item.Quantity,
 | ||
| 			UnitPrice:  item.UnitPrice,
 | ||
| 			TotalPrice: item.TotalPrice,
 | ||
| 			Remarks:    item.Remarks,
 | ||
| 			OperatorID: item.OperatorID,
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	return &ListPigSaleResponse{
 | ||
| 		List: dtos,
 | ||
| 		Pagination: PaginationDTO{
 | ||
| 			Total:    total,
 | ||
| 			Page:     page,
 | ||
| 			PageSize: pageSize,
 | ||
| 		},
 | ||
| 	}
 | ||
| }
 |