Documentatie v2.0
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Delivery Planner</title>
|
||||
<link rel="stylesheet" href="index.css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet'>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="margin"></div>
|
||||
|
||||
<div class="main-content">
|
||||
<p class="main-title">DeliveryPlanner</p>
|
||||
<div class="authors">
|
||||
<p>Proiect realizat de: </p>
|
||||
<p>Cerbu Andrei - Mihnea </h3>
|
||||
<p>Robert - Giorgio Ciubotaru</h3>
|
||||
</div>
|
||||
|
||||
<div class="paragraph">
|
||||
<p class="header">Cerinta:</p>
|
||||
<p class="text">
|
||||
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.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p class="header">Tehnologii:</p>
|
||||
<ul class="list">
|
||||
<li>Server java;</li>
|
||||
<li>Baza de date mySql;</li>
|
||||
<li>Interfata server pentru client/admin realizata cu JavaFX;</li>
|
||||
<li>Fisiere JSON pentru comunicarea pe retea.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p class="header">Clasificarea utlizatorilor</p>
|
||||
<p class="text">
|
||||
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'.
|
||||
</p>
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p class="header">Descriere interactiuni</p>
|
||||
<div class="sub-paragraph">
|
||||
<p class="sub-title">a. Plasare comanda</p>
|
||||
|
||||
<img class="wrap_img" src="place_order.png">
|
||||
<p class="text">
|
||||
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'.
|
||||
</p>
|
||||
</div>
|
||||
<div class="sub-paragraph">
|
||||
<p class="sub-title">b. Modificare baza de date</p>
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
<img class="database_img" src="database.png">
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
<div class="sub-paragraph">
|
||||
<p class="sub-title">c. Generare rute pentru livrarea produselor</p>
|
||||
|
||||
<img class="routes_img" src="generate_route.png">
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p class="header">4. Intelegerea algoritmului</p>
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p class="header">5. Descrierea structurii fisierelor JSON</p>
|
||||
<div class="json_paragraph">
|
||||
<div>
|
||||
<p class="sub-title">a. Order JSON</p>
|
||||
<p class="text">
|
||||
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.
|
||||
</p>
|
||||
</div>
|
||||
<img class="img_json" src="products-json.png">
|
||||
</div>
|
||||
|
||||
<div class="json_paragraph">
|
||||
<div>
|
||||
<p class="sub-title">b. Route JSON</p>
|
||||
<p class="text">
|
||||
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:
|
||||
</p>
|
||||
<ul class="list">
|
||||
<li>'name': numele depozitului;</li>
|
||||
<li>'lat_coord': coordonata reala pe glob pe latitudine;</li>
|
||||
<li>'long_coord': coordonata reala pe glob pe longitudine;</li>
|
||||
<li>'products': un array pentru stocarea id-urilor produselor care trebuiesc preluate din
|
||||
depozit.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<img class="img_json" src="route-json.png">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="margin"></div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user