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