package com.bonus.material.cityScreen.mapper;

import com.bonus.material.cityScreen.DTO.CityScreenDTO;
import com.bonus.material.cityScreen.VO.*;
import com.bonus.material.cityScreen.entity.DeviceInfoEntity;

import java.util.List;

public interface CityScreenMapper {
    /**
     * 获取设备数据
     * @param dto 入参
     * @return DeviceInfoEntity
     */
    BasicTitleVO getDeviceData(CityScreenDTO dto);

    /**
     * 获取今日出入库数量
     * @param dto 入参
     * @return BasicTitleVO
     */
    BasicTitleVO getTodayDeviceEnterOutNum(CityScreenDTO dto);

    /**
     * 装备数量价值
     * @param dto 入参
     * @return EquipmentQuantityVO
     */
    EquipmentQuantityVO equipmentQuantityValue(CityScreenDTO dto);

    /**
     * 装备状态
     * @return List<EquipmentQuantityVO>
     */
    List<Integer> selectTypeIdList();

    /**
     * 获取设备信息
     * @param dto 入参
     * @return List<DeviceInfoEntity>
     */
    List<DeviceInfoEntity> getDeviceInfo(CityScreenDTO dto);

    /**
     * 维修报警
     * @param dto 入参
     * @return List<AlarmVO>
     */
    List<AlarmVO> maintenanceAlarm(CityScreenDTO dto);

    /**
     * 退役报警
     * @param dto 入参
     * @return List<AlarmVO>
     */
    List<AlarmVO> retirementAlarm(CityScreenDTO dto);

    /**
     * 维修报警总数
     * @param dto 入参
     * @return int
     */
    int countMaintenanceAlarm(CityScreenDTO dto);

    /**
     * 退役报警总数
     * @param dto 入参
     * @return int
     */
    int countRetirementAlarm(CityScreenDTO dto);
    /**
     * 装备周转率总数
     * @param dto 入参
     * @return List<AlarmVO>
     */
    int countEquipmentTurnoverRate(CityScreenDTO dto);
    /**
     * 装备周转率
     * @param dto 入参
     * @return List<AlarmVO>
     */
    List<EquipmentTurnoverRateVO> equipmentTurnoverRate(CityScreenDTO dto);

    /**
     * 工程在用装备情况
     * @param dto 入参
     * @return List<EquipmentUseVO>
     */
    List<EquipmentUseVO> equipmentInUseInTheProject(CityScreenDTO dto);

    /**
     * 工程数
     * @param dto 入参
     * @return int
     */
    int countProNum(CityScreenDTO dto);

    /**
     * 装备在用数量
     * @param dto 入参
     * @return int
     */
    int countUseNum(CityScreenDTO dto);

    /**
     * 获取工程列表
     * @param dto 入参
     * @return List<ProVO>
     */
    List<ProVO> proList(CityScreenDTO dto);

    /**
     * 统计仓库装备数
     * @param dto 入参
     * @return int
     */
    int countDeviceNum(CityScreenDTO dto);

    /**
     * 统计市外装备数
     * @param dto 入参
     * @return int
     */
    int countOutDeviceNum(CityScreenDTO dto);
}
