瀏覽代碼

Merge branch 'test'

lyhzzz 2 年之前
父節點
當前提交
0e2d740ae9

+ 21 - 0
src/main/java/com/fdkankan/manage/controller/SceneMoveLogController.java

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

+ 67 - 0
src/main/java/com/fdkankan/manage/entity/SceneMoveLog.java

@@ -0,0 +1,67 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+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-03-02
+ */
+@Getter
+@Setter
+@TableName("t_scene_move_log")
+public class SceneMoveLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 相机迁移日志表
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 旧相机sn
+     */
+    @TableField("old_sn_code")
+    private String oldSnCode;
+
+    /**
+     * 新相机sn
+     */
+    @TableField("new_sn_code")
+    private String newSnCode;
+
+    @TableField("old_data_source")
+    private String oldDataSource;
+
+    @TableField("new_data_source")
+    private String newDataSource;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("data_source_bak")
+    private String dataSourceBak;
+
+
+}

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

@@ -18,8 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"manage", getTables(new String[]{
-                "t_camera_increment_log",
-                "t_mq_backup",
+                "t_scene_move_log",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 7 - 0
src/main/java/com/fdkankan/manage/httpClient/client/LaserClient.java

@@ -6,6 +6,7 @@ import com.fdkankan.manage.httpClient.address.LaserAddressSource;
 import com.fdkankan.manage.httpClient.param.LaserSceneMoveParam;
 import com.fdkankan.manage.httpClient.param.LaserSceneParam;
 import com.fdkankan.manage.httpClient.param.SSDownSceneParam;
+import com.fdkankan.manage.httpClient.param.SsBindParam;
 import com.fdkankan.manage.httpClient.vo.FdkkResponse;
 
 import java.util.HashMap;
@@ -70,4 +71,10 @@ public interface LaserClient {
      */
     @Post("/laser/4dage/downOfflineSceneStatus")
     Result downOfflineSceneStatus(@JSONBody SSDownSceneParam param) ;
+
+    /**
+     *解绑相机、绑定相机
+     */
+    @Post("/laser/4dage/scene/camera/toBind")
+    Result toBind(@JSONBody SsBindParam param) ;
 }

+ 13 - 0
src/main/java/com/fdkankan/manage/httpClient/param/SsBindParam.java

@@ -0,0 +1,13 @@
+package com.fdkankan.manage.httpClient.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class SsBindParam {
+    private Boolean bind;
+    private String phone;
+    private List<String> snCode;
+    private Integer userId;
+}

+ 15 - 0
src/main/java/com/fdkankan/manage/httpClient/service/LaserService.java

@@ -1,4 +1,5 @@
 package com.fdkankan.manage.httpClient.service;
+import com.google.common.collect.Lists;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -13,6 +14,7 @@ import com.fdkankan.manage.httpClient.client.LaserClient;
 import com.fdkankan.manage.httpClient.param.LaserSceneMoveParam;
 import com.fdkankan.manage.httpClient.param.LaserSceneParam;
 import com.fdkankan.manage.httpClient.param.SSDownSceneParam;
+import com.fdkankan.manage.httpClient.param.SsBindParam;
 import com.fdkankan.manage.httpClient.vo.FdkkResponse;
 import com.fdkankan.manage.service.*;
 import com.fdkankan.manage.vo.request.SceneParam;
@@ -302,5 +304,18 @@ public class LaserService {
         }
         return null ;
     }
+    public void toBind(String snCode) {
+        try {
+            SsBindParam param = new SsBindParam();
+            param.setBind(false);
+            param.setSnCode(Lists.newArrayList(snCode));
+            Result responseEntity = laserClient.toBind(param);
+            if( responseEntity.getCode() != HttpStatus.OK.value()){
+                log.error("解绑用户激光转台下载失败:{}",responseEntity);
+            }
+        }catch (Exception e){
+            log.error("解绑用户获取激光转台下载状态失败!",e);
+        }
+    }
 
 }

+ 18 - 0
src/main/java/com/fdkankan/manage/mapper/ISceneMoveLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.SceneMoveLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-02
+ */
+@Mapper
+public interface ISceneMoveLogMapper extends BaseMapper<SceneMoveLog> {
+
+}

+ 19 - 0
src/main/java/com/fdkankan/manage/service/ISceneMoveLogService.java

@@ -0,0 +1,19 @@
+package com.fdkankan.manage.service;
+
+import com.fdkankan.manage.entity.SceneMoveLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.entity.ScenePlus;
+import com.fdkankan.manage.entity.ScenePro;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-02
+ */
+public interface ISceneMoveLogService extends IService<SceneMoveLog> {
+
+    void saveLog(ScenePro scenePro, ScenePlus scenePlus, String oldSnCode, String newSnCode, String dataSource, String newDataSource, String fdagebak);
+}

+ 1 - 0
src/main/java/com/fdkankan/manage/service/impl/CameraDetailServiceImpl.java

@@ -72,6 +72,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
             snCode = cameraEntity.getSnCode();
             cooperationUserName  = user.getUserName();
             fdkkLaserService.disableCooperation(snCode,cooperationUserName);    //通知深时删除协作场景
+            fdkkLaserService.toBind(snCode);    //通知深时删除协作场景
         }
         sceneCooperationService.deleteCooperation(cameraId);                //删除协作场景关系
         LambdaUpdateWrapper<CameraDetail> wrapper = new LambdaUpdateWrapper<>();

+ 8 - 4
src/main/java/com/fdkankan/manage/service/impl/CameraServiceImpl.java

@@ -111,7 +111,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
             throw new BusinessException(ResultCode.WIFI_NAME_ERROR);
         }
         LambdaQueryWrapper<Camera> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Camera::getWifiName,wifiName);
+        wrapper.eq(Camera::getSnCode,wifiName.split("_")[1]);
         long count = this.count(wrapper);
         if(count > 0){
             throw new BusinessException(ResultCode.WIFI_NAME_REPEAT);
@@ -174,12 +174,16 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     public Integer ins(List<String> wifiNameList){
         List<Integer> errorRow = getErrorRow(wifiNameList);
         excelService.toExcelError(errorRow);
+        List<String> snCodeList = new ArrayList<>();
+        for (String wifiName : wifiNameList) {
+            snCodeList.add(wifiName.split("_")[1]);
+        }
         LambdaQueryWrapper<Camera> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(Camera::getWifiName,wifiNameList);
+        wrapper.in(Camera::getSnCode,snCodeList);
         List<Camera> list = this.list(wrapper);
         if(list.size() >0){
-            List<String> newList = list.parallelStream().map(Camera::getWifiName).collect(Collectors.toList());
-            List<Integer> errorRow2 = getErrorRow(wifiNameList, newList);
+            List<String> newList = list.parallelStream().map(Camera::getSnCode).collect(Collectors.toList());
+            List<Integer> errorRow2 = getErrorRow(snCodeList, newList);
             excelService.toExcelError(errorRow2);
         }
         return saveBatchCamera(wifiNameList);

+ 1 - 1
src/main/java/com/fdkankan/manage/service/impl/ExcelServiceImpl.java

@@ -111,7 +111,7 @@ public class ExcelServiceImpl implements IExcelService {
                     continue;
                 }
                 String wifiName = map.get(0);
-                if(StringUtils.isBlank(wifiName)){
+                if(StringUtils.isBlank(wifiName) || !wifiName.contains("_") || !wifiName.contains("4D")){
                     errorIndex.add(index -3);
                 }
                 wifiNameList.add(wifiName);

+ 35 - 0
src/main/java/com/fdkankan/manage/service/impl/SceneMoveLogServiceImpl.java

@@ -0,0 +1,35 @@
+package com.fdkankan.manage.service.impl;
+import java.util.Date;
+
+import com.fdkankan.manage.entity.SceneMoveLog;
+import com.fdkankan.manage.entity.ScenePlus;
+import com.fdkankan.manage.entity.ScenePro;
+import com.fdkankan.manage.mapper.ISceneMoveLogMapper;
+import com.fdkankan.manage.service.ISceneMoveLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-02
+ */
+@Service
+public class SceneMoveLogServiceImpl extends ServiceImpl<ISceneMoveLogMapper, SceneMoveLog> implements ISceneMoveLogService {
+
+    @Override
+    public void saveLog(ScenePro scenePro, ScenePlus scenePlus, String oldSnCode, String newSnCode, String dataSource, String newDataSource, String fdagebak) {
+        String num = scenePro == null ? scenePlus.getNum() : scenePro.getNum();
+        SceneMoveLog moveLog = new SceneMoveLog();
+        moveLog.setNum(num);
+        moveLog.setOldSnCode(oldSnCode);
+        moveLog.setNewSnCode(newSnCode);
+        moveLog.setOldDataSource(dataSource);
+        moveLog.setNewDataSource(newDataSource);
+        moveLog.setDataSourceBak(fdagebak);
+        this.save(moveLog);
+    }
+}

+ 32 - 8
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -81,6 +81,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     IFolderSceneService folderSceneService;
     @Autowired
     ISceneBuildProcessLogService sceneBuildProcessLogService;
+    @Autowired
+    ISceneMoveLogService sceneMoveLogService;
 
 
     @Override
@@ -273,10 +275,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         pluWr.in(ScenePlus::getId,lockedIds);
         List<ScenePlus> plusList = scenePlusService.list(pluWr);
         for (ScenePro scenePro : proList) {
-            this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),payStatus);
+            this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),payStatus,"payStatus");
         }
         for (ScenePlus scenePlus : plusList) {
-            this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),payStatus);
+            this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),payStatus,"payStatus");
         }
 
     }
@@ -284,7 +286,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     /**
      * 从oss中获取文件,并重写,上传替换
      */
-    private void updateOssStatus(String path,Integer payStatus) {
+    private void updateOssStatus(String path,Integer payStatus,String updateStatus) {
         String localPath = String.format(OssPath.localStatusPath, path);
         try {
             if(!fYunFileServiceInterface.fileExist(path)){
@@ -295,7 +297,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 return;
             }
             JSONObject jsonObject = JSONObject.parseObject(data);
-            jsonObject.put("payStatus",payStatus);
+            jsonObject.put(updateStatus,payStatus);
             String json = JSONUtil.toJsonStr(jsonObject);
             FileUtils.writeFile(localPath,json);
             log.info("updateOssStatus--localPath:{},ossPath:{}",localPath,path);
@@ -431,8 +433,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             wrapper.eq(ScenePro::getId,scenePro.getId());
             wrapper.set(ScenePro::getCameraId,camera.getId());
             wrapper.set(ScenePro::getUserId,cameraDetail.getUserId());
+            wrapper.set(ScenePro::getStatus,0);
             this.update(wrapper);
             //场景迁移到另外的相机清除本身在的文件夹
+            this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),0,"status");
             folderSceneService.delBySceneId(scenePro.getId());
         }
         if(scenePlus!=null){
@@ -440,7 +444,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             wrapper.eq(ScenePlus::getId,scenePlus.getId());
             wrapper.set(ScenePlus::getCameraId,camera.getId());
             wrapper.set(ScenePlus::getUserId,cameraDetail.getUserId());
+            wrapper.set(ScenePlus::getSceneStatus,0);
             scenePlusService.update(wrapper);
+            this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),0,"status");
             folderSceneService.delBySceneId(scenePlus.getId());
         }
         if(cameraDetail.getType() == 10){       //深时场景
@@ -476,25 +482,28 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             newSnCode = newSnCode.toLowerCase();
             String fdagePaht =  dataSource.replace("/mnt/data","home") +"/data.fdage";
             localPathFdage = String.format(OssPath.localFdagePath,fdagePaht);
-
             String fileContent = fYunFileServiceInterface.getFileContent(fdagePaht);
-
             JSONObject jsonObject = updateFdageJson(JSONObject.parseObject(fileContent), newSnCode);
             FileUtils.writeFile(localPathFdage ,JSONObject.toJSONString(jsonObject));
 
             String oldFdagePaht =  dataSource.replace("/mnt/data","home") ;
             String[] split = oldFdagePaht.split("/");
             String newFdagePath = split[0] +"/"+ newSnCode +"/"+ split[2] +"/"+ newSnCode +"_" + split[3].split("_")[1];
+            String delPath = null;
             if(!oldFdagePaht.equals(newFdagePath)){
                 log.info("updateFdageCopy--复制oss资源--oldFdagePaht:{},newFdagePath:{}",oldFdagePaht,newFdagePath);
                 fYunFileServiceInterface.copyFileInBucket(oldFdagePaht,newFdagePath);
-                fYunFileServiceInterface.deleteFolder(oldFdagePaht);
+                delPath = oldFdagePaht;
             }
-            fYunFileServiceInterface.copyFileInBucket(newFdagePath+"/data.fdage",newFdagePath+"/"+oldSnCode.toLowerCase()+"-"+newSnCode+"_"+Dateutils.getDate(new Date())+".data.fdage");
             fYunFileServiceInterface.uploadFile(localPathFdage,newFdagePath+"/data.fdage");
             log.info("updateFdage--localPathFdage:{},newFdagePath:{}",localPathFdage,newFdagePath);
+
             String newDataSource = newFdagePath.replace("home","/mnt/data");
             this.updateDataSource(scenePro,scenePlus,newDataSource);
+            if(delPath != null){
+                fYunFileServiceInterface.deleteFolder(oldFdagePaht);
+            }
+            sceneMoveLogService.saveLog(scenePro,scenePlus,oldSnCode,newSnCode,dataSource,newDataSource, fileContent);
         }catch (Exception e){
             log.error("updateFdage-error:oldSnCode:{},newSnCode:{},dataSource:{}",oldSnCode,newSnCode,dataSource);
             log.error("updateFdage-error:",e);
@@ -503,6 +512,21 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             if(localPathFdage != null){
                 FileUtil.del(localPathFdage);
             }
+            if(scenePro!=null){
+                LambdaUpdateWrapper<ScenePro> wrapper = new LambdaUpdateWrapper<>();
+                wrapper.eq(ScenePro::getId,scenePro.getId());
+                wrapper.set(ScenePro::getStatus,-2);
+                this.update(wrapper);
+                this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),-2,"status");
+
+            }
+            if(scenePlus!=null){
+                LambdaUpdateWrapper<ScenePlus> wrapper = new LambdaUpdateWrapper<>();
+                wrapper.eq(ScenePlus::getId,scenePlus.getId());
+                wrapper.set(ScenePlus::getSceneStatus,-2);
+                scenePlusService.update(wrapper);
+                this.updateOssStatus(String.format(OssPath.v4_statusPath,scenePlus.getNum()),-2,"status");
+            }
         }
     }
 

+ 5 - 0
src/main/resources/mapper/manage/SceneMoveLogMapper.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.manage.mapper.ISceneMoveLogMapper">
+
+</mapper>