Pārlūkot izejas kodu

初始化场景 场景描述赋值

dsx 2 gadi atpakaļ
vecāks
revīzija
3abea8c8ff

+ 294 - 298
src/main/java/com/fdkankan/scene/service/impl/SceneCleanOrigServiceImpl.java

@@ -1,298 +1,294 @@
-package com.fdkankan.scene.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.exceptions.ExceptionUtil;
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.fdkankan.common.constant.CommonStatus;
-import com.fdkankan.common.constant.CommonSuccessStatus;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.constant.OperationType;
-import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.fyun.face.FYunFileServiceInterface;
-import com.fdkankan.model.constants.ConstantFilePath;
-import com.fdkankan.model.constants.UploadFilePath;
-import com.fdkankan.model.utils.SceneUtil;
-import com.fdkankan.redis.constant.RedisKey;
-import com.fdkankan.redis.util.RedisUtil;
-import com.fdkankan.scene.bean.SceneBean;
-import com.fdkankan.scene.entity.Camera;
-import com.fdkankan.scene.entity.SceneCleanOrig;
-import com.fdkankan.scene.mapper.ISceneCleanOrigMapper;
-import com.fdkankan.scene.mapper.IScenePlusExtMapper;
-import com.fdkankan.scene.service.*;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.stereotype.Service;
-import sun.font.TextRecord;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- * 删除oss原始资源记录 服务实现类
- * </p>
- *
- * @author 
- * @since 2023-03-29
- */
-@RefreshScope
-@Slf4j
-@Service
-public class SceneCleanOrigServiceImpl extends ServiceImpl<ISceneCleanOrigMapper, SceneCleanOrig> implements ISceneCleanOrigService {
-
-    @Value("${scene.cleanOrig.month}")
-    private Integer cleanOrigMonth;
-    @Value("${scene.coldStorage.month}")
-    private Integer coldStorageMonth;
-    @Value("${scene.cleanDeleted.month}")
-    private Integer cleanDeletedMonth;
-    @Value("#{'${scene.cleanTestCamera.snCode:}'.split(',')}")
-    private List<String> testSnCodeList;
-    @Value("${scene.cleanTestCamera.month}")
-    private Integer cleanTestCameraMonth;
-    @Value("${fyun.bucket}")
-    private String bucket;
-    @Value("${fyun.coldBucket}")
-    private String coldBucket;
-    @Autowired
-    private ICameraService cameraService;
-    @Autowired
-    private ISceneColdStorageService sceneColdStorageService;
-
-
-    @Autowired
-    private ISceneProService sceneProService;
-    @Autowired
-    private IScenePlusService scenePlusService;
-    @Autowired
-    private IScenePlusExtService scenePlusExtService;
-    @Autowired
-    private FYunFileServiceInterface fYunFileService;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private ISceneColdStorageLogService sceneColdStorageLogService;
-
-    @Override
-    public void cleanOrigV4() {
-        //查询所有计算时间超过限定时间的场景,计算成功、未被删除、最后一次计算后未被删除过的
-        List<SceneBean> sceneBeans = scenePlusService.listCleanOrigScene(cleanOrigMonth);
-        this.cleanOrig(sceneBeans);
-    }
-
-    @Override
-    public void cleanOrigV3() {
-        //查询所有计算时间超过限定时间的场景,计算成功、未被删除
-        List<SceneBean> sceneBeans = sceneProService.listCleanOrigScene(cleanOrigMonth);
-        this.cleanOrig(sceneBeans);
-
-    }
-
-    private void cleanOrig(List<SceneBean> sceneBeans){
-        if(CollUtil.isEmpty(sceneBeans)){
-            return;
-        }
-        sceneBeans.parallelStream().forEach(scene->{
-            boolean lock = this.lock(scene.getDataSource());
-            try {
-                if(lock) {
-                    this.cleanOrigHandler(scene);
-                    this.saveLog(scene.getNum(), 1, CommonSuccessStatus.SUCCESS.code(), null);
-                }
-            }catch (Exception e){
-                log.error("删除原始资源失败,num : " + scene.getNum(), e);
-                this.saveLog(scene.getNum(), 1, CommonSuccessStatus.FAIL.code(), ExceptionUtil.stacktraceToString(e, 3000));
-            }finally {
-                this.releaseLock(scene.getDataSource());
-            }
-        });
-    }
-
-    private void cleanOrigHandler(SceneBean scene){
-        String dataSource = scene.getDataSource();
-        if(StrUtil.isNotEmpty(dataSource)){
-            String homePath = dataSource.replace(ConstantFilePath.BUILD_MODEL_PATH, ConstantFilePath.OSS_PREFIX);
-            //由于国内测试和生产用的bucket是同一个,这里需要做一个安全校验,保证不会删错
-            String fileContent = fYunFileService.getFileContent(homePath.concat("/").concat("data.fdage"));
-            if(StrUtil.isNotBlank(fileContent)){
-                JSONObject jsonObject = JSON.parseObject(fileContent);
-                String snCode = jsonObject.getJSONObject("cam").getString("uuid");
-                String uuidTime = jsonObject.getString("uuidtime");
-                if(StrUtil.isEmpty(snCode)
-                        || StrUtil.isEmpty(uuidTime)
-                        || !homePath.contains(snCode)
-                        || !homePath.contains(uuidTime)){
-                    throw new RuntimeException("dataSource与data.fdage文件不匹配");
-                }else{
-                    fYunFileService.deleteFolder(homePath);
-                }
-            }
-        }
-    }
-
-
-
-
-    private void saveLog(String num, int type, int status, String reason){
-        //清除旧的日志
-        this.remove(new LambdaQueryWrapper<SceneCleanOrig>().eq(SceneCleanOrig::getNum, num));
-        SceneCleanOrig sceneCleanOrig = new SceneCleanOrig();
-        sceneCleanOrig.setNum(num);
-        sceneCleanOrig.setType(type);
-        sceneCleanOrig.setState(status);
-        sceneCleanOrig.setReason(reason);
-        this.saveOrUpdate(sceneCleanOrig);
-    }
-
-    private boolean lock(String dataSource){
-        Map<String, String> property = SceneUtil.getPropertyFromDataSource(dataSource);
-        String homePath = property.get("homePath");
-        String uuid = property.get("uuid");
-
-        String uploadLock = redisUtil.get(String.format(RedisKey.SCENE_OSS_HOME_DIR_UPLOAD, uuid));
-        //场景正在上传,不删除
-        if(StrUtil.isNotEmpty(uploadLock)){
-            return false;
-        }
-        redisUtil.set(String.format(RedisKey.SCENE_OSS_HOME_DIR_DELETE, uuid), homePath, 8*60*60);
-        return true;
-    }
-
-    private void releaseLock(String dataSource){
-        Map<String, String> property = SceneUtil.getPropertyFromDataSource(dataSource);
-        String uuid = property.get("uuid");
-        redisUtil.del(String.format(RedisKey.SCENE_OSS_HOME_DIR_DELETE, uuid));
-    }
-
-
-    @Override
-    public void cleanOss4DeletedSceneV3() {
-        List<SceneBean> sceneBeans = sceneProService.listCleanOss4DeletedScene(cleanDeletedMonth);
-        this.cleanOrig4Delete(sceneBeans, false, 2);
-    }
-
-    @Override
-    public void cleanOss4DeletedSceneV4() {
-        //查询所有计算时间超过限定时间的场景,计算成功、未被删除、最后一次计算后未被删除过的
-        List<SceneBean> sceneBeans = scenePlusService.listCleanOss4DeletedScene(cleanDeletedMonth);
-        this.cleanOrig4Delete(sceneBeans, true, 2);
-    }
-
-    /**
-     * 删除已删除场景的原始资源及caches目录(v3场景不需要删除caches目录)
-     * @param sceneBeans
-     * @param deleteCaches 是否需要删除caches目录
-     */
-    private void cleanOrig4Delete(List<SceneBean> sceneBeans, boolean deleteCaches, Integer type){
-        if(CollUtil.isEmpty(sceneBeans)){
-            return;
-        }
-        sceneBeans.parallelStream().forEach(scene->{
-            try {
-                //删除caches文件
-                if(deleteCaches){
-                    this.deleteResultCaches(scene.getNum());
-                }
-                //删除原始资源
-                this.cleanOrigHandler(scene);
-
-                this.saveLog(scene.getNum(), type, CommonSuccessStatus.SUCCESS.code(), null);
-            }catch (Exception e){
-                log.error("删除已删除场景资源失败,num : " + scene.getNum(), e);
-                this.saveLog(scene.getNum(), type, CommonSuccessStatus.FAIL.code(), ExceptionUtil.stacktraceToString(e, 3000));
-            }
-        });
-    }
-
-    private void deleteResultCaches(String num){
-        String cachesPath = String.format(UploadFilePath.scene_result_data_path, num).concat("caches");
-        if(CollUtil.isEmpty(fYunFileService.listRemoteFiles(cachesPath))){
-            return;
-        }
-        fYunFileService.deleteFolder(cachesPath);
-    }
-
-    @Override
-    public void cleanOss4TestCameraV3() {
-        List<Camera> cameras = cameraService.listBySnCodes(testSnCodeList);
-        if(CollUtil.isEmpty(cameras)){
-            return;
-        }
-        Set<Long> cameraIds = cameras.stream().map(Camera::getId).collect(Collectors.toSet());
-        List<SceneBean> sceneBeans = sceneProService.listCleanOss4TestCamera(cameraIds, cleanTestCameraMonth);
-        this.cleanOrig4Delete(sceneBeans, false, 3);
-    }
-
-    @Override
-    public void cleanOss4TestCameraV4() {
-        List<Camera> cameras = cameraService.listBySnCodes(testSnCodeList);
-        if(CollUtil.isEmpty(cameras)){
-            return;
-        }
-        Set<Long> cameraIds = cameras.stream().map(Camera::getId).collect(Collectors.toSet());
-        List<SceneBean> sceneBeans = scenePlusService.listCleanOss4TestCamera(cameraIds, cleanTestCameraMonth);
-        this.cleanOrig4Delete(sceneBeans, true, 3);
-    }
-
-    @Override
-    public void coldStorageHomeV3() {
-        //查询所有计算时间超过限定时间的场景,计算成功、未被删除
-        List<SceneBean> sceneBeans = sceneProService.listColdStorageScene(coldStorageMonth);
-        this.coldStorage(sceneBeans);
-    }
-
-    @Override
-    public void coldStorageHomeV4() {
-        //查询所有计算时间超过限定时间的场景,计算成功、未被删除
-        List<SceneBean> sceneBeans = scenePlusService.listColdStorageScene(coldStorageMonth);
-        this.coldStorage(sceneBeans);
-    }
-
-    private void coldStorage(List<SceneBean> sceneBeans){
-        if(CollUtil.isEmpty(sceneBeans)){
-            return;
-        }
-        sceneBeans.parallelStream().forEach(scene->{
-            boolean lock = this.lock(scene.getDataSource());
-            try {
-                if(lock) {
-                    this.coldStorageHandler(scene);
-                    sceneColdStorageLogService.saveLog(scene.getNum(), scene.getDataSource(), 1, 1, null);
-                    sceneColdStorageService.save(scene.getNum(), 1, coldBucket, bucket);
-                }
-            }catch (Exception e){
-                log.error("冷归档失败,num:{}" + scene.getNum(), e);
-                sceneColdStorageLogService.saveLog(scene.getNum(), scene.getDataSource(),1, CommonSuccessStatus.FAIL.code(), ExceptionUtil.stacktraceToString(e, 3000));
-            }finally {
-                this.releaseLock(scene.getDataSource());
-            }
-        });
-    }
-
-    private void coldStorageHandler(SceneBean scene){
-        String dataSource = scene.getDataSource();
-        if(StrUtil.isEmpty(dataSource) || dataSource.length() < 10) {
-            return;
-        }
-        String homePath = dataSource.replace(ConstantFilePath.BUILD_MODEL_PATH, ConstantFilePath.OSS_PREFIX);
-
-        //将文件复制到冷归档bucket
-        fYunFileService.copyFileBetweenBucket(bucket, homePath, coldBucket, homePath);
-
-        List<String> origList = fYunFileService.listRemoteFiles(bucket, homePath);
-        List<String> coldList = fYunFileService.listRemoteFiles(coldBucket, homePath);
-        if(origList.size() != coldList.size()){
-            throw new RuntimeException("复制文件到冷归档bucket失败");
-        }
-
-        //删除标准bucket文件
-        fYunFileService.deleteFolder(homePath);
-    }
-}
+//package com.fdkankan.scene.service.impl;
+//
+//import cn.hutool.core.collection.CollUtil;
+//import cn.hutool.core.exceptions.ExceptionUtil;
+//import cn.hutool.core.util.StrUtil;
+//import com.alibaba.fastjson.JSON;
+//import com.alibaba.fastjson.JSONObject;
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+//import com.fdkankan.common.constant.CommonSuccessStatus;
+//import com.fdkankan.fyun.face.FYunFileServiceInterface;
+//import com.fdkankan.model.constants.ConstantFilePath;
+//import com.fdkankan.model.constants.UploadFilePath;
+//import com.fdkankan.model.utils.SceneUtil;
+//import com.fdkankan.redis.constant.RedisKey;
+//import com.fdkankan.redis.util.RedisUtil;
+//import com.fdkankan.scene.bean.SceneBean;
+//import com.fdkankan.scene.entity.Camera;
+//import com.fdkankan.scene.entity.SceneCleanOrig;
+//import com.fdkankan.scene.mapper.ISceneCleanOrigMapper;
+//import com.fdkankan.scene.service.*;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.cloud.context.config.annotation.RefreshScope;
+//import org.springframework.stereotype.Service;
+//
+//import java.util.List;
+//import java.util.Map;
+//import java.util.Set;
+//import java.util.stream.Collectors;
+//
+///**
+// * <p>
+// * 删除oss原始资源记录 服务实现类
+// * </p>
+// *
+// * @author
+// * @since 2023-03-29
+// */
+//@RefreshScope
+//@Slf4j
+//@Service
+//public class SceneCleanOrigServiceImpl extends ServiceImpl<ISceneCleanOrigMapper, SceneCleanOrig> implements ISceneCleanOrigService {
+//
+//    @Value("${scene.cleanOrig.month}")
+//    private Integer cleanOrigMonth;
+//    @Value("${scene.coldStorage.month}")
+//    private Integer coldStorageMonth;
+//    @Value("${scene.cleanDeleted.month}")
+//    private Integer cleanDeletedMonth;
+//    @Value("#{'${scene.cleanTestCamera.snCode:}'.split(',')}")
+//    private List<String> testSnCodeList;
+//    @Value("${scene.cleanTestCamera.month}")
+//    private Integer cleanTestCameraMonth;
+//    @Value("${fyun.bucket}")
+//    private String bucket;
+//    @Value("${fyun.coldBucket}")
+//    private String coldBucket;
+//    @Autowired
+//    private ICameraService cameraService;
+//    @Autowired
+//    private ISceneColdStorageService sceneColdStorageService;
+//
+//
+//    @Autowired
+//    private ISceneProService sceneProService;
+//    @Autowired
+//    private IScenePlusService scenePlusService;
+//    @Autowired
+//    private IScenePlusExtService scenePlusExtService;
+//    @Autowired
+//    private FYunFileServiceInterface fYunFileService;
+//    @Autowired
+//    private RedisUtil redisUtil;
+//    @Autowired
+//    private ISceneColdStorageLogService sceneColdStorageLogService;
+//
+//    @Override
+//    public void cleanOrigV4() {
+//        //查询所有计算时间超过限定时间的场景,计算成功、未被删除、最后一次计算后未被删除过的
+//        List<SceneBean> sceneBeans = scenePlusService.listCleanOrigScene(cleanOrigMonth);
+//        this.cleanOrig(sceneBeans);
+//    }
+//
+//    @Override
+//    public void cleanOrigV3() {
+//        //查询所有计算时间超过限定时间的场景,计算成功、未被删除
+//        List<SceneBean> sceneBeans = sceneProService.listCleanOrigScene(cleanOrigMonth);
+//        this.cleanOrig(sceneBeans);
+//
+//    }
+//
+//    private void cleanOrig(List<SceneBean> sceneBeans){
+//        if(CollUtil.isEmpty(sceneBeans)){
+//            return;
+//        }
+//        sceneBeans.parallelStream().forEach(scene->{
+//            boolean lock = this.lock(scene.getDataSource());
+//            try {
+//                if(lock) {
+//                    this.cleanOrigHandler(scene);
+//                    this.saveLog(scene.getNum(), 1, CommonSuccessStatus.SUCCESS.code(), null);
+//                }
+//            }catch (Exception e){
+//                log.error("删除原始资源失败,num : " + scene.getNum(), e);
+//                this.saveLog(scene.getNum(), 1, CommonSuccessStatus.FAIL.code(), ExceptionUtil.stacktraceToString(e, 3000));
+//            }finally {
+//                this.releaseLock(scene.getDataSource());
+//            }
+//        });
+//    }
+//
+//    private void cleanOrigHandler(SceneBean scene){
+//        String dataSource = scene.getDataSource();
+//        if(StrUtil.isNotEmpty(dataSource)){
+//            String homePath = dataSource.replace(ConstantFilePath.BUILD_MODEL_PATH, ConstantFilePath.OSS_PREFIX);
+//            //由于国内测试和生产用的bucket是同一个,这里需要做一个安全校验,保证不会删错
+//            String fileContent = fYunFileService.getFileContent(homePath.concat("/").concat("data.fdage"));
+//            if(StrUtil.isNotBlank(fileContent)){
+//                JSONObject jsonObject = JSON.parseObject(fileContent);
+//                String snCode = jsonObject.getJSONObject("cam").getString("uuid");
+//                String uuidTime = jsonObject.getString("uuidtime");
+//                if(StrUtil.isEmpty(snCode)
+//                        || StrUtil.isEmpty(uuidTime)
+//                        || !homePath.contains(snCode)
+//                        || !homePath.contains(uuidTime)){
+//                    throw new RuntimeException("dataSource与data.fdage文件不匹配");
+//                }else{
+//                    fYunFileService.deleteFolder(homePath);
+//                }
+//            }
+//        }
+//    }
+//
+//
+//
+//
+//    private void saveLog(String num, int type, int status, String reason){
+//        //清除旧的日志
+//        this.remove(new LambdaQueryWrapper<SceneCleanOrig>().eq(SceneCleanOrig::getNum, num));
+//        SceneCleanOrig sceneCleanOrig = new SceneCleanOrig();
+//        sceneCleanOrig.setNum(num);
+//        sceneCleanOrig.setType(type);
+//        sceneCleanOrig.setState(status);
+//        sceneCleanOrig.setReason(reason);
+//        this.saveOrUpdate(sceneCleanOrig);
+//    }
+//
+//    private boolean lock(String dataSource){
+//        Map<String, String> property = SceneUtil.getPropertyFromDataSource(dataSource);
+//        String homePath = property.get("homePath");
+//        String uuid = property.get("uuid");
+//
+//        String uploadLock = redisUtil.get(String.format(RedisKey.SCENE_OSS_HOME_DIR_UPLOAD, uuid));
+//        //场景正在上传,不删除
+//        if(StrUtil.isNotEmpty(uploadLock)){
+//            return false;
+//        }
+//        redisUtil.set(String.format(RedisKey.SCENE_OSS_HOME_DIR_DELETE, uuid), homePath, 8*60*60);
+//        return true;
+//    }
+//
+//    private void releaseLock(String dataSource){
+//        Map<String, String> property = SceneUtil.getPropertyFromDataSource(dataSource);
+//        String uuid = property.get("uuid");
+//        redisUtil.del(String.format(RedisKey.SCENE_OSS_HOME_DIR_DELETE, uuid));
+//    }
+//
+//
+//    @Override
+//    public void cleanOss4DeletedSceneV3() {
+//        List<SceneBean> sceneBeans = sceneProService.listCleanOss4DeletedScene(cleanDeletedMonth);
+//        this.cleanOrig4Delete(sceneBeans, false, 2);
+//    }
+//
+//    @Override
+//    public void cleanOss4DeletedSceneV4() {
+//        //查询所有计算时间超过限定时间的场景,计算成功、未被删除、最后一次计算后未被删除过的
+//        List<SceneBean> sceneBeans = scenePlusService.listCleanOss4DeletedScene(cleanDeletedMonth);
+//        this.cleanOrig4Delete(sceneBeans, true, 2);
+//    }
+//
+//    /**
+//     * 删除已删除场景的原始资源及caches目录(v3场景不需要删除caches目录)
+//     * @param sceneBeans
+//     * @param deleteCaches 是否需要删除caches目录
+//     */
+//    private void cleanOrig4Delete(List<SceneBean> sceneBeans, boolean deleteCaches, Integer type){
+//        if(CollUtil.isEmpty(sceneBeans)){
+//            return;
+//        }
+//        sceneBeans.parallelStream().forEach(scene->{
+//            try {
+//                //删除caches文件
+//                if(deleteCaches){
+//                    this.deleteResultCaches(scene.getNum());
+//                }
+//                //删除原始资源
+//                this.cleanOrigHandler(scene);
+//
+//                this.saveLog(scene.getNum(), type, CommonSuccessStatus.SUCCESS.code(), null);
+//            }catch (Exception e){
+//                log.error("删除已删除场景资源失败,num : " + scene.getNum(), e);
+//                this.saveLog(scene.getNum(), type, CommonSuccessStatus.FAIL.code(), ExceptionUtil.stacktraceToString(e, 3000));
+//            }
+//        });
+//    }
+//
+//    private void deleteResultCaches(String num){
+//        String cachesPath = String.format(UploadFilePath.scene_result_data_path, num).concat("caches");
+//        if(CollUtil.isEmpty(fYunFileService.listRemoteFiles(cachesPath))){
+//            return;
+//        }
+//        fYunFileService.deleteFolder(cachesPath);
+//    }
+//
+//    @Override
+//    public void cleanOss4TestCameraV3() {
+//        List<Camera> cameras = cameraService.listBySnCodes(testSnCodeList);
+//        if(CollUtil.isEmpty(cameras)){
+//            return;
+//        }
+//        Set<Long> cameraIds = cameras.stream().map(Camera::getId).collect(Collectors.toSet());
+//        List<SceneBean> sceneBeans = sceneProService.listCleanOss4TestCamera(cameraIds, cleanTestCameraMonth);
+//        this.cleanOrig4Delete(sceneBeans, false, 3);
+//    }
+//
+//    @Override
+//    public void cleanOss4TestCameraV4() {
+//        List<Camera> cameras = cameraService.listBySnCodes(testSnCodeList);
+//        if(CollUtil.isEmpty(cameras)){
+//            return;
+//        }
+//        Set<Long> cameraIds = cameras.stream().map(Camera::getId).collect(Collectors.toSet());
+//        List<SceneBean> sceneBeans = scenePlusService.listCleanOss4TestCamera(cameraIds, cleanTestCameraMonth);
+//        this.cleanOrig4Delete(sceneBeans, true, 3);
+//    }
+//
+//    @Override
+//    public void coldStorageHomeV3() {
+//        //查询所有计算时间超过限定时间的场景,计算成功、未被删除
+//        List<SceneBean> sceneBeans = sceneProService.listColdStorageScene(coldStorageMonth);
+//        this.coldStorage(sceneBeans);
+//    }
+//
+//    @Override
+//    public void coldStorageHomeV4() {
+//        //查询所有计算时间超过限定时间的场景,计算成功、未被删除
+//        List<SceneBean> sceneBeans = scenePlusService.listColdStorageScene(coldStorageMonth);
+//        this.coldStorage(sceneBeans);
+//    }
+//
+//    private void coldStorage(List<SceneBean> sceneBeans){
+//        if(CollUtil.isEmpty(sceneBeans)){
+//            return;
+//        }
+//        sceneBeans.parallelStream().forEach(scene->{
+//            boolean lock = this.lock(scene.getDataSource());
+//            try {
+//                if(lock) {
+//                    this.coldStorageHandler(scene);
+//                    sceneColdStorageLogService.saveLog(scene.getNum(), scene.getDataSource(), 1, 1, null);
+//                    sceneColdStorageService.save(scene.getNum(), 1, coldBucket, bucket);
+//                }
+//            }catch (Exception e){
+//                log.error("冷归档失败,num:{}" + scene.getNum(), e);
+//                sceneColdStorageLogService.saveLog(scene.getNum(), scene.getDataSource(),1, CommonSuccessStatus.FAIL.code(), ExceptionUtil.stacktraceToString(e, 3000));
+//            }finally {
+//                this.releaseLock(scene.getDataSource());
+//            }
+//        });
+//    }
+//
+//    private void coldStorageHandler(SceneBean scene){
+//        String dataSource = scene.getDataSource();
+//        if(StrUtil.isEmpty(dataSource) || dataSource.length() < 10) {
+//            return;
+//        }
+//        String homePath = dataSource.replace(ConstantFilePath.BUILD_MODEL_PATH, ConstantFilePath.OSS_PREFIX);
+//
+//        //将文件复制到冷归档bucket
+//        fYunFileService.copyFileBetweenBucket(bucket, homePath, coldBucket, homePath);
+//
+//        List<String> origList = fYunFileService.listRemoteFiles(bucket, homePath);
+//        List<String> coldList = fYunFileService.listRemoteFiles(coldBucket, homePath);
+//        if(origList.size() != coldList.size()){
+//            throw new RuntimeException("复制文件到冷归档bucket失败");
+//        }
+//
+//        //删除标准bucket文件
+//        fYunFileService.deleteFolder(homePath);
+//    }
+//}

+ 5 - 39
src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java

@@ -1,8 +1,4 @@
 package com.fdkankan.scene.service.impl;
 package com.fdkankan.scene.service.impl;
-import cn.hutool.core.util.CharsetUtil;
-import com.fdkankan.common.constant.*;
-import com.fdkankan.common.util.FileSizeUtil;
-import com.fdkankan.scene.vo.SaveFiltersParamVO;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
@@ -22,7 +18,6 @@ import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.FileSizeUtil;
 import com.fdkankan.common.util.FileSizeUtil;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.FileUtils;
-import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.model.constants.UploadFilePath;
 import com.fdkankan.model.constants.UploadFilePath;
 import com.fdkankan.model.utils.ComputerUtil;
 import com.fdkankan.model.utils.ComputerUtil;
@@ -38,40 +33,11 @@ import com.fdkankan.scene.config.FdkkLaserConfig;
 import com.fdkankan.scene.constant.ConstantFileLocPath;
 import com.fdkankan.scene.constant.ConstantFileLocPath;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneEditInfoMapper;
 import com.fdkankan.scene.mapper.ISceneEditInfoMapper;
-import com.fdkankan.scene.service.ICameraDetailService;
-import com.fdkankan.scene.service.ICompanyService;
-import com.fdkankan.scene.service.ISceneAsynOperLogService;
-import com.fdkankan.scene.service.ISceneDataDownloadService;
-import com.fdkankan.scene.service.ISceneEditControlsService;
-import com.fdkankan.scene.service.ISceneEditInfoExtService;
-import com.fdkankan.scene.service.ISceneEditInfoService;
-import com.fdkankan.scene.service.IScenePlusExtService;
-import com.fdkankan.scene.service.IScenePlusService;
-import com.fdkankan.scene.service.ISceneProService;
-import com.fdkankan.scene.service.ISceneUploadService;
-import com.fdkankan.scene.service.ISurveillanceService;
-import com.fdkankan.scene.vo.BallScreenVideoParamVO;
-import com.fdkankan.scene.vo.BaseDataParamVO;
-import com.fdkankan.scene.vo.BaseFileParamVO;
-import com.fdkankan.scene.vo.BaseSceneParamVO;
-import com.fdkankan.scene.vo.DeleteFileParamVO;
-import com.fdkankan.scene.vo.DeleteLinkPanParamVO;
-import com.fdkankan.scene.vo.DeleteStylesParamVO;
-import com.fdkankan.scene.vo.DeleteMosaicParamVO;
-import com.fdkankan.scene.vo.DeleteSidParamVO;
-import com.fdkankan.scene.vo.DownloadVO;
-import com.fdkankan.scene.vo.FileNameAndDataParamVO;
-import com.fdkankan.scene.vo.FileParamVO;
-import com.fdkankan.scene.vo.RenameCadParamVO;
-import com.fdkankan.scene.vo.SaveLinkPanParamVO;
-import com.fdkankan.scene.vo.SceneCheckKeyParamVO;
-import com.fdkankan.scene.vo.SceneEditControlsVO;
-import com.fdkankan.scene.vo.SceneEditInfoParamVO;
-import com.fdkankan.scene.vo.SceneEditInfoVO;
-import com.fdkankan.scene.vo.SceneInfoParamVO;
-import com.fdkankan.scene.vo.SceneInfoVO;
-import com.fdkankan.scene.vo.SurveillanceVO;
-import com.fdkankan.scene.vo.UploadPanoramaVO;
+import com.fdkankan.scene.oss.OssUtil;
+import com.fdkankan.scene.service.*;
+import com.fdkankan.scene.util.CmdBuildUtil;
+import com.fdkankan.scene.util.MergeVideoUtil;
+import com.fdkankan.scene.vo.*;
 import com.fdkankan.web.response.ResultData;
 import com.fdkankan.web.response.ResultData;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
 import com.google.errorprone.annotations.Var;
 import com.google.errorprone.annotations.Var;

+ 23 - 11
src/main/java/com/fdkankan/scene/service/impl/ScenePlusServiceImpl.java

@@ -284,9 +284,7 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     public ResultData initScene(String bucket, String num, String title, String des, Integer sceneSource,
     public ResultData initScene(String bucket, String num, String title, String des, Integer sceneSource,
         String dataSource, Integer sceneScheme, String sceneResolution, String sceneFrom, String mdoelKind) {
         String dataSource, Integer sceneScheme, String sceneResolution, String sceneFrom, String mdoelKind) {
 
 
-        ScenePlus scenePlusByNum = this.getScenePlusByNum(num);
-        if(Objects.nonNull(scenePlusByNum))
-            return ResultData.ok();
+        ScenePlus scenePlus = this.getScenePlusByNum(num);
 
 
         JSONObject fdageData = getFdageData(dataSource + File.separator + "capture" +File.separator+"data.fdage");
         JSONObject fdageData = getFdageData(dataSource + File.separator + "capture" +File.separator+"data.fdage");
         Integer videoVersion = fdageData.getInteger("videoVersion");
         Integer videoVersion = fdageData.getInteger("videoVersion");
@@ -296,7 +294,9 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         }
         }
 
 
         //生成场景主表
         //生成场景主表
-        ScenePlus scenePlus = new ScenePlus();
+        if(Objects.isNull(scenePlus)){
+            scenePlus = new ScenePlus();
+        }
         scenePlus.setNum(num);
         scenePlus.setNum(num);
         scenePlus.setSceneStatus(SceneStatus.SUCCESS.code());
         scenePlus.setSceneStatus(SceneStatus.SUCCESS.code());
         scenePlus.setSceneSource(sceneSource);
         scenePlus.setSceneSource(sceneSource);
@@ -304,10 +304,13 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         scenePlus.setSceneType(SceneType.OTHER.code());
         scenePlus.setSceneType(SceneType.OTHER.code());
         scenePlus.setTitle(title);
         scenePlus.setTitle(title);
         scenePlus.setDescription("<p>" + fdageData.getString("info") + "</p>");
         scenePlus.setDescription("<p>" + fdageData.getString("info") + "</p>");
-        this.save(scenePlus);
+        this.saveOrUpdate(scenePlus);
 
 
         //生成场景拓展表
         //生成场景拓展表
-        ScenePlusExt scenePlusExt = new ScenePlusExt();
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+        if(Objects.isNull(scenePlusExt)){
+            scenePlusExt = new ScenePlusExt();
+        }
         scenePlusExt.setPlusId(scenePlus.getId());
         scenePlusExt.setPlusId(scenePlus.getId());
         scenePlusExt.setDataSource(dataSource);
         scenePlusExt.setDataSource(dataSource);
         scenePlusExt.setSceneScheme(sceneScheme);
         scenePlusExt.setSceneScheme(sceneScheme);
@@ -318,25 +321,34 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         scenePlusExt.setYunFileBucket(bucket);
         scenePlusExt.setYunFileBucket(bucket);
         scenePlusExt.setAlgorithmTime(Calendar.getInstance().getTime());
         scenePlusExt.setAlgorithmTime(Calendar.getInstance().getTime());
         scenePlusExt.setVideos(this.getVideosJson(dataSource, videoVersion, num, cameraType).toJSONString());
         scenePlusExt.setVideos(this.getVideosJson(dataSource, videoVersion, num, cameraType).toJSONString());
-        scenePlusExtService.save(scenePlusExt);
+        scenePlusExtService.saveOrUpdate(scenePlusExt);
 
 
         //生成编辑主表
         //生成编辑主表
-        SceneEditInfo sceneEditInfo = new SceneEditInfo();
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        if(Objects.isNull(sceneEditInfo)){
+            sceneEditInfo = new SceneEditInfo();
+        }
         sceneEditInfo.setScenePlusId(scenePlus.getId());
         sceneEditInfo.setScenePlusId(scenePlus.getId());
         sceneEditInfo.setTitle(title);
         sceneEditInfo.setTitle(title);
         sceneEditInfo.setDescription(des);
         sceneEditInfo.setDescription(des);
-        sceneEditInfoService.save(sceneEditInfo);
+        sceneEditInfoService.saveOrUpdate(sceneEditInfo);
         sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
 
 
         //生成编辑拓展表
         //生成编辑拓展表
-        SceneEditInfoExt sceneEditInfoExt = new SceneEditInfoExt();
+        SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfo.getId());
+        if(Objects.isNull(sceneEditInfoExt)){
+            sceneEditInfoExt = new SceneEditInfoExt();
+        }
         sceneEditInfoExt.setScenePlusId(scenePlus.getId());
         sceneEditInfoExt.setScenePlusId(scenePlus.getId());
         sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
         sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
         sceneEditInfoExtService.save(sceneEditInfoExt);
         sceneEditInfoExtService.save(sceneEditInfoExt);
         sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfo.getId());
         sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfo.getId());
 
 
         //生成编辑显示控制表
         //生成编辑显示控制表
-        SceneEditControls sceneEditControls = new SceneEditControls();
+        SceneEditControls sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
+        if(Objects.isNull(sceneEditControls)){
+            sceneEditControls = new SceneEditControls();
+        }
         sceneEditControls.setEditInfoId(sceneEditInfo.getId());
         sceneEditControls.setEditInfoId(sceneEditInfo.getId());
         sceneEditControls.setShowMap(0);
         sceneEditControls.setShowMap(0);
         sceneEditControlsService.save(sceneEditControls);
         sceneEditControlsService.save(sceneEditControls);