package com.bonus.material.device.service;


import com.bonus.common.biz.domain.BmCompanyInfo;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.basic.domain.BmCompanyAddress;
import com.bonus.material.device.domain.DevInfo;
import com.bonus.material.device.domain.dto.DevInfoImpDto;
import com.bonus.material.device.domain.dto.InfoMotionDto;
import com.bonus.material.device.domain.vo.DevInfoVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 设备信息Service接口
 *
 * @author syruan
 */
public interface DevInfoService {
    /**
     * 查询设备信息
     *
     * @param maId 设备信息主键
     * @param isHome 是否是首页进入
     * @return 设备信息
     */
    DevInfoVo selectDevInfoByMaId(Long maId, Boolean isHome);

    /**
     * 查询装备共享大厅列表
     *
     * @param devInfo 设备信息
     * @return 设备信息集合
     */
    List<DevInfoVo> selectDevInfoList(DevInfoVo devInfo);

    List<DevInfoVo> selectZoneDevInfoList(DevInfoVo devInfo);

    Map<String, Long> getCompanyCount(DevInfoVo devInfo);

    List<DevInfoVo> selectUserCollectList(DevInfoVo devInfo);

    AjaxResult selectDevInfoHotList(DevInfoVo devInfo);

    /**
     * 修改设备信息
     *
     * @param devInfo 设备信息
     * @return 结果
     */
    AjaxResult updateDevInfo(DevInfo devInfo);

    /**
     * 批量删除设备信息
     *
     * @param maIds 需要删除的设备信息主键集合
     * @return 结果
     */
    int deleteDevInfoByMaIds(Long[] maIds);

    /**
     * 删除设备信息信息
     *
     * @param maId 设备信息主键
     * @return 结果
     */
    int deleteDevInfoByMaId(Long maId);

    /**
     * 设备信息录入--录入经纬度
     * @param infoMotionDto 设备信息
    */
    int insertInfoMotionDto(InfoMotionDto infoMotionDto);

    /**
     * 设备类型--字符串传入--UUID生成CODE
     */
    void insertOutType(String devInfo);

    /**
     * 新增设备信息--包含附件上传
     *
     * @param devInfo 设备信息
     * @return 结果
     */
    AjaxResult insertDevInfo(DevInfo devInfo);

    Map<String, Integer> sumType();

    List<DevInfoVo> selectDevInfoLists(DevInfoVo devInfo);

    /**
     * 查询企业列表
     */
    List<BmCompanyInfo> selectCompanyList(BmCompanyInfo obj);

    AjaxResult updateUpDown(DevInfo devInfo);

    String importMaProp(List<DevInfoImpDto> maPropInfoList, boolean updateSupport, Long operName);

    void downLoadTemplate(HttpServletResponse resp);

    List<DevInfoVo> selectAssociationList(DevInfoVo devInfo);

    List<DevInfoVo> getTagDevList(DevInfoVo devInfoVo);

    List<DevInfoVo> getDevList(DevInfoVo devInfo);

    /**
     * 在租装备信息查询
     */
    List<DevInfoVo> getLeaseDevList(DevInfoVo devInfo);

    /**
     * 设备批量导入模版下载
     */
    void downLoadDev(HttpServletResponse resp);

    /**
     * 设备信息导入
     */
    AjaxResult importTbPeople(MultipartFile file);

    /**
     * 设备信息审核列表
     */
    List<DevInfoVo> selectCheckDevInfoList(DevInfoVo devInfo);

    Integer updateCheckStatus(String ids, String status);

    DevInfoVo selectToolByMaId(Long maId, Boolean isHome);
}
