|
|
|
@ -1,9 +1,7 @@ |
|
|
|
package com.galaxis.rcs.ptr; |
|
|
|
|
|
|
|
import com.galaxis.rcs.common.entity.RcsTaskPlan; |
|
|
|
import com.galaxis.rcs.common.enums.LCCDirection; |
|
|
|
import com.galaxis.rcs.common.enums.PlanTaskStatus; |
|
|
|
import com.galaxis.rcs.common.enums.PlanTaskType; |
|
|
|
import com.galaxis.rcs.common.enums.*; |
|
|
|
import com.galaxis.rcs.connector.cl2.Cl2DeviceConnector; |
|
|
|
import com.galaxis.rcs.plan.PlanTaskSequence; |
|
|
|
import com.galaxis.rcs.plan.path.PathUtils; |
|
|
|
@ -13,6 +11,7 @@ import com.galaxis.rcs.ptr.sendEntity.RcsConfigMessage; |
|
|
|
import com.galaxis.rcs.ptr.sendEntity.RcsSRMessage; |
|
|
|
import com.galaxis.rcs.ptr.sendEntity.RcsSetLocationMessage; |
|
|
|
import com.google.common.collect.Queues; |
|
|
|
import com.yvan.entity.AgvStatusVo; |
|
|
|
import com.yvan.logisticsModel.ExecutorItem; |
|
|
|
import com.yvan.logisticsModel.LogisticsRuntime; |
|
|
|
import com.yvan.logisticsModel.StaticItem; |
|
|
|
@ -36,40 +35,40 @@ public abstract class PtrAgvItem extends ExecutorItem { |
|
|
|
private static final Redis redis = RedisAdmin.getRedis(); |
|
|
|
|
|
|
|
// ip
|
|
|
|
public String ip; |
|
|
|
public volatile String ip; |
|
|
|
// agv名称
|
|
|
|
public String agvName; |
|
|
|
public volatile String agvName; |
|
|
|
// agv类型
|
|
|
|
public String agvType; |
|
|
|
public volatile String agvType; |
|
|
|
// agv型号
|
|
|
|
public String agvModel; |
|
|
|
public volatile String agvModel; |
|
|
|
// AMR功能型号
|
|
|
|
public String agvFnModel; |
|
|
|
public volatile String agvFnModel; |
|
|
|
// 电池信息
|
|
|
|
public CurBatteryData battery; |
|
|
|
public volatile CurBatteryData battery; |
|
|
|
// agv当前x坐标
|
|
|
|
public double x; |
|
|
|
public volatile double x; |
|
|
|
// agv当前y坐标
|
|
|
|
public double y; |
|
|
|
public volatile double y; |
|
|
|
// agv当前z坐标
|
|
|
|
public double z; |
|
|
|
public volatile double z; |
|
|
|
// 当前所在站点的逻辑X坐标 Int32
|
|
|
|
public int logicX; |
|
|
|
public volatile int logicX; |
|
|
|
// 当前所在站点的逻辑Y坐标 Int32
|
|
|
|
public int logicY; |
|
|
|
public volatile int logicY; |
|
|
|
// 当前方向 UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向
|
|
|
|
public short direction; |
|
|
|
public volatile short direction; |
|
|
|
// agv当前转动角度值
|
|
|
|
public double orientation; |
|
|
|
public boolean isBlocked = false; |
|
|
|
public volatile double orientation; |
|
|
|
|
|
|
|
private volatile boolean isPaused = false; |
|
|
|
|
|
|
|
private volatile PosDirection lastPausedPosition; |
|
|
|
|
|
|
|
// 任务模式
|
|
|
|
@Getter |
|
|
|
private AmrTaskMode __taskMode; |
|
|
|
private volatile AmrTaskMode __taskMode; |
|
|
|
|
|
|
|
private volatile boolean isPaused = false; |
|
|
|
private volatile PosDirection lastPausedPosition; |
|
|
|
private volatile boolean isOnline = false; |
|
|
|
|
|
|
|
// 执行中的任务
|
|
|
|
public List<PtrAgvDeviceTask> runningDeviceTaskList = new ArrayList<>(); |
|
|
|
@ -848,4 +847,39 @@ public abstract class PtrAgvItem extends ExecutorItem { |
|
|
|
return String.format("lcc:%s:%s:device:%s:%s", |
|
|
|
runtime.projectUuid, runtime.envId, this.getId(), type); |
|
|
|
} |
|
|
|
|
|
|
|
public AgvStatusVo getState() { |
|
|
|
var ptr = this; |
|
|
|
int taskCompleted = 0; |
|
|
|
int taskTotalCount = 0; |
|
|
|
if (ptr.planTaskSequence != null) { |
|
|
|
taskCompleted = ptr.planTaskSequence.completedCount(); |
|
|
|
taskTotalCount = ptr.planTaskSequence.taskTotalCount(); |
|
|
|
} |
|
|
|
return new AgvStatusVo( |
|
|
|
ptr.id, |
|
|
|
ptr.getT(), |
|
|
|
ptr.isOnline, |
|
|
|
ptr.isSystemManaged, |
|
|
|
ptr.x, |
|
|
|
ptr.y, |
|
|
|
ptr.z, |
|
|
|
ptr.logicX, |
|
|
|
ptr.logicY, |
|
|
|
PathUtils.getDirectionByArmDirection(ptr.direction), |
|
|
|
ptr.orientation, |
|
|
|
ptr.battery == null ? 0 : ptr.battery.SOC, |
|
|
|
ptr.get__taskMode(), |
|
|
|
ptr.getTaskStatus(), |
|
|
|
ptr.isBlocked, |
|
|
|
taskCompleted, |
|
|
|
taskTotalCount, |
|
|
|
ptr.planTaskSequence == null ? null : ptr.planTaskSequence.bizTask.getBizTaskId(), |
|
|
|
ptr.planTaskSequence == null ? null : BizTaskType.fromString(ptr.planTaskSequence.bizTask.getBizType()), |
|
|
|
ptr.planTaskSequence == null ? null : BizTaskStatus.fromString(ptr.planTaskSequence.bizTask.getBizTaskStatus()), |
|
|
|
ptr.planTaskSequence == null ? null : ptr.planTaskSequence.bizTask.getTaskFrom(), |
|
|
|
ptr.planTaskSequence == null ? null : ptr.planTaskSequence.bizTask.getTaskTo(), |
|
|
|
ptr.planTaskSequence == null ? null : ptr.planTaskSequence.bizTask.getLpn() |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
|