package com.fdkankan.ucenter.service;

import com.alibaba.fastjson.JSONObject;
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.fdkankan.ucenter.entity.ScenePro;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fdkankan.ucenter.vo.ResponseScene;
import com.fdkankan.ucenter.vo.request.RequestScene;
import com.fdkankan.ucenter.vo.request.SceneParam;
import com.fdkankan.ucenter.vo.response.*;

import java.util.HashMap;
import java.util.List;

/**
 * <p>
 * pro场景表 服务类
 * </p>
 *
 * @author
 * @since 2022-07-04
 */
public interface ISceneProService extends IService<ScenePro> {

    HashMap<String, SceneNumVo> findSceneNumber(String token);

    HashMap<Long, GroupByCount> findSceneNumByCameraIds(List<Long> cameraIdList);


    void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId);
    public void lockOrUnLockScenes( List<String> v3NumList,List<String> v4NumList,Integer payStatus,Integer isLaser,List<String> panoNumList);

    void lockOrUnLockBySpace(Long cameraId);


    List<ScenePro> getListByCameraId(Long cameraId);

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

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

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

    Long getCountByUserId(Long id, List<?> resourceList);

    Long getCountByUserId(Long id, Integer cameraType);

    void deleteByIds(List<Long> sceneIds,Long userId);

    JSONObject newList(SceneParam param, String username);

    void copyScene(String sceneNum, String userName) throws Exception;

    ScenePro getByNum(String sceneNum);

    Long copyV3Scene(ScenePro scenePro, String newNum, CameraDetail cameraDetail, CameraType cameraType) throws Exception;


    void delete(String sceneNum,Long userId,String platform);

    ScenePro getByUnicode(String unicode);

    void deleteByList(List<ScenePro> proList, List<ScenePlus> plusList,Long userId,String platform);

    SceneInfoVo getInfo(String num);

    void updateViewCount(String num);

    ScenePro findByFileId(String fileId);

    void generateObjFile(String num);

    void updateDbViewCount(String num, String count);

    void copySceneNoCheck(String sceneNum) throws Exception;

    ResponseScene getSceneDetail(String sceneNum);


    Object getScenes(String username, RequestScene param);



    List<SimpleSceneVo> getSimpleSceneVo(CameraDetail cameraDetail);

    Long getCountByCameraId(Long cameraId,Boolean stauts);

    Long getCountByCameraId(Long cameraId);

    Long getSpaceSumByCameraId(Long cameraId);

    void removePortrait(String num);
}
