in prototype/dispatch/order-dispatcher/src/main/java/com/aws/proto/dispatching/api/v1/DispatcherResource.java [144:183]
private UUID manualAssignment(List<PlanningVisit> planningVisits, List<PlanningDriver> drivers) {
int orderNum = planningVisits.size() / 2;
int driverNum = drivers.size();
int len = Math.min(orderNum, driverNum);
List<DispatcherResult.AssignedOrders> assignedOrders = new ArrayList<>();
List<String> unassignedOrders = new ArrayList<>();
for (int i = 0; i < len; i++) {
PlanningVisit pickup = planningVisits.get(2*i);
PlanningVisit dropoff = planningVisits.get(2*i+1);
PlanningDriver driver = drivers.get(i);
assignedOrders.add(new DispatcherResult.AssignedOrders(
driver.getId(),
driver.getDriverIdentity(),
driver.getLocation(),
new ArrayList<>(Arrays.asList(pickup.getOrder().getOrderId())),
new ArrayList<>(Arrays.asList(
new DispatcherResult.Visit(pickup.getLocation()),
new DispatcherResult.Visit(dropoff.getLocation())
))
));
}
if(orderNum > driverNum) {
for (int i = driverNum; i < orderNum; i++) {
unassignedOrders.add(planningVisits.get(2*i).getOrder().getOrderId());
}
}
UUID id = UUID.randomUUID();
DispatcherResult result = new DispatcherResult(UUID.randomUUID(), "execId-1234", Timestamp.valueOf(LocalDateTime.now()).getTime(), assignedOrders, unassignedOrders, "SOLVED", "0hard/0medium/0soft");
TMP_RESULTS.put(id, result);
logger.debug("Manually assigned drivers and orders: {}", result);
return id;
}