package com.fdkankan.scene.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fdkankan.common.response.ResultData;
import com.fdkankan.scene.entity.ScenePro;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fdkankan.scene.entity.SceneProPO;
import com.fdkankan.scene.vo.SceneEditVO;
import com.fdkankan.scene.vo.SceneProVO;
import com.fdkankan.scene.vo.SceneVO;
import org.springframework.web.multipart.MultipartFile;

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);

    Long getSceneCount(Long cameraId);

    ScenePro findBySceneNum(String sceneNum);

    ScenePro findLikeSceneNum(String sceneNum);

    ScenePro findDeleteSceneBySceneNum(String sceneNum);

    SceneProPO getSceneStatusByUnicode(String unicode, String recStatus);

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

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

    void updateStatus(String sceneNum, int sceneStatus);

    ResultData resetUploadFloorJson(SceneEditVO sceneEdit) throws Exception;

    ResultData uploadFloorJson(SceneEditVO sceneEdit) throws Exception;

    ResultData uploadFloorJsonAjk(String sceneNum, String ajkJson, String cameraJson, String floorPlanJson, MultipartFile[] file) throws Exception;

    ResultData addHotMediaInfo(SceneEditVO base) throws Exception;

    ResultData saveScreencapFile(SceneEditVO base) throws Exception;

    ResultData saveSceneKey(SceneEditVO base) throws Exception;

    ResultData saveFloorLogo(SceneEditVO base) throws Exception;

    ResultData saveBackgroundMusic(SceneEditVO base) throws Exception;

    ResultData saveInitialPage(SceneEditVO base) throws Exception;

    ResultData getScreencapVoice(SceneEditVO base) throws Exception;

    ResultData uploadScreencapVoiceNew(String sceneNum, String type, String fileName, MultipartFile file, String length, String replace) throws Exception;

    ResultData uploadScreencapVoiceNewV3(String sceneNum, String type, String fileName, MultipartFile file, String length, String replace, String times, String index) throws Exception;

    ResultData deleteScreencapVoicePart(String sceneNum, String fileName, String times, String index) throws Exception;

    ResultData deleteScreencapVoice(SceneEditVO base) throws Exception;

    ResultData deleteScreencap(SceneEditVO base) throws Exception;

    ResultData saveTourList(SceneEditVO base) throws Exception;

    ResultData saveSceneInfo(SceneEditVO base) throws Exception;

    ResultData uploadHotMedia(String sceneId, MultipartFile file, String sid) throws Exception;

    ResultData saveHot(SceneEditVO base) throws Exception;

    ResultData saveShopHot(SceneEditVO base) throws Exception;

    ResultData saveOverlay(SceneEditVO base) throws Exception;

    ResultData uploadOverlayMedia(String sceneNum, MultipartFile file, String sid) throws Exception;

    ResultData saveScreencapData(SceneEditVO base) throws Exception;

    ResultData saveLinkPano(SceneEditVO base) throws Exception;

    ResultData saveHotVisible(SceneEditVO base) throws Exception;

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

    ResultData uploadPic(String sceneNum, String folderName, MultipartFile file, String toOss) throws Exception;

    ResultData uploadHotJsonToOss(String sceneNum) throws Exception;

    ResultData deleteOss(String filePath) throws Exception;

    ResultData uploadFloorplanPng(String sceneNum, MultipartFile[] file, String cadInfo) 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 sceneNum, MultipartFile file) throws Exception;

    ResultData uploadLogoBottomStatus(String sceneNum, String status) throws Exception;

    ResultData saveJsonData(String sceneNum, String fileName, String jsonData) throws Exception;

    String downloadPanoramaOrVideo(String sceneNum, String fileName, String type, String planId) throws Exception;

    ResultData uploadPanoramaOrVideo(String sceneNum, String fileName, String type, MultipartFile file, String planId) throws Exception;

    ResultData uploadROIVideo(String sceneNum, String fileName, MultipartFile file, String planId, String rect,
                          String videoDirMatrix, String dir, String hfov, String vfov) throws Exception;

    ResultData deleteROIVideo(String sceneNum, String fileName, String planId) throws Exception;

    ResultData uploadBgMusic(String sceneNum, String fileName, MultipartFile file) throws Exception;

    ResultData deleteUploadBgMusic(String sceneNum) throws Exception;

    ResultData savePanorama(String sceneNum, String sid, MultipartFile file, String imagesName) throws Exception;

    ResultData savePanoramaJson(String sceneNum, String fileData, String fileName, String sid) throws Exception;

    ResultData copyAndUpdateFloorJson(String sceneNum, String floorJsonData) throws Exception;

    ResultData updateFloorJson(String sceneNum, String floorJsonData) throws Exception;

    IPage<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(String sceneNum) throws Exception;

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

    SceneProPO findBySceneNumWithOutCheckRecStatus(String sceneNum) throws Exception;

    Integer findFolderIdScence(Long folderId, Long userId);

    ResultData downloadVisionData(String sceneNum) throws Exception;

    SceneVO getInfo(String sceneNum);

    ResultData rebuildReduceSpaceBySceneNum(String sceneNum) throws Exception;


}
