feat(javaTest): visualize floor transfer evidence
This commit is contained in:
@@ -8,6 +8,7 @@ import com.ft546.wcs.shadow.history.HistoricalQueueRecord;
|
||||
import com.ft546.wcs.shadow.history.simulation.HistoricalDispatchSimulationResult;
|
||||
import com.ft546.wcs.shadow.history.simulation.HistoricalSimulationInput;
|
||||
import com.ft546.wcs.shadow.history.simulation.HistoricalSimulationTask;
|
||||
import com.ft546.wcs.shadow.history.simulation.FloorTransferJob;
|
||||
import com.ft546.wcs.shadow.history.simulation.RoutePlanningEvidence;
|
||||
import com.ft546.wcs.shadow.history.simulation.RerouteDecisionEvidence;
|
||||
import com.ft546.wcs.shadow.history.simulation.SimulationInvariantSummary;
|
||||
@@ -207,6 +208,11 @@ public final class SimulationVisualizationMapper {
|
||||
? record.getEndSite() : definition.getPhysicalTarget());
|
||||
value.put("historicalVehicleId", record.getAgvId());
|
||||
value.put("simulatedVehicleId", task.getSimulatedVehicleId());
|
||||
value.put("assignmentMode", task.getAssignmentMode() == null
|
||||
? null : task.getAssignmentMode().name());
|
||||
value.put("floorTransferCount", task.getFloorTransferCount());
|
||||
value.put("involvedFloors", involvedFloors(task.getFloorTransferJobs()));
|
||||
value.put("floorTransferJobs", floorTransferJobs(task.getFloorTransferJobs()));
|
||||
value.put("historicalPath", historicalPath);
|
||||
value.put("plannedPath", task.getPlannedPath());
|
||||
// 边差证据解释新旧路线在哪里重合或分叉,但不参与调度中心的规划结果。
|
||||
@@ -253,6 +259,38 @@ public final class SimulationVisualizationMapper {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 汇总父任务换层作业经过的楼层,供页面楼层选择器标记整条业务链涉及的地图。
|
||||
*/
|
||||
private List<Integer> involvedFloors(List<FloorTransferJob> jobs) {
|
||||
Set<Integer> floors = new TreeSet<Integer>();
|
||||
for (FloorTransferJob job : jobs) {
|
||||
floors.add(job.getSourceFloor());
|
||||
floors.add(job.getTargetFloor());
|
||||
}
|
||||
return new ArrayList<Integer>(floors);
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出中心提交给现有 WCS 的换层意图;幂等键用于核对重试是否复用了同一个物理作业。
|
||||
*/
|
||||
private List<Map<String, Object>> floorTransferJobs(List<FloorTransferJob> jobs) {
|
||||
List<Map<String, Object>> values = new ArrayList<Map<String, Object>>();
|
||||
for (FloorTransferJob job : jobs) {
|
||||
Map<String, Object> value = new LinkedHashMap<String, Object>();
|
||||
value.put("idempotencyKey", job.getIdempotencyKey());
|
||||
value.put("parentTaskId", job.getParentTaskId());
|
||||
value.put("vehicleId", job.getVehicleId());
|
||||
value.put("sourceFloor", job.getSourceFloor());
|
||||
value.put("targetFloor", job.getTargetFloor());
|
||||
value.put("sourceSite", job.getSourceSite());
|
||||
value.put("targetSite", job.getTargetSite());
|
||||
value.put("priority", job.getPriority());
|
||||
values.add(value);
|
||||
}
|
||||
return values;
|
||||
}
|
||||
|
||||
/** 返回当前任务的重规划触发、拒绝和成功事件,供前端按版本还原决策链。 */
|
||||
private List<Map<String, Object>> rerouteEvents(
|
||||
String taskId, List<SimulationTickEvent> allEvents) {
|
||||
|
||||
Reference in New Issue
Block a user