module RubyPtvApi::XTour
Public Class Methods
create_sequencing_transport_depot(uuid:, id_manager:, latitude:, longitude:, interval:)
click to toggle source
# File lib/ruby_ptv_api/x_tour.rb, line 69 def create_sequencing_transport_depot(uuid:, id_manager:, latitude:, longitude:, interval:) transport_point = RubyPtvApi::Model::XTour::TransportPoint.new( 'id' => id_manager.add(uuid), 'location' => RubyPtvApi::Model::Point.new( 'point' => RubyPtvApi::Model::PlainPoint.new( 'x' => longitude, 'y' => latitude ) ) ) transport_point.openingIntervals = [ RubyPtvApi::Model::XTour::Interval.new( 'from' => interval.first.to_i, 'till' => interval.last.to_i ) ] if interval std = RubyPtvApi::Model::XTour::SequencingTransportDepot.new( 'id' => id_manager.add(uuid), 'transportPoint' => transport_point ) std end
plan_sequence(points, garage)
click to toggle source
# File lib/ruby_ptv_api/x_tour.rb, line 4 def plan_sequence(points, garage) required_keys = [:uuid, :latitude, :longitude] raise "garage has to include the keys #{required_keys}" unless (required_keys - garage.methods).empty? dimaId = 1 id_manager = RubyPtvApi::IdManager.new depot = RubyPtvApi::Model::XTour::Depot.new( 'id' => id_manager.add(garage.uuid), 'location' => RubyPtvApi::Model::Point.new( 'point' => RubyPtvApi::Model::PlainPoint.new( 'x' => RubyPtvApi.cast_coordinate(garage.longitude), 'y' => RubyPtvApi.cast_coordinate(garage.latitude) ) ) ) depot.openingIntervals = [ RubyPtvApi::Model::XTour::Interval.new( 'from' => garage.interval.first.to_i, 'till' => garage.interval.last.to_i ) ] if garage.interval sequencing_transport_depots = [] vehicle = RubyPtvApi::Model::XTour::SequencingVehicle.new( 'dimaId' => dimaId, 'depotIdStart' => depot.id, 'depotIdEnd' => depot.id, 'isPreloaded' => true, 'ignoreTransportPointServicePeriod' => false, 'coDriverStatus' => :NEVER, 'toursMustFitIntoSingleOperatingInterval' => true ) vehicle.operatingIntervals = [ RubyPtvApi::Model::XTour::Interval.new( 'from' => garage.interval.first.to_i, 'till' => garage.interval.last.to_i ) ] if garage.interval points.each do |point| raise "each point has to include the keys #{required_keys}" unless (required_keys - point.methods).empty? sequencing_transport_depots << create_sequencing_transport_depot( uuid: point.uuid, latitude: RubyPtvApi.cast_coordinate(point.latitude), longitude: RubyPtvApi.cast_coordinate(point.longitude), interval: point.interval, id_manager: id_manager ) end function = RubyPtvApi::Operation::XTour::PlanSequence.new( transport_orders: sequencing_transport_depots, depots: [depot], vehicle: vehicle ) response = function.call sequence = response.tour.tourPoints ? response.tour.tourPoints.map{|tp| id_manager.uuid(tp.id.to_i)} : [] unmanaged_list = response.result.unscheduledOrderIds ? response.result.unscheduledOrderIds.map{|id| id_manager.uuid(id)} : [] hash = Hash[points.map{|e| [e.uuid, e]}] { sequence: sequence.map{|e| hash[e]}.compact, unmanaged: unmanaged_list.map{|e| hash[e]}, raw_response: response } end