package com.zcxk.charge.core.dao;

import com.zcxk.charge.api.vo.DeviceEntityVo;
import com.zcxk.charge.api.vo.SceneEntityVo;
import com.zcxk.charge.core.entity.DeviceEntity;
import com.zcxk.charge.core.entity.SceneEntity;
import com.zcxk.core.common.pojo.ProgramItem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description
 * @author  wangli
 * @data 2021/3/19 11:43
 */
@Mapper
public interface AppReportMonitorMapper {

    /**
    * getSceneByCompany
    * @author Andy
    * @date 17:55 2021/8/17
    * @param sceneType:
    * @param companyOrgId:
    * @param tenantId:
    * @param userType:
    * @param permissonType:
    * @param programItems:
    * @return java.util.List<com.zcxk.charge.api.vo.SceneEntityVo>
    **/
    List<SceneEntityVo> getSceneByCompany(@Param("sceneType") String sceneType, @Param("companyOrgId") Integer companyOrgId,
                                          @Param("tenantId") String tenantId, @Param("userType") String userType,
                                          @Param("permissonType") Integer permissonType,
                                          @Param("programItems") List<ProgramItem> programItems);

    /**
    * getDeviceByCompany
    * @author Andy
    * @date 17:55 2021/8/17
    * @param typeName:
    * @param companyOrgId:
    * @param tenantId:
    * @param userType:
    * @param permissonType:
    * @param programItems:
    * @return java.util.List<com.zcxk.charge.api.vo.DeviceEntityVo>
    **/
    List<DeviceEntityVo> getDeviceByCompany(@Param("typeName") String typeName,
                                            @Param("companyOrgId") Integer companyOrgId,
                                            @Param("tenantId") String tenantId, @Param("userType") String userType,
                                            @Param("permissonType") Integer permissonType,
                                            @Param("programItems") List<ProgramItem> programItems);

    /**
    * getCompanyBySceneCondition
    * @author Andy
    * @date 17:55 2021/8/17
    * @param sceneType:
    * @param condition:
    * @param tenantId:
    * @param userType:
    * @param permissonType:
    * @param programItems:
    * @return java.util.List<java.lang.Integer>
    **/
    List<Integer> getCompanyBySceneCondition(@Param("sceneType") String sceneType, @Param("condition") String condition,
                                             @Param("tenantId") String tenantId, @Param("userType") String userType,
                                             @Param("permissonType") Integer permissonType,
                                             @Param("programItems") List<ProgramItem> programItems);

    /**
    * getCompanyByDeviceCondition
    * @author Andy
    * @date 17:55 2021/8/17
    * @param condition:
    * @param tenantId:
    * @param userType:
    * @param permissonType:
    * @param programItems:
    * @return java.util.List<java.lang.Integer>
    **/
    List<Integer> getCompanyByDeviceCondition(@Param("condition") String condition,
                                              @Param("tenantId") String tenantId, @Param("userType") String userType,
                                              @Param("permissonType") Integer permissonType,
                                              @Param("programItems") List<ProgramItem> programItems);

}
