package com.fdkankan.ucenter.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fdkankan.ucenter.common.PageInfo;
import com.fdkankan.ucenter.common.Result;
import com.fdkankan.ucenter.entity.CameraDetail;
import com.fdkankan.ucenter.entity.CameraType;
import com.fdkankan.ucenter.entity.ScenePlus;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fdkankan.ucenter.vo.RelicsSceneInitQueueDTO;
import com.fdkankan.ucenter.vo.ResponseScene;
import com.fdkankan.ucenter.vo.request.LaserSceneParam;
import com.fdkankan.ucenter.vo.request.RequestScene;
import com.fdkankan.ucenter.vo.response.SceneNumVo;
import com.fdkankan.ucenter.vo.response.SceneVo;
import org.springframework.web.bind.annotation.RequestParam;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * 场景主表 服务类
 * </p>
 *
 * @author 
 * @since 2022-07-04
 */
public interface IScenePlusService extends IService<ScenePlus> {

    Long getCountByUserId(Long userId, List<?> sceneSourceList);

    Long getCountByUserId(Long userId, Integer cameraType);

    List<ScenePlus> getListByCameraId(Long cameraId);

    void bindOrUnCamera(List<Long> cameraIds, Long id);

    List<ScenePlus> getListByCameraIds(List<Long> cameraIds);

    List<ScenePlus> getListByNums(List<String> numList);

    HashMap<Long, ScenePlus> getMapByIds(List<Long> sceneIds);

    ScenePlus getByNum(String sceneNum);

    Long copyV4Scene(ScenePlus scenePlus, String newNum, CameraDetail cameraDetail, CameraType cameraType) ;

    List<ScenePlus> getByIds(List<Long> plusIds);

    Result pageSceneWithHouseType(RequestScene param, String token);

    Result getArPathByNum(String num);

    Long getCountByCameraId(Long cameraId,Boolean statsu);
    Long getCountByCameraId(Long cameraId);


    Long getSpaceSumByCameraId(Long cameraId);

    List<SceneNumVo> getGroupBySceneSouceV4(Long userId);
    List<SceneNumVo> getGroupBySceneSouceV3(Long userId);

    List<ScenePlus> getCountByUserIdAndSceneSource(Long userId, List<Integer> sceneSourceList, Integer isObj);

    Page<RelicsSceneInitQueueDTO> pageLaserScene(Page<RelicsSceneInitQueueDTO> objectPage, LaserSceneParam param);

    Long getCountByAndIsObj(Long userId, List<String> sourceList, Integer isObj,Integer isLaser);

    List<SceneVo> getVoByNumList(List<String> numList);
}
