liu
12 小时以前 514f372270b181f82e4deff98f8d0f38ace63183
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/bagcode/MesProBagCodeService.java
@@ -1,10 +1,12 @@
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;
@@ -29,6 +31,17 @@
     * @return 生成组 UUID(标记同一次生成的数据包)
     */
    MesProBagCodeGenerateRespVO generateBagCodes(@Valid MesProBagCodeGenerateReqVO generateReqVO);
    /**
     * 生成原始袋码:仅选品种+袋码数量,不校验计量单位类型、不生成托盘;
     * 袋码带品种冗余,后续可正常录入批次/绑定托盘
     *
     * @param rawGenerateReqVO 生成信息
     * @return 生成组 UUID 与数量(type/perPallet/palletIds 为空)
     */
    MesProBagCodeGenerateRespVO generateRawBagCodes(@Valid MesProBagCodeRawGenerateReqVO rawGenerateReqVO);
    void bindBatch(@Valid MesProBagCodeBindBatchReqVO bindReqVO);
    /**
     * 作废破损袋码并在原批次生成等量替换袋码
@@ -87,6 +100,12 @@
     */
    MesProBagCodeDO getBagCodeByCode(String code);
    /** 内部查询识别业务码及历史追溯码,不用于公众追溯入口。 */
    MesProBagCodeDO getBagCodeByScanCode(String code);
    /** 补生成历史袋码业务码;已有码保持不变,返回新生成数量。 */
    int generateBusinessCodes(List<Long> ids);
    /**
     * 查询袋码替换记录
     */
@@ -127,6 +146,63 @@
    List<MesProBagCodeDO> getBagCodeListByBatchId(Long batchId);
    /**
     * 获得某批次下可印刷的袋码列表(排除已作废袋码,按袋序号升序),用于批量导出二维码标签
     * <p>
     * 已作废的袋码(破损替换后作废)不得再印刷:其标签若贴到产品上,消费者扫码会被提示
     * 「该追溯码已作废,谨防假冒」,导致真品被误判为假货。
     *
     * @param batchId 批次编号
     * @return 可印刷的袋码列表
     */
    List<MesProBagCodeDO> getPrintableBagCodeListByBatchId(Long batchId);
    /**
     * 获得某生成组下可印刷的袋码列表(排除已作废袋码),用于批量导出二维码标签
     *
     * @param uuid 生成组 UUID
     * @return 可印刷的袋码列表
     */
    List<MesProBagCodeDO> getPrintableBagCodeListByUuid(String uuid);
    /**
     * 统计某生成组下可印刷的袋码数量
     * <p>
     * 导出前据此判断走同步下载还是后台任务,避免为了拿到数量而把全部袋码加载进内存。
     *
     * @param uuid 生成组 UUID
     * @return 可印刷的袋码数量
     */
    Long getPrintableBagCodeCountByUuid(String uuid);
    /**
     * 统计某批次下可印刷的袋码数量
     *
     * @param batchId 批次编号
     * @return 可印刷的袋码数量
     */
    Long getPrintableBagCodeCountByBatchId(Long batchId);
    /**
     * 分页获得某生成组下可印刷的袋码(后台大批量导出用,逐页取以控制内存)
     *
     * @param uuid     生成组 UUID
     * @param pageNo   页码,从 1 开始
     * @param pageSize 每页数量
     * @return 可印刷的袋码列表(按袋序号升序)
     */
    List<MesProBagCodeDO> getPrintableBagCodePageByUuid(String uuid, int pageNo, int pageSize);
    /**
     * 分页获得某批次下可印刷的袋码(后台大批量导出用)
     *
     * @param batchId  批次编号
     * @param pageNo   页码,从 1 开始
     * @param pageSize 每页数量
     * @return 可印刷的袋码列表(按袋序号升序)
     */
    List<MesProBagCodeDO> getPrintableBagCodePageByBatchId(Long batchId, int pageNo, int pageSize);
    /**
     * 标记袋码为已出库(记录销售出库单编号和出库时间)
     *
     * @param id      袋码编号