云
3 天以前 251be431ad12399fe4ebce599c353d05dcec7888
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/bagcode/MesProBagCodeMapper.java
@@ -3,10 +3,13 @@
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.framework.mybatis.core.util.MyBatisUtils;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.bagcode.vo.MesProBagCodeUnboundTonBagPageReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.bagcode.MesProBagCodeDO;
import cn.iocoder.yudao.module.mes.enums.pro.MesProBagCodeStatusEnum;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@@ -260,16 +263,25 @@
                .orderByAsc(MesProBagCodeDO::getId));
    }
    default List<MesProBagCodeDO> selectUnboundPalletlessList() {
        return selectList(new LambdaQueryWrapperX<MesProBagCodeDO>()
                .isNull(MesProBagCodeDO::getBatchId)
                .isNull(MesProBagCodeDO::getPalletId)
                .in(MesProBagCodeDO::getStatus, MesProBagCodeStatusEnum.GENERATED.getStatus(),
                        MesProBagCodeStatusEnum.PRINTED.getStatus())
                .isNotNull(MesProBagCodeDO::getItemId)
                .orderByAsc(MesProBagCodeDO::getId));
    /**
     * 分页查询可绑定批次的吨袋:无托盘、未绑定批次、品种计量单位类型为吨。
     * <p>
     * 计量单位类型在 MDM 侧维护,因此通过 mdm_item + mdm_unit_measure 关联过滤,
     * 避免把全部袋码拉到内存再逐个查单位,数据量大时不可用。
     */
    default PageResult<MesProBagCodeDO> selectUnboundTonBagPage(MesProBagCodeUnboundTonBagPageReqVO reqVO,
                                                               String unitType) {
        IPage<MesProBagCodeDO> result = selectUnboundTonBagPage(MyBatisUtils.buildPage(reqVO), reqVO.getKeyword(),
                unitType, List.of(MesProBagCodeStatusEnum.GENERATED.getStatus(),
                        MesProBagCodeStatusEnum.PRINTED.getStatus()));
        return new PageResult<>(result.getRecords(), result.getTotal());
    }
    IPage<MesProBagCodeDO> selectUnboundTonBagPage(IPage<MesProBagCodeDO> page,
                                                   @Param("keyword") String keyword,
                                                   @Param("unitType") String unitType,
                                                   @Param("statuses") Collection<Integer> statuses);
    /** 批次内有效袋码的品种编号集合(忽略历史空品种袋码),用于录入批次时的品种一致性校验 */
    @Select("SELECT DISTINCT item_id FROM mes_pro_bag_code " +
            "WHERE deleted = 0 AND status <> 30 AND batch_id = #{batchId} AND item_id IS NOT NULL")