- 新增 checkDeadlock 方法检测任务执行是否会产生死锁 - 改进 generateNonDeadlockBatches 方法,增加对死锁和进程冲突的处理 - 实现增强版 DFS 检测环,并收集环中的节点- 添加进程依赖图构建和冲突进程对查找功能 - 优化批次分组算法,确保所有任务都被合理分配
68 lines
1.6 KiB
Java
68 lines
1.6 KiB
Java
package com.klp.service;
|
||
|
||
import com.klp.domain.vo.BatchGroupVo;
|
||
import com.klp.domain.vo.WmsBatchVo;
|
||
import com.klp.domain.bo.WmsBatchBo;
|
||
import com.klp.common.core.page.TableDataInfo;
|
||
import com.klp.common.core.domain.PageQuery;
|
||
|
||
import java.util.Collection;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
/**
|
||
* 批次(合并相同工艺的任务)Service接口
|
||
*
|
||
* @author klp
|
||
* @date 2025-08-14
|
||
*/
|
||
public interface IWmsBatchService {
|
||
|
||
/**
|
||
* 查询批次(合并相同工艺的任务)
|
||
*/
|
||
WmsBatchVo queryById(Long batchId);
|
||
|
||
/**
|
||
* 查询批次(合并相同工艺的任务)列表
|
||
*/
|
||
TableDataInfo<WmsBatchVo> queryPageList(WmsBatchBo bo, PageQuery pageQuery);
|
||
|
||
/**
|
||
* 查询批次(合并相同工艺的任务)列表
|
||
*/
|
||
List<WmsBatchVo> queryList(WmsBatchBo bo);
|
||
|
||
/**
|
||
* 新增批次(合并相同工艺的任务)
|
||
*/
|
||
Boolean insertByBo(WmsBatchBo bo);
|
||
|
||
/**
|
||
* 修改批次(合并相同工艺的任务)
|
||
*/
|
||
Boolean updateByBo(WmsBatchBo bo);
|
||
|
||
/**
|
||
* 校验并批量删除批次(合并相同工艺的任务)信息
|
||
*/
|
||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||
|
||
|
||
/**
|
||
* 检测任务执行是否会产生死锁
|
||
*
|
||
* @param rows 任务执行顺序数组
|
||
* @return 是否存在死锁
|
||
*/
|
||
boolean checkDeadlock(List<List<Map<String, Object>>> rows);
|
||
|
||
/**
|
||
* 生成不会产生死锁的批次分配方案
|
||
*
|
||
* @param rows 任务执行顺序数组
|
||
* @return 批次分配方案
|
||
*/
|
||
List<BatchGroupVo> generateNonDeadlockBatches(List<List<Map<String, Object>>> rows);
|
||
}
|