daShangDao_psiServer/models/response/wave.go
Administrator 4253c6ade0 1.商品实现多图/api/product/list
2.在商品管理下的商品列表接口里 分别统计:已落位 locatedCount, 未落位 unlocatedCount, 启用中 enabledCount, 已禁用 disabledCount 4个字段并进行返回
3.新增一个接口 对商品名称字段进行修改,对实拍图字段修改,实拍图可以为单图或者多图
4.波次任务列表- 缺少统计信息:分别为今日入库波次数 today_inbound_waves,
昨日入库波次数 ,yesterday_inbound_waves
 今日入库数量,today_inbound_qty
昨日入库数量,yesterday_inbound_qty
今日出库数量,today_outbound_qty
昨日出库数量 yesterday_outbound_qty
5.采购单列表- 缺少导出到旺店通功能
2026-06-22 16:14:10 +08:00

186 lines
6.4 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"`
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 "未知"
}