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 9888c7c..9a80d9c 100644 --- a/servo/src/main/java/com/galaxis/rcs/plan/PlanTaskSequence.java +++ b/servo/src/main/java/com/galaxis/rcs/plan/PlanTaskSequence.java @@ -188,4 +188,8 @@ public class PlanTaskSequence { // 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/yvan/logisticsModel/PtrAgvItem.java b/servo/src/main/java/com/yvan/logisticsModel/PtrAgvItem.java index 2326091..7049a31 100644 --- a/servo/src/main/java/com/yvan/logisticsModel/PtrAgvItem.java +++ b/servo/src/main/java/com/yvan/logisticsModel/PtrAgvItem.java @@ -261,40 +261,42 @@ public abstract class PtrAgvItem extends ExecutorItem { oldDirection, direction); } + boolean needCompute = false; // 从 runningDeviceTaskList 里面,找到完成到什么阶段 // 比如 (1,2) -> (2,2) -> (3,2) , 如果 updatePosition=3,2 ,那么前2个任务都要完成 - int finishTargetIndex = -1; - for (int i = 0; i < runningDeviceTaskList.size(); i++) { - PtrAgvDeviceTask task = runningDeviceTaskList.get(i); - if (task.checkLogicX == logicX && task.checkLogicY == logicY) { - finishTargetIndex = i; - break; - } - } - - boolean needCompute = false; - - if (finishTargetIndex > 0) { - needCompute = true; - // 标记前面的任务都完成了 - for (int i = 0; i < finishTargetIndex; i++) { + if (this.runningDeviceTaskList != null && !this.runningDeviceTaskList.isEmpty() && + this.planTaskSequence != null && !this.planTaskSequence.isEmpty()) { + int finishTargetIndex = -1; + for (int i = 0; i < runningDeviceTaskList.size(); i++) { PtrAgvDeviceTask task = runningDeviceTaskList.get(i); - - task.taskStatus = 4; // 标记为完成 - task.taskGroupStatus = 4; // 标记为任务组完成 - fireEvent(AgvEventType.DEVICE_TASK_COMPLETE, this, task); - - // 更新计划任务 - RcsTaskPlan planTask = planTaskSequence.getByPlanTaskId(task.planTaskId); - if (planTask != null) { - planTask.setPlanTaskStatus(PlanTaskStatus.FINISHED.toString()); - planTaskSequence.savePlanTask(planTask); + if (task.checkLogicX == logicX && task.checkLogicY == logicY) { + finishTargetIndex = i; + break; } } - if (planTaskSequence.isAllCompleted()) { - fireEvent(AgvEventType.PLAN_COMPLETE, this); - planTaskSequence = null; + if (finishTargetIndex > 0) { + needCompute = true; + // 标记前面的任务都完成了 + for (int i = 0; i < finishTargetIndex; i++) { + PtrAgvDeviceTask task = runningDeviceTaskList.get(i); + + task.taskStatus = 4; // 标记为完成 + task.taskGroupStatus = 4; // 标记为任务组完成 + fireEvent(AgvEventType.DEVICE_TASK_COMPLETE, this, task); + + // 更新计划任务 + RcsTaskPlan planTask = planTaskSequence.getByPlanTaskId(task.planTaskId); + if (planTask != null) { + planTask.setPlanTaskStatus(PlanTaskStatus.FINISHED.toString()); + planTaskSequence.savePlanTask(planTask); + } + } + + if (planTaskSequence.isAllCompleted()) { + fireEvent(AgvEventType.PLAN_COMPLETE, this); + planTaskSequence = null; + } } }