72 lines
3.7 KiB
Go
72 lines
3.7 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.huangwc.com/pig/pig-farm-controller/internal/infra/models"
|
|
)
|
|
|
|
// =============================================================================================================
|
|
// 库存 (Inventory) 相关 DTO
|
|
// =============================================================================================================
|
|
|
|
// StockAdjustmentRequest 手动调整库存的请求体
|
|
type StockAdjustmentRequest struct {
|
|
RawMaterialID uint32 `json:"raw_material_id" validate:"required"` // 要调整的原料ID
|
|
ChangeAmount float32 `json:"change_amount" validate:"required,ne=0"` // 变动数量, 正数为入库, 负数为出库, 单位: g
|
|
Remarks string `json:"remarks" validate:"max=255"` // 备注
|
|
}
|
|
|
|
// CurrentStockResponse 单个原料及其当前库存的响应体
|
|
type CurrentStockResponse struct {
|
|
RawMaterialID uint32 `json:"raw_material_id"` // 原料ID
|
|
RawMaterialName string `json:"raw_material_name"` // 原料名称
|
|
Stock float32 `json:"stock"` // 当前库存量, 单位: g
|
|
LastUpdated string `json:"last_updated"` // 最后更新时间
|
|
}
|
|
|
|
// ListCurrentStockRequest 定义了获取当前库存列表的请求参数
|
|
type ListCurrentStockRequest struct {
|
|
Page int `json:"page" query:"page"` // 页码
|
|
PageSize int `json:"page_size" query:"page_size"` // 每页数量
|
|
RawMaterialName *string `json:"raw_material_name" query:"raw_material_name"` // 按原料名称模糊查询
|
|
OrderBy string `json:"order_by" query:"order_by"` // 排序字段, 例如 "stock DESC"
|
|
}
|
|
|
|
// ListCurrentStockResponse 是获取当前库存列表的响应结构
|
|
type ListCurrentStockResponse struct {
|
|
List []CurrentStockResponse `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|
|
|
|
// StockLogResponse 库存变动历史记录的响应体
|
|
type StockLogResponse struct {
|
|
ID uint32 `json:"id"`
|
|
RawMaterialID uint32 `json:"raw_material_id"`
|
|
RawMaterialName string `json:"raw_material_name"`
|
|
ChangeAmount float32 `json:"change_amount"`
|
|
BeforeQuantity float32 `json:"before_quantity"`
|
|
AfterQuantity float32 `json:"after_quantity"`
|
|
SourceType models.StockLogSourceType `json:"source_type"`
|
|
SourceID *uint32 `json:"source_id,omitempty"`
|
|
HappenedAt time.Time `json:"happened_at"`
|
|
Remarks string `json:"remarks"`
|
|
}
|
|
|
|
// ListStockLogRequest 定义了获取库存变动历史的请求参数
|
|
type ListStockLogRequest struct {
|
|
Page int `json:"page" query:"page"` // 页码
|
|
PageSize int `json:"page_size" query:"page_size"` // 每页数量
|
|
RawMaterialID *uint32 `json:"raw_material_id" query:"raw_material_id"` // 按原料ID精确查询
|
|
SourceTypes []models.StockLogSourceType `json:"source_types" query:"source_types"` // 按来源类型查询
|
|
StartTime *string `json:"start_time" query:"start_time"` // 开始时间 (RFC3339格式, e.g., "2023-01-01T00:00:00Z")
|
|
EndTime *string `json:"end_time" query:"end_time"` // 结束时间 (RFC3339格式)
|
|
OrderBy string `json:"order_by" query:"order_by"` // 排序字段
|
|
}
|
|
|
|
// ListStockLogResponse 是获取库存变动历史列表的响应结构
|
|
type ListStockLogResponse struct {
|
|
List []StockLogResponse `json:"list"`
|
|
Pagination PaginationDTO `json:"pagination"`
|
|
}
|