liyong
6 小时以前 e978a226c2c1b22c9172a58539d876b298e9e2da
yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/dal/mysql/item/MdmItemMapper.java
@@ -6,9 +6,11 @@
import cn.iocoder.yudao.module.mdm.controller.admin.item.vo.MdmItemPageReqVO;
import cn.iocoder.yudao.module.mdm.dal.dataobject.item.MdmItemDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
 * MDM 物料主数据 Mapper
@@ -45,6 +47,22 @@
        return selectOne(MdmItemDO::getCode, code);
    }
    /**
     * 根据编码和删除状态查询物料(用于解决软删除唯一键冲突)
     */
    default MdmItemDO selectByCodeAndDeleted(String code, Boolean deleted) {
        return selectOne(new LambdaQueryWrapperX<MdmItemDO>()
                .eq(MdmItemDO::getCode, code)
                .eq(MdmItemDO::getDeleted, deleted));
    }
    /**
     * 物理删除(用于清理已软删除的重复记录)
     * 注意:由于 BaseDO 有 @TableLogic,deleteById 是软删除,需要使用原生 SQL
     */
    @org.apache.ibatis.annotations.Delete("DELETE FROM mdm_item WHERE id = #{id}")
    void physicalDeleteById(Long id);
    default MdmItemDO selectByBarCode(String barCode) {
        return selectOne(MdmItemDO::getBarCode, barCode);
    }
@@ -65,4 +83,12 @@
        return selectList(MdmItemDO::getId, ids);
    }
    /**
     * 查询物料被哪些业务表引用(未删除的记录)
     *
     * @param itemId 物料编号
     * @return 引用来源列表,每项包含 source(来源名) 和 cnt(引用数量),仅返回 cnt > 0 的
     */
    List<Map<String, Object>> selectItemReferenceCount(@Param("itemId") Long itemId);
}