package model import "time" type ProductionPlan struct { ID string `json:"id" db:"id"` PlanCode string `json:"plan_code" db:"plan_code"` PurchaserID string `json:"purchaser_id" db:"purchaser_id"` ProductName string `json:"product_name" db:"product_name"` FabricCode string `json:"fabric_code" db:"fabric_code"` Color string `json:"color" db:"color"` ColorCode string `json:"color_code" db:"color_code"` TargetQuantity float64 `json:"target_quantity" db:"target_quantity"` CompletedQuantity float64 `json:"completed_quantity" db:"completed_quantity"` ProductionPrice *float64 `json:"production_price,omitempty" db:"production_price"` YarnUsagePerMeter *float64 `json:"yarn_usage_per_meter,omitempty" db:"yarn_usage_per_meter"` Status string `json:"status" db:"status"` Remark *string `json:"remark,omitempty" db:"remark"` StartTime *time.Time `json:"start_time,omitempty" db:"start_time"` CreatedBy *string `json:"created_by,omitempty" db:"created_by"` CreatedAt time.Time `json:"created_at" db:"created_at"` UpdatedAt time.Time `json:"updated_at" db:"updated_at"` // Aggregated fields YarnRatios []YarnRatio `json:"yarn_ratios,omitempty"` ProcessSteps []ProcessStep `json:"process_steps,omitempty"` Factories []PlanFactory `json:"factories,omitempty"` InventoryRecords []InventoryRecord `json:"inventory_records,omitempty"` } type YarnRatio struct { ID string `json:"id" db:"id"` PlanID string `json:"plan_id" db:"plan_id"` YarnName string `json:"yarn_name" db:"yarn_name"` YarnType *string `json:"yarn_type,omitempty" db:"yarn_type"` Ratio float64 `json:"ratio" db:"ratio"` AmountPerMeter float64 `json:"amount_per_meter" db:"amount_per_meter"` TotalAmount float64 `json:"total_amount" db:"total_amount"` CompanyID *string `json:"company_id,omitempty" db:"company_id"` CreatedAt time.Time `json:"created_at" db:"created_at"` } type PlanFactory struct { ID string `json:"id" db:"id"` PlanID string `json:"plan_id" db:"plan_id"` FactoryID string `json:"factory_id" db:"factory_id"` FactoryType string `json:"factory_type" db:"factory_type"` CreatedAt time.Time `json:"created_at" db:"created_at"` // Aggregated FactoryName string `json:"factory_name,omitempty"` } type ProcessStep struct { ID string `json:"id" db:"id"` PlanID string `json:"plan_id" db:"plan_id"` StepType string `json:"step_type" db:"step_type"` Status string `json:"status" db:"status"` Notes *string `json:"notes,omitempty" db:"notes"` OperatorID *string `json:"operator_id,omitempty" db:"operator_id"` CompanyID *string `json:"company_id,omitempty" db:"company_id"` Timestamp *time.Time `json:"timestamp,omitempty" db:"timestamp"` CreatedAt time.Time `json:"created_at" db:"created_at"` // Aggregated OperatorName string `json:"operator_name,omitempty"` } type InventoryRecord struct { ID string `json:"id" db:"id"` PlanID string `json:"plan_id" db:"plan_id"` WarehouseID string `json:"warehouse_id" db:"warehouse_id"` Quantity float64 `json:"quantity" db:"quantity"` Rolls *int `json:"rolls,omitempty" db:"rolls"` PricePerMeter *float64 `json:"price_per_meter,omitempty" db:"price_per_meter"` PriceNote *string `json:"price_note,omitempty" db:"price_note"` WarehouseLocation *string `json:"warehouse_location,omitempty" db:"warehouse_location"` OperatorID *string `json:"operator_id,omitempty" db:"operator_id"` CompanyID *string `json:"company_id,omitempty" db:"company_id"` CreatedAt time.Time `json:"created_at" db:"created_at"` // Aggregated OperatorName string `json:"operator_name,omitempty"` }