This commit is contained in:
xuzhiheng 2025-06-28 17:23:12 +08:00
parent 261cb7a7e7
commit dddb5e6b39
7 changed files with 56 additions and 24 deletions

View File

@ -343,7 +343,7 @@ public class LoopbackCommunicationAdapter
sourcePoint = cmd.getStep().getSourcePoint().getName(); sourcePoint = cmd.getStep().getSourcePoint().getName();
//下发AGV移动指令 //下发AGV移动指令
// ExecuteMove.sendCmd(getProcessModel().getName(), cmd, getSerialNum()); ExecuteMove.sendCmd(getProcessModel().getName(), cmd, getSerialNum());
} }
// Start the simulation task if we're not in single step mode and not simulating already. // Start the simulation task if we're not in single step mode and not simulating already.
@ -529,7 +529,7 @@ public class LoopbackCommunicationAdapter
ACTION_STATUS = true; ACTION_STATUS = true;
//下发动作 //下发动作
ExecuteAction.sendCmd(command.getTransportOrder().getName(), getProcessModel().getName(), getProcessModel().getPosition(), command.getOperation(), getSerialNum()); ExecuteAction.sendCmd(command.getTransportOrder().getWrappingSequence().getName(), getProcessModel().getName(), getProcessModel().getPosition(), command.getOperation(), getSerialNum());
//进入阻塞 //进入阻塞
while (ACTION_STATUS) { while (ACTION_STATUS) {

View File

@ -20,7 +20,7 @@ public class BaseService {
* 生成进程内唯一的int型ID * 生成进程内唯一的int型ID
* 优点简单高效 * 优点简单高效
* 限制 * 限制
* - 重启后可能重复 * - 重启后可能重复,但数据是内存中存在重启即销毁
* - 超过21亿后会回绕正常应用很难达到 * - 超过21亿后会回绕正常应用很难达到
*/ */
public static int generate() { public static int generate() {

View File

@ -11,13 +11,13 @@ public class ExecuteAction extends BaseService {
/** /**
* 下发动作到平台 * 下发动作到平台
* @param orderName 车辆名称 * @param name 名称
* @param vehicleName 车辆名称 * @param vehicleName 车辆名称
* @param point 当前位置 * @param point 当前位置
* @param action 动作 * @param action 动作
* @param serialNum 序列号 * @param serialNum 序列号
*/ */
public static void sendCmd(String orderName, String vehicleName, String point, String action, Integer serialNum) { public static void sendCmd(String name, String vehicleName, String point, String action, Integer serialNum) {
String url = getUrl(vehicleName); String url = getUrl(vehicleName);
@ -27,7 +27,7 @@ public class ExecuteAction extends BaseService {
String time = now.format(formatter); String time = now.format(formatter);
RequestAction requestAction = new RequestAction(); RequestAction requestAction = new RequestAction();
requestAction.setOrder_name(orderName); requestAction.setOrder_name(name);
requestAction.setAction(action); requestAction.setAction(action);
requestAction.setPoint(point); requestAction.setPoint(point);

View File

@ -169,7 +169,23 @@ public class ExecuteMove extends BaseService {
* 获取当前订单ID * 获取当前订单ID
*/ */
public static Integer getOrderID(String vehicleName) { public static Integer getOrderID(String vehicleName) {
return orderInfoMap.get(vehicleName).getId();
if (orderInfoMap.containsKey(vehicleName)) {
return orderInfoMap.get(vehicleName).getId();
}
return null;
}
/**
* 清理对应订单实现平台接管后继续执行订单
*/
public static boolean resetOrder(String vehicleName) {
if (orderInfoMap.containsKey(vehicleName)) {
orderInfoMap.remove(vehicleName);
}
return true;
} }
/** /**

View File

@ -154,6 +154,7 @@ public class AdapterManage {
agvInfoParams.setAgv_model(params.getInteger("agv_model")); agvInfoParams.setAgv_model(params.getInteger("agv_model"));
agvInfoParams.setCharge_status(params.getInteger("charge_status")); agvInfoParams.setCharge_status(params.getInteger("charge_status"));
agvInfoParams.setAction_status(params.getInteger("action_status")); agvInfoParams.setAction_status(params.getInteger("action_status"));
agvInfoParams.setOrder_id(params.getInteger("order_id"));
return agvInfoParams; return agvInfoParams;
} }

View File

@ -52,4 +52,8 @@ public class AgvInfoParams {
* 执行动作状态1=完成2=执行中 * 执行动作状态1=完成2=执行中
*/ */
private Integer action_status; private Integer action_status;
/**
* 控制器最后执行订单IDid=0即为未创建任务
*/
private Integer order_id;
} }

View File

@ -63,41 +63,52 @@ public class TransportOrderHandler {
/** /**
* 根据WMS任务创建订单序列和运输订单 * 根据WMS任务创建订单序列和运输订单
* @param orderName 订单名称 * @param name 订单序列名称
* @param body 结构体 * @param body 结构体
* @return 创建的订单 * @return 创建的订单
*/ */
public TransportOrder createWmsTask(String orderName, String body){ public List<TransportOrder> createWmsTask(String name, String body){
//解析data //解析data
String type = JSON.parseObject(body).getString("type"); String type = JSON.parseObject(body).getString("type");
String intendedVehicle = JSON.parseObject(body).getString("intendedVehicle") != null ? JSON.parseObject(body).getString("intendedVehicle") : null; String intendedVehicle = JSON.parseObject(body).getString("intendedVehicle") != null ? JSON.parseObject(body).getString("intendedVehicle") : null;
Boolean dispensable = JSON.parseObject(body).getBoolean("dispensable") != null ? JSON.parseObject(body).getBoolean("dispensable") : false; Boolean dispensable = JSON.parseObject(body).getBoolean("dispensable") != null ? JSON.parseObject(body).getBoolean("dispensable") : false;
// String wrappingSequence = JSON.parseObject(body).getString("wrappingSequence") != null ? JSON.parseObject(body).getString("wrappingSequence") : null;
String destinationsStr = JSON.parseObject(body).getString("destinations"); String destinationsStr = JSON.parseObject(body).getString("destinations");
List<PostTransportOrderInfoRequestTo> dataList = JSON.parseArray(destinationsStr, PostTransportOrderInfoRequestTo.class); List<PostTransportOrderInfoRequestTo> dataList = JSON.parseArray(destinationsStr, PostTransportOrderInfoRequestTo.class);
//订单目标点结构体 //构建订单序列
List<Destination> destinationsList = new ArrayList<>(); PostOrderSequenceRequestTO postOrderSequenceRequestTO = new PostOrderSequenceRequestTO();
postOrderSequenceRequestTO.setIncompleteName(false);
if (intendedVehicle != null) {
postOrderSequenceRequestTO.setIntendedVehicle(intendedVehicle);
}
postOrderSequenceRequestTO.setType(type);
postOrderSequenceRequestTO.setFailureFatal(true);
//根据传入名称创建订单序列
OrderSequence orderSequence = this.createOrderSequence(name, postOrderSequenceRequestTO);
//构建订单对象
PostTransportOrderRequestTO postTransportOrderRequestTO = new PostTransportOrderRequestTO();
postTransportOrderRequestTO.setIncompleteName(true);
postTransportOrderRequestTO.setDispensable(dispensable);
postTransportOrderRequestTO.setDeadline(Instant.now());
postTransportOrderRequestTO.setWrappingSequence(orderSequence.getName());
postTransportOrderRequestTO.setType(type);
//根据传入点位创建多个订单
List<TransportOrder> orders = new ArrayList<>();
for (PostTransportOrderInfoRequestTo destination : dataList) { for (PostTransportOrderInfoRequestTo destination : dataList) {
List<Destination> destinationsList = new ArrayList<>();
Destination newDestination = new Destination(); Destination newDestination = new Destination();
newDestination.setLocationName(destination.getLocationName()); newDestination.setLocationName(destination.getLocationName());
newDestination.setOperation(destination.getOperation()); newDestination.setOperation(destination.getOperation());
destinationsList.add(newDestination); destinationsList.add(newDestination);
postTransportOrderRequestTO.setDestinations(destinationsList);
TransportOrder order = this.createOrder("", postTransportOrderRequestTO);
orders.add(order);
} }
//构建订单对象 return orders;
PostTransportOrderRequestTO postTransportOrderRequestTO = new PostTransportOrderRequestTO();
postTransportOrderRequestTO.setIncompleteName(false);
postTransportOrderRequestTO.setDispensable(dispensable);
postTransportOrderRequestTO.setDeadline(Instant.now());
if (intendedVehicle != null) {
postTransportOrderRequestTO.setIntendedVehicle(intendedVehicle);
}
postTransportOrderRequestTO.setType(type);
postTransportOrderRequestTO.setDestinations(destinationsList);
//创建运输订单
return this.createOrder(orderName, postTransportOrderRequestTO);
} }
public TransportOrder createOrder(String name, PostTransportOrderRequestTO order) public TransportOrder createOrder(String name, PostTransportOrderRequestTO order)