lyhzzz 1 рік тому
батько
коміт
e7d5c852cc

+ 18 - 9
src/main/java/com/fdkankan/manage_jp/controller/SceneProController.java

@@ -9,9 +9,12 @@ import com.fdkankan.manage_jp.entity.*;
 import com.fdkankan.manage_jp.exception.BusinessException;
 import com.fdkankan.manage_jp.httpClient.client.FdKKClient;
 import com.fdkankan.manage_jp.service.*;
+import com.fdkankan.manage_jp.service.impl.SceneCommonService;
 import com.fdkankan.manage_jp.vo.request.SceneParam;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -51,6 +54,8 @@ public class SceneProController extends BaseController{
     ITmContractorNumService tmContractorNumService;
     @Autowired
     ITmContractorService tmContractorService;
+    @Autowired
+    SceneCommonService sceneCommonService;
 
     @PostMapping("/list")
     public Result list(@RequestBody SceneParam param){
@@ -77,7 +82,11 @@ public class SceneProController extends BaseController{
         return Result.success(fdKKClient.upgradeToV4(map));
     }
 
+    @Autowired
+    RabbitMqProducer rabbitMqProducer;
 
+    @Value("${queue.scene.copy:ucenter-copy-scene}")
+    private String copySceneQueue;
     /**
      * 复制场景
      */
@@ -92,19 +101,19 @@ public class SceneProController extends BaseController{
             throw new BusinessException(ResultCode.PARAM_ERROR);
         }
         ScenePro scenePro = sceneProService.getByNum(num);
-        String newNum = "";
-        if(scenePro !=null){
-            ScenePro newScenePro = sceneProService.copyScene(scenePro);
-            newNum = newScenePro.getNum();
-        }
         ScenePlus scenePlus = scenePlusService.getByNum(num);
-        if(scenePlus !=null){
-            ScenePlus newScenePlus = scenePlusService.copyScene(scenePlus);
-            newNum = newScenePlus.getNum();
-        }
         if(scenePro == null && scenePlus == null){
             throw new BusinessException(ResultCode.NOT_RECORD);
         }
+
+        String newNum = sceneCommonService.getNewNum(num);
+        Long userId = scenePro == null ? scenePlus.getUserId() :scenePro.getUserId();
+        sceneCopyLogService.saveByNum(num,newNum,userId);
+        HashMap<String,String > map = new HashMap<>();
+        map.put("oldNum",num);
+        map.put("newNum",newNum);
+        rabbitMqProducer.sendByWorkQueue(copySceneQueue,map);
+
         List<TmContractor> tmContractors = tmContractorService.getByCompanyId(user.getCompanyId());
         if(!tmContractors.isEmpty()){
             List<TmContractorNum> saveList = new ArrayList<>();

+ 7 - 4
src/main/java/com/fdkankan/manage_jp/mq/consumer/LaserSceneStatusConsumer.java

@@ -2,6 +2,7 @@ package com.fdkankan.manage_jp.mq.consumer;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.manage_jp.common.RedisKeyUtil;
+import com.fdkankan.manage_jp.service.impl.SceneCommonService;
 import com.fdkankan.redis.util.RedisUtil;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
@@ -20,12 +21,14 @@ import java.nio.charset.StandardCharsets;
 @Component
 public class LaserSceneStatusConsumer {
 
-
+    @Autowired
+    SceneCommonService sceneCommonService;
     @Autowired
     RedisUtil redisUtil;
 
     @RabbitListener(
             queuesToDeclare = @Queue("${queue.scene.laser.status:update-scene-status-ucent}")
+            ,concurrency = "1"
     )
     public void consumerQueue(Channel channel, Message message)  {
         try {
@@ -37,9 +40,9 @@ public class LaserSceneStatusConsumer {
 
             JSONObject jsonObject = JSONObject.parseObject(msg);
             String num = jsonObject.getString("num");
-            String redisKey = RedisKeyUtil.laserCopyLock + num;
-            if(redisUtil.hasKey(redisKey)){
-                redisUtil.del(redisKey);
+            Integer status = jsonObject.getInteger("status");
+            if(status == 1){
+                sceneCommonService.copyResult(num);
             }
 
         }catch (Exception e){

+ 50 - 0
src/main/java/com/fdkankan/manage_jp/mq/consumer/SceneCopyResultConsumer.java

@@ -0,0 +1,50 @@
+package com.fdkankan.manage_jp.mq.consumer;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.manage_jp.service.impl.SceneCommonService;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 场景封存解封 mq
+ */
+@Slf4j
+@Component
+public class SceneCopyResultConsumer {
+
+
+
+    @Autowired
+    SceneCommonService sceneCommonService;
+
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.scene.copy.result:ucenter-copy-scene-result}")
+            ,concurrency = "1"
+    )
+    public void consumerQueue(Channel channel, Message message)  {
+        try {
+            String messageId = message.getMessageProperties().getMessageId();
+            String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+            log.info("copy-scene-result--messageId:{},msg:{}",messageId,msg);
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+
+            JSONObject jsonObject = JSONObject.parseObject(msg);
+            String oldNum = jsonObject.getString("oldNum");
+            String newNum = jsonObject.getString("newNum");
+
+            sceneCommonService.copyResult(newNum);
+
+        }catch (Exception e){
+            log.info("copy-scene-result----消费失败",e);
+        }
+
+    }
+
+}

+ 28 - 4
src/main/java/com/fdkankan/manage_jp/service/impl/SceneCommonService.java

@@ -8,6 +8,7 @@ import cn.hutool.extra.qrcode.QrConfig;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.constant.SceneVersionType;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
@@ -29,10 +30,7 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
+import java.util.*;
 
 @Service
 @Slf4j
@@ -62,6 +60,8 @@ public class SceneCommonService {
     ISceneProEditService sceneProEditService;
     @Autowired
     RedisUtil redisUtil;
+    @Autowired
+    ICameraDetailService cameraDetailService;
 
     public String getNewNum(String oldNum ){
         String newNum = scene3dNumService.generateNum();
@@ -449,4 +449,28 @@ public class SceneCommonService {
             cn.hutool.core.io.FileUtil.copyContent(fileData,new File(SceneResourcePath.nasBasePath + targetPath),true);
         }
     }
+
+    public void copyResult(String newNum) {
+        ScenePro scenePro = sceneProService.getByNum(newNum);
+        ScenePlus scenePlus = scenePlusService.getByNum(newNum);
+        if(scenePro == null && scenePlus == null){
+            log.info("复制失败:{}",newNum);
+            return;
+        }
+        Long cameraId = scenePro == null ? scenePlus.getCameraId() : scenePro.getCameraId();
+        CameraDetail cameraDetail = cameraDetailService.getByCameraId(cameraId);
+
+        if((cameraDetail.getType() == 10 || cameraDetail.getType() == 11) && scenePlus != null){
+            LambdaUpdateWrapper<ScenePlus> wrapper = new LambdaUpdateWrapper<>();
+            wrapper.eq(ScenePlus::getId,scenePlus.getId());
+            wrapper.set(ScenePlus::getSceneStatus,-2);
+            scenePlusService.update(wrapper);
+        }
+        if((cameraDetail.getType() == 10 || cameraDetail.getType() == 11) && scenePro != null){
+            LambdaUpdateWrapper<ScenePro> wrapper = new LambdaUpdateWrapper<>();
+            wrapper.eq(ScenePro::getId,scenePro.getId());
+            wrapper.set(ScenePro::getStatus,-2);
+            sceneProService.update(wrapper);
+        }
+    }
 }