package response import ( "gorm.io/datatypes" "psi/models" ) type TaskWithWave struct { models.WaveTask WaveNo string `gorm:"column:wave_no"` OutOrderId int64 `gorm:"column:out_order_id"` ReceivingOrderId int64 `gorm:"column:receiving_order_id"` BatchNo string `gorm:"column:wave_task_batch_no"` } type DetailWithInfo struct { models.WaveTaskDetail ProductName string `gorm:"column:product_name"` ProductCode string `gorm:"column:product_code"` LocationCode string `gorm:"column:location_code"` SalePrice int64 `gorm:"column:sale_price"` LiveImage datatypes.JSON `gorm:"column:live_image"` } // WaveTaskListResponse 波次任务列表响应 type WaveTaskListResponse struct { List []WaveTaskItem `json:"list"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"pageSize"` TodayInboundWaves int64 `json:"today_inbound_waves"` // 今日入库波次数 YesterdayInboundWaves int64 `json:"yesterday_inbound_waves"` // 昨日入库波次数 TodayInboundQty int64 `json:"today_inbound_qty"` // 今日入库数量 YesterdayInboundQty int64 `json:"yesterday_inbound_qty"` // 昨日入库数量 TodayOutboundQty int64 `json:"today_outbound_qty"` // 今日出库数量 YesterdayOutboundQty int64 `json:"yesterday_outbound_qty"` // 昨日出库数量 } // WaveTaskItem 波次任务列表项 type WaveTaskItem struct { ID int64 `json:"id"` CarID int64 `json:"car_id"` CarCode int64 `json:"car_code"` OutOrderId int64 `json:"out_order_id"` ReceivingOrderId int64 `json:"receiving_order_id"` WaveTaskBatchNo string `json:"wave_task_batch_no"` WaveID int64 `json:"wave_id"` WaveNo string `json:"wave_no"` TaskNo string `json:"task_no"` Type int8 `json:"type"` TypeText string `json:"type_text"` Assignee string `json:"assignee"` AssigneeID int64 `json:"assignee_id"` Status int8 `json:"status"` StatusText string `json:"status_text"` StartedAt int64 `json:"started_at"` CompletedAt int64 `json:"completed_at"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` } // WaveTaskDetailResponse 波次任务详情响应 type WaveTaskDetailResponse struct { ID int64 `json:"id"` WaveID int64 `json:"wave_id"` WaveNo string `json:"wave_no"` TaskNo string `json:"task_no"` Type int8 `json:"type"` TypeText string `json:"type_text"` Assignee string `json:"assignee"` AssigneeID int64 `json:"assignee_id"` Status int8 `json:"status"` StatusText string `json:"status_text"` StartedAt int64 `json:"started_at"` CompletedAt int64 `json:"completed_at"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` Details []WaveTaskDetailItem `json:"details"` } // WaveTaskDetailItem 波次任务明细项 type WaveTaskDetailItem struct { ID int64 `json:"id"` WaveTaskID int64 `json:"wave_task_id"` ProductID int64 `json:"product_id"` ProductName string `json:"product_name"` ProductCode string `json:"product_code"` SalePrice int64 `json:"sale_price"` LiveImage []string `json:"live_image"` LocationID int64 `json:"location_id"` LocationCode string `json:"location_code"` BatchNo string `json:"batch_no"` PlannedQuantity int64 `json:"planned_quantity"` ActualQuantity int64 `json:"actual_quantity"` Status int8 `json:"status"` StatusText string `json:"status_text"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` } // ConvertWaveTaskToItem 将波次任务模型转换为响应项 func ConvertWaveTaskToItem(task models.WaveTask, waveNo string, outOrderId, receivingOrderId int64, batchNo string) WaveTaskItem { return WaveTaskItem{ ID: task.ID, OutOrderId: outOrderId, ReceivingOrderId: receivingOrderId, WaveTaskBatchNo: batchNo, WaveID: task.WaveID, WaveNo: waveNo, TaskNo: task.TaskNo, Type: task.Type, TypeText: GetWaveTaskTypeText(task.Type), Assignee: task.Assignee, AssigneeID: task.AssigneeID, Status: task.Status, StatusText: GetWaveTaskStatusText(task.Status), StartedAt: task.StartedAt, CompletedAt: task.CompletedAt, CreatedAt: task.CreatedAt, UpdatedAt: task.UpdatedAt, } } // ConvertWaveTaskToDetail 将波次任务模型转换为详情响应 func ConvertWaveTaskToDetail(task models.WaveTask, waveNo string, details []WaveTaskDetailItem) WaveTaskDetailResponse { return WaveTaskDetailResponse{ ID: task.ID, WaveID: task.WaveID, WaveNo: waveNo, TaskNo: task.TaskNo, Type: task.Type, TypeText: GetWaveTaskTypeText(task.Type), Assignee: task.Assignee, AssigneeID: task.AssigneeID, Status: task.Status, StatusText: GetWaveTaskStatusText(task.Status), StartedAt: task.StartedAt, CompletedAt: task.CompletedAt, CreatedAt: task.CreatedAt, UpdatedAt: task.UpdatedAt, Details: details, } } // GetWaveTaskTypeText 获取波次任务类型文本 func GetWaveTaskTypeText(taskType int8) string { typeMap := map[int8]string{ 1: "出库", 2: "补货", 3: "移库", 4: "入库", } if text, ok := typeMap[taskType]; ok { return text } return "未知" } // GetWaveTaskStatusText 获取波次任务状态文本 func GetWaveTaskStatusText(status int8) string { statusMap := map[int8]string{ 1: "待指派", 2: "已指派", 3: "拣货中", 4: "已完成", 5: "已取消", } if text, ok := statusMap[status]; ok { return text } return "未知" } // GetWaveTaskDetailStatusText 获取波次任务明细状态文本 func GetWaveTaskDetailStatusText(status int8) string { statusMap := map[int8]string{ 1: "待处理", 2: "已完成", 3: "缺货", } if text, ok := statusMap[status]; ok { return text } return "未知" }