package cn.iocoder.yudao.module.asset.dal.mysql.item; 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.asset.controller.admin.item.vo.AssetItemPageReqVO; import cn.iocoder.yudao.module.asset.dal.dataobject.item.AssetItemDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; @Mapper public interface AssetItemMapper extends BaseMapperX { @Update("UPDATE asset_item SET quantity = quantity - #{quantity}, update_time = NOW() " + "WHERE id = #{id} AND deleted = 0 AND quantity >= #{quantity}") int decreaseStock(@Param("id") Long id, @Param("quantity") Integer quantity); @Update("UPDATE asset_item SET quantity = quantity + #{quantity}, update_time = NOW() " + "WHERE id = #{id} AND deleted = 0") int increaseStock(@Param("id") Long id, @Param("quantity") Integer quantity); default AssetItemDO selectByAssetNo(String assetNo) { return selectOne(AssetItemDO::getAssetNo, assetNo); } default PageResult selectPage(AssetItemPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(AssetItemDO::getAssetNo, reqVO.getAssetNo()) .likeIfPresent(AssetItemDO::getName, reqVO.getName()) .eqIfPresent(AssetItemDO::getCategory, reqVO.getCategory()) .likeIfPresent(AssetItemDO::getCustodianName, reqVO.getCustodianName()) .orderByDesc(AssetItemDO::getId)); } }