From 3b49880332a3191a652bb51d416e8ed745daf0e9 Mon Sep 17 00:00:00 2001 From: liangzhou <594755172@qq.com> Date: Fri, 17 Jan 2025 16:57:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/app/AppTaskController.java | 43 ++++++--- .../core/controller/BaseController.java | 16 ++++ ruoyi-quartz/pom.xml | 4 + .../com/ruoyi/quartz/task/TaskExecutor.java | 87 +++++++++++++++++++ .../java/com/ruoyi/app/domain/AppTask.java | 14 +++ .../java/com/ruoyi/app/domain/AppTaskBak.java | 13 +++ .../java/com/ruoyi/app/domain/AppWcsTask.java | 2 +- .../ruoyi/app/mapper/AppWcsTaskMapper.java | 7 ++ .../ruoyi/app/service/IAppWcsTaskService.java | 7 ++ .../service/impl/AppWcsTaskServiceImpl.java | 5 ++ .../resources/mapper/app/AppTaskBakMapper.xml | 7 +- .../resources/mapper/app/AppTaskMapper.xml | 11 ++- .../resources/mapper/app/AppWcsTaskMapper.xml | 38 ++++++++ 13 files changed, 241 insertions(+), 13 deletions(-) create mode 100644 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppTaskController.java index 78ff5e47..17d8cf94 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppTaskController.java @@ -2,12 +2,9 @@ package com.ruoyi.web.controller.app; import java.util.*; import javax.servlet.http.HttpServletResponse; - -import cn.hutool.core.bean.BeanUtil; import com.ruoyi.app.domain.AppLocation; import com.ruoyi.app.domain.AppTask; import com.ruoyi.app.domain.AppWcsTask; -import com.ruoyi.app.domain.AppWcsTaskBak; import com.ruoyi.app.service.IAppLocationService; import com.ruoyi.app.service.IAppTaskService; import com.ruoyi.app.service.IAppWcsTaskBakService; @@ -186,24 +183,50 @@ public class AppTaskController extends BaseController thisWmsTaskList.forEach(appTask -> appTask.setTaskStatus(2));// 执行中 appTaskService.batchUpdateAppTask(thisWmsTaskList); } - return success("任务状态反馈成功。"); + return success("反馈任务执行中成功。"); } if (100 == feedBackRequest.getTaskStatus()) { // 删除wcs任务,并添加任务记录 thisFbWcsTask.setFinishTime(new Date()); thisFbWcsTask.setWcsTaskStatus(100); - - // 任务完成,更新对应的wms任务状态,然后添加任务记录 + appWcsTaskBakService.insertAppWcsTaskBak(thisFbWcsTask.toAppWcsTaskBak()); + appWcsTaskService.deleteAppWcsTaskByWcsTaskId(feedBackRequest.getTaskId()); + // 任务完成,更新对应的wms任务状态, if (thisWmsTaskList != null && !thisWmsTaskList.isEmpty()) { // 更新wms任务状态 thisWmsTaskList.forEach(appTask -> appTask.setTaskStatus(5));// 任务完成 appTaskService.batchUpdateAppTask(thisWmsTaskList); } + return success("反正任务完成成功。"); + } + if (998 == feedBackRequest.getTaskStatus()) { + // 任务取消 + thisFbWcsTask.setFinishTime(new Date()); + thisFbWcsTask.setWcsTaskStatus(998); + appWcsTaskBakService.insertAppWcsTaskBak(thisFbWcsTask.toAppWcsTaskBak()); + appWcsTaskService.deleteAppWcsTaskByWcsTaskId(feedBackRequest.getTaskId()); + // 任务取消,更新对应的wms任务状态 + if (thisWmsTaskList != null && !thisWmsTaskList.isEmpty()) { + // 更新wms任务状态 + thisWmsTaskList.forEach(appTask -> appTask.setTaskStatus(8));// wcs取消任务 + appTaskService.batchUpdateAppTask(thisWmsTaskList); + } + return success("反馈任务取消成功。"); + } + if (999 == feedBackRequest.getTaskStatus()) { + // 任务异常 + thisFbWcsTask.setFinishTime(new Date()); + thisFbWcsTask.setWcsTaskStatus(999); + appWcsTaskService.updateAppWcsTask(thisFbWcsTask); + // 任务异常,更新对应的wms任务状态 + if (thisWmsTaskList != null && !thisWmsTaskList.isEmpty()) { + // 更新wms任务状态 + thisWmsTaskList.forEach(appTask -> appTask.setTaskStatus(9));// 任务异常 + appTaskService.batchUpdateAppTask(thisWmsTaskList); + } + return success("反馈任务异常成功。"); } - - - - return success(); + return error("处理任务反馈错误。"); } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java index c131bc47..5c11e805 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java @@ -122,6 +122,14 @@ public class BaseController return AjaxResult.success(data); } + /** + * 返回成功消息 + */ + public AjaxResult success(String message, Object data) + { + return AjaxResult.success(message, data); + } + /** * 返回失败消息 */ @@ -130,6 +138,14 @@ public class BaseController return AjaxResult.error(message); } + + /** + * 返回失败消息 + */ + public AjaxResult error(String message, Object data) + { + return AjaxResult.error(message, data); + } /** * 返回警告消息 */ diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml index a07542ab..5a4172c3 100644 --- a/ruoyi-quartz/pom.xml +++ b/ruoyi-quartz/pom.xml @@ -34,6 +34,10 @@ com.ruoyi ruoyi-common + + com.ruoyi + ruoyi-system + 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 new file mode 100644 index 00000000..45b94cc2 --- /dev/null +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java @@ -0,0 +1,87 @@ +package com.ruoyi.quartz.task; + +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.uuid.IdUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 任务执行器定时类 + */ +@Component("taskExecutor") +public class TaskExecutor { + @Autowired + private IAppTaskService appTaskService; + @Autowired + private IAppWcsTaskService appWcsTaskService; + + private final HashMap taskTypeMap = new HashMap() {{ + put(1, 1);// 入库 + put(2, 2);// 出库 + put(3, 3);// 移库 + }}; + + /** + * 解析wms任务 + * 任务状态为0 + */ + public void executeWmsTask() { + // 查询所有的任务 + List wmsTaskList = appTaskService.selectAppTaskList(new AppTask()); + if (wmsTaskList == null || wmsTaskList.isEmpty()) { + return; + } + // 筛选出待解析的任务 + List executingWmsTaskList = wmsTaskList.stream().filter(task -> task.getTaskStatus() == 0).collect(Collectors.toList()); + // 任务待下发列表 + Map wcsTaskMap = new HashMap<>(); + for (AppTask appTask : executingWmsTaskList) { + if (StringUtils.isNotEmpty(appTask.getPreTask())) { + // 判断前置任务是否已经完成 + List preTaskList = wmsTaskList.stream().filter(task -> Objects.equals(task.getTaskId(), appTask.getPreTask()) && task.getTaskStatus() != 5).collect(Collectors.toList()); + if (!preTaskList.isEmpty()) { + continue; + } + // 判断这个箱子的任务是否已经下发过 + if (wcsTaskMap.containsKey(appTask.getVehicleId())) { + appTask.setWcsTaskId(wcsTaskMap.get(appTask.getVehicleId()).getWcsTaskId()); + appTask.setTaskStatus(1); + continue; + } + // 添加一个新wcs任务 + AppWcsTask newWcsTask = new AppWcsTask(); + newWcsTask.setWcsTaskId("WCS_" + IdUtils.fastUUID()); + newWcsTask.setWcsTaskType(taskTypeMap.get(appTask.getTaskType())); + newWcsTask.setWcsTaskStatus(0); + newWcsTask.setTaskPriority(appTask.getTaskPriority()); + newWcsTask.setVehicleId(appTask.getVehicleId()); + newWcsTask.setOrigin(appTask.getOrigin()); + newWcsTask.setDestination(appTask.getDestination()); + newWcsTask.setCreateTime(new Date()); + wcsTaskMap.put(appTask.getVehicleId(), newWcsTask); + // 更新wms任务信息 + appTask.setWcsTaskId(wcsTaskMap.get(appTask.getVehicleId()).getWcsTaskId()); + appTask.setTaskStatus(1); + } + // 更新wms任务 + appTaskService.batchUpdateAppTask(executingWmsTaskList); + // 存储wcs任务 + appWcsTaskService.batchInsertAppWcsTask(new ArrayList<>(wcsTaskMap.values())); + } + } + + /** + * 发送wcs任务 + * 任务状态为0 + */ + public void sendWcsTask() { + + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTask.java b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTask.java index a4318ce8..3cd4cb2d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTask.java @@ -70,6 +70,10 @@ public class AppTask extends BaseEntity @Excel(name = "操作用户") private String opUser; + /** 前置任务 */ + @Excel(name = "前置任务") + private String preTask; + public void setTaskId(String taskId) { this.taskId = taskId; @@ -188,6 +192,14 @@ public class AppTask extends BaseEntity return opUser; } + public String getPreTask() { + return preTask; + } + + public void setPreTask(String preTask) { + this.preTask = preTask; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -205,6 +217,7 @@ public class AppTask extends BaseEntity .append("opNum", getOpNum()) .append("stockNum", getStockNum()) .append("opUser", getOpUser()) + .append("preTask", getPreTask()) .toString(); } @@ -227,6 +240,7 @@ public class AppTask extends BaseEntity appTaskBak.setOpNum(getOpNum()); appTaskBak.setStockNum(getStockNum()); appTaskBak.setOpUser(getOpUser()); + appTaskBak.setPreTask(getPreTask()); return appTaskBak; } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTaskBak.java b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTaskBak.java index 4ee995f5..7d5721ef 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTaskBak.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppTaskBak.java @@ -70,6 +70,10 @@ public class AppTaskBak extends BaseEntity @Excel(name = "操作用户") private String opUser; + /** 前置任务 */ + @Excel(name = "前置任务") + private String preTask; + public void setTaskId(String taskId) { this.taskId = taskId; @@ -188,6 +192,14 @@ public class AppTaskBak extends BaseEntity return opUser; } + public String getPreTask() { + return preTask; + } + + public void setPreTask(String preTask) { + this.preTask = preTask; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -205,6 +217,7 @@ public class AppTaskBak extends BaseEntity .append("opNum", getOpNum()) .append("stockNum", getStockNum()) .append("opUser", getOpUser()) + .append("preTask", getPreTask()) .toString(); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppWcsTask.java b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppWcsTask.java index 0907357a..5916a23a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppWcsTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/domain/AppWcsTask.java @@ -157,7 +157,7 @@ public class AppWcsTask extends BaseEntity * wcs任务类转化为记录类 * @return 记录 */ - public AppWcsTaskBak toAppWcsTask() { + public AppWcsTaskBak toAppWcsTaskBak() { AppWcsTaskBak appWcsTaskBak = new AppWcsTaskBak(); appWcsTaskBak.setWcsTaskId(getWcsTaskId()); appWcsTaskBak.setWcsTaskStatus(getWcsTaskStatus()); diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/mapper/AppWcsTaskMapper.java b/ruoyi-system/src/main/java/com/ruoyi/app/mapper/AppWcsTaskMapper.java index c55a1be7..777c9730 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/mapper/AppWcsTaskMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/mapper/AppWcsTaskMapper.java @@ -36,6 +36,13 @@ public interface AppWcsTaskMapper */ public int insertAppWcsTask(AppWcsTask appWcsTask); + /** + * 批量新增 + * @param appWcsTaskList 任务 + * @return 结果 + */ + int batchInsertAppWcsTask(List appWcsTaskList); + /** * 修改【请填写功能名称】 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppWcsTaskService.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppWcsTaskService.java index d9145e28..8f128420 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppWcsTaskService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/IAppWcsTaskService.java @@ -36,6 +36,13 @@ public interface IAppWcsTaskService */ public int insertAppWcsTask(AppWcsTask appWcsTask); + /** + * 批量新增 + * @param appWcsTaskList 任务 + * @return 结果 + */ + int batchInsertAppWcsTask(List appWcsTaskList); + /** * 修改【请填写功能名称】 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppWcsTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppWcsTaskServiceImpl.java index 926a9856..9a723d34 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppWcsTaskServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/app/service/impl/AppWcsTaskServiceImpl.java @@ -58,6 +58,11 @@ public class AppWcsTaskServiceImpl implements IAppWcsTaskService return appWcsTaskMapper.insertAppWcsTask(appWcsTask); } + @Override + public int batchInsertAppWcsTask(List appWcsTaskList) { + return appWcsTaskMapper.batchInsertAppWcsTask(appWcsTaskList); + } + /** * 修改【请填写功能名称】 * diff --git a/ruoyi-system/src/main/resources/mapper/app/AppTaskBakMapper.xml b/ruoyi-system/src/main/resources/mapper/app/AppTaskBakMapper.xml index 985bb323..4a53c0d1 100644 --- a/ruoyi-system/src/main/resources/mapper/app/AppTaskBakMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/app/AppTaskBakMapper.xml @@ -19,10 +19,11 @@ + - select task_id, task_type, task_status, task_priority, vehicle_id, origin, destination, wcs_task_id, create_time, finish_time, goods_id, op_num, stock_num, op_user from app_task_bak + select task_id, task_type, task_status, task_priority, vehicle_id, origin, destination, wcs_task_id, create_time, finish_time, goods_id, op_num, stock_num, op_user, pre_task from app_task_bak @@ -65,6 +67,7 @@ op_num, stock_num, op_user, + pre_task, #{taskId}, @@ -81,6 +84,7 @@ #{opNum}, #{stockNum}, #{opUser}, + #{preTask}, @@ -100,6 +104,7 @@ op_num = #{opNum}, stock_num = #{stockNum}, op_user = #{opUser}, + pre_task = #{preTask}, where task_id = #{taskId} diff --git a/ruoyi-system/src/main/resources/mapper/app/AppTaskMapper.xml b/ruoyi-system/src/main/resources/mapper/app/AppTaskMapper.xml index 12c2d74c..20680cc5 100644 --- a/ruoyi-system/src/main/resources/mapper/app/AppTaskMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/app/AppTaskMapper.xml @@ -19,10 +19,12 @@ + + - select task_id, task_type, task_status, task_priority, vehicle_id, origin, destination, wcs_task_id, create_time, finish_time, goods_id, op_num, stock_num, op_user from app_task + select task_id, task_type, task_status, task_priority, vehicle_id, origin, destination, wcs_task_id, create_time, finish_time, goods_id, op_num, stock_num, op_user, pre_task from app_task @@ -65,6 +68,7 @@ op_num, stock_num, op_user, + pre_task, #{taskId}, @@ -81,6 +85,7 @@ #{opNum}, #{stockNum}, #{opUser}, + #{preTask}, @@ -103,6 +108,7 @@ op_num, stock_num, op_user, + pre_task, ) values @@ -122,6 +128,7 @@ #{appTask.opNum}, #{appTask.stockNum}, #{appTask.opUser}, + #{appTask.preTask}, ) @@ -144,6 +151,7 @@ op_num = #{opNum}, stock_num = #{stockNum}, op_user = #{opUser}, + pre_task = #{preTask}, where task_id = #{taskId} @@ -165,6 +173,7 @@ op_num = #{appTask.opNum}, stock_num = #{appTask.stockNum}, op_user = #{appTask.opUser}, + pre_task = #{appTask.preTask}, where task_id = #{appTask.taskId} diff --git a/ruoyi-system/src/main/resources/mapper/app/AppWcsTaskMapper.xml b/ruoyi-system/src/main/resources/mapper/app/AppWcsTaskMapper.xml index 606ba194..e8d443bc 100644 --- a/ruoyi-system/src/main/resources/mapper/app/AppWcsTaskMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/app/AppWcsTaskMapper.xml @@ -71,6 +71,44 @@ + + insert into app_task + + ( + + wcs_task_id, + wcs_task_status, + wcs_task_type, + task_priority, + vehicle_id, + origin, + destination, + create_time, + send_time, + finish_time, + remark, + + ) + values + ( + + #{appWcsTask.wcsTaskId}, + #{appWcsTask.wcsTaskStatus}, + #{appWcsTask.wcsTaskType}, + #{appWcsTask.taskPriority}, + #{appWcsTask.vehicleId}, + #{appWcsTask.origin}, + #{appWcsTask.destination}, + #{appWcsTask.createTime}, + #{appWcsTask.sendTime}, + #{appWcsTask.finishTime}, + #{appWcsTask.remark}, + + ) + + + + update app_wcs_task