Eviste.Route - Výpočet vzdáleností a tras

Konzolová aplikace v .NET určená k automatickému výpočtu silničních vzdáleností a časů tranzitu mezi místy výzev (VyzvaPolozka) a sídly/depony obchodních partnerů (ObchodniPartner). Výsledky ukládá do databáze systému EviŠtě pro další plánování a logistické výpočty.

Hlavní funkce (Co projekt dělá)

  1. Načtení dat k výpočtu:
    • Vyhledá všechny aktivní/rozpracované položky výzev (VyzvaPolozka), které mají vyplněné zeměpisné souřadnice (Latitude a Longitude) a jsou ve stavech Nezahajeno, Rozpracovano, Neuvedeno nebo Prevzato.
    • Vyhledá aktivní obchodní partnery (ObchodniPartner), kteří vystupují v roli odběratele, deponia nebo odběrného místa a mají zadané souřadnice.
  2. Výpočet tras přes mapové služby:
    • Identifikuje chybějící kombinace vzdáleností mezi partnery a místy výzev v databázi (tabulka Vzdalenost).
    • Pro každou chybějící trasu spočítá pomocí mapové služby (např. Bing Maps) optimální trasu.
    • Výpočet zohledňuje nastavení vozidel z konfigurace v databázi (OmezenaVaha, OmezenaDelka, TypVozidla) a také případná průjezdná místa (via points) definovaná u partnera.
  3. Uložení výsledků:
    • Vypočtená vzdálenost a čas jízdy se uloží zpět do databázové tabulky Vzdalenost pod konkrétní firmu (FirmaId).


Konfigurace (Nastavení aplikace)

1. Soubor Eviste.Route.Config.json

V tomto souboru se definuje připojení k databázi SQL Server:

{

  "Connection": {

    "Server": "localhost\\SQLEXPRESS",

    "Database": "EvisteDbAclesia",

    "User": "zašifrovaný_uživatel",

    "Password": "zašifrované_heslo",

    "TrustedConnection": true,

    "FirmaId": "b5ecfe7f-c19b-4ca4-98e8-344513f4a597"

  }

}

2. Konfigurace v databázi (tabulka KonfiguraceEviste)

Aplikace při startu načítá z databáze parametry pro mapové služby a parametry vozidla:

  • MapyApiKey: API klíč pro přístup k mapové službě (Bing Maps).
  • OmezenaVaha: Hmotnostní omezení pro výpočet trasy kamionu (výchozí 20 000 kg).
  • OmezenaDelka: Délkové omezení pro výpočet trasy kamionu (výchozí 20 000 mm / 20 m).
  • TypVozidla: Typ vozidla pro trasování (např. kamion/Truck - hodnota odpovídající MapyTypVozidlaEnum).


Použití (Jak se aplikace spouští)

Aplikace se spouští z příkazové řádky a podporuje několik argumentů pro filtrování a omezení výpočtů:

Eviste.Route.exe [argumenty]

Parametry příkazové řádky:

Parametr (zkrácený)

Parametr (plný)

Datový typ

Popis

-h, -?

--showhelp

přepínač

Zobrazí nápovědu k příkazové řádce a ukončí program.

-x

--maxnumbercalculations

číslo

Maximální počet výpočtů (partnerů a míst), které se mají v rámci jednoho běhu provést. Užitečné pro testování nebo omezení limitů API.

-v

--vyzvaid

GUID

Id konkrétní výzvy (VyzvaId), pro kterou se má výpočet provést (ignoruje ostatní výzvy).

-o

--partnerid

číslo (long)

Id konkrétního partnera (ObchodnipartnerId), pro kterého se má výpočet provést (ignoruje ostatní partnery).

Příklady spuštění:

  1. Standardní plný přepočet chybějících tras:

Eviste.Route.exe

  1. Zobrazení nápovědy k parametrům:

Eviste.Route.exe -h

  1. Přepočet pouze pro jednoho partnera s ID 12345:

Eviste.Route.exe -o 12345

  1. Přepočet pro konkrétní výzvu:

Eviste.Route.exe -v "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d"

  1. Omezení počtu počítaných kombinací na max 10 (pro testování):

Eviste.Route.exe -x 10


Nastavení jako plánovaná úloha ve Windows

Jelikož se jedná o konzolovou aplikaci určenou pro periodické spouštění na pozadí, je ideální ji nastavit v systému Windows jako Plánovanou úlohu (Scheduled Task).

Možnost A: Nastavení pomocí PowerShellu (doporučeno)

Pro rychlé vytvoření úlohy, která se bude spouštět např. každou hodinu, spusťte PowerShell jako administrátor a použijte následující příkaz:

# Definice akce (cesta k exe souboru a pracovní adresář)

$Action = New-ScheduledTaskAction -Execute "C:\Cesta\K\Aplikaci\Eviste.Route.exe" -WorkingDirectory "C:\Cesta\K\Aplikaci"


# Definice spouštěče (např. každou hodinu, opakování do nekonečna)

$Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Hours 1)


# Definice nastavení (spuštění i na baterii, nastavení priority)

$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries


# Registrace úlohy pod systémovým účtem (SYSTEM) nebo konkrétním uživatelem

Register-ScheduledTask -TaskName "Eviste.Route.Calculation" -Action $Action -Trigger $Trigger -Settings $Settings -User "NT AUTHORITY\SYSTEM"

Možnost B: Nastavení v grafickém rozhraní (Plánovač úloh / Task Scheduler)

  1. Otevřete Plánovač úloh (Task Scheduler) ve Windows (taskschd.msc).
  2. V pravém panelu zvolte Vytvořit úlohu... (Create Task...).
  3. Na kartě Obecné (General):
    • Zadejte název úlohy (např. Eviste.Route.Calculation).
    • Vyberte možnost Spustit nezávisle na přihlášení uživatele (Run whether user is logged on or not).
    • Pro běh na serveru se doporučuje použít účet SYSTEM nebo servisní účet s právy zápisu do logů a přístupem k síti.
  4. Na kartě Spouštěče (Triggers):
    • Klikněte na Nový... (New...).
    • Nastavte spuštění (např. Podle plánu -> Jednou).
    • V sekci Upřesnit nastavení zaškrtněte Opakovat úlohu každých: (Repeat task every) a zvolte interval (např. 1 hodina) na dobu Nekonečně (Indefinitely).
  5. Na kartě Akce (Actions):
    • Klikněte na Nová... (New...).
    • Nastavte Akce na Spustit program (Start a program).
    • Do pole Program či skript vyhledejte cestu k Eviste.Route.exe.
    • DŮLEŽITÉ: Do pole Spustit v (volitelné) (Start in) vyplňte absolutní cestu k adresáři s aplikací (např. C:\Cesta\K\Aplikaci\). Bez tohoto nastavení nemusí aplikace správně najít konfigurační soubory Eviste.Route.Config.json a logy.
  6. Uložte úlohu tlačítkem OK (případně zadejte přihlašovací údaje k účtu, pod kterým má běžet).