diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/AgvTaskRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/AgvTaskRepository.java index c6d4be3..c1bc261 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/AgvTaskRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/AgvTaskRepository.java @@ -35,8 +35,8 @@ public interface AgvTaskRepository extends JpaRepository, JpaSpec * * @param stockCode 容器 */ - @Query(value = " from AgvTask agv where agv.stockCode=:stockCode and agv.status not in ('CANCEL','FINISH') ") - List findRepeat(String stockCode); + @Query(value = " from AgvTask agv where agv.stockCode=:stockCode and agv.startSlotCode=:srcPointCode and agv.endSlotCode=:endPointCode and agv.status not in ('CANCEL','FINISH') ") + List findRepeat(String stockCode,String srcPointCode,String endPointCode); /** * 查询待执行的备料、叫料、叫料返库任务 diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/AgvTaskService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/AgvTaskService.java index b9acbb5..06555ed 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/AgvTaskService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/AgvTaskService.java @@ -106,7 +106,7 @@ public interface AgvTaskService { * 根据容器查询任务 * @param stockCode 容器 */ - List findRepeat(String stockCode); + List findRepeat(String stockCode, String srcPointCode, String endPointCode); /** * 查询打开的任务并轮询下发 diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java index 9abee92..dee7056 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java @@ -135,8 +135,8 @@ public class AgvTaskServiceImpl implements AgvTaskService { } @Override - public List findRepeat(String stockCode) { - return agvTaskRepository.findRepeat(stockCode); + public List findRepeat(String stockCode, String srcPointCode, String endPointCode) { + return agvTaskRepository.findRepeat(stockCode, srcPointCode, endPointCode); } @Override diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/KMReServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/KMReServiceImpl.java index 3939085..1c6e4db 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/KMReServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/KMReServiceImpl.java @@ -520,7 +520,7 @@ public class KMReServiceImpl implements KMReService { * @param agvTask 任务 */ private synchronized void handleResendTask(AgvTask agvTask) { - List repeatList = agvTaskService.findRepeat(agvTask.getStockCode()); + List repeatList = agvTaskService.findRepeat(agvTask.getStockCode(),agvTask.getStartSlotCode(),agvTask.getEndSlotCode()); if (!repeatList.isEmpty()) { throw new BadRequestException("任务已重新生成,请勿重复操作! "); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MesServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MesServiceImpl.java index ea5529b..dd2bfb6 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MesServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/MesServiceImpl.java @@ -253,7 +253,7 @@ public class MesServiceImpl implements MesService { return pickDetail; } - private void moveCpOffUp(String pointCode) { + private synchronized void moveCpOffUp(String pointCode) { // 如果成品入库缓存区没有空车,则从入库区查询 List emptyStockList = stockService.findByKongStock(AreaNameDic.CPRKQ); @@ -267,10 +267,10 @@ public class MesServiceImpl implements MesService { Point endPoint = pointService.validatePoint(pointCode);//终点 // 创建并下发任务 - List agvTaskList = agvTaskService.findRepeat(emptyStock.getCode()); + List agvTaskList = agvTaskService.findRepeat(emptyStock.getCode(),srcPoint.getCode(),endPoint.getCode()); if (agvTaskList.isEmpty()) { //生成任务 - AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.EMPTY_IN, emptyStock, srcPoint, endPoint, "RACK_MOVE"); + AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Up, emptyStock, srcPoint, endPoint, "RACK_MOVE"); // 更新点位状态 pointService.usedPoint(endPoint); @@ -280,7 +280,7 @@ public class MesServiceImpl implements MesService { } } - private void moveCpOffLine(TransTask transTask) { + private synchronized void moveCpOffLine(TransTask transTask) { Point srcPoint = pointService.validatePoint(transTask.getPointCode());//起点 Stock stock = stockService.findByPointCode(srcPoint.getCode()); if (stock == null) { @@ -291,14 +291,19 @@ public class MesServiceImpl implements MesService { throw new BadRequestException("成品入库区没有空闲点位!"); } Point endPoint = endPointList.get(0); - //生成任务 - AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, stock, srcPoint, endPoint, "RACK_MOVE"); + // 创建并下发任务 + List agvTaskList = agvTaskService.findRepeat(stock.getCode(),srcPoint.getCode(),endPoint.getCode()); + if (agvTaskList.isEmpty()) { + AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.Cp_Off_Line, stock, srcPoint, endPoint, "RACK_MOVE"); + + //占用容器 + stockService.usedStock(stock, srcPoint, BaseStatus.USED); + + //下发任务 + kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskHjJson(agvTask)); + } - //占用容器 - stockService.usedStock(stock, srcPoint, BaseStatus.USED); - //下发任务 - kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskHjJson(agvTask)); } private void moveFxOffLine(TransTask transTask) { diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java index d8d66eb..41f49ae 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/TaskServiceImpl.java @@ -211,7 +211,7 @@ public class TaskServiceImpl implements TaskService { List taskList = this.findByPickNotAllTask(pick.getId()); for (Task task : taskList) { /*生成搬运任务*/ - List agvTaskList = agvTaskService.findRepeat(task.getSrcStockCode()); + List agvTaskList = agvTaskService.findRepeat(task.getSrcStockCode(),task.getSrcPointCode(),task.getDstPointCode()); if (agvTaskList.isEmpty()) { //创建任务 agvTask = agvTaskService.createAgvTask(BizStatus.PICK, task.getSrcStock(), task.getSrcPoint(), task.getDstPoint(), "FORKLIFT_MOVE"); @@ -248,12 +248,6 @@ public class TaskServiceImpl implements TaskService { //容器 Stock stock = emptyStock.get(0); - //有任务则直接返回 - List agvTaskList = agvTaskService.findRepeat(stock.getCode()); - if (!agvTaskList.isEmpty()) { - return; - } - //起点 Point srcPoint = stock.getPoint(); @@ -264,6 +258,14 @@ public class TaskServiceImpl implements TaskService { } Point endPoint = pointList.get(0); + //有任务则直接返回 + List agvTaskList = agvTaskService.findRepeat(stock.getCode(),srcPoint.getCode(),endPoint.getCode()); + if (!agvTaskList.isEmpty()) { + return; + } + + + //创建任务 agvTaskService.createAgvTask(BizStatus.CALL_RETURN, stock, srcPoint, endPoint, "RACK_MOVE");