package cn.iocoder.yudao.module.mes.dal.mysql.pro.bagcode; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodePageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.time.LocalDateTime; import java.util.Collection; import java.util.List; /** * MES 袋码赋码(一袋一码)Mapper * * @author 超级管理员 */ @Mapper public interface MesProBagCodeMapper extends BaseMapperX { default MesProBagCodeDO selectByCode(String code) { return selectOne(MesProBagCodeDO::getCode, code); } default List selectListByUuid(String uuid) { return selectList(MesProBagCodeDO::getUuid, uuid); } default List selectListByIds(Collection ids) { return selectBatchIds(ids); } default List selectListByBatchId(Long batchId) { return selectList(MesProBagCodeDO::getBatchId, batchId); } default Long selectCountByBatchId(Long batchId) { return selectCount(MesProBagCodeDO::getBatchId, batchId); } default Long selectCountByPalletId(Long palletId) { return selectCount(MesProBagCodeDO::getPalletId, palletId); } default List selectListByPalletId(Long palletId) { return selectList(MesProBagCodeDO::getPalletId, palletId); } default PageResult selectPage(MesProBagCodePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(MesProBagCodeDO::getCode, reqVO.getCode()) .eqIfPresent(MesProBagCodeDO::getBatchId, reqVO.getBatchId()) .likeIfPresent(MesProBagCodeDO::getBatchCode, reqVO.getBatchCode()) .eqIfPresent(MesProBagCodeDO::getUuid, reqVO.getUuid()) .eqIfPresent(MesProBagCodeDO::getPalletId, reqVO.getPalletId()) .eqIfPresent(MesProBagCodeDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesProBagCodeDO::getCreateTime, reqVO.getCreateTime()) .orderByAsc(MesProBagCodeDO::getBagNo)); } /** * 批量绑定托盘 * * @param ids 袋码编号列表 * @param palletId 托盘编号 * @param palletCode 托盘码 */ default void bindPalletByIds(Collection ids, Long palletId, String palletCode) { update(null, new LambdaUpdateWrapper() .set(MesProBagCodeDO::getPalletId, palletId) .set(MesProBagCodeDO::getPalletCode, palletCode) .in(MesProBagCodeDO::getId, ids)); } /** * 批量解绑托盘(置空托盘编号与托盘码) * * @param ids 袋码编号列表 */ default void unbindPalletByIds(Collection ids) { update(null, new LambdaUpdateWrapper() .set(MesProBagCodeDO::getPalletId, null) .set(MesProBagCodeDO::getPalletCode, null) .in(MesProBagCodeDO::getId, ids)); } /** * 查询批次内袋码最大序号(包含已逻辑删除记录,保证序号不回退、码值唯一) * * @param batchId 批次编号 * @return 最大袋序号,无记录返回 0 */ @Select("SELECT IFNULL(MAX(bag_no), 0) FROM mes_pro_bag_code WHERE batch_id = #{batchId}") Integer selectMaxBagNo(@Param("batchId") Long batchId); /** * 批量标记为已导出印刷(仅更新处于目标原状态的记录) * * @param ids 袋码编号列表 * @param fromStatus 原状态 * @param toStatus 目标状态 * @param printTime 导出时间 * @return 更新行数 */ @Update("") int updateStatusByIds(@Param("ids") Collection ids, @Param("fromStatus") Integer fromStatus, @Param("toStatus") Integer toStatus, @Param("printTime") LocalDateTime printTime); }