This commit is contained in:
xuzhiheng 2025-07-01 19:11:01 +08:00
parent ec7e0fc699
commit e6818275ab
7 changed files with 43 additions and 73 deletions

View File

@ -46,7 +46,7 @@ public class HttpClient {
try (Response response = client.newCall(request).execute()) {
return response.body().string();
} catch (IOException e) {
throw new RuntimeException("POST Request Failed", e);
throw new RuntimeException("HTTP POST Request Failed", e);
}
}

View File

@ -181,9 +181,7 @@ public class ExecuteMove extends BaseService {
*/
public static boolean resetOrder(String vehicleName) {
if (orderInfoMap.containsKey(vehicleName)) {
orderInfoMap.remove(vehicleName);
}
orderInfoMap.remove(vehicleName);
return true;
}

View File

@ -84,6 +84,10 @@ public class ExecuteOperation extends BaseService{
//获取订单ID
Integer orderId = ExecuteMove.getOrderID(vehicleName);
if (orderId == null) {
return;
}
RequestB2 b2 = new RequestB2();
b2.setAction_parallel_manner(2);

View File

@ -91,6 +91,9 @@ public class TransportOrderHandler {
//构建订单对象
PostTransportOrderRequestTO postTransportOrderRequestTO = new PostTransportOrderRequestTO();
postTransportOrderRequestTO.setIncompleteName(true);
if (intendedVehicle != null) {
postTransportOrderRequestTO.setIntendedVehicle(intendedVehicle);
}
postTransportOrderRequestTO.setDispensable(dispensable);
postTransportOrderRequestTO.setDeadline(Instant.now());
postTransportOrderRequestTO.setWrappingSequence(orderSequence.getName());

View File

@ -8,6 +8,8 @@ import jakarta.inject.Inject;
import java.util.List;
import java.util.concurrent.ExecutionException;
import org.opentcs.access.KernelRuntimeException;
import org.opentcs.communication.http.service.ExecuteMove;
import org.opentcs.communication.http.service.ExecuteOperation;
import org.opentcs.data.ObjectExistsException;
import org.opentcs.data.ObjectUnknownException;
import org.opentcs.kernel.extensions.servicewebapi.HttpConstants;
@ -450,6 +452,11 @@ public class V1RequestHandler
private Object handlePostWithdrawalByVehicle(Request request, Response response)
throws ObjectUnknownException {
//初始化动作状态
vehicleHandler.initActionStatus(request.params(":NAME"));
//根据车辆撤销任务
orderDispatcherHandler.withdrawByVehicle(
request.params(":NAME"),
immediate(request),
@ -468,6 +475,16 @@ public class V1RequestHandler
private Object handlePostVehicleRerouteRequest(Request request, Response response)
throws ObjectUnknownException {
//清理车辆映射订单ID
ExecuteMove.resetOrder(request.params(":NAME"));
//可能会有动作阻塞所以需要初始化动作状态
vehicleHandler.initActionStatus(request.params(":NAME"));
//撤销订单 todo 订单撤销后可能会有延时继续运动所以应该考虑是否需要等待订单撤销成功
// ExecuteOperation.cancelOrder(request.params(":NAME"));
//立即重新路由
orderDispatcherHandler.reroute(request.params(":NAME"), forced(request));
response.type(HttpConstants.CONTENT_TYPE_TEXT_PLAIN_UTF8);
return "";

View File

@ -110,77 +110,24 @@ public class VehicleHandler {
vehicleService.sendCommAdapterMessage(vehicle.getReference(), agvInfo);
} else if (type == 5) { //上报动作完成
//动作完成上报
AgvActionStatus agvActionStatus = new AgvActionStatus();
agvActionStatus.setStatus(true);
vehicleService.sendCommAdapterMessage(vehicle.getReference(), agvActionStatus);
initActionStatus(name);
// AgvActionStatus agvActionStatus = new AgvActionStatus();
// agvActionStatus.setStatus(true);
// vehicleService.sendCommAdapterMessage(vehicle.getReference(), agvActionStatus);
}
}
// /**
// * 获取执行成本最低车辆
// * @param destinationPoint 目标点
// * @return 车辆名称
// */
// public String getExecuteVehicle(String destinationPoint) {
//
// //获取所有车辆
// Set<Vehicle> vehicles = vehicleService.fetchObjects(Vehicle.class);
// //设置终点
// List<String> destinationPointList = List.of(destinationPoint);
// //记录最低路由成本
// long costs = 0;
// //返回的车辆名称
// String vehicleName = null;
//
// for (Vehicle vehicle : vehicles) {
// VehicleProcessModelTO vehicleProcessModelTO = vehicleService.fetchProcessModel(vehicle.getReference());
// boolean commAdapterEnabled = vehicleProcessModelTO.isCommAdapterEnabled();
//
// //校验车辆通讯适配器状态车辆状态集成级别订单
// if (
// !commAdapterEnabled ||
// vehicle.getState() != Vehicle.State.IDLE ||
// vehicle.getIntegrationLevel() != Vehicle.IntegrationLevel.TO_BE_UTILIZED ||
// vehicle.getTransportOrder() != null
// ) {
// //车辆不能执行任务直接获取下台车辆
// continue;
// }
//
// //获取车辆当前位置设置为起点
// String sourcePoint = vehicle.getCurrentPosition().getName();
//
// PostVehicleRoutesRequestTO postVehicleRoutesRequestTO = new PostVehicleRoutesRequestTO(destinationPointList);
// postVehicleRoutesRequestTO.setSourcePoint(sourcePoint);
// Map<TCSObjectReference<Point>, Route> vehicleRoutes = this.getVehicleRoutes(vehicle.getName(), postVehicleRoutesRequestTO);
//
// for (Map.Entry<TCSObjectReference<Point>, Route> entry : vehicleRoutes.entrySet()) {
//// TCSObjectReference<Point> key = entry.getKey();
// Route value = entry.getValue();
//
// //判断成本值是否合规(为空或小于0不合规)
// if (value == null || value.getCosts() < 0) {
// continue;
// }
//
// //比较成本取成本低车辆名称
// if (vehicleName == null || costs > value.getCosts()) {
// //记录数据
// costs = value.getCosts();
// vehicleName = vehicle.getName();
// }
// }
// }
//
//
// if (vehicleName == null) {
// //无空闲车辆需要创建订单无意向车辆订单
//// throw new IllegalArgumentException("无可用车辆");
// return "";
// }
//
// return vehicleName;
// }
/**
* 初始化动作完成状态
* @param name 车辆名称
*/
public void initActionStatus(String name) {
Vehicle vehicle = vehicleService.fetchObject(Vehicle.class, name);
AgvActionStatus agvActionStatus = new AgvActionStatus();
agvActionStatus.setStatus(true);
vehicleService.sendCommAdapterMessage(vehicle.getReference(), agvActionStatus);
}
/**
* Find all vehicles orders and filters depending on the given parameters.

View File

@ -14,7 +14,8 @@ kernelapp.rerouteOnDriveOrderFinished = false
kernelapp.vehicleResourceManagementType = LENGTH_RESPECTED
orderpool.sweepInterval = 60000
orderpool.sweepAge = 86400000
orderpool.sweepAge = 60000
#orderpool.sweepAge = 86400000
rmikernelinterface.enable = true
rmikernelinterface.useSsl = false