package cn.iocoder.yudao.module.wms.dal.mysql.md.item; import cn.hutool.core.collection.CollUtil; 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.query.MPJLambdaWrapperX; import cn.iocoder.yudao.module.wms.controller.admin.md.item.vo.sku.WmsItemSkuPageReqVO; import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemDO; import cn.iocoder.yudao.module.wms.dal.dataobject.md.item.WmsItemSkuDO; import org.apache.ibatis.annotations.Mapper; import java.util.Collection; import java.util.Collections; import java.util.List; /** * WMS 商品 SKU Mapper * * @author 芋道源码 */ @Mapper public interface WmsItemSkuMapper extends BaseMapperX { /** * 按 SKU 维度分页查询,支持商品 / 品牌 / 分类多表联查筛选。 * * 使用 {@link MPJLambdaWrapperX} 替代 lite 的手写 XML JOIN(见 lite * {@code ItemSkuMapper.selectByBo}),范式参照本模块 {@code WmsInventoryMapper.selectPage}。 */ default PageResult selectPage(WmsItemSkuPageReqVO reqVO) { MPJLambdaWrapperX query = new MPJLambdaWrapperX() .selectAll(WmsItemSkuDO.class) .innerJoin(WmsItemDO.class, WmsItemDO::getId, WmsItemSkuDO::getItemId) .likeIfPresent(WmsItemDO::getCode, reqVO.getItemCode()) .likeIfPresent(WmsItemDO::getName, reqVO.getItemName()) .eqIfPresent(WmsItemDO::getCategoryId, reqVO.getCategoryId()) .eqIfPresent(WmsItemDO::getBrandId, reqVO.getBrandId()) .likeIfPresent(WmsItemSkuDO::getCode, reqVO.getCode()) .likeIfPresent(WmsItemSkuDO::getName, reqVO.getName()) .likeIfPresent(WmsItemSkuDO::getBarCode, reqVO.getBarCode()) .orderByDesc(WmsItemSkuDO::getId); return selectJoinPage(reqVO, WmsItemSkuDO.class, query); } default List selectListByItemId(Long itemId) { return selectList(new LambdaQueryWrapperX() .eq(WmsItemSkuDO::getItemId, itemId) .orderByAsc(WmsItemSkuDO::getId)); } default List selectListByItemIds(Collection itemIds) { if (CollUtil.isEmpty(itemIds)) { return Collections.emptyList(); } return selectList(new LambdaQueryWrapperX() .inIfPresent(WmsItemSkuDO::getItemId, itemIds) .orderByAsc(WmsItemSkuDO::getId)); } default List selectList(Collection itemIds, String code, String name) { if (itemIds != null && CollUtil.isEmpty(itemIds)) { return Collections.emptyList(); } return selectList(new LambdaQueryWrapperX() .inIfPresent(WmsItemSkuDO::getItemId, itemIds) .likeIfPresent(WmsItemSkuDO::getCode, code) .likeIfPresent(WmsItemSkuDO::getName, name) .orderByAsc(WmsItemSkuDO::getId)); } default void deleteByItemId(Long itemId) { delete(WmsItemSkuDO::getItemId, itemId); } }