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 接口 *

* 根据批次信息自动生成唯一二维码数据包,支持批量导出交付印刷,满足唯一性、可识别性、可追溯性要求。 * * @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 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 getBagCodePage(MesProBagCodePageReqVO pageReqVO); /** * 获得生成组的袋码列表 * * @param uuid 生成组 UUID * @return 袋码列表 */ List getBagCodeListByUuid(String uuid); /** * 获得绑定在某托盘上的袋码列表(按袋序号升序),用于托盘扫码追溯 * * @param palletId 托盘编号 * @return 袋码列表 */ List getBagCodeListByPalletId(Long palletId); /** * 获得某批次下的全部袋码列表(按袋序号升序),用于批量导出二维码 * * @param batchId 批次编号 * @return 袋码列表 */ List getBagCodeListByBatchId(Long batchId); }