package com.fdkankan.scene.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fdkankan.common.response.ResultData;
import com.fdkankan.scene.entity.ScenePro;
import com.fdkankan.scene.entity.SceneProPO;
import com.fdkankan.scene.vo.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;

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

/**
 * <p>
 * pro场景表 服务类
 * </p>
 *
 * @author dengsixing
 * @since 2021-12-23
 */
public interface ISceneProService extends IService<ScenePro> {

    List<SceneVO> convert(List<ScenePro> list);

    List<SceneVO> convert2(List<SceneProPO> list);

    Long getSceneCount(Long cameraId,Long userId);

    ScenePro findBySceneNum(String sceneNum);

    ScenePro findLikeSceneNum(String sceneNum);

    ScenePro findDeleteSceneBySceneNum(String sceneNum);

    SceneProPO getSceneStatusByUnicode(String unicode, Integer tbStatus);

    List<SceneProPO> findByUserIdAndCameraType(Long userId, Integer cameraType);

    List<SceneProPO> findBySceneNums(List<String> sceneCodeList, Integer cameraType);

    void updateStatus(String sceneNum, int sceneStatus);

    ResultData resetUploadFloorJson(SceneEditParamVO sceneEdit) throws Exception;

    ResultData uploadFloorJson(SceneEditParamVO sceneEdit) throws Exception;

    ResultData uploadFloorJsonAjk(FileParamVO param, MultipartFile[] file) throws Exception;

    ResultData addHotMediaInfo(SceneEditParamVO base) throws Exception;

    ResultData saveScreencapFile(SceneEditParamVO base) throws Exception;

    ResultData saveSceneKey(SceneEditParamVO base) throws Exception;

    ResultData saveFloorLogo(SceneEditParamVO base) throws Exception;

    ResultData saveBackgroundMusic(SceneEditParamVO base) throws Exception;

    ResultData saveInitialPage(FileNameAndDataParamVO param) throws Exception;

    ResultData getScreencapVoice(SceneEditParamVO base) throws Exception;

    ResultData uploadScreencapVoiceNew(FileParamVO param, MultipartFile file) throws Exception;

    ResultData uploadScreencapVoiceNewV3(FileParamVO param, MultipartFile file) throws Exception;

    ResultData deleteScreencapVoicePart(FileParamVO param) throws Exception;

    ResultData deleteScreencapVoice(SceneEditParamVO base) throws Exception;

    ResultData deleteScreencap(SceneEditParamVO base) throws Exception;

    ResultData saveTourList(SceneEditParamVO base) throws Exception;

    ResultData saveSceneInfo(SceneEditParamVO base) throws Exception;

    ResultData uploadHotMedia(FileParamVO param, MultipartFile file) throws Exception;

    ResultData tagSave(SaveTagsParamVO param) throws Exception;

    ResultData addOrUpdateTag(SaveTagsParamVO param) throws Exception;

    ResultData deleteTag(DeleteHotParamVO param) throws Exception;

    ResultData deleteIcons(DeleteHotIconParamVO param) throws Exception;

    ResultData listTags(String num) throws Exception;

    ResultData saveShopHot(SceneEditParamVO base) throws Exception;

    ResultData saveOverlay(SceneEditParamVO base) throws Exception;

    ResultData uploadOverlayMedia(FileParamVO param, MultipartFile file) throws Exception;

    ResultData saveScreencapData(SceneEditParamVO base) throws Exception;

    ResultData saveRoam(BaseDataParamVO param) throws Exception;

    ResultData saveTagsVisible(SaveTagsVisibleParamVO param) throws Exception;

    ResultData uploadShareLogo(SceneEditParamVO base, MultipartFile file) throws Exception;

    ResultData uploadPic(FileParamVO param, MultipartFile file) throws Exception;

    ResultData uploadHotJsonToOss(SceneEditParamVO param) throws Exception;

    ResultData deleteOss(FileParamVO param) throws Exception;

    ResultData uploadFloorplanPng(FileParamVO param, MultipartFile[] file) throws Exception;

    void updateTime(String sceneNum, Long space, int payStatus, String videos, long computeTime);

    void updateTime2(String sceneNum, String videos, long computeTime);

    SceneVO findLatestOneByUserId(Long userId);

    void updateUserIdByCameraId(Long userId, Long cameraId);

    List<SceneProPO> findByCameraIdPro(Long cameraId);

    void updateCameraIdByCameraIdPro(Long oldCameraId, Long cameraId);

    void updateRecStatus(String unicode);

    SceneProPO findByFileId(String fileId);

    List<ScenePro> findTempScenes() throws Exception;

    List<String> findByCameraId(Long cameraId) throws Exception;

    ResultData uploadObjAndImg(String num, MultipartFile file) throws Exception;

    ResultData uploadLogoBottomStatus(FileParamVO param) throws Exception;

    ResultData saveJsonData(FileParamVO param) throws Exception;

    ResultData downloadPanoramaOrVideo(FileParamVO param) throws Exception;

    ResultData uploadPanoramaOrVideo(FileParamVO param, MultipartFile file) throws Exception;

    ResultData uploadROIVideo(FileParamVO param, MultipartFile file) throws Exception;

    ResultData deleteROIVideo(FileParamVO param) throws Exception;

    ResultData uploadBgMusic(FileParamVO param, MultipartFile file) throws Exception;

    ResultData deleteUploadBgMusic(FileParamVO param) throws Exception;

    ResultData copyAndUpdateFloorJson(FileParamVO param) throws Exception;

    ResultData updateFloorJson(FileParamVO param) throws Exception;

    Page<SceneVO> getAppAllSceneByPage(Long cameraId, Long userId, int cameraType, int pageNum, Integer pageSize, String orderBy, Integer sceneType, List<String> sceneCodeList, String sceneName);

    Long findSceneNumByCameraId(Long cameraId);

    SceneProPO findLastSceneByCameraId(Long cameraId);

    Long findTotalSpaceByCameraId(Long cameraId);

    void updatePayStatusByCameraId(Integer payStatus, Long cameraId);

    ResultData downloadPanoramaData(SceneEditParamVO param) throws Exception;

    ResultData getSceneAndCameras(Long userId,List<String> excludeNums);

    SceneProPO findBySceneNumWithOutCheckRecStatus(String sceneNum) throws Exception;

    Integer findFolderIdScence(Long folderId, Long userId);

    ResultData downloadVisionData(SceneEditParamVO param) throws Exception;

    SceneVO getInfo(String sceneNum);

    ResultData rebuildReduceSpaceBySceneNum(String sceneNum) throws Exception;

    void tempScenes(List<Long> ids);

    ResultData getRecordAudioFromBrowser(FileParamVO param, MultipartFile file) throws IOException;

    ResultData checkVideoUrl(FileParamVO param);

    ResultData downloadTexData(String num) throws Exception ;

    ResultData downloadCapture(@RequestBody SceneParamVO param) throws Exception;

    ResultData uploadResultsData(SceneParamVO param) throws Exception;

    ResultData updateStatusByScene(SceneParamVO param) throws Exception;

    ResultData getStatusByScene(SceneParamVO param) throws Exception;

    ResultData checkDownLoad(String sceneNum);

    List<SceneProPO> findByCameraIds(String cameraIds, String startTime, String endTime);

    ResultData getScenesBySnCode(String snCode, String token);
}
