From 2ddf6fc24333df35bd1ac15848b917336d533d53 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 09 九月 2025 09:22:43 +0800
Subject: [PATCH] 1
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java | 21 ++++-
zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java | 46 ++++++++--
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 17 ++++
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java | 9 ++
zy-acs-manager/src/main/resources/application.yml | 4
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java | 1
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java | 93 ++++++++++------------
7 files changed, 123 insertions(+), 68 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 c6081b3..66562d8 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
@@ -85,7 +85,7 @@
this.autoRun(LocGroupConstant.LEFT_LOC_ROW_LIST, StaGroupConstant.LEFT_STA_ROW_LIST, AgvGroupConstant.SECOND_AGV_GROUP);
break;
case '5':
- this.autoRun(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP);
+ this.autoRun2(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP);
break;
default:
break;
@@ -111,9 +111,9 @@
case '4':
this.autoOut(LocGroupConstant.LEFT_LOC_ROW_LIST, StaGroupConstant.LEFT_STA_ROW_LIST, AgvGroupConstant.SECOND_AGV_GROUP);
break;
- case '5':
- this.autoOut(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP);
- break;
+// case '5':
+// this.autoOut(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP);
+// break;
default:
break;
}
@@ -140,6 +140,19 @@
this.runLocToLoc(locGroupList, agvGroupList, staTaskMemo);
}
+ private void autoRun2(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) {
+ int availableAgvCount = this.getAvailableAgvCount(agvGroupList);
+ if (0 == availableAgvCount) {
+ return;
+ }
+
+ List<String> staPreNos = getStaPrefixes(staGroupList);
+ String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos);
+
+ // 绉诲簱
+ this.runLocToLoc(locGroupList, agvGroupList, staTaskMemo);
+ }
+
private void autoOut(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) {
int availableAgvCount = this.getAvailableAgvCount(agvGroupList);
if (0 == availableAgvCount) {
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 de1bcc9..1a2bf2a 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
@@ -137,6 +137,7 @@
throw new BusinessException("Internal Server Error!");
}
Boolean locStaStatusCheck = configService.getVal("LOC_STA_STATUS_CHECK", Boolean.class, true);
+ Integer locStaTaskNum = configService.getVal("LOC_STA_TASK_NUM", Integer.class, 2);
// 淇濆瓨浠诲姟
@@ -190,6 +191,11 @@
if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) {
throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
}
+ } else {
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getDestSta, destSta.getId()).in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()));
+ if (!Cools.isEmpty(list) && list.size() >= locStaTaskNum) {
+ throw new BusinessException("destSta锛�" + task.getDestSta$() + " task more");
+ }
}
destSta.setStaSts(StaStsType.READY_RELEASE.val());
destSta.setUpdateTime(now);
@@ -237,6 +243,11 @@
if (destSta.getStaTypeIsCheck() != 1) {
if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) {
throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
+ }
+ } else {
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getDestSta, destSta.getId()).in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()));
+ if (!Cools.isEmpty(list) && list.size() >= locStaTaskNum) {
+ throw new BusinessException("destSta锛�" + task.getDestSta$() + " task more");
}
}
destSta.setStaSts(StaStsType.READY_RELEASE.val());
@@ -1633,6 +1644,9 @@
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);
+ }
}
}
}
@@ -1676,7 +1690,7 @@
}
List<TaskReport> list = taskReportService.list(new LambdaQueryWrapper<TaskReport>().eq(TaskReport::getSeqNum, task.getSeqNum()).eq(TaskReport::getBusNo, task.getBusId$()).eq(TaskReport::getTaskSts, taskReportStsType.status));
if (!Cools.isEmpty(list)) {
- log.info("TaskReport [{}] 宸查噸澶嶏紝涓嶅啀鎻掑叆 ==========>> ", JSON.toJSONString(task));
+ log.info("TaskReport [{},{}] 宸查噸澶嶏紝涓嶅啀鎻掑叆 ==========>> ", taskReportStsType, JSON.toJSONString(task));
return;
}
TaskReport taskReport = new TaskReport();
@@ -1691,6 +1705,7 @@
taskReport.setEventType(taskReportStsType.name);
taskReport.setSeqNum(task.getSeqNum());
taskReport.setZpallet(task.getZpallet());
+
if (!taskReportService.save(taskReport)) {
log.info("TaskReport [{}] 鎻掑叆澶辫触 ==========>> ", JSON.toJSONString(taskReport));
} else {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java
index 400c064..895d026 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java
@@ -1,6 +1,7 @@
package com.zy.acs.manager.core.service;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.SnowflakeIdWorker;
import com.zy.acs.manager.common.domain.TaskDto;
@@ -9,10 +10,12 @@
import com.zy.acs.manager.manager.entity.Loc;
import com.zy.acs.manager.manager.entity.Sta;
import com.zy.acs.manager.manager.entity.Task;
+import com.zy.acs.manager.manager.enums.TaskStsType;
import com.zy.acs.manager.manager.enums.TaskTypeType;
import com.zy.acs.manager.manager.service.CodeService;
import com.zy.acs.manager.manager.service.LocService;
import com.zy.acs.manager.manager.service.StaService;
+import com.zy.acs.manager.manager.service.impl.TaskServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -36,6 +39,8 @@
private MapService mapService;
@Autowired
private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private TaskServiceImpl taskService;
public List<Task> validTaskDtoList(List<TaskDto> taskDtoList) {
List<Task> taskList = new ArrayList<>();
@@ -49,6 +54,10 @@
task.setSeqNum(taskDto.getSeqNum());
task.setPriority(taskDto.getPriority());
+ List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getSeqNum, taskDto.getSeqNum()).in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()));
+ if (!Cools.isEmpty(list)){
+ throw new BusinessException("Task seqNum: " + taskDto.getSeqNum() + " is already exists!");
+ }
// ori --------------------------
if (!Cools.isEmpty(taskDto.getOriLoc())) {
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 4fe348f..3476c29 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
@@ -8,6 +8,7 @@
import com.zy.acs.manager.core.utils.HttpHandler;
import com.zy.acs.manager.manager.entity.TaskReport;
import com.zy.acs.manager.manager.entity.TaskReportLog;
+import com.zy.acs.manager.manager.enums.TaskReportStsType;
import com.zy.acs.manager.manager.service.TaskReportLogService;
import com.zy.acs.manager.manager.service.TaskReportService;
import com.zy.acs.manager.system.service.ConfigService;
@@ -44,19 +45,43 @@
if (report) {
String wmsUrl = configService.getVal("WMS_URL", String.class);
String wmsPath = configService.getVal("WMS_PATH", String.class);
+
+ String wcsUrl = configService.getVal("WCS_URL", String.class);
+ String wcsPath = configService.getVal("WCS_TASK_REPORT", String.class);
List<TaskReport> list = taskReportService.list(new LambdaQueryWrapper<TaskReport>().eq(TaskReport::getCompleted, 0).le(TaskReport::getReportTimes, 3));
for (TaskReport taskReport : list) {
- TaskEvent taskEvent = new TaskEvent(taskReport.getSeqNum(), taskReport.getEventType(), taskReport.getAgvId() + "");
- log.info("寮�濮嬩笂鎶ワ細{}", taskEvent);
- if (report(taskEvent, wmsUrl, wmsPath)) {
- taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
- taskReport.setUpdateTime(new Date());
- taskReport.setCompleted(1);
+ if (taskReport.getEventType().equalsIgnoreCase(TaskReportStsType.COMPLETED.name)) {
+ 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 {
- taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
- taskReport.setUpdateTime(new Date());
+ TaskEvent taskEvent = new TaskEvent(taskReport.getSeqNum(), taskReport.getEventType(), taskReport.getAgvId() + "");
+ log.info("寮�濮嬩笂鎶ワ細{}", taskEvent);
+ if (report(taskEvent, wmsUrl, wmsPath)) {
+ taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
+ taskReport.setUpdateTime(new Date());
+ taskReport.setCompleted(1);
+ } else {
+ taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
+ taskReport.setUpdateTime(new Date());
+ }
+ taskReportService.updateById(taskReport);
}
- taskReportService.updateById(taskReport);
}
}
}
@@ -93,13 +118,12 @@
response = new HttpHandler.Builder()
.setUri(wmsUrl)
.setPath(wmsPath)
-
.setJson(JSON.toJSONString(taskReport))
.build()
.doPost();
log.info("杩斿洖鍙傛暟锛歿}", response);
JSONObject jsonObject = JSON.parseObject(response);
- if (jsonObject != null && jsonObject.getInteger("code").equals(200)) {
+ if (jsonObject != null && jsonObject.get("code") != null && jsonObject.getInteger("code").equals(200)) {
return true;
}
} catch (IOException e) {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java
index 62c2e96..04dfbb9 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java
@@ -56,20 +56,17 @@
//@PreAuthorize("hasAuthority('open:bus:submit')")
@PostMapping("/bus/submit")
@OperationLog("generate task from open api")
- public R save(@RequestBody OpenBusSubmitParam param) {
- if (!configService.getVal("TaskAssignMode", Boolean.class)) {
- for (TaskDto taskDto : param.getTaskList()) {
- if (Cools.isEmpty(taskDto.getSeqNum())) {
- return R.error("缂哄け浠诲姟鍙�");
- }
- if(Cools.isEmpty(taskDto.getPriority())){
- taskDto.setPriority(1);
- }
+ public synchronized R save(@RequestBody OpenBusSubmitParam param) {
+ for (TaskDto taskDto : param.getTaskList()) {
+ if (Cools.isEmpty(taskDto.getSeqNum())) {
+ return R.error("缂哄け浠诲姟鍙�");
}
- mainService.generateBusAndTask(param, null);
- return R.ok("generate tasks success");
+ if (Cools.isEmpty(taskDto.getPriority())) {
+ taskDto.setPriority(1);
+ }
}
- return R.error("generate tasks error");
+ mainService.generateBusAndTask(param, null);
+ return R.ok("generate tasks success");
}
@@ -141,45 +138,41 @@
@PostMapping("/loc/one")
@OperationLog("one loc")
public R emptyLoc(@RequestBody Map<String, Object> map) {
- if (!configService.getVal("TaskAssignMode", Boolean.class)) {
- if (configService.getVal("InAndOutMode", Boolean.class, false)) {
- String staNo = map.get("staNo").toString();
- Integer startRow = null;
- Integer endRow = null;
- if (staNo.equals("101-2") || staNo.equals("101-3") || staNo.equals("102-2") || staNo.equals("102-3")) {
- startRow = Collections.min(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
- endRow = Collections.max(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
- } else if (staNo.equals("103-2") || staNo.equals("103-3") || staNo.equals("104-2") || staNo.equals("104-3")) {
- startRow = Collections.min(LocGroupConstant.RIGHT_LOC_ROW_LIST);
- endRow = Collections.max(LocGroupConstant.RIGHT_LOC_ROW_LIST);
- } else if (staNo.equals("105-2") || staNo.equals("105-3") || staNo.equals("106-2") || staNo.equals("106-3")) {
- startRow = Collections.min(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
- endRow = Collections.max(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
- } else if (staNo.equals("107-2") || staNo.equals("107-3") || staNo.equals("108-2") || staNo.equals("108-3")) {
- startRow = Collections.min(LocGroupConstant.LEFT_LOC_ROW_LIST);
- endRow = Collections.max(LocGroupConstant.LEFT_LOC_ROW_LIST);
- } else if (staNo.equals("1007") || staNo.equals("1001")) {
- startRow = Collections.min(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
- endRow = Collections.max(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
- } else {
- return R.error("staNo is not support");
- }
- LambdaQueryWrapper<Loc> idleWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, Long.parseLong(map.get("sts").toString()));
- 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 R.error("娌$┖搴撲綅");
- }
- Collections.shuffle(idleList);
- return R.ok().add(idleList.get(0));
- }
+
+ String staNo = map.get("staNo").toString();
+ Integer startRow = null;
+ Integer endRow = null;
+ if (staNo.equals("101-2") || staNo.equals("101-3") || staNo.equals("102-2") || staNo.equals("102-3")) {
+ startRow = Collections.min(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
+ endRow = Collections.max(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
+ } else if (staNo.equals("103-2") || staNo.equals("103-3") || staNo.equals("104-2") || staNo.equals("104-3")) {
+ startRow = Collections.min(LocGroupConstant.RIGHT_LOC_ROW_LIST);
+ endRow = Collections.max(LocGroupConstant.RIGHT_LOC_ROW_LIST);
+ } else if (staNo.equals("105-2") || staNo.equals("105-3") || staNo.equals("106-2") || staNo.equals("106-3")) {
+ startRow = Collections.min(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
+ endRow = Collections.max(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
+ } else if (staNo.equals("107-2") || staNo.equals("107-3") || staNo.equals("108-2") || staNo.equals("108-3")) {
+ startRow = Collections.min(LocGroupConstant.LEFT_LOC_ROW_LIST);
+ endRow = Collections.max(LocGroupConstant.LEFT_LOC_ROW_LIST);
+ } else if (staNo.equals("1007") || staNo.equals("1001")) {
+ startRow = Collections.min(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
+ endRow = Collections.max(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
+ } else {
+ return R.error("staNo is not support");
}
- return R.error("鏈紑鍚妯″紡");
+ LambdaQueryWrapper<Loc> idleWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, Long.parseLong(map.get("sts").toString()));
+ 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 R.error("娌$┖搴撲綅");
+ }
+ Collections.shuffle(idleList);
+ return R.ok().add(idleList.get(0));
}
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java
index 28a9efc..a4b388a 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java
@@ -17,6 +17,7 @@
START(1,"START"),
OTBIN(5,"OTBIN"),
END(10, "END"),
+ COMPLETED(15, "COMPLETED"),
;
public int status;
diff --git a/zy-acs-manager/src/main/resources/application.yml b/zy-acs-manager/src/main/resources/application.yml
index f99e46b..8d8b003 100644
--- a/zy-acs-manager/src/main/resources/application.yml
+++ b/zy-acs-manager/src/main/resources/application.yml
@@ -8,7 +8,7 @@
static-path-pattern: /**
datasource:
driver-class-name: com.mysql.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/jbly?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://10.10.10.200:3306/jbly?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: xltys1995
type: com.alibaba.druid.pool.DruidDataSource
@@ -43,7 +43,7 @@
enabled: false
redis:
- host: 127.0.0.1
+ host: 10.10.10.200
password: xltys1995
port: 6379
max: 30
--
Gitblit v1.9.1