Browse Source

消息重复消费添加ack逻辑,修改拷贝激光场景的逻辑

tianboguang 2 years ago
parent
commit
369bf8c19b

+ 2 - 0
src/main/java/com/fdkankan/contro/mq/listener/AbstrackBuildSceneListener.java

@@ -31,6 +31,7 @@ public class AbstrackBuildSceneListener implements IBuildSceneListener {
             boolean lock = redisLockUtil.lock(RedisConstants.SCENE_PREPARE_BUILDING + messageId, 24 * 3600);
             boolean lock = redisLockUtil.lock(RedisConstants.SCENE_PREPARE_BUILDING + messageId, 24 * 3600);
             if (!lock) {
             if (!lock) {
                 log.error("服务:{},消息重复消费:{}", "常驻服务", messageId);
                 log.error("服务:{},消息重复消费:{}", "常驻服务", messageId);
+                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
                 return;
                 return;
             }
             }
         }
         }
@@ -58,6 +59,7 @@ public class AbstrackBuildSceneListener implements IBuildSceneListener {
             boolean lock = redisLockUtil.lock(RedisConstants.SCENE_POST_BUILDING + messageId, 24 * 3600);
             boolean lock = redisLockUtil.lock(RedisConstants.SCENE_POST_BUILDING + messageId, 24 * 3600);
             if (!lock) {
             if (!lock) {
                 log.error("服务:{},消息重复消费:{}", "常驻服务", messageId);
                 log.error("服务:{},消息重复消费:{}", "常驻服务", messageId);
+                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
                 return;
                 return;
             }
             }
         }
         }

+ 13 - 4
src/main/java/com/fdkankan/contro/mq/service/impl/BuildObjServiceImpl.java

@@ -3,13 +3,11 @@ package com.fdkankan.contro.mq.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.contro.entity.ScenePlus;
 import com.fdkankan.contro.entity.ScenePro;
 import com.fdkankan.contro.entity.ScenePro;
 import com.fdkankan.contro.entity.SceneProEdit;
 import com.fdkankan.contro.entity.SceneProEdit;
 import com.fdkankan.contro.mq.service.IBuildSceneService;
 import com.fdkankan.contro.mq.service.IBuildSceneService;
-import com.fdkankan.contro.service.IBuildSceneDTService;
-import com.fdkankan.contro.service.IFdkkLaserService;
-import com.fdkankan.contro.service.ISceneProEditService;
-import com.fdkankan.contro.service.ISceneProService;
+import com.fdkankan.contro.service.*;
 import com.fdkankan.contro.service.impl.FdkkV4Service;
 import com.fdkankan.contro.service.impl.FdkkV4Service;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.model.constants.ConstantFileName;
 import com.fdkankan.model.constants.ConstantFileName;
@@ -66,6 +64,10 @@ public class BuildObjServiceImpl implements IBuildSceneService {
     @Autowired
     @Autowired
     private ISceneProEditService sceneProEditService;
     private ISceneProEditService sceneProEditService;
 
 
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+
     @Override
     @Override
     public void buildScenePre(BuildSceneCallMessage message) {
     public void buildScenePre(BuildSceneCallMessage message) {
         boolean success = false;
         boolean success = false;
@@ -200,6 +202,13 @@ public class BuildObjServiceImpl implements IBuildSceneService {
                     .eq(SceneProEdit::getProId,scenePro.getId()));
                     .eq(SceneProEdit::getProId,scenePro.getId()));
         }
         }
 
 
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(projectNum);
+        if(!ObjectUtils.isEmpty(scenePlus)){
+            LambdaUpdateWrapper<ScenePlus> plusUpdateWrapper = new LambdaUpdateWrapper<ScenePlus>()
+                    .set(ScenePlus::getSceneStatus, -2).eq(ScenePlus::getNum, projectNum);
+            scenePlusService.update(plusUpdateWrapper);
+        }
+
         // 如果未升级V4,则升级V4
         // 如果未升级V4,则升级V4
         fdkkV4Service.upgradeToV4(projectNum);
         fdkkV4Service.upgradeToV4(projectNum);
     }
     }

+ 3 - 0
src/main/java/com/fdkankan/contro/service/impl/IFdkkLaserServiceImpl.java

@@ -139,6 +139,9 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
         String url = laserHost + String.format(SAVE_SCENE_URL_TEMPLATE, scenePro.getNum());
         String url = laserHost + String.format(SAVE_SCENE_URL_TEMPLATE, scenePro.getNum());
         Map<String, Object> params = new HashMap<>();
         Map<String, Object> params = new HashMap<>();
         params.put("childName", cameraEntity.getChildName());
         params.put("childName", cameraEntity.getChildName());
+        if(ObjectUtils.isEmpty(scenePro.getCreateTime())){
+            scenePro.setCreateTime(new Date());
+        }
         params.put("createTime", DateUtil.date2String(scenePro.getCreateTime(), null));
         params.put("createTime", DateUtil.date2String(scenePro.getCreateTime(), null));
         params.put("phone", phone);
         params.put("phone", phone);
         params.put("sceneCode", scenePro.getNum());
         params.put("sceneCode", scenePro.getNum());

+ 10 - 1
src/main/java/com/fdkankan/contro/service/impl/SceneFileBuildServiceImpl.java

@@ -1276,6 +1276,14 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                     log.info("上传icon成功....");
                     log.info("上传icon成功....");
                 }
                 }
                 buildScenePost(dataSource,fdageData,"V3",cameraType,sceneNum,detailEntity,0,icon);
                 buildScenePost(dataSource,fdageData,"V3",cameraType,sceneNum,detailEntity,0,icon);
+
+                // 通知激光系统
+                ScenePlus scenePlus = scenePlusService.getScenePlusByNum(sceneNum);
+                String userName = null;
+                if(!ObjectUtils.isEmpty(detailEntity.getUserId())){
+                    userName = userService.getSSOUserByUserId(detailEntity.getUserId()).getUserName();
+                }
+                fdkkLaserService.saveScene(scenePlus,fdageData.getString("pwd"),cameraEntity,userName,false);
                 break;
                 break;
         }
         }
         Map<String,Object> result = new HashMap<>();
         Map<String,Object> result = new HashMap<>();
@@ -1321,7 +1329,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
 
         // 通知激光场景系统开始构建场景
         // 通知激光场景系统开始构建场景
         if(cameraType == 14){
         if(cameraType == 14){
-            fdkkLaserService.saveScene(scenePro, null, cameraEntity, userName, true);
+            scenePro.setStatus(0);
+            fdkkLaserService.saveScene(scenePro, jsonObject.getString("pwd"), cameraEntity, userName, false);
         }
         }
 
 
         BuildSceneCallMessage buildSceneMqMessage = this.getBuildSceneMqMessage(
         BuildSceneCallMessage buildSceneMqMessage = this.getBuildSceneMqMessage(