From 38baf12e7b4689f6c02a02defbdd2c09a333253f Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Mon, 20 Jan 2025 09:45:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0=EF=BC=9A?= =?UTF-8?q?=201.=20=E5=A2=9E=E5=8A=A0=E5=AE=9A=E6=97=B6=E5=99=A8=EF=BC=9A?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=A7=A3=E6=9E=90=E4=B8=8E=E5=8F=91=E9=80=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/web/domain/WcsCommonResponse.java | 43 +++++++ .../com/ruoyi/web/domain/WcsStackerTask.java | 117 ++++++++++++++++++ .../web/domain/WcsStackerTaskRequest.java | 117 ++++++++++++++++++ ruoyi-quartz/pom.xml | 6 + .../com/ruoyi/quartz/task/TaskExecutor.java | 75 ++++++++++- 5 files changed, 356 insertions(+), 2 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsCommonResponse.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsStackerTask.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsStackerTaskRequest.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsCommonResponse.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsCommonResponse.java new file mode 100644 index 00000000..fd59eccc --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsCommonResponse.java @@ -0,0 +1,43 @@ +package com.ruoyi.web.domain; + +/** + * Wcs通用响应信息 + */ +public class WcsCommonResponse { + /** + * code + */ + private Integer code; + /** + * message + */ + private String message; + /** + * data + */ + private Object data; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsStackerTask.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsStackerTask.java new file mode 100644 index 00000000..22e6d5b2 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsStackerTask.java @@ -0,0 +1,117 @@ +package com.ruoyi.web.domain; + +import java.math.BigDecimal; + +/** + * Wcs堆垛机任务详情 + */ +public class WcsStackerTask { + /** + * 任务id + */ + private String taskId; + /** + * 任务类型 + */ + private Integer taskType; + /** + * 任务优先级 + */ + private Integer priority; + /** + * 任务起点 + */ + private String origin; + /** + * 任务中间点 + */ + private String midpoint; + /** + * 任务终点 + */ + private String destination; + /** + * 载具编号 + */ + private String vehicleNo; + /** + * 载具尺寸 + */ + private Integer vehicleSize = 0; + /** + * 总重量 + */ + private BigDecimal weight = BigDecimal.ZERO; + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public Integer getTaskType() { + return taskType; + } + + public void setTaskType(Integer taskType) { + this.taskType = taskType; + } + + public Integer getPriority() { + return priority; + } + + public void setPriority(Integer priority) { + this.priority = priority; + } + + public String getOrigin() { + return origin; + } + + public void setOrigin(String origin) { + this.origin = origin; + } + + public String getMidpoint() { + return midpoint; + } + + public void setMidpoint(String midpoint) { + this.midpoint = midpoint; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String destination) { + this.destination = destination; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public Integer getVehicleSize() { + return vehicleSize; + } + + public void setVehicleSize(Integer vehicleSize) { + this.vehicleSize = vehicleSize; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsStackerTaskRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsStackerTaskRequest.java new file mode 100644 index 00000000..21f72f08 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/WcsStackerTaskRequest.java @@ -0,0 +1,117 @@ +package com.ruoyi.web.domain; + +import java.math.BigDecimal; + +/** + * 向wcs发送堆垛机任务请求 + */ +public class WcsStackerTaskRequest { + /** + * 任务id + */ + private String taskId; + /** + * 任务类型 + */ + private Integer taskType; + /** + * 任务优先级 + */ + private Integer priority; + /** + * 任务起点 + */ + private String origin; + /** + * 任务中间点 + */ + private String midpoint; + /** + * 任务终点 + */ + private String destination; + /** + * 载具编号 + */ + private String vehicleNo; + /** + * 载具尺寸 + */ + private Integer vehicleSize = 0; + /** + * 总重量 + */ + private BigDecimal weight = BigDecimal.ZERO; + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public Integer getTaskType() { + return taskType; + } + + public void setTaskType(Integer taskType) { + this.taskType = taskType; + } + + public Integer getPriority() { + return priority; + } + + public void setPriority(Integer priority) { + this.priority = priority; + } + + public String getOrigin() { + return origin; + } + + public void setOrigin(String origin) { + this.origin = origin; + } + + public String getMidpoint() { + return midpoint; + } + + public void setMidpoint(String midpoint) { + this.midpoint = midpoint; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String destination) { + this.destination = destination; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public Integer getVehicleSize() { + return vehicleSize; + } + + public void setVehicleSize(Integer vehicleSize) { + this.vehicleSize = vehicleSize; + } + + public BigDecimal getWeight() { + return weight; + } + + public void setWeight(BigDecimal weight) { + this.weight = weight; + } +} diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml index 5a4172c3..41c0addd 100644 --- a/ruoyi-quartz/pom.xml +++ b/ruoyi-quartz/pom.xml @@ -38,6 +38,12 @@ com.ruoyi ruoyi-system + + com.ruoyi + ruoyi-admin + 3.8.9 + compile + diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java index 45b94cc2..22c3b669 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java @@ -1,11 +1,18 @@ package com.ruoyi.quartz.task; +import com.alibaba.fastjson2.JSON; import com.ruoyi.app.domain.AppTask; import com.ruoyi.app.domain.AppWcsTask; import com.ruoyi.app.service.IAppTaskService; import com.ruoyi.app.service.IAppWcsTaskService; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.system.service.ISysConfigService; +import com.ruoyi.web.domain.WcsCommonResponse; +import com.ruoyi.web.domain.WcsStackerTaskRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -21,6 +28,10 @@ public class TaskExecutor { private IAppTaskService appTaskService; @Autowired private IAppWcsTaskService appWcsTaskService; + @Autowired + private ISysConfigService sysConfigService; + + protected final Logger logger = LoggerFactory.getLogger(this.getClass()); private final HashMap taskTypeMap = new HashMap() {{ put(1, 1);// 入库 @@ -67,7 +78,7 @@ public class TaskExecutor { newWcsTask.setCreateTime(new Date()); wcsTaskMap.put(appTask.getVehicleId(), newWcsTask); // 更新wms任务信息 - appTask.setWcsTaskId(wcsTaskMap.get(appTask.getVehicleId()).getWcsTaskId()); + appTask.setWcsTaskId(newWcsTask.getWcsTaskId()); appTask.setTaskStatus(1); } // 更新wms任务 @@ -82,6 +93,66 @@ public class TaskExecutor { * 任务状态为0 */ public void sendWcsTask() { - + // 查询出所有的待下发的wcs任务 + AppWcsTask wcsTaskQuery = new AppWcsTask(); + wcsTaskQuery.setWcsTaskStatus(0); + List wcsTaskList = appWcsTaskService.selectAppWcsTaskList(wcsTaskQuery); + if (wcsTaskList == null || wcsTaskList.isEmpty()) { + // 没有待下发的任务,跳过任务 + return; + } + // 获取请求地址 + String url = sysConfigService.selectConfigByKey("wcs.url"); + if (StringUtils.isEmpty(url)) { + // 查询不到wcs任务发送地址 + return; + } + for (AppWcsTask appWcsTask : wcsTaskList) { + // 添加wcs任务请求 + WcsStackerTaskRequest wcsStackerTaskRequest = getWcsStackerTaskRequest(appWcsTask); + // 发送http请求---请求5次 + for (int i = 0; i < 5; i++) { + try { + WcsCommonResponse wcsCommonResponse = JSON.parseObject(HttpUtils.sendPost(url, JSON.toJSONString(wcsStackerTaskRequest)), WcsCommonResponse.class); + + if (wcsCommonResponse == null) { + continue; + } + if (wcsCommonResponse.getCode() == 0) { + // 返回ok + appWcsTask.setWcsTaskStatus(1);// 已经发送成功 + } else { + // 返回error + appWcsTask.setWcsTaskStatus(999);// 任务异常 + } + appWcsTask.setSendTime(new Date()); + appWcsTaskService.updateAppWcsTask(appWcsTask); + // 请求成功,不再发送 + break; + } catch (Exception e) { + logger.error("任务发送异常。{}", JSON.toJSONString(e)); + } + } + } + + + + + } + + /** + * 创建wcs请求 + * @param appWcsTask 任务 + * @return 请求详情 + */ + private WcsStackerTaskRequest getWcsStackerTaskRequest(AppWcsTask appWcsTask) { + WcsStackerTaskRequest wcsStackerTaskRequest = new WcsStackerTaskRequest(); + wcsStackerTaskRequest.setTaskId(appWcsTask.getWcsTaskId()); + wcsStackerTaskRequest.setTaskType(appWcsTask.getWcsTaskType()); + wcsStackerTaskRequest.setPriority(appWcsTask.getTaskPriority()); + wcsStackerTaskRequest.setOrigin(appWcsTask.getOrigin()); + wcsStackerTaskRequest.setDestination(appWcsTask.getDestination()); + wcsStackerTaskRequest.setVehicleNo(appWcsTask.getVehicleId()); + return wcsStackerTaskRequest; } }