2 天以前 ac2545f3cd01f3061a107e4980fc6fa59eaeaa6b
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package cn.iocoder.yudao.module.mes.service.pro.bagcode;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeBindReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeGenerateReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeReplaceReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeReplaceRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO;
import jakarta.validation.Valid;
 
import java.util.Collection;
import java.util.List;
 
/**
 * MES 袋码赋码(一袋一码)Service 接口
 * <p>
 * 根据批次信息自动生成唯一二维码数据包,支持批量导出交付印刷,满足唯一性、可识别性、可追溯性要求。
 *
 * @author 超级管理员
 */
public interface MesProBagCodeService {
 
    /**
     * 生成袋码数据包(码值 = 批次号-袋序号),并回写批次袋码数量
     *
     * @param generateReqVO 生成信息
     * @return 生成组 UUID(标记同一次生成的数据包)
     */
    String generateBagCodes(@Valid MesProBagCodeGenerateReqVO generateReqVO);
 
    /**
     * 作废破损袋码并在原批次生成等量替换袋码
     */
    MesProBagCodeReplaceRespVO replaceBagCodes(@Valid MesProBagCodeReplaceReqVO replaceReqVO);
 
    /**
     * 删除生成组(仅"已生成"状态且未绑定托盘的袋码允许删除)
     *
     * @param uuid 生成组 UUID
     */
    void deleteBagCodesByUuid(String uuid);
 
    /**
     * 袋码绑定托盘(需同一批次、未绑定过,且不超过托盘可装袋数)
     *
     * @param bindReqVO 绑定信息
     */
    void bindPallet(@Valid MesProBagCodeBindReqVO bindReqVO);
 
    /**
     * 袋码解绑托盘
     *
     * @param bindReqVO 解绑信息
     */
    void unbindPallet(@Valid MesProBagCodeBindReqVO bindReqVO);
 
    /**
     * 批量标记袋码为已导出印刷(交付印刷)
     *
     * @param ids 袋码编号列表
     */
    void markBagCodesPrinted(Collection<Long> ids);
 
    /**
     * 获得袋码
     *
     * @param id 编号
     * @return 袋码
     */
    MesProBagCodeDO getBagCode(Long id);
 
    /**
     * 校验袋码存在
     *
     * @param id 编号
     * @return 袋码
     */
    MesProBagCodeDO validateBagCodeExists(Long id);
 
    /**
     * 根据袋码(二维码内容)查询袋码,用于扫码追溯
     *
     * @param code 袋码
     * @return 袋码,不存在返回 null
     */
    MesProBagCodeDO getBagCodeByCode(String code);
 
    /**
     * 查询袋码替换记录
     */
    cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeReplaceDO getReplacementByOldBagCodeId(Long oldBagCodeId);
 
    cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeReplaceDO getReplacementByNewBagCodeId(Long newBagCodeId);
 
    /**
     * 获得袋码分页
     *
     * @param pageReqVO 分页查询
     * @return 袋码分页
     */
    PageResult<MesProBagCodeDO> getBagCodePage(MesProBagCodePageReqVO pageReqVO);
 
    /**
     * 获得生成组的袋码列表
     *
     * @param uuid 生成组 UUID
     * @return 袋码列表
     */
    List<MesProBagCodeDO> getBagCodeListByUuid(String uuid);
 
    /**
     * 获得绑定在某托盘上的袋码列表(按袋序号升序),用于托盘扫码追溯
     *
     * @param palletId 托盘编号
     * @return 袋码列表
     */
    List<MesProBagCodeDO> getBagCodeListByPalletId(Long palletId);
 
    /**
     * 获得某批次下的全部袋码列表(按袋序号升序),用于批量导出二维码
     *
     * @param batchId 批次编号
     * @return 袋码列表
     */
    List<MesProBagCodeDO> getBagCodeListByBatchId(Long batchId);
 
}