Selaa lähdekoodia

Merge branch 'feature-v4,9,0-20230417' into test

# Conflicts:
#	src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java
dsx 2 vuotta sitten
vanhempi
commit
92ca89e7d2

+ 21 - 0
src/main/java/com/fdkankan/contro/controller/SceneCleanOrigController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.contro.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 删除oss原始资源记录 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@RestController
+@RequestMapping("/contro/sceneCleanOrig")
+public class SceneCleanOrigController {
+
+}
+

+ 21 - 0
src/main/java/com/fdkankan/contro/controller/SceneCopyLogController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.contro.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@RestController
+@RequestMapping("/contro/sceneCopyLog")
+public class SceneCopyLogController {
+
+}
+

+ 66 - 0
src/main/java/com/fdkankan/contro/entity/SceneCleanOrig.java

@@ -0,0 +1,66 @@
+package com.fdkankan.contro.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 删除oss原始资源记录
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+@TableName("t_scene_clean_orig")
+public class SceneCleanOrig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("num")
+    private String num;
+
+    /**
+     * 0-处理中,1-成功,-1失败
+     */
+    @TableField("state")
+    private Integer state;
+
+    /**
+     * 失败原因
+     */
+    @TableField("reason")
+    private String reason;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * A-有效,I-删除
+     */
+    @TableField("rec_status")
+    @TableLogic(value = "A")
+    private String recStatus;
+
+
+}

+ 51 - 0
src/main/java/com/fdkankan/contro/entity/SceneCopyLog.java

@@ -0,0 +1,51 @@
+package com.fdkankan.contro.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Getter
+@Setter
+@TableName("t_scene_copy_log")
+public class SceneCopyLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("old_num")
+    private String oldNum;
+
+    @TableField("new_num")
+    private String newNum;
+
+    @TableField("copy_user_id")
+    private Integer copyUserId;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A")
+    private String recStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/contro/generate/AutoGenerate.java

@@ -17,7 +17,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"contro", getTables(new String[]{
-                "t_mail_template"
+                "t_scene_clean_orig"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 18 - 0
src/main/java/com/fdkankan/contro/mapper/ISceneCleanOrigMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.contro.mapper;
+
+import com.fdkankan.contro.entity.SceneCleanOrig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 删除oss原始资源记录 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Mapper
+public interface ISceneCleanOrigMapper extends BaseMapper<SceneCleanOrig> {
+
+}

+ 18 - 0
src/main/java/com/fdkankan/contro/mapper/ISceneCopyLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.contro.mapper;
+
+import com.fdkankan.contro.entity.SceneCopyLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Mapper
+public interface ISceneCopyLogMapper extends BaseMapper<SceneCopyLog> {
+
+}

+ 2 - 0
src/main/java/com/fdkankan/contro/mq/service/ICommonService.java

@@ -26,4 +26,6 @@ public interface ICommonService {
     public void uploadFloorplanJson(String num, String dataSource) throws Exception;
 
     public void sendEmail(String num);
+
+    String getOssOrignPath(String path);
 }

+ 6 - 28
src/main/java/com/fdkankan/contro/mq/service/impl/BuildObjServiceImpl.java

@@ -158,35 +158,13 @@ public class BuildObjServiceImpl implements IBuildSceneService {
     @Override
     public void downLoadSource(BuildSceneCallMessage message,String path) throws Exception{
 
-        ScenePro scenePro = sceneProService.getByNum(message.getSceneNum());
-        String version = "V4";
-        if(Objects.nonNull(scenePro) && scenePro.getIsUpgrade() != CommonStatus.YES.code().intValue()){
-            version = "V3";
-        }
+        //下载原始资源文件
+        String ossPath = commonService.getOssOrignPath(path);
+        fYunFileService.downloadFileByCommand(path + File.separator + "capture", ossPath);
 
-        if(SceneVersionType.V4.code().equals(version)){
-            String ossResultPath = String.format(UploadFilePath.scene_result_data_path, message.getSceneNum());
-            fYunFileService.downloadFile(ossResultPath + "caches/reconstruction/final.bin", path + "/caches/reconstruction/final.bin");
-            fYunFileService.downloadFile(ossResultPath + "caches/reconstruction/chunk.json", path + "/caches/reconstruction/chunk.json");
-            fYunFileService.downloadFile(ossResultPath + "caches/floor_group_fix.json", path + "/caches/floor_group_fix.json");
-            fYunFileService.downloadFileByCommand(path + "/caches/images/", ossResultPath + "caches/images/");
-            fYunFileService.downloadFileByCommand( path + "/caches/depthmap_csc/" , ossResultPath + "caches/depthmap_csc/");
-            fYunFileService.downloadFileByCommand( path + "/caches/depthmap_vis/", ossResultPath + "caches/depthmap_vis/");
-            fYunFileService.downloadFileByCommand( path + "/caches/depthmap/", ossResultPath + "caches/depthmap/");
-            fYunFileService.downloadFile(ossResultPath + "caches/panorama.json", path + "/caches/panorama.json");
-            fYunFileService.downloadFile(ossResultPath + "results/laserData/laser.ply", path + "/results/laserData/laser.ply");
-        }else{
-            String prevoisPath = message.getBuildContext().get("previousPath").toString();
-            FileUtils.copyFile(prevoisPath + "/caches/reconstruction/final.bin", path + "/caches/reconstruction/final.bin", true);
-            FileUtils.copyFile(prevoisPath + "/caches/reconstruction/chunk.json", path + "/caches/reconstruction/chunk.json", true);
-            FileUtils.copyFile(prevoisPath + "/caches/floor_group_fix.json", path + "/caches/floor_group_fix.json", true);
-            FileUtils.copyDirectiory(prevoisPath + "/caches/images", path + "/caches/images");
-            FileUtils.copyDirectiory(prevoisPath + "/caches/depthmap_csc", path + "/caches/depthmap_csc");
-            FileUtils.copyDirectiory(prevoisPath + "/caches/depthmap_vis", path + "/caches/depthmap_vis");
-            FileUtils.copyDirectiory(prevoisPath + "/caches/depthmap", path + "/caches/depthmap");
-            FileUtils.copyFile(prevoisPath + "/caches/panorama.json", path + "/caches/panorama.json", true);
-            FileUtils.copyFile(prevoisPath + "/results/laserData/laser.ply", path + "/results/laserData/laser.ply", true);
-        }
+        //下载caches/image,算法会执行快一些
+        String ossResultPath = String.format(UploadFilePath.scene_result_data_path, message.getSceneNum());
+        fYunFileService.downloadFileByCommand(path + "/caches/images/", ossResultPath + "caches/images/");
     }
 
     @Override

+ 8 - 3
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -88,6 +88,9 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
     @Value("${env:gn}")
     private String env;
 
+    @Value("#{'${build.scene.post.not-delete-nas-nums:}'.split(',')}")
+    private List<String> notDeleteNasNumList;
+
     @Autowired
     private RabbitMqProducer mqProducer;
 
@@ -346,7 +349,9 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             scenePlusService.updateById(scenePlus);
 
             //删除计算目录
-//            CreateObjUtil.deleteFile(path.replace(ConstantFilePath.BUILD_MODEL_PATH, "/"));
+            if(CollUtil.isEmpty(notDeleteNasNumList) || !notDeleteNasNumList.contains(sceneCode)){
+                CreateObjUtil.deleteFile(path.replace(ConstantFilePath.BUILD_MODEL_PATH, "/"));
+            }
 
             //国际环境需要发邮件通知
             if("eur".equals(env)){
@@ -635,8 +640,8 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
         String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+ num +".png";
         String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+ num +"_en.png";
         QrConfig qrConfig = QrConfig.create();
-        qrConfig.setWidth(512);
-        qrConfig.setHeight(512);
+        qrConfig.setWidth(1024);
+        qrConfig.setHeight(1024);
         if(!ObjectUtils.isEmpty(localLogoPath)){
             qrConfig.setImg(localLogoPath);
         }

+ 16 - 5
src/main/java/com/fdkankan/contro/mq/service/impl/CommonServiceImpl.java

@@ -14,6 +14,7 @@ import com.fdkankan.contro.factory.UserEditData.UserEditDataHandlerFactory;
 import com.fdkankan.contro.mq.service.ICommonService;
 import com.fdkankan.contro.service.*;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.model.constants.UploadFilePath;
 import com.fdkankan.model.utils.FloorPlanUserUtil;
 import com.fdkankan.sms.SendMailAcceUtils;
@@ -134,11 +135,11 @@ public class CommonServiceImpl implements ICommonService {
         if(FileUtil.exist(localPanoramaJson)){
             fYunFileServiceInterface.uploadFile(localPanoramaJson, ossPanoramaJson);
         }
-        String localLaserPly = dataSource + "/results/laserData/laser.ply";
-        String ossLaserPly =  ossResultPath + "results/laserData/laser.ply";
-        if(FileUtil.exist(localLaserPly)){
-            fYunFileServiceInterface.uploadFile(localLaserPly, ossLaserPly);
-        }
+//        String localLaserPly = dataSource + "/results/laserData/laser.ply";
+//        String ossLaserPly =  ossResultPath + "results/laserData/laser.ply";
+//        if(FileUtil.exist(localLaserPly)){
+//            fYunFileServiceInterface.uploadFile(localLaserPly, ossLaserPly);
+//        }
         String localFloorGroupFixJson = dataSource + "/caches/floor_group_fix.json";
         String ossFloorGroupFixJson = ossResultPath + "caches/floor_group_fix.json";
         if(FileUtil.exist(localFloorGroupFixJson)){
@@ -233,4 +234,14 @@ public class CommonServiceImpl implements ICommonService {
             log.error("发送邮件失败,num:" + num, e);
         }
     }
+
+    public String getOssOrignPath(String path) {
+        String ossPath = ConstantFilePath.OSS_PREFIX
+                + path.replace(ConstantFilePath.BUILD_MODEL_PATH, "")
+                .replace(ConstantFilePath.BUILD_MODEL_LASER_PATH, "");
+        if (!ossPath.endsWith("/")) {
+            ossPath = ossPath.concat("/");
+        }
+        return ossPath;
+    }
 }

+ 21 - 0
src/main/java/com/fdkankan/contro/service/ISceneCleanOrigService.java

@@ -0,0 +1,21 @@
+package com.fdkankan.contro.service;
+
+import com.fdkankan.contro.entity.SceneCleanOrig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 删除oss原始资源记录 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+public interface ISceneCleanOrigService extends IService<SceneCleanOrig> {
+
+    List<SceneCleanOrig> lisByNumAfterLastCall(String num, Date lastCallTime);
+
+}

+ 20 - 0
src/main/java/com/fdkankan/contro/service/ISceneCopyLogService.java

@@ -0,0 +1,20 @@
+package com.fdkankan.contro.service;
+
+import com.fdkankan.contro.entity.SceneCopyLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+public interface ISceneCopyLogService extends IService<SceneCopyLog> {
+
+    List<SceneCopyLog> listByNewNum(String newNum);
+
+}

+ 28 - 0
src/main/java/com/fdkankan/contro/service/impl/SceneCleanOrigServiceImpl.java

@@ -0,0 +1,28 @@
+package com.fdkankan.contro.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.contro.entity.SceneCleanOrig;
+import com.fdkankan.contro.mapper.ISceneCleanOrigMapper;
+import com.fdkankan.contro.service.ISceneCleanOrigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 删除oss原始资源记录 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Service
+public class SceneCleanOrigServiceImpl extends ServiceImpl<ISceneCleanOrigMapper, SceneCleanOrig> implements ISceneCleanOrigService {
+
+    @Override
+    public List<SceneCleanOrig> lisByNumAfterLastCall(String num, Date lastCallTime) {
+        return this.list(new LambdaQueryWrapper<SceneCleanOrig>().eq(SceneCleanOrig::getNum, num).gt(SceneCleanOrig::getCreateTime, lastCallTime));
+    }
+}

+ 26 - 0
src/main/java/com/fdkankan/contro/service/impl/SceneCopyLogServiceImpl.java

@@ -0,0 +1,26 @@
+package com.fdkankan.contro.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.contro.entity.SceneCopyLog;
+import com.fdkankan.contro.mapper.ISceneCopyLogMapper;
+import com.fdkankan.contro.service.ISceneCopyLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-17
+ */
+@Service
+public class SceneCopyLogServiceImpl extends ServiceImpl<ISceneCopyLogMapper, SceneCopyLog> implements ISceneCopyLogService {
+    @Override
+    public List<SceneCopyLog> listByNewNum(String newNum) {
+        return this.list(new LambdaQueryWrapper<SceneCopyLog>().eq(SceneCopyLog::getNewNum, newNum));
+    }
+}

+ 45 - 22
src/main/java/com/fdkankan/contro/service/impl/SceneFileBuildServiceImpl.java

@@ -107,8 +107,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     @Autowired
     private RedisUtil redisUtil;
 
-
-
     @Autowired
     private IScenePlusExtService scenePlusExtService;
 
@@ -169,6 +167,12 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     @Autowired
     private ISceneCopyDistinctEnvService sceneCopyDistinctEnvService;
 
+    @Autowired
+    private ISceneCopyLogService sceneCopyLogService;
+
+    @Autowired
+    private ISceneCleanOrigService sceneCleanOrigService;
+
     @Override
     public SceneFileBuild findByFileId(String fileId) {
 
@@ -221,14 +225,23 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         // 检测是否有生成
         String fileId = redisUtil.get(String.format(RedisConstants.FOLDER_FILEID_BUILD, folderName));
-        if (!ObjectUtils.isEmpty(fileId)) {
-            responseSceneFile.setFileId(fileId);
-            return responseSceneFile;
+        if (StrUtil.isEmpty(fileId)) {
+            SceneFileBuild sceneFileBuild = this.findByUnicode(folderName);
+            if (sceneFileBuild != null) {
+                fileId = sceneFileBuild.getFileId();
+            }
         }
+        if(StrUtil.isNotEmpty(fileId)){
+
+            //校验目录是否被上锁,如果上锁,抛出错误(避免删除原始资源定时任务执行过程中,有场景补拍重新上传)
+            String homePath = redisUtil.get(String.format(RedisKey.SCENE_OSS_HOME_DIR_DELETE, folderName));
+            if(StrUtil.isNotEmpty(homePath)){
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5073);
+            }
+            //如果原始资源目录不是正在被定时任务删除中,就加上上传锁,并正常返回
+            homePath = ConstantFilePath.OSS_PREFIX.concat(mac).concat("/").concat(fileId).concat("/").concat(folderName);
+            redisUtil.set(String.format(RedisKey.SCENE_OSS_HOME_DIR_UPLOAD, folderName), homePath, RedisKey.CAMERA_EXPIRE_7_TIME);
 
-        SceneFileBuild sceneFileBuild = this.findByUnicode(folderName);
-        if (sceneFileBuild != null) {
-            fileId = sceneFileBuild.getFileId();
             responseSceneFile.setFileId(fileId);
             redisUtil.set(String.format(RedisConstants.FOLDER_FILEID_BUILD, folderName), fileId, 2 * 24 * 60 * 60);
             return responseSceneFile;
@@ -242,7 +255,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         // 查找场景表
         LambdaQueryWrapper<ScenePro> proWrapper = new LambdaQueryWrapper<>();
-        proWrapper.like(ScenePro::getDataSource, "/" + folderName).eq(ScenePro::getRecStatus, 'A');
+        proWrapper.like(ScenePro::getDataSource, "/" + folderName);
         ScenePro pro = sceneProService.getOne(proWrapper);
 
         String dataSource = null;
@@ -265,7 +278,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             fileId = new SnowflakeIdGenerator(0, 0).nextId() + "";
             log.info("新生成build数据,{}", fileId);
         }
-        sceneFileBuild = new SceneFileBuild();
+
+        SceneFileBuild sceneFileBuild = new SceneFileBuild();
         sceneFileBuild.setChildName(mac);
         sceneFileBuild.setFileId(fileId);
         sceneFileBuild.setRecStatus("A");
@@ -1112,35 +1126,44 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     public ResultData rebuildScene(String num,Boolean force,Boolean deleteExtras) throws IOException {
 
         ScenePro scenePro = sceneProService.getByNum(num);
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
 
-        // TODO: 2023/1/12 3dtiles临时上激光场景
-//        if(Objects.nonNull(scenePro) && (Objects.isNull(scenePro.getIsUpgrade())
-//            || scenePro.getIsUpgrade() != CommonStatus.YES.code().intValue())){
-//            if(scenePro.getSceneSource() == SceneSource.JG.code().intValue()){
-//                return rebuildV3Scene(scenePro,num,force);
-//            }else{
-//                return rebuildV3SceneToMini(scenePro);
-//            }
-//        }
+        //复制出来的场景不支持重算
+        List<SceneCopyLog> sceneCopyLogs = sceneCopyLogService.listByNewNum(num);
+        if(CollUtil.isNotEmpty(sceneCopyLogs)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5071);
+        }
+
+        //已删除原始资源的场景不支持重算
+        Date laseCallTime = null;
+        ScenePlusExt scenePlusExt = null;
+        if(Objects.nonNull(scenePlus)){
+            scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+            laseCallTime = scenePlusExt.getAlgorithmTime();
+        }else{
+            laseCallTime = scenePro.getCreateTime();
+        }
+        //查询最后一次计算时间后是否有删除过目录,如果有,则不支持重算
+        List<SceneCleanOrig> sceneCleanOrigs = sceneCleanOrigService.lisByNumAfterLastCall(num, laseCallTime);
+        if(CollUtil.isNotEmpty(sceneCleanOrigs)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5072);
+        }
 
 
         //激光场景校验是否能够计算
         this.checkJgCanBuild(scenePro);
 
-        //如果是v3场景,不允许重算,需要升级v4后再调此接口进行重算
         if(Objects.nonNull(scenePro) && (Objects.isNull(scenePro.getIsUpgrade())
                 || scenePro.getIsUpgrade() != CommonStatus.YES.code().intValue())){
             return rebuildV3Scene(scenePro,num,force);
         }
 
-        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
         if(Objects.isNull(scenePlus)){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
         }
         if (scenePlus.getSceneStatus() == 0 && (ObjectUtils.isEmpty(force) || !force)) {
             throw new BusinessException(ErrorCode.FAILURE_CODE_5033);
         }
-        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
         String path = scenePlusExt.getDataSource();
         Integer sceneSource = scenePlus.getSceneSource();
         String buildType = scenePlusExt.getBuildType();

+ 5 - 0
src/main/resources/mapper/contro/SceneCleanOrigMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.contro.mapper.ISceneCleanOrigMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/contro/SceneCopyLogMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.contro.mapper.ISceneCopyLogMapper">
+
+</mapper>