feat(wms-batch):增加死锁检测和批次分配功能

- 在 IWmsBatchService 接口中添加了 checkDeadlock 和 generateNonDeadlockBatches 方法
- 在 WmsBatchController 中添加了对应的控制器方法
- 在 WmsBatchServiceImpl 中实现了死锁检测和批次分配的逻辑
- 新增了构建依赖图、检测环、拓扑排序等辅助方法
This commit is contained in:
2025-08-14 16:35:46 +08:00
parent 970c550590
commit add788c148
3 changed files with 295 additions and 3 deletions

View File

@@ -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);
}
}