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