daShangDao_psiServer/models/response/wave.go
2026-06-15 13:47:39 +08:00

180 lines
5.8 KiB
Go

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"`
}
// 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 "未知"
}