package cn.iocoder.yudao.module.mes.dal.mysql.wm.stockreserve; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stockreserve.MesWmStockReserveDO; import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockReserveStatusEnum; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.math.BigDecimal; import java.util.List; /** * MES 库存占用记录 Mapper */ @Mapper public interface MesWmStockReserveMapper extends BaseMapperX { /** * 查询指定业务单据的占用记录 */ default List selectListByBiz(Integer bizType, Long bizId) { return selectList(new LambdaQueryWrapperX() .eq(MesWmStockReserveDO::getBizType, bizType) .eq(MesWmStockReserveDO::getBizId, bizId)); } /** * 查询指定业务单据的占用中记录 */ default List selectReservingListByBiz(Integer bizType, Long bizId) { return selectList(new LambdaQueryWrapperX() .eq(MesWmStockReserveDO::getBizType, bizType) .eq(MesWmStockReserveDO::getBizId, bizId) .eq(MesWmStockReserveDO::getStatus, MesWmStockReserveStatusEnum.RESERVING.getStatus())); } /** * 查询指定库存记录的占用中记录 */ default List selectReservingListByMaterialStockId(Long materialStockId) { return selectList(new LambdaQueryWrapperX() .eq(MesWmStockReserveDO::getMaterialStockId, materialStockId) .eq(MesWmStockReserveDO::getStatus, MesWmStockReserveStatusEnum.RESERVING.getStatus())); } /** * 查询指定物料在指定仓库的占用数量汇总 */ @Select("SELECT IFNULL(SUM(sr.quantity), 0) FROM mes_wm_stock_reserve sr " + "INNER JOIN mes_wm_material_stock ms ON sr.material_stock_id = ms.id " + "WHERE sr.deleted = 0 AND sr.status = 1 AND ms.deleted = 0 " + "AND sr.item_id = #{itemId} AND ms.warehouse_id = #{warehouseId}") BigDecimal sumReservedQuantityByItemAndWarehouse(@Param("itemId") Long itemId, @Param("warehouseId") Long warehouseId); /** * 查询指定物料的占用数量汇总 */ @Select("SELECT IFNULL(SUM(quantity), 0) FROM mes_wm_stock_reserve " + "WHERE deleted = 0 AND status = 1 AND item_id = #{itemId}") BigDecimal sumReservedQuantityByItem(@Param("itemId") Long itemId); }