云
10 小时以前 02a1ae81eba7b48223052fb833859f0a65dd7d21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package cn.iocoder.yudao.module.mes.service.pro.bagcode;
 
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeGenerateTaskDO;
 
/**
 * 袋码批量生成任务 Service
 * <p>
 * 只承担超出同步阈值的生成请求:小批量仍在请求线程内同步完成,不进任务、不排队。
 */
public interface MesProBagCodeGenerateTaskService {
 
    /**
     * 提交后台生成任务
     *
     * @param spec      生成参数
     * @param requestId 幂等键,可为空;非空时同一键只会创建一个任务
     * @return 已创建或已存在的任务
     */
    MesProBagCodeGenerateTaskDO submit(MesProBagCodeGenerateSpec spec, String requestId);
 
    /**
     * 获得生成任务
     *
     * @param id 任务编号
     * @return 任务;不存在时抛业务异常
     */
    MesProBagCodeGenerateTaskDO getTask(Long id);
 
    /**
     * 按幂等键获得生成任务
     *
     * @param requestId 幂等键
     * @return 任务;不存在时返回 null
     */
    MesProBagCodeGenerateTaskDO getTaskByRequestId(String requestId);
 
    /**
     * 取消生成任务
     * <p>
     * 任务正在本进程执行时置位取消标记,由执行线程停止并清理部分数据;
     * 已处于终态的任务不允许取消。
     *
     * @param id 任务编号
     */
    void cancel(Long id);
 
    /**
     * 回收因服务重启或异常中断而残留在非终态的任务
     *
     * @return 回收的任务数
     */
    int recycleStaleTasks();
 
}