From 3fa7cdec6ce44f07a0dc7e1910511ead606990f3 Mon Sep 17 00:00:00 2001 From: zhang <zc857179121@qq.com> Date: 星期四, 11 九月 2025 08:19:53 +0800 Subject: [PATCH] 1 --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java | 67 +++++++++++++ zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java | 23 ++++ zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 72 ++++++++------ zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java | 5 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java | 83 +++++++++++----- 5 files changed, 189 insertions(+), 61 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java index 66562d8..a63b102 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java @@ -150,7 +150,7 @@ String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos); // 绉诲簱 - this.runLocToLoc(locGroupList, agvGroupList, staTaskMemo); + this.runLocToLoc2(locGroupList, agvGroupList, staTaskMemo); } private void autoOut(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) { @@ -446,6 +446,71 @@ mainService.generateBusAndTask(param, memo); } + private void runLocToLoc2(List<Integer> locGroupList, List<String> agvGroupList, String staTaskMemo) { + Integer startRow = Collections.min(locGroupList); + Integer endRow = Collections.max(locGroupList); + + String memo = "DEMO_LOC_" + startRow + "-" + endRow; + + // -2 鏄负浜嗘湇鍔¤緭閫佺嚎 + int availableAgvCount = this.getAvailableAgvCount(agvGroupList) - 1; + + // 鏈�澶� ? 缁刡us杩愯 + if (availableAgvCount <= busService.count(new LambdaQueryWrapper<Bus>().in(Bus::getBusSts, BusStsType.RECEIVE.val(), BusStsType.PROGRESS.val()).in(Bus::getMemo, memo, staTaskMemo))) { + return; + } + + AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString())); + if (null == agvModel) { + return; + } + int maxCapacity = agvModel.getBackpack(); + + // STOCK + LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, LocStsType.STOCK.val()); + if (null != startRow) { + stockWrapper.ge(Loc::getRow, startRow); + } + if (null != endRow) { + stockWrapper.le(Loc::getRow, endRow); + } + List<Loc> stockList = locService.list(stockWrapper); + if (Cools.isEmpty(stockList) || stockList.size() < agvModel.getBackpack()) { + return; + } + Collections.shuffle(stockList); + + // IDLE + LambdaQueryWrapper<Loc> idleWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, LocStsType.IDLE.val()); + if (null != startRow) { + idleWrapper.ge(Loc::getRow, startRow); + } + if (null != endRow) { + idleWrapper.le(Loc::getRow, endRow); + } + List<Loc> idleList = locService.list(idleWrapper); + if (Cools.isEmpty(idleList)) { + return; + } + Collections.shuffle(idleList); + + OpenBusSubmitParam param = new OpenBusSubmitParam(); + param.setBatch(String.valueOf(snowflakeIdWorker.nextId()).substring(13, 19)); + for (int i = 0; i < Math.min(maxCapacity, Math.min(stockList.size(), idleList.size())); i++) { + Loc stockLoc = stockList.get(i); + Loc idleLoc = idleList.get(i); + + TaskDto taskDto = new TaskDto(); + taskDto.setOriLoc(stockLoc.getLocNo()); + taskDto.setDestLoc(idleLoc.getLocNo()); + taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(11, 19)); + + param.getTaskList().add(taskDto); + } + + mainService.generateBusAndTask(param, memo); + } + public static List<String> getStaPrefixes(List<String> staGroupList) { Set<String> rowSet = new HashSet<>(); for (String s : staGroupList) { diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java index 1a2bf2a..545ea54 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java @@ -1502,11 +1502,11 @@ // } // } - List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); - for (Long taskId : taskIds) { - Task task = taskService.getById(taskId); - report(task, agv_11_up.getQrCode(), TaskReportStsType.END); - } +// List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); +// for (Long taskId : taskIds) { +// Task task = taskService.getById(taskId); +// report(task, agv_11_up.getQrCode(), TaskReportStsType.END); +// } } // 鍑哄簱鍙栬揣 @@ -1540,31 +1540,31 @@ // } // } // } - List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); - for (Long taskId : taskIds) { - Task task = taskService.getById(taskId); - report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN); - } +// List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); +// for (Long taskId : taskIds) { +// Task task = taskService.getById(taskId); +// report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN); +// } } //浠庤緭閫佺嚎鍙栬揣瀹屾垚 - if (agv_11_up.getCompleteType().equals(AgvCompleteType.TAKE_FROM_STA_COMPLETE)) { - WebsocketServiceImpl.taskShelfBarcode = agv_11_up.getLocCode(); - List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); - for (Long taskId : taskIds) { - Task task = taskService.getById(taskId); - report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN); - } - } +// if (agv_11_up.getCompleteType().equals(AgvCompleteType.TAKE_FROM_STA_COMPLETE)) { +// WebsocketServiceImpl.taskShelfBarcode = agv_11_up.getLocCode(); +// List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); +// for (Long taskId : taskIds) { +// Task task = taskService.getById(taskId); +// report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN); +// } +// } //寰�杈撻�佺嚎鏀捐揣瀹屾垚 - if (agv_11_up.getCompleteType().equals(AgvCompleteType.RELEASE_FROM_STA_COMPLETE)) { - WebsocketServiceImpl.taskShelfBarcode = agv_11_up.getLocCode(); - List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); - for (Long taskId : taskIds) { - Task task = taskService.getById(taskId); - report(task, agv_11_up.getQrCode(), TaskReportStsType.END); - } - } +// if (agv_11_up.getCompleteType().equals(AgvCompleteType.RELEASE_FROM_STA_COMPLETE)) { +// WebsocketServiceImpl.taskShelfBarcode = agv_11_up.getLocCode(); +// List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo); +// for (Long taskId : taskIds) { +// Task task = taskService.getById(taskId); +// report(task, agv_11_up.getQrCode(), TaskReportStsType.END); +// } +// } // 璺緞瀹屾垚 || 鍏呯數瀹屾垚 if (agv_11_up.getCompleteType().equals(AgvCompleteType.ENTIRE_PATH_COMPLETE) @@ -1604,6 +1604,8 @@ // task for (Segment segment : segmentList) { boolean taskComplete = false; + boolean otbin = false; + Task task = taskService.getById(segment.getTaskId()); assert null != task; @@ -1614,6 +1616,7 @@ switch (Objects.requireNonNull(posType)) { case ORI_STA: case ORI_LOC: + otbin = true; break; case DEST_STA: case DEST_LOC: @@ -1634,19 +1637,24 @@ break; } + if (otbin) { + locService.taskCallBackOtbin(task); + report(task, null, TaskReportStsType.OTBIN); + } + + if (taskComplete) { - locService.taskCallBack(task); + locService.taskCallBackEnd(task); task.setTaskSts(TaskStsType.COMPLETE.val()); task.setEndTime(now); task.setUpdateTime(now); if (!taskService.updateById(task)) { log.error("Task [{}] 鏇存柊澶辫触 锛侊紒锛�", task.getSeqNum()); - } else { - report(task, null, TaskReportStsType.END); - if (task.getSeqNum() != null && task.getSeqNum().contains("SSX-CK")) { - report(task, "1001", TaskReportStsType.COMPLETED); - } + } + report(task, null, TaskReportStsType.END); + if (task.getSeqNum() != null && task.getSeqNum().contains("SSX-CK")) { + report(task, "1001", TaskReportStsType.COMPLETED); } } } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java index 3476c29..855f981 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java @@ -69,6 +69,25 @@ e.printStackTrace(); } taskReportService.updateById(taskReport); + } else if (taskReport.getEventType().equalsIgnoreCase(TaskReportStsType.OTBIN.name) && taskReport.getSeqNum().contains("SSX-RK")) { + String response = null; + try { + response = new HttpHandler.Builder() + .setUri(wcsUrl) + .setPath(wcsPath) + .setJson(JSON.toJSONString(taskReport)) + .build() + .doPost(); + log.info("杩斿洖鍙傛暟锛歿}", response); + taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1); + taskReport.setUpdateTime(new Date()); + taskReport.setCompleted(1); + } catch (IOException e) { + taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1); + taskReport.setUpdateTime(new Date()); + e.printStackTrace(); + } + taskReportService.updateById(taskReport); } else { TaskEvent taskEvent = new TaskEvent(taskReport.getSeqNum(), taskReport.getEventType(), taskReport.getAgvId() + ""); log.info("寮�濮嬩笂鎶ワ細{}", taskEvent); @@ -86,6 +105,10 @@ } } + public static void main(String[] args) { + System.out.println("SSX-RK122".contains("SSX-RK")); + } + /** * 鍒犻櫎瓒呰繃涓�瀹氬ぉ鏁扮殑涓婃姤鍘嗗彶璁板綍 */ diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java index 4b1fc72..cfc71a5 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java @@ -15,5 +15,8 @@ List<Map<String, Object>> selectDigitalLocWhichNeedShow(); - void taskCallBack(Task task); + void taskCallBackOtbin(Task task); + + void taskCallBackEnd(Task task); + } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java index d73227f..e66a2e2 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java @@ -44,7 +44,7 @@ } @Override - public void taskCallBack(Task task) { + public void taskCallBackOtbin(Task task) { if (null == task) { return; } @@ -54,9 +54,7 @@ Date now = new Date(); // loc status Loc oriLoc = null; - Loc destLoc = null; Sta oriSta = null; - Sta destSta = null; switch (Objects.requireNonNull(TaskTypeType.get(task.getTaskTypeEl()))) { case LOC_TO_LOC: oriLoc = this.getById(task.getOriLoc()); @@ -68,14 +66,6 @@ } } - destLoc = this.getById(task.getDestLoc()); - if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) { - destLoc.setLocSts(LocStsType.STOCK.val()); - destLoc.setUpdateTime(now); - if (!this.updateById(destLoc)) { - log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$()); - } - } break; case LOC_TO_STA: oriLoc = this.getById(task.getOriLoc()); @@ -87,14 +77,6 @@ } } - destSta = staService.getById(task.getDestSta()); - if (destSta.getStaSts().equals(StaStsType.READY_RELEASE.val())) { - destSta.setStaSts(StaStsType.STOCK.val()); - destSta.setUpdateTime(now); - if (!staService.updateById(destSta)) { - log.error("Sta [{}] 绔欑偣淇敼鐘舵�佸け璐�", task.getDestSta$()); - } - } break; case STA_TO_LOC: oriSta = staService.getById(task.getOriSta()); @@ -106,14 +88,6 @@ } } - destLoc = this.getById(task.getDestLoc()); - if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) { - destLoc.setLocSts(LocStsType.STOCK.val()); - destLoc.setUpdateTime(now); - if (!this.updateById(destLoc)) { - log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$()); - } - } break; case STA_TO_STA: oriSta = staService.getById(task.getOriSta()); @@ -125,6 +99,61 @@ } } + break; + case TO_CHARGE: + case TO_STANDBY: + case MOVE: + break; + default: + break; + } + + } + + @Override + public void taskCallBackEnd(Task task) { + if (null == task) { + return; + } + if (!task.getTaskSts().equals(TaskStsType.PROGRESS.val())) { + return; + } + Date now = new Date(); + // loc status + Loc destLoc = null; + Sta destSta = null; + switch (Objects.requireNonNull(TaskTypeType.get(task.getTaskTypeEl()))) { + case LOC_TO_LOC: + destLoc = this.getById(task.getDestLoc()); + if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) { + destLoc.setLocSts(LocStsType.STOCK.val()); + destLoc.setUpdateTime(now); + if (!this.updateById(destLoc)) { + log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$()); + } + } + break; + case LOC_TO_STA: + destSta = staService.getById(task.getDestSta()); + if (destSta.getStaSts().equals(StaStsType.READY_RELEASE.val())) { + destSta.setStaSts(StaStsType.STOCK.val()); + destSta.setUpdateTime(now); + if (!staService.updateById(destSta)) { + log.error("Sta [{}] 绔欑偣淇敼鐘舵�佸け璐�", task.getDestSta$()); + } + } + break; + case STA_TO_LOC: + destLoc = this.getById(task.getDestLoc()); + if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) { + destLoc.setLocSts(LocStsType.STOCK.val()); + destLoc.setUpdateTime(now); + if (!this.updateById(destLoc)) { + log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$()); + } + } + break; + case STA_TO_STA: destSta = staService.getById(task.getDestSta()); if (destSta.getStaSts().equals(StaStsType.READY_RELEASE.val())) { destSta.setStaSts(StaStsType.STOCK.val()); -- Gitblit v1.9.1