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