瀏覽代碼

v4.3.0 监控摄像头功能

dengsixing 3 年之前
父節點
當前提交
a2db06fcc6
共有 21 個文件被更改,包括 534 次插入183 次删除
  1. 7 0
      4dkankan-center-scene/pom.xml
  2. 1 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/SceneApplication.java
  3. 5 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/SceneJsonBean.java
  4. 45 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/SurveillanceBean.java
  5. 33 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/config/MvpConfig.java
  6. 73 11
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java
  7. 21 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SurveillanceController.java
  8. 6 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfoExt.java
  9. 72 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/Surveillance.java
  10. 2 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/generate/AutoGenerate.java
  11. 18 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISurveillanceMapper.java
  12. 0 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoService.java
  13. 33 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISurveillanceService.java
  14. 19 166
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java
  15. 102 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SurveillanceServiceImpl.java
  16. 39 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/AddSurveillanceParamVO.java
  17. 22 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/BaseIdParamVO.java
  18. 2 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/BaseSceneParamVO.java
  19. 5 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneInfoVO.java
  20. 24 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/UpdateSurveillanceParamVO.java
  21. 5 0
      4dkankan-center-scene/src/main/resources/mapper/scene/SurveillanceMapper.xml

+ 7 - 0
4dkankan-center-scene/pom.xml

@@ -45,6 +45,13 @@
             <artifactId>4dkankan-utils-rabbitmq</artifactId>
             <version>2.0.0-SNAPSHOT</version>
         </dependency>
+
+<!--        <dependency>-->
+<!--            <groupId>com.fdkankan</groupId>-->
+<!--            <artifactId>4dkankan-mvp</artifactId>-->
+<!--            <version>1.0.0-SNAPSHOT</version>-->
+<!--        </dependency>-->
+
         <dependency>
             <groupId>com.fdkankan</groupId>
             <artifactId>4dkankan-utils-redis</artifactId>

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/SceneApplication.java

@@ -5,7 +5,6 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -20,6 +19,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @MapperScan("com.fdkankan.**.mapper")
 @ForestScan(basePackages = "com.fdkankan.scene.httpclient")
 public class SceneApplication {
+
     public static void main(String[] args) {
         SpringApplication.run(SceneApplication.class, args);
     }

+ 5 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/SceneJsonBean.java

@@ -199,6 +199,11 @@ public class SceneJsonBean {
      */
     private String roiFilter;
 
+    /**
+     * 是否有监控摄像头数据
+     */
+    private Integer surveillances;
+
 
 
 }

+ 45 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/SurveillanceBean.java

@@ -0,0 +1,45 @@
+package com.fdkankan.scene.bean;
+
+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.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 监控推拉流信息
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+@Data
+public class SurveillanceBean implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 监控名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 摄像头设置信息
+     */
+    @TableField("data")
+    private String data;
+
+    /**
+     * 播放地址
+     */
+    @TableField("play_url")
+    private String playUrl;
+
+}

+ 33 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/config/MvpConfig.java

@@ -0,0 +1,33 @@
+//package com.fdkankan.scene.config;
+//
+//import com.fdkankan.mvp.factory.InitFactory;
+//import javax.annotation.PostConstruct;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+//import org.springframework.context.annotation.Configuration;
+//
+///**
+// * <p>
+// * TODO
+// * </p>
+// *
+// * @author dengsixing
+// * @since 2022/9/8
+// **/
+//@Configuration
+//public class MvpConfig {
+//
+//    @Value("${sip.scheme:http}")
+//    private String scheme;
+//    @Value("${sip.ip:127.0.0.1}")
+//    private String ip;
+//    @Value("${sip.port:18080}")
+//    private String port;
+//
+//    @ConditionalOnProperty(name = "sip.init",havingValue = "true")
+//    @PostConstruct
+//    public void initSip(){
+//        InitFactory.init(scheme, ip, port);
+//    }
+//
+//}

+ 73 - 11
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -4,19 +4,55 @@ import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.SceneInfoReqType;
 import com.fdkankan.common.controller.BaseController;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.annotation.CheckCooperationPermit;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneEditService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneUploadService;
-import com.fdkankan.scene.vo.*;
-import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.service.ISurveillanceService;
+import com.fdkankan.scene.vo.AddSurveillanceParamVO;
+import com.fdkankan.scene.vo.BallScreenVideoParamVO;
+import com.fdkankan.scene.vo.BaseDataParamVO;
+import com.fdkankan.scene.vo.BaseFileParamVO;
+import com.fdkankan.scene.vo.BaseIdParamVO;
+import com.fdkankan.scene.vo.BaseSceneParamVO;
+import com.fdkankan.scene.vo.DeleteFileParamVO;
+import com.fdkankan.scene.vo.DeleteHotIconParamVO;
+import com.fdkankan.scene.vo.DeleteHotParamVO;
+import com.fdkankan.scene.vo.DeleteLinkPanParamVO;
+import com.fdkankan.scene.vo.DeleteLinkSceneStylesParamVO;
+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.LocalesParamVO;
+import com.fdkankan.scene.vo.RenameCadParamVO;
+import com.fdkankan.scene.vo.SaveLinkPanParamVO;
+import com.fdkankan.scene.vo.SaveTagsParamVO;
+import com.fdkankan.scene.vo.SaveTagsVisibleParamVO;
+import com.fdkankan.scene.vo.SaveUploadParamVO;
+import com.fdkankan.scene.vo.SceneAuthVO;
+import com.fdkankan.scene.vo.SceneEditInfoParamVO;
+import com.fdkankan.scene.vo.SceneEditInfoVO;
+import com.fdkankan.scene.vo.SceneEditParamVO;
+import com.fdkankan.scene.vo.SceneInfoParamVO;
+import com.fdkankan.scene.vo.SceneInfoVO;
+import com.fdkankan.scene.vo.UpdateSurveillanceParamVO;
+import com.fdkankan.scene.vo.UploadContentParamVO;
 import java.io.IOException;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 /**
@@ -27,6 +63,9 @@ import org.springframework.web.multipart.MultipartFile;
 @RequestMapping("/service/scene/edit")
 public class SceneEditController extends BaseController {
 
+    @Value("${spring.profiles.active}")
+    private String env;
+
     @Autowired
     private ISceneProService sceneProService;
     @Autowired
@@ -35,8 +74,9 @@ public class SceneEditController extends BaseController {
     private ISceneUploadService sceneUploadService;
     @Autowired
     private ISceneEditService sceneEditService;
-    @Value("${spring.profiles.active}")
-    private String env;
+    @Autowired
+    private ISurveillanceService surveillanceService;
+
 
     /**
      * <p>
@@ -1080,12 +1120,34 @@ public class SceneEditController extends BaseController {
     }
 
     /**
-     * 上传风格滤镜
-     */
-    @CheckCooperationPermit(description = "风格滤镜")
-    @RequestMapping(value = "/uploadROIFilter", method = RequestMethod.POST)
-    public ResultData uploadROIFilter(@RequestBody @Validated BaseDataParamVO param) throws Exception {
-        return sceneEditInfoService.uploadROIImage(param.getNum(), param.getData());
+     * <p>
+            添加监控
+     * </p>
+     * @author dengsixing
+     * @date 2022/9/20
+     * @param param
+     * @return com.fdkankan.common.response.ResultData
+     **/
+    @CheckCooperationPermit
+    @PostMapping("/surveillance/add")
+    public ResultData addSurveillance(@RequestBody @Validated AddSurveillanceParamVO param){
+        return surveillanceService.addSurveillance(param);
+    }
+
+    @CheckCooperationPermit
+    @PostMapping("/surveillance/update")
+    public ResultData updateSurveillance(@RequestBody @Validated UpdateSurveillanceParamVO param){
+        return surveillanceService.updateSurveillance(param);
+    }
+
+    @PostMapping("/surveillance/delete")
+    public ResultData deleteSurveillance(@RequestBody @Validated BaseIdParamVO param){
+        return surveillanceService.deleteSurveillance(param);
+    }
+
+    @PostMapping("/surveillance/list")
+    public ResultData listSurveillance(@RequestBody @Validated BaseSceneParamVO param){
+        return ResultData.ok(surveillanceService.listSurveillance(param.getNum()));
     }
 
 

+ 21 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SurveillanceController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.scene.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 监控推拉流信息 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+@RestController
+@RequestMapping("/scene/surveillance")
+public class SurveillanceController {
+
+}
+

+ 6 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfoExt.java

@@ -86,6 +86,12 @@ public class SceneEditInfoExt {
     private String roiFilter;
 
     /**
+     * 是否有监控摄像头(0-否,1-是)
+     */
+    @TableField("surveillances")
+    private Integer surveillances;
+
+    /**
      * 创建时间
      */
     @TableField("create_time")

+ 72 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/Surveillance.java

@@ -0,0 +1,72 @@
+package com.fdkankan.scene.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 2022-09-16
+ */
+@Getter
+@Setter
+@TableName("t_surveillance")
+public class Surveillance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 监控名称
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 摄像头设置信息
+     */
+    @TableField("data")
+    private String data;
+
+    /**
+     * 播放地址
+     */
+    @TableField("play_url")
+    private String playUrl;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("rec_status")
+    @TableLogic("A")
+    private String recStatus;
+
+
+}

+ 2 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/generate/AutoGenerate.java

@@ -19,7 +19,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") + "\\4dkankan-center-scene";
 
         generate(path,"scene", getTables(new String[]{
-                "t_scene_repair_log","t_scene_pro_v3","t_scene_pro_edit_v3"
+                "t_surveillance","t_surveillance_play","t_scene_surveillance_play"
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -79,7 +79,7 @@ public class AutoGenerate {
 
                             .entityBuilder()
                             .enableLombok()
-                            .logicDeleteColumnName("tb_status")
+                            .logicDeleteColumnName("rec_status")
                             .enableTableFieldAnnotation()
 //                            .superClass(BaseEntity.class)
 

+ 18 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISurveillanceMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.Surveillance;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 监控推拉流信息 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+@Mapper
+public interface ISurveillanceMapper extends BaseMapper<Surveillance> {
+
+}

+ 0 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneEditInfoService.java

@@ -96,8 +96,6 @@ public interface ISceneEditInfoService extends IService<SceneEditInfo> {
 
     ResultData listFilter(BaseSceneParamVO param) throws Exception;
 
-    ResultData uploadROIImage(String sceneNum, String filter) throws Exception;
-
 
 
 }

+ 33 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISurveillanceService.java

@@ -0,0 +1,33 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.entity.Surveillance;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.scene.vo.AddSurveillanceParamVO;
+import com.fdkankan.scene.vo.BaseIdParamVO;
+import com.fdkankan.scene.vo.BaseSceneParamVO;
+import com.fdkankan.scene.vo.UpdateSurveillanceParamVO;
+import java.util.List;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * <p>
+ * 监控推拉流信息 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+public interface ISurveillanceService extends IService<Surveillance> {
+
+    ResultData addSurveillance(AddSurveillanceParamVO param);
+
+    ResultData updateSurveillance(UpdateSurveillanceParamVO param);
+
+    ResultData deleteSurveillance(BaseIdParamVO param);
+
+    List<Surveillance> listSurveillance(String num);
+
+
+}

+ 19 - 166
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java

@@ -41,6 +41,7 @@ import com.fdkankan.scene.bean.RequestSceneProV4;
 import com.fdkankan.scene.bean.SceneJsonBean;
 import com.fdkankan.scene.bean.SegmentBean;
 import com.fdkankan.scene.bean.StyleBean;
+import com.fdkankan.scene.bean.SurveillanceBean;
 import com.fdkankan.scene.bean.TagBean;
 import com.fdkankan.scene.bean.VertexBean;
 import com.fdkankan.scene.bean.WallBean;
@@ -54,6 +55,7 @@ import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.entity.ScenePlusExt;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProV3;
+import com.fdkankan.scene.entity.Surveillance;
 import com.fdkankan.scene.factory.FloorLogoHandlerFactory;
 import com.fdkankan.scene.factory.MusicHandlerFactory;
 import com.fdkankan.scene.factory.ScreenshotHandlerFactory;
@@ -68,6 +70,7 @@ import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneProExtService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneUploadService;
+import com.fdkankan.scene.service.ISurveillanceService;
 import com.fdkankan.scene.vo.*;
 import com.google.common.collect.Lists;
 import com.google.errorprone.annotations.Var;
@@ -166,6 +169,8 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
     private FdkankanMiniClient fdkankanMiniClient;
     @Autowired
     private ISceneUploadService sceneUploadService;
+    @Autowired
+    private ISurveillanceService surveillanceService;
 
     @Transactional
     @Override
@@ -292,6 +297,9 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         //发布滤镜数据
         this.publicFilterData(num, sceneEditInfoExt.getFilters());
 
+        //发布摄像头数据
+        this.publicSurveillance(num, sceneEditInfoExt.getSurveillances());
+
         //本地写sceneJson文件
         String localSceneJsonPath = String.format(ConstantFilePath.SCENE_DATA_PATH_V4, num) + "scene.json";
         FileUtils.writeFile(localSceneJsonPath, JSON.toJSONString(sceneJson));
@@ -340,6 +348,17 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         return ResultData.ok();
     }
 
+    private void publicSurveillance(String num, Integer surveillances) throws IOException {
+        String surveillanceJsonPath = String.format(UploadFilePath.USER_EDIT_PATH, num) + "surveillance.json";
+        if(surveillances == CommonStatus.NO.code().intValue()){
+            uploadToOssUtil.delete(surveillanceJsonPath);
+            return;
+        }
+        List<Surveillance> surveillanceList = surveillanceService.listSurveillance(num);
+        List<SurveillanceBean> surveillanceBeanList = BeanUtil.copyToList(surveillanceList, SurveillanceBean.class);
+        uploadToOssUtil.upload(JSON.toJSONString(surveillanceBeanList).getBytes(StandardCharsets.UTF_8), surveillanceJsonPath);
+    }
+
     public void publicLinkSceneData(String num) throws IOException {
 
         String imgEditPath = String.format(UploadFilePath.IMG_EDIT_PATH, num);
@@ -2810,170 +2829,4 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
         return ResultData.ok(collect);
     }
 
-    @Override
-    public ResultData uploadROIImage(String num, String filter) throws Exception {
-
-        JSONObject filterObj = JSON.parseObject(filter);
-
-        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
-        if(Objects.isNull(scenePlus)){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-        }
-        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
-        if(Objects.isNull(scenePlusExt)){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-        }
-        SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
-
-        String imgViewPath = String.format(UploadFilePath.IMG_VIEW_PATH, num);
-
-        String path = scenePlusExt.getDataSource();
-
-        if(!ObjectUtils.isEmpty(path) && path.startsWith("http")){
-            path = ConstantFilePath.BUILD_MODEL_PATH + File.separator + path.split("/")[path.split("/").length - 2];
-        }
-        String target = path + "_roi";
-
-        FileUtils.deleteDirectory(target);
-
-        //文件上传的位置可以自定义
-        String filePath = target + "/extras" + "/images/";
-        File imageFile = new File(filePath);
-        if(!imageFile.getParentFile().exists()){
-            imageFile.getParentFile().mkdirs();
-        }
-
-        FileUtils.copyFolderAllFiles(path + "/caches/images/", filePath, true);
-
-        String roiFilter = sceneEditInfoExt.getRoiFilter();
-        JSONArray jsonArray = new JSONArray();
-        if(StrUtil.isNotEmpty(roiFilter)){
-            jsonArray = JSONArray.parseArray(roiFilter);
-        }
-        jsonArray.add(filterObj);
-
-        // 准备算法数据
-        Map<String, JSONObject> panoIdMap = new HashMap<>();
-        jsonArray.stream().forEach(item -> {
-            JSONObject obj = (JSONObject)item;
-            String panoId = obj.getString("panoId");
-            if(panoIdMap.containsKey(panoId)){
-                panoIdMap.get(panoId).getJSONArray("rect").addAll(obj.getJSONArray("rect"));
-            }else{
-                panoIdMap.put(panoId, obj);
-            }
-        });
-        JSONObject roiImageJSon = new JSONObject();
-        roiImageJSon.put("batch",panoIdMap.values());
-
-        FileUtils.writeFile(target + "/extras" + "/image-ROI.json", JSON.toJSONString(roiImageJSon,SerializerFeature.DisableCircularReferenceDetect));
-
-        FileUtils.copyFile(path + "/results/vision.txt", target + "/extras/vision.txt", true);
-        FileUtils.copyFile(path + "/results/vision2.txt", target + "/extras/vision2.txt", true);
-
-        FileUtils.copyFile(path + "/data.json", target + "/data.json", true);
-
-        String data = FileUtils.readFile(target + File.separator+"data.json");
-        if(data != null){
-            JSONObject floorplanJson = new JSONObject();
-            floorplanJson.put("has_source_images", true);
-            floorplanJson.put("has_vision_txt", true);
-
-            JSONObject dataJson = JSONObject.parseObject(data);
-            dataJson.put("extras", floorplanJson);
-            dataJson.put("split_type", "SPLIT_V24");
-            //V5表示不需要生成high,low文件
-            String skyboxType = "SKYBOX_V6";
-            if(scenePlusExt.getSceneScheme() == 11){
-                skyboxType = "SKYBOX_V7";
-            }
-            //sceneScheme为3切成瓦片图
-            if(scenePlusExt.getSceneScheme() == 3){
-                if("4k".equals(scenePlusExt.getSceneResolution())){
-                    skyboxType = "SKYBOX_V14";
-                }else{
-                    skyboxType = "SKYBOX_V13";
-                }
-            }
-            dataJson.put("skybox_type", skyboxType);
-            FileUtils.writeFile(target + File.separator+"data.json", new String(dataJson.toString().getBytes(), "UTF-8"));
-        }
-
-        FileUtils.copyFile(path + File.separator + "project.json", target + File.separator+"project.json", true);
-
-        //进行计算
-        log.info("风格滤镜:开始建模——" + num);
-        CreateObjUtil.build3dModel2(target , "1");
-
-        //读取upload文件,检验需要上传的文件是否存在
-        String uploadJsonPath = target + "/results/" + "upload.json";
-        Thread.sleep(2000);
-        boolean exist = ComputerUtil.checkComputeCompleted(uploadJsonPath, maxCheckTimes, waitTime);
-        if(!exist){
-            throw new BusinessException(ErrorCode.FAILURE_CODE_7013);
-        }
-        String uploadData = FileUtils.readFile(uploadJsonPath);
-        JSONObject uploadJson = null;
-        JSONArray array = null;
-        if(uploadData!=null) {
-            uploadJson = JSONObject.parseObject(uploadData);
-            array = uploadJson.getJSONArray("upload");
-        }
-        if(array == null){
-            throw new Exception("upload.json数据出错");
-        }
-        Map<String,String> map = new HashMap<String,String>();
-        JSONObject fileJson = null;
-        String fileName = "";
-        for(int i = 0, len = array.size(); i < len; i++){
-            fileJson = array.getJSONObject(i);
-            fileName = fileJson.getString("file");
-            //文件不存在抛出异常
-            if(!new File(target + File.separator + "results" +File.separator + fileName).exists()){
-                throw new Exception(target + File.separator + "results" +File.separator + fileName+"文件不存在");
-            }
-
-            //high文件夹
-            if(fileJson.getIntValue("clazz") == 3){
-                map.put(target + File.separator + "results" +File.separator+ fileName,
-                    imgViewPath+"pan/high/"+ fileName.replace("high/", ""));
-            }
-            //low文件夹
-            if(fileJson.getIntValue("clazz") == 4){
-                map.put(target + File.separator + "results" +File.separator+ fileName,
-                    imgViewPath+"pan/low/"+ fileName.replace("low/", ""));
-            }
-
-            //tiles文件夹,亚马逊没有裁剪图片api,不需要上传4k图
-            if(fileJson.getIntValue("clazz") == 5){
-                map.put(target + File.separator + "results" + File.separator+ fileName, imgViewPath + fileName);
-            }
-
-            //tiles文件夹,亚马逊瓦片图
-            if(fileJson.getIntValue("clazz") == 7 ){
-                map.put(target + File.separator + "results" + File.separator+ fileName, imgViewPath + fileName);
-            }
-        }
-
-        for(String imagesName : imageFile.list()){
-            //覆盖原始图片资源
-            FileUtils.copyFile(target + File.separator + "extras/images/" + imagesName,
-                path + File.separator + "caches/images/" + imagesName, true);
-            FileUtils.deleteFile(target + File.separator + "extras/images/" + imagesName);
-        }
-        if(map.size()>0)
-            uploadToOssUtil.uploadMulFiles(map);
-
-        //更新数据库版本号
-        SceneEditInfo sceneEditInfo = this.getByScenePlusId(scenePlus.getId());
-        this.upgradeVersionAndImgVersionById(sceneEditInfo.getId());
-
-        sceneEditInfoExt.setRoiFilter(JSON.toJSONString(jsonArray,SerializerFeature.DisableCircularReferenceDetect));
-        sceneEditInfoExtService.updateById(sceneEditInfoExt);
-
-        Map<String,Object> result = new HashMap<>(1);
-        result.put("roiFilter",jsonArray);
-
-        return ResultData.ok(result);
-    }
 }

+ 102 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SurveillanceServiceImpl.java

@@ -0,0 +1,102 @@
+package com.fdkankan.scene.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.CommonStatus;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.entity.SceneEditInfoExt;
+import com.fdkankan.scene.entity.ScenePlus;
+import com.fdkankan.scene.entity.Surveillance;
+import com.fdkankan.scene.mapper.ISurveillanceMapper;
+import com.fdkankan.scene.service.ISceneEditInfoExtService;
+import com.fdkankan.scene.service.IScenePlusService;
+import com.fdkankan.scene.service.ISurveillanceService;
+import com.fdkankan.scene.service.impl.IFdkkLaserServiceImpl.Result;
+import com.fdkankan.scene.vo.AddSurveillanceParamVO;
+import com.fdkankan.scene.vo.BaseIdParamVO;
+import com.fdkankan.scene.vo.BaseSceneParamVO;
+import com.fdkankan.scene.vo.UpdateSurveillanceParamVO;
+import java.util.List;
+import java.util.Objects;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 监控推拉流信息 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-09-16
+ */
+@Service
+public class SurveillanceServiceImpl extends ServiceImpl<ISurveillanceMapper, Surveillance> implements ISurveillanceService {
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private ISceneEditInfoExtService sceneEditInfoExtService;
+
+    @Override
+    public ResultData addSurveillance(AddSurveillanceParamVO param) {
+
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+        if(Objects.isNull(scenePlus)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
+
+        Surveillance surveillance = new Surveillance();
+        surveillance.setNum(param.getNum());
+        surveillance.setName(param.getName());
+        surveillance.setData(param.getData().toJSONString());
+        surveillance.setPlayUrl(param.getPlayUrl());
+        this.save(surveillance);
+
+        sceneEditInfoExt.setSurveillances(CommonStatus.YES.code().intValue());
+        sceneEditInfoExtService.updateById(sceneEditInfoExt);
+
+        return ResultData.ok();
+    }
+
+    @Override
+    public ResultData updateSurveillance(UpdateSurveillanceParamVO param) {
+
+        Surveillance surveillance = this.getById(param.getId());
+        if(Objects.isNull(surveillance)){
+            throw new BusinessException(ServerCode.SYSTEM_ERROR);
+        }
+        surveillance.setName(param.getName());
+        surveillance.setData(param.getData().toJSONString());
+        surveillance.setPlayUrl(param.getPlayUrl());
+        this.updateById(surveillance);
+
+        return ResultData.ok();
+    }
+
+    @Override
+    public ResultData deleteSurveillance(BaseIdParamVO param) {
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+        if(Objects.isNull(scenePlus)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
+        this.removeById(param.getId());
+        long count = this.count(new LambdaQueryWrapper<Surveillance>().eq(Surveillance::getNum, param.getNum()));
+        if(count < 1){
+            sceneEditInfoExt.setSurveillances(CommonStatus.NO.code().intValue());
+        }
+        sceneEditInfoExtService.updateById(sceneEditInfoExt);
+        return ResultData.ok();
+    }
+
+    @Override
+    public List<Surveillance> listSurveillance(String num) {
+        return this.list(new LambdaQueryWrapper<Surveillance>().eq(Surveillance::getNum, num));
+    }
+}

+ 39 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/AddSurveillanceParamVO.java

@@ -0,0 +1,39 @@
+package com.fdkankan.scene.vo;
+
+import com.alibaba.fastjson.JSONObject;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import lombok.Data;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/9/16
+ **/
+@Data
+public class AddSurveillanceParamVO{
+
+    @NotBlank(message = "场景码不能为空")
+    private String num;
+
+    @NotEmpty(message = "数据不能为空")
+    private JSONObject data;
+
+    @NotBlank(message = "name不能为空")
+    private String name;
+
+    @NotBlank(message = "playUrl不能为空")
+    private String playUrl;
+
+    private String type;
+
+    private String deviceId;
+
+    private String channelId;
+
+    private String rtspUrl;
+
+}

+ 22 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/BaseIdParamVO.java

@@ -0,0 +1,22 @@
+package com.fdkankan.scene.vo;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * <p>
+ * 通用data类型参数类
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/2/10
+ **/
+@Data
+public class BaseIdParamVO extends BaseSceneParamVO{
+
+    @NotNull(message = "id不能为空")
+    private Long id;
+
+}

+ 2 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/BaseSceneParamVO.java

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.vo;
 
+import java.io.Serializable;
 import javax.validation.constraints.NotBlank;
 import lombok.Data;
 
@@ -12,7 +13,7 @@ import lombok.Data;
  * @since 2022/2/22
  **/
 @Data
-public class BaseSceneParamVO {
+public class BaseSceneParamVO implements Serializable {
 
     /**
      * 场景码

+ 5 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneInfoVO.java

@@ -214,5 +214,10 @@ public class SceneInfoVO {
      */
     private String roiFilter;
 
+    /**
+     * 是否有监控摄像头数据
+     */
+    private Integer surveillances;
+
 
 }

+ 24 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/UpdateSurveillanceParamVO.java

@@ -0,0 +1,24 @@
+package com.fdkankan.scene.vo;
+
+import com.alibaba.fastjson.JSONObject;
+import javax.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * <p>
+ * 通用data类型参数类
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/2/10
+ **/
+@Data
+public class UpdateSurveillanceParamVO extends BaseIdParamVO{
+
+    private String name;
+
+    private String playUrl;
+
+    private JSONObject data;
+
+}

+ 5 - 0
4dkankan-center-scene/src/main/resources/mapper/scene/SurveillanceMapper.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.scene.mapper.ISurveillanceMapper">
+
+</mapper>