package service import ( "gorm.io/gorm" "wms/models" ) func AddMoveHistory(operationList []*models.Operation, db *gorm.DB) error { var histories []*models.MoveHistory operationMap := make(map[int]*models.Operation, len(operationList)) for _, operation := range operationList { for _, v := range operation.Details { history := &models.MoveHistory{ Number: operation.Number, BaseOperationType: operation.BaseOperationType, OperationTypeId: operation.OperationTypeId, OperationTypeName: operation.OperationTypeName, OperationId: operation.Id, ProductId: v.ProductId, ProductName: v.Product.Name, Amount: v.Amount, Unit: v.Product.Unit, Weight: operation.Weight, FromLocationId: v.FromLocationID, FromLocation: v.FromLocation.Name, ToLocationId: v.ToLocationID, ToLocation: v.ToLocation.Name, } histories = append(histories, history) } operationMap[operation.Id] = operation } if err := db.Model(&models.MoveHistory{}).Create(&histories).Error; err != nil { return err } for _, history := range histories { AddNewHistoryReportRecord(history, operationMap[history.OperationId]) } return nil }