package com.ruoyi.asset.mapper;

import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.asset.domain.TbAsset;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

/**
 * 资产信息Mapper接口
 * 
 * @author 原动力
 * @date 2023-03-27
 */
@Mapper
public interface TbAssetMapper extends BaseMapper<TbAsset>
{
    /**
     * 查询资产信息
     * 
     * @param id 资产信息主键
     * @return 资产信息
     */
    public TbAsset selectTbAssetById(Long id);

    /**
     * 查询资产信息列表
     * 
     * @param tbAsset 资产信息
     * @return 资产信息集合
     */
    public List<TbAsset> selectTbAssetList(TbAsset tbAsset);

    /**
     * 新增资产信息
     * 
     * @param tbAsset 资产信息
     * @return 结果
     */
    public int insertTbAsset(TbAsset tbAsset);

    /**
     * 修改资产信息
     * 
     * @param tbAsset 资产信息
     * @return 结果
     */
    public int updateTbAsset(TbAsset tbAsset);

    /**
     * 删除资产信息
     * 
     * @param id 资产信息主键
     * @return 结果
     */
    public int deleteTbAssetById(Long id);

    /**
     * 批量删除资产信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTbAssetByIds(Long[] ids);

    /**
     * 尝试插入资产信息
     *
     * @param tbAsset 资产信息
     * @return 结果
     */
    public int replace(TbAsset tbAsset);

    @Select("select id, bar_code, number, name, kind, category_number, amount, quantity, quantity_unit, build_date, place_name, purpose, dept_id, registrant, specifications_model, remark, manufacturer, brand, supplier, status from tb_asset where bar_code = #{barCode}")
    public TbAsset selectTbAssetByBarCode(String barCode);

    @Update("update tb_asset set status = #{status} where bar_code = #{barCode}")
    public int updateTbAssetStatus(@Param("barCode") String barCode, @Param("status") Long status);

    /**
     * 统计全部资产设备
     *
     * @return 条数
     */
    @Select("SELECT COUNT(id) FROM tb_asset")
    public int countTbAssetAll();

    /**
     * 统计全部资产设备
     *
     * @param status 资产设备状态
     * @return 条数
     */
    @Select("SELECT COUNT(id) FROM tb_asset where status = #{status}")
    public int countTbAssetByStatus(long status);
}
