-

DeliveryPlanner

-
-

Proiect realizat de:

-

Cerbu Andrei - Mihnea -

Robert - Giorgio Ciubotaru -

- -
-

Cerinta:

-

- Sa se realizeze un server de procesare a comenzilor online plasate de clienti. - Acest server va analiza o comanda si va stabili cu ajutorul algoritmului - ‘Multi-Depot-Vehicle-Routing’ traseul cel mai scurt pentru un camion de a - colecta produsele de la un depozit/mai multe depozite si a le livra la client. - -

-
-
-

Tehnologii:

- -
-
-

Clasificarea utlizatorilor

-

- Un utilizator va putea accesa resursele din server numai prin intermediul unei aplicatii. - Exista doua tipuri de aplicatii cu diferite functionalitati, aceste tipuri fiind descrise - in detaliu in sectiunea 'Interfata'. -

-

- Utilizatorul 'User' este cel care se foloseste de aplicatie pentru a plasa comenzi catre server. - Acestuia i se ofera pe interfata intreaga gama de produse disponibila, acesta urmand sa faca o - selectie si sa o trimita la server. -

-

- Utilizatorul 'Admin' are acces la toate informatiile stocate pe server, incluzand produsele, - depozitele, toate comenzile facute de utilizatori 'User' cat si rutele pentru a onora comenzile. - Acesta are capacitatea de a insera, modifica, extragere si stergere de informatii din server. -

-
-
-

Descriere interactiuni

-
-

a. Plasare comanda

- - -

- Utilizatorul se va conecta la server folosind o aplicatie creata pentru a accesa - produsele disponibile si pentru a plasa o comanda. Dupa ce utilizatorul a selectat - produsele, incluzand cantitatea, dorite, aplicatia va prelua informatiile respective - si le va converti intr-un fisier JSON. Acest fisier va fi trimis in retea catre server, - care acesta va stoca fisierul in folder-ul denumit 'Orders'. -

-
-
-

b. Modificare baza de date

-

- Aceasta sectiune descrie cazul in care un admin trebuie sa altereze - informatii din baza de date. In primul rand trebuie sa prezentam - structura bazei de date. -

- -

- Baza de date este formata din 5 tabele: 'Deposit', 'Product', 'Prod_In Depo', 'Orders' si 'Routes'. - Fiecare tabel va stoca informatii referitoare la un produs, un depozit si produsele dintr-un anumit - depozit. Tabelului 'Prod_In_Depo' ne ajuta sa asignam la un ID_Deposit mai multe ID_Product astfel - incat - firma sa poata tine evidenta produselor care se afla intr-un depozit. -

-

- Utlizatorul 'Admin' poate insera, modifica sau sterge valori din aceste trei tabele folosindu-se - de a doua versiune de aplicatie, dedicata utilizatorilor din cadrul firmei, care contine functiile - necesare pentru a efectua operatiile enuntate. -

-
-
-

c. Generare rute pentru livrarea produselor

- - -

- Pe server este implementat algoritmul pentru determinarea celei mai scurte rute pentru a colecta - toate produsele necesare pentru livrare. Acest algoritm va rula numai cand un utilizator 'Admin' - va selecta un fisier/un set comenzi pentru livrare. Astfel, garantam faptul ca drumul cel mai - scurt va fi calculat cu cele mai actuale informatii din baza de date. -

-
-
-
-

4. Intelegerea algoritmului

-

- Dupa cum s-a exemplificat si mai sus (vezi 3. Generare rute pentru livrearea produselor), pentru - determinarea rutelor este folosit un algoritm. Acesta se bazeaza pe problema din teoria grafurilor - numita ‘Multi-Depot-Vehicle-Routing’, care determina traseul unui camion astfel incat sa colecteze - produsele pentru onorarea unei comenzi utilizand drumul cel mai scurt. -

-

- Algoritmul va identifica prima oara depozitele in care se afla produsele dintr-o comanda primita ca - input. Dupa va ordona in ordine crescatoare (in functie de distanta fata de client) toate depozitele. - Dupa va itera prin fiecare depozit si va tine minte ce produse se afla in primul depozit, apoi al doilea - pana cand toate produsele au fost localizate. Dupa aceea va lua depozitele in sens invers si va crea un - JSON cu depozitele respective si produsele care trebuiesc luate de la un anumit depozit si il va salva - in folder-ul dedicat traseelor. -

-

- Aceasta varianta de algoritm garanteaza faptul ca, in cazul in care chiar daca un depozit contine toate - produsele pentru a onora comanda, va putea gasi un drum mai scurt, chiar daca asta ar insemna sa - viziteze - un numar mai mare de depozite. Deoarece ordonam depozitele in ordine crescatoare in functie de distanta - fata de destinatie, dupa ce vizitam un depozit 'i' nu mai poate exista un alt depozit 'j' care sa fie in - acelasi timp mai aproape de destinatie fata de 'i' si sa aiba o parte / toate produsele necesare - onorarii - comenzii. -

-
-
-

5. Descrierea structurii fisierelor JSON

-
-
-

a. Order JSON

-

- Acest fisier JSON va fi creat in aplicatia utilizata de utilizatorul 'User'. Dupa ce - utilizatorul - a selectat produsele dorite si a solicitat ca comanda sa fie trimisa, aplicatia va crea un - fisier - JSON cu structura urmatoare: va exista un singur camp, un array denumit 'products', unde vor fi - stocate toate id-urile produselor selectate. -

-
- -
- -
-
-

b. Route JSON

-

- Dupa ce algoritmul a fost rulat folosind un JSON de tipul 'Order', va salva in folder-ul dedicat - rutelor un JSON cu structura afisata in partea dreapta; JSON ul va contine mai multe obiecte de - tipul 'deposit_i' care vor oferii informatii precum: -

-
    -
  • 'name': numele depozitului;
  • -
  • 'lat_coord': coordonata reala pe glob pe latitudine;
  • -
  • 'long_coord': coordonata reala pe glob pe longitudine;
  • -
  • 'products': un array pentru stocarea id-urilor produselor care trebuiesc preluate din - depozit.
  • -
-
- - -
-
-