in prototype/dispatch/order-dispatcher/src/main/java/com/aws/proto/dispatching/planner/solution/v1/SolutionConsumer.java [72:113]
public static DispatcherResult buildResult(DispatchingSolution solution, SolverStatus solverStatus) {
DispatcherResult result = new DispatcherResult();
result.problemId = solution.getId();
result.score = solution.getScore().toString();
result.state = solverStatus.name();
List<PlanningDriver> drivers = solution.getPlanningDrivers();
List<DispatcherResult.AssignedOrders> assignedOrders = new ArrayList<>();
for(PlanningDriver driver : drivers) {
List<String> orderIds = new ArrayList<>();
List<DispatcherResult.Visit> visits = new ArrayList<>();
PlanningVisit visit = driver.getNextPlanningVisit();
if(visit == null) {
continue;
}
while(visit != null) {
orderIds.add(visit.getOrder().getOrderId());
visits.add(new DispatcherResult.Visit(visit.getLocation()));
visit = visit.getNextPlanningVisit();
}
assignedOrders.add(new DispatcherResult.AssignedOrders(
driver.getId(),
driver.getDriverIdentity(),
driver.getLocation(),
orderIds,
visits
));
}
result.assigned = assignedOrders;
// currently we don't have a mechanism to keep orders unassigned
result.unassigned = new ArrayList<>();
return result;
}