diff --git a/servo/src/main/java/com/galaxis/rcs/common/entity/RcsTaskBiz.java b/servo/src/main/java/com/galaxis/rcs/common/entity/RcsTaskBiz.java index 1e19de5..59c0296 100644 --- a/servo/src/main/java/com/galaxis/rcs/common/entity/RcsTaskBiz.java +++ b/servo/src/main/java/com/galaxis/rcs/common/entity/RcsTaskBiz.java @@ -1,44 +1,85 @@ package com.galaxis.rcs.common.entity; import lombok.Data; +import lombok.Getter; +import lombok.Setter; + import java.io.Serializable; import java.util.Date; /** * (rcs_task_biz) */ -@Data +@Getter +@Setter public class RcsTaskBiz implements Serializable { - /** */ + /** + * + */ private Long bizTaskId; - /** 环境ID */ + /** + * 环境ID + */ private Long envId; - /** 任务类型 */ + /** + * 任务类型 + */ private String bizType; - /** 托盘ID */ + /** + * 托盘ID + */ private String lpn; - /** 任务优先级 */ + /** + * 任务优先级 + */ private Integer priority; - /** 任务起始点 */ + /** + * 任务起始点 + */ private String taskFrom; - /** 任务目标点 */ + /** + * 任务目标点 + */ private String taskTo; - /** 系统分配的执行器ID */ + /** + * 系统分配的执行器ID + */ private String allocatedExecutorId; - /** 任务负载信息 */ + /** + * 任务负载信息 + */ private String bizTaskPayload; - /** 异常提示信息 */ + /** + * 异常提示信息 + */ private String bizTaskErrorInfo; - /** 任务描述 */ + /** + * 任务描述 + */ private String bizTaskDescription; - /** 任务状态 */ + /** + * 任务状态 + */ private String bizTaskStatus; - /** 创建时间 */ + /** + * 创建时间 + */ private Date createAt; - /** 创建人 */ + /** + * 创建人 + */ private String createBy; - /** 更新时间 */ + /** + * 更新时间 + */ private Date updateAt; - /** 更新人 */ + /** + * 更新人 + */ private String updateBy; + + @Override + public String toString() { + return "RcsTaskBiz(" + bizTaskId + ", executor='" + allocatedExecutorId + ", status='" + bizTaskStatus + ")"; + } } diff --git a/servo/src/main/java/com/galaxis/rcs/common/entity/RcsTaskPlan.java b/servo/src/main/java/com/galaxis/rcs/common/entity/RcsTaskPlan.java index 6b9189c..1fbac7b 100644 --- a/servo/src/main/java/com/galaxis/rcs/common/entity/RcsTaskPlan.java +++ b/servo/src/main/java/com/galaxis/rcs/common/entity/RcsTaskPlan.java @@ -1,6 +1,10 @@ package com.galaxis.rcs.common.entity; +import com.galaxis.rcs.common.enums.PlanTaskType; import lombok.Data; +import lombok.Getter; +import lombok.Setter; + import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; @@ -8,46 +12,118 @@ import java.util.Date; /** * (rcs_task_plan) */ -@Data +@Getter +@Setter public class RcsTaskPlan implements Serializable { - /** 规划ID */ + /** + * 规划ID + */ private Long planTaskId; - /** 业务任务ID */ + /** + * 业务任务ID + */ private Long bizTaskId; - /** 环境ID */ + /** + * 环境ID + */ private Long envId; - /** 规划类型 */ + /** + * 规划类型 + */ private String planType; - /** 执行器ID */ + /** + * 执行器ID + */ private String executorId; - /** 规划序号 */ + /** + * 规划序号 + */ private Integer seq; - /** 目标点ID */ + /** + * 目标点ID + */ private String targetId; - /** 目标点货架列 */ + /** + * 目标点货架列 + */ private Integer targetBay; - /** 目标点货架层 */ + /** + * 目标点货架层 + */ private Integer targetLevel; - /** 目标点货架格 */ + /** + * 目标点货架格 + */ private Integer targetCell; - /** 目标点旋转角度 */ + /** + * 目标点旋转角度 + */ private BigDecimal targetRotation; - /** 背负托盘ID */ + /** + * 背负托盘ID + */ private String loadLpn; - /** 任务负载信息 */ + /** + * 任务负载信息 + */ private String planTaskPayload; - /** 规划执行状态 */ + /** + * 规划执行状态 + */ private String planTaskStatus; - /** 异常提示信息 */ + /** + * 异常提示信息 + */ private String planTaskErrorInfo; - /** 任务描述 */ + /** + * 任务描述 + */ private String planTaskDescription; - /** 创建时间 */ + /** + * 创建时间 + */ private Date createAt; - /** 创建人 */ + /** + * 创建人 + */ private String createBy; - /** 更新时间 */ + /** + * 更新时间 + */ private Date updateAt; - /** 更新人 */ + /** + * 更新人 + */ private String updateBy; + + @Override + public String toString() { + var task = this; + String taskStr = "UNKNOWN:" + task.getPlanType(); + switch (PlanTaskType.valueOf(task.getPlanType())) { + case MOVE: + taskStr = "MOVE " + task.getTargetId(); + break; + case MOVE_BACKWARD: + taskStr = "MOVE_BACKWARD " + task.getTargetId(); + break; + case CHARGE: + taskStr = "CHARGE " + task.getTargetId(); + break; + case LOAD: + taskStr = "LOAD " + task.getTargetId() + "_" + task.getTargetBay() + "_" + task.getTargetLevel() + "_" + task.getTargetCell(); + break; + case UNLOAD: + taskStr = "UNLOAD " + task.getTargetId() + "_" + task.getTargetBay() + "_" + task.getTargetLevel() + "_" + task.getTargetCell(); + break; + case ROTATION: + taskStr = "Rotation " + task.getTargetRotation(); + break; + case FINISH: + taskStr = "FINISH"; + break; + } + taskStr = taskStr + " STATE:" + task.getPlanTaskStatus(); + return taskStr; + } } diff --git a/servo/src/main/java/com/galaxis/rcs/plan/PlanTaskSequence.java b/servo/src/main/java/com/galaxis/rcs/plan/PlanTaskSequence.java index f3b68f2..b73e4d6 100644 --- a/servo/src/main/java/com/galaxis/rcs/plan/PlanTaskSequence.java +++ b/servo/src/main/java/com/galaxis/rcs/plan/PlanTaskSequence.java @@ -5,6 +5,7 @@ import com.galaxis.rcs.common.entity.RcsTaskBiz; import com.galaxis.rcs.common.entity.RcsTaskPlan; import com.galaxis.rcs.common.enums.PlanTaskStatus; import com.galaxis.rcs.common.enums.PlanTaskType; +import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.Lists; import com.yvan.logisticsModel.LogisticsRuntime; @@ -159,6 +160,15 @@ public class PlanTaskSequence { return jw.getInnerMap(); } + @Override + public String toString() { + List list = Lists.newArrayList(); + for (RcsTaskPlan task : taskList) { + list.add(task.toString()); + } + return "PlanTaskSequence [biz=" + this.bizTask.toString() + "] taskList:" + Joiner.on("\n").join(list); + } + /** * 是不是所有的任务都完成了 */ @@ -184,21 +194,6 @@ public class PlanTaskSequence { return null; } - @SneakyThrows - public void savePlanTask(RcsTaskPlan planTask) { - //TODO: 保存数据库 - var jw = new JsonWrapper(planTask); - jw.set("isAllCompleted", this.isAllCompleted()); - - var list = Splitter.on("\n").splitToList(jw.toString()); - String[] ar = new String[list.size()]; - list.toArray(ar); - - - // log.info("3-Received message: " + json); - BannerUtils.printConfig(log, "保存业务任务 planTask", ar); - } - public boolean isEmpty() { return this.taskList.isEmpty(); } diff --git a/servo/src/main/java/com/galaxis/rcs/ptr/AmrMessageHandler.java b/servo/src/main/java/com/galaxis/rcs/ptr/AmrMessageHandler.java index 00d88a2..49e482b 100644 --- a/servo/src/main/java/com/galaxis/rcs/ptr/AmrMessageHandler.java +++ b/servo/src/main/java/com/galaxis/rcs/ptr/AmrMessageHandler.java @@ -136,7 +136,7 @@ public class AmrMessageHandler { String[] ar = new String[list.size()]; list.toArray(ar); // log.info("3-Received message: " + json); - BannerUtils.printConfig(log, "MQTT 收到报文 [" + id + "] ArmMessageType." + ArmMessageType.fromValue(id) + " - " + ArmMessageType.fromValue(id).description, ar); + // BannerUtils.printConfig(log, "MQTT 收到报文 [" + id + "] ArmMessageType." + ArmMessageType.fromValue(id) + " - " + ArmMessageType.fromValue(id).description, ar); } AmrMessage amrMessage = null; @@ -210,7 +210,7 @@ public class AmrMessageHandler { var list = Splitter.on("\n").splitToList(new JsonWrapper(payload).toString()); String[] ar = new String[list.size()]; list.toArray(ar); - BannerUtils.printConfig(log, "MQTT 发送报文 [" + id + "] RcsMessageType." + RcsMessageType.fromValue(id) + " - " + RcsMessageType.fromValue(id).description, ar); + // BannerUtils.printConfig(log, "MQTT 发送报文 [" + id + "] RcsMessageType." + RcsMessageType.fromValue(id) + " - " + RcsMessageType.fromValue(id).description, ar); } log.debug("发送消息: {}", payload); ptrMqttClient.publish(topic, payload); diff --git a/servo/src/main/java/com/galaxis/rcs/ptr/PtrAgvItem.java b/servo/src/main/java/com/galaxis/rcs/ptr/PtrAgvItem.java index 9c41441..15dea96 100644 --- a/servo/src/main/java/com/galaxis/rcs/ptr/PtrAgvItem.java +++ b/servo/src/main/java/com/galaxis/rcs/ptr/PtrAgvItem.java @@ -18,6 +18,7 @@ import com.yvan.logisticsModel.LogisticsRuntime; import com.yvan.logisticsModel.StaticItem; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.clever.core.Conv; import org.clever.data.redis.Redis; import org.clever.data.redis.RedisAdmin; @@ -243,9 +244,10 @@ public abstract class PtrAgvItem extends ExecutorItem { for (PtrAgvDeviceTask task : runningDeviceTaskList) { task.taskGroupStatus = taskStatus; if (taskStatus == 4) { - - this.runtime.eventManager.fireDeviceTaskCompleteEvent(this, task); - task.taskStatus = 4; + if (task.taskStatus != 4) { + this.runtime.eventManager.fireDeviceTaskCompleteEvent(this, task); + task.taskStatus = 4; + } // 更新计划任务 List planTaskList = planTaskSequence.taskList.stream().filter(pt -> task.movePlanTaskId.equals(pt.getPlanTaskId()) || task.planTaskIdSet.contains(pt.getPlanTaskId())).toList(); @@ -253,9 +255,9 @@ public abstract class PtrAgvItem extends ExecutorItem { if (PlanTaskStatus.FINISHED.toString().equals(planTask.getPlanTaskStatus())) { continue; } - this.runtime.eventManager.firePlanTaskCompleteEvent(this, planTaskSequence, planTask); + planTask.setPlanTaskStatus(PlanTaskStatus.FINISHED.toString()); - planTaskSequence.savePlanTask(planTask); + this.runtime.eventManager.firePlanTaskCompleteEvent(this, planTaskSequence, planTask); } } } @@ -393,7 +395,7 @@ public abstract class PtrAgvItem extends ExecutorItem { statusMap.put("direction", String.valueOf(direction)); statusMap.put("orientation", String.valueOf(orientation)); statusMap.put("soc", this.battery == null ? "-1" : String.valueOf(this.battery.SOC)); - statusMap.put("mode", this.__taskMode.toString()); + statusMap.put("mode", Conv.asString(this.__taskMode)); statusMap.put("taskStatus", getTaskStatus()); redis.hPutAll(statusKey, statusMap);