package com.bonus.bracelet.mapper;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.entity.bracelet.BraceletParamsDto;
import com.bonus.common.entity.bracelet.vo.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * DeviceMapper
 */
@Repository(value = "DeviceMapper")
public interface DeviceMapper {

    /**
     * 设备列表
     * @param data
     * @return
     */
    List<DeviceVo> getDeviceLists(DeviceVo data);

    /**
     * 获取人员管理表中领用人名称
     * @param id
     * @return
     */
    String getDeviceLyName(int id);

    /**
     * 获取临时人员管理表中领用人名称
     * @param id
     * @return
     */
    String getDeviceLyNameTemp(int id);

        /**
     * 根据设备id获得详细信息
     * @param deviceId
     * @return
     */
    public DeviceVo selectDeviceById(Integer deviceId);

    /**
     * 判断设备名称是否存在
     *
     * @param vo
     * @return int
     * @author cwchen
     * @date 2024/7/17 14:41
     */
    DeviceVo isExist(DeviceVo vo);

    /**
     * 判断设备编码是否存在
     *
     * @param vo
     * @return int
     * @author cwchen
     * @date 2024/7/17 14:41
     */
    DeviceVo isExistCode(DeviceVo vo);

    /**
     * 新增时设备名称是否重复
     * @param vo
     * @return
     */
    DeviceVo isNameExist(DeviceVo vo);

    /**
     * 新增时设备编码是否重复
     * @param vo
     * @return
     */
    DeviceVo isCodeExist(DeviceVo vo);

    /**
     * 新增时级联编码是否重复
     * @param vo
     * @return
     */
    AttributeVo isDataCodeExist(AttributeVo vo);

    /**
     * 修改时级联编码是否重复
     * @param vo
     * @return
     */
    AttributeVo isEditDataCodeExist(AttributeVo vo);

    public void  deleteFileId(String filePath);

    /**
     * 新增时设备领用表是否存在
     * @param deviceId
     * @return
     */
    int getDeviceLy(Integer deviceId);

    /**
     * 修改设备信息
     * @param vo
     * @return
     */
    int updateDevice(DeviceVo vo);

    /**
     * 新增设备信息
     * @param vo
     * @return
     */
    int addDevice(DeviceVo vo);

    /**
     * 新增设备属性信息
     * @param vo
     * @return
     */
    int addAttribute(AttributeVo vo);

    /**
     * 修改设备属性信息
     * @param vo
     * @return
     */
    int editAttribute(AttributeVo vo);

    /**
     * 设置filePath
     * @param vo
     * @return
     */
    void setFilePath(AttributeVo vo);

    /**
     * 清除filePath
     * @param vo
     * @return
     */
    void editFilePath(AttributeVo vo);

    /**
     * 新增设备领用信息
     * @param deviceId
     * @return
     */
    int addDeviceLy(Integer deviceId);

    /**
     * 删除设备信息
     * @param deviceId
     * @return
     */
    int deleteDeviceById(int deviceId);

    /**
     * 删除设备领用信息
     * @param deviceId
     * @return
     */
    int deleteDeviceLy(int deviceId);

    /**
     * 设备属性列表
     * @param data
     * @return
     */
    List<AttributeVo> getDeviceAttributeLists(AttributeVo data);


    /**
     * 根据id获取设备属性
     *
     * @param dto
     * @return AttributeVo

     */
    AttributeVo getAttributeInfo(AttributeVo dto);

    int deleteFile(Long id);

    String selectFilePathById(Long id);

    int getFile(Long id);

    void deleFileSource(Long id);

    /**
     * 批量导出设备数据
     * @param deviceCodes
     * @return
     */
    public List<DeviceVo> getDeviceSomeLists(String[] deviceCodes);
}
