feat(wms-batch):增加死锁检测和批次分配功能
- 在 IWmsBatchService 接口中添加了 checkDeadlock 和 generateNonDeadlockBatches 方法 - 在 WmsBatchController 中添加了对应的控制器方法 - 在 WmsBatchServiceImpl 中实现了死锁检测和批次分配的逻辑 - 新增了构建依赖图、检测环、拓扑排序等辅助方法
This commit is contained in:
@@ -2,6 +2,7 @@ package com.klp.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -96,4 +97,29 @@ public class WmsBatchController extends BaseController {
|
||||
@PathVariable Long[] batchIds) {
|
||||
return toAjax(iWmsBatchService.deleteWithValidByIds(Arrays.asList(batchIds), true));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检测任务执行是否会产生死锁
|
||||
*
|
||||
* @param rows 任务执行顺序数组
|
||||
* @return 是否存在死锁
|
||||
*/
|
||||
@PostMapping("/check")
|
||||
public R<Boolean> checkDeadlock(@RequestBody List<List<Map<String, Object>>> rows) {
|
||||
boolean hasDeadlock = iWmsBatchService.checkDeadlock(rows);
|
||||
return R.ok(hasDeadlock);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成不会产生死锁的批次分配方案
|
||||
*
|
||||
* @param rows 任务执行顺序数组
|
||||
* @return 批次分配方案
|
||||
*/
|
||||
@PostMapping("/generate")
|
||||
public R<List<String>> generateNonDeadlockBatches(@RequestBody List<List<Map<String, Object>>> rows) {
|
||||
List<String> batches = iWmsBatchService.generateNonDeadlockBatches(rows);
|
||||
return R.ok(batches);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user