liu
昨天 4ca4444ad33a2a1a51f5c06e78ee9365dfb1eed6
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/bagcode/MesProBagCodeService.java
@@ -1,9 +1,14 @@
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.MesProBagCodeBindBatchReqVO;
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.MesProBagCodeGenerateRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeRawGenerateReqVO;
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;
@@ -25,7 +30,23 @@
     * @param generateReqVO 生成信息
     * @return 生成组 UUID(标记同一次生成的数据包)
     */
    String generateBagCodes(@Valid MesProBagCodeGenerateReqVO generateReqVO);
    MesProBagCodeGenerateRespVO generateBagCodes(@Valid MesProBagCodeGenerateReqVO generateReqVO);
    /**
     * 生成原始袋码:仅选品种+袋码数量,不校验计量单位类型、不生成托盘;
     * 袋码带品种冗余,后续可正常录入批次/绑定托盘
     *
     * @param rawGenerateReqVO 生成信息
     * @return 生成组 UUID 与数量(type/perPallet/palletIds 为空)
     */
    MesProBagCodeGenerateRespVO generateRawBagCodes(@Valid MesProBagCodeRawGenerateReqVO rawGenerateReqVO);
    void bindBatch(@Valid MesProBagCodeBindBatchReqVO bindReqVO);
    /**
     * 作废破损袋码并在原批次生成等量替换袋码
     */
    MesProBagCodeReplaceRespVO replaceBagCodes(@Valid MesProBagCodeReplaceReqVO replaceReqVO);
    /**
     * 删除生成组(仅"已生成"状态且未绑定托盘的袋码允许删除)
@@ -80,6 +101,13 @@
    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 分页查询
@@ -111,4 +139,38 @@
     */
    List<MesProBagCodeDO> getBagCodeListByBatchId(Long batchId);
    /**
     * 获得某批次下可印刷的袋码列表(排除已作废袋码,按袋序号升序),用于批量导出二维码标签
     * <p>
     * 已作废的袋码(破损替换后作废)不得再印刷:其标签若贴到产品上,消费者扫码会被提示
     * 「该追溯码已作废,谨防假冒」,导致真品被误判为假货。
     *
     * @param batchId 批次编号
     * @return 可印刷的袋码列表
     */
    List<MesProBagCodeDO> getPrintableBagCodeListByBatchId(Long batchId);
    /**
     * 获得某生成组下可印刷的袋码列表(排除已作废袋码),用于批量导出二维码标签
     *
     * @param uuid 生成组 UUID
     * @return 可印刷的袋码列表
     */
    List<MesProBagCodeDO> getPrintableBagCodeListByUuid(String uuid);
    /**
     * 标记袋码为已出库(记录销售出库单编号和出库时间)
     *
     * @param id      袋码编号
     * @param salesId 销售出库单编号
     */
    void markOutbound(Long id, Long salesId);
    /**
     * 清除袋码的出库标记(取消出库单时使用)
     *
     * @param id 袋码编号
     */
    void clearOutbound(Long id);
}