._.
This commit is contained in:
parent
f7301f9635
commit
644653c08d
@ -566,10 +566,6 @@ export const updateDeliveryOrderRoute = async (
|
||||
estimatedRouteTime,
|
||||
route
|
||||
) => {
|
||||
console.log({
|
||||
estimated_route_time_in_minutes: estimatedRouteTime,
|
||||
route: route,
|
||||
});
|
||||
try {
|
||||
const response = await axios.put(
|
||||
`${API_URL}/delivery-orders/${deliveryOrderId}/route`,
|
||||
|
||||
@ -53,84 +53,84 @@ const DeliveryOrdersList = ({
|
||||
};
|
||||
|
||||
const calculateRoutes = async () => {
|
||||
const ordersToCalculate = deliveryOrders.filter(
|
||||
(order) => !order.estimated_route_time_in_minutes
|
||||
);
|
||||
const ordersToCalculate = deliveryOrders.filter(
|
||||
(order) => !order.estimated_route_time_in_minutes
|
||||
);
|
||||
|
||||
setCalculatingRoutes(ordersToCalculate.map((order) => order.id));
|
||||
setCalculatingRoutes(ordersToCalculate.map((order) => order.id));
|
||||
|
||||
await Promise.all(
|
||||
ordersToCalculate.map(async (order) => {
|
||||
try {
|
||||
const deliveryOrderDetails = await getDeliveryOrderDetails(order.id);
|
||||
const accessories = await getDeliveryAccessories(
|
||||
deliveryOrderDetails.id
|
||||
);
|
||||
await Promise.all(
|
||||
ordersToCalculate.map(async (order) => {
|
||||
try {
|
||||
const deliveryOrderDetails = await getDeliveryOrderDetails(order.id);
|
||||
const accessories = await getDeliveryAccessories(
|
||||
deliveryOrderDetails.id
|
||||
);
|
||||
|
||||
const coords = await Promise.all(
|
||||
accessories.map(async (accessory) => {
|
||||
if (accessory.latitude && accessory.longitude) {
|
||||
return {
|
||||
city: accessory.city_name,
|
||||
latitude: accessory.latitude,
|
||||
longitude: accessory.longitude,
|
||||
accessory_name:
|
||||
accessory.accessory_name +
|
||||
Math.round(
|
||||
(accessory.accessory_volume * accessory.count) / 100
|
||||
) +
|
||||
"шт.",
|
||||
};
|
||||
} else {
|
||||
const coords = await getCoordinates(accessory.city_name);
|
||||
return {
|
||||
city: accessory.city_name,
|
||||
accessory_name:
|
||||
accessory.accessory_name +
|
||||
": " +
|
||||
Math.round(
|
||||
(accessory.accessory_volume * accessory.count) / 100
|
||||
) +
|
||||
"шт.",
|
||||
...coords,
|
||||
};
|
||||
const coords = await Promise.all(
|
||||
accessories.map(async (accessory) => {
|
||||
if (accessory.latitude && accessory.longitude) {
|
||||
return {
|
||||
city: accessory.city_name,
|
||||
latitude: accessory.latitude,
|
||||
longitude: accessory.longitude,
|
||||
accessory_name:
|
||||
accessory.accessory_name +
|
||||
Math.round(
|
||||
(accessory.accessory_volume * accessory.count) / 100
|
||||
) +
|
||||
"шт.",
|
||||
};
|
||||
} else {
|
||||
const coords = await getCoordinates(accessory.city_name);
|
||||
return {
|
||||
city: accessory.city_name,
|
||||
accessory_name:
|
||||
accessory.accessory_name +
|
||||
": " +
|
||||
Math.round(
|
||||
(accessory.accessory_volume * accessory.count) / 100
|
||||
) +
|
||||
"шт.",
|
||||
...coords,
|
||||
};
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
const fullCoordinates = [...coords, DELIVERY_CITY];
|
||||
|
||||
if (fullCoordinates.length > 1) {
|
||||
const waypoints = fullCoordinates
|
||||
.map(({ longitude, latitude }) => `${longitude},${latitude}`)
|
||||
.join(";");
|
||||
|
||||
const routeUrl = `https://router.project-osrm.org/route/v1/driving/${waypoints}?overview=full`;
|
||||
|
||||
const response = await fetch(routeUrl);
|
||||
const data = await response.json();
|
||||
|
||||
if (data.routes && data.routes.length > 0) {
|
||||
const geometry = data.routes[0].geometry;
|
||||
const decodedRoute = polyline.decode(geometry);
|
||||
const duration = data.routes[0].duration;
|
||||
|
||||
await updateDeliveryOrderRoute(
|
||||
order.id,
|
||||
duration / 60,
|
||||
decodedRoute
|
||||
);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
const fullCoordinates = [...coords, DELIVERY_CITY];
|
||||
|
||||
if (fullCoordinates.length > 1) {
|
||||
const waypoints = fullCoordinates
|
||||
.map(({ longitude, latitude }) => `${longitude},${latitude}`)
|
||||
.join(";");
|
||||
|
||||
const routeUrl = `https://router.project-osrm.org/route/v1/driving/${waypoints}?overview=full`;
|
||||
|
||||
const response = await fetch(routeUrl);
|
||||
const data = await response.json();
|
||||
|
||||
if (data.routes && data.routes.length > 0) {
|
||||
const geometry = data.routes[0].geometry;
|
||||
const decodedRoute = polyline.decode(geometry);
|
||||
const duration = data.routes[0].duration;
|
||||
|
||||
await updateDeliveryOrderRoute(
|
||||
order.id,
|
||||
duration / 60,
|
||||
decodedRoute
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Ошибка при расчете маршрута для подзаказа:", error);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Ошибка при расчете маршрута для подзаказа:", error);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
fetchDeliveryOrders();
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
await fetchDeliveryOrders();
|
||||
setCalculatingRoutes([]);
|
||||
};
|
||||
|
||||
const ordersToCalculate = deliveryOrders.filter(
|
||||
(order) => !order.estimated_route_time_in_minutes
|
||||
|
||||
@ -124,6 +124,7 @@ const Home = () => {
|
||||
<th>Статус</th>
|
||||
<th>Количество роботов</th>
|
||||
<th>Количество этапов</th>
|
||||
<th>Итоговая цена</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -131,6 +132,7 @@ const Home = () => {
|
||||
<td>{order.status_name || "Неизвестный статус"}</td>
|
||||
<td>{order.count_robots}</td>
|
||||
<td>{deliveryOrdersCount || 0}</td>
|
||||
<td>{order.price || 0} руб.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user