ソースを参照

Merge remote-tracking branch 'origin/master'

by su 3 年 前
コミット
b2bcfd12e3

+ 1 - 1
4dkankan-center-api/4dkankan-center-platform-api/src/main/java/com/fdkankan/platform/api/feign/PlatformClient.java

@@ -63,5 +63,5 @@ public interface PlatformClient {
      * @return UserIncrement
      */
     @PostMapping("/getUserIncrementByCameraId")
-    UserIncrement getUserIncrementByCameraId(@RequestParam(value = "cameraId", required = false) Long cameraId);
+    ResultData<UserIncrement> getUserIncrementByCameraId(@RequestParam(value = "cameraId", required = false) Long cameraId);
 }

+ 2 - 2
4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/feign/UserFeign.java

@@ -52,8 +52,8 @@ public class UserFeign {
         }
         CameraDetail detailEntity = JSONObject.parseObject(JSONObject.toJSONString(resultData.getData()), CameraDetail.class);
 
-        UserIncrement byCameraId = platformClient.getUserIncrementByCameraId(sceneProEntity.getCameraId());
-        if(byCameraId == null || byCameraId.getIsExpired().intValue() == 1){
+        ResultData<UserIncrement> byCameraId = platformClient.getUserIncrementByCameraId(sceneProEntity.getCameraId());
+        if(byCameraId == null || byCameraId.getData() == null || byCameraId.getData().getIsExpired() == 1){
             // 新上传的场景,如果总容量小于使用容量,则该大场景保留在临时存储空间30天
             if (detailEntity.getTotalSpace().compareTo(detailEntity.getUsedSpace()) == -1){
                 List<Long> ids = new ArrayList<>();

+ 13 - 9
4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/receiver/BuildSceneMQListener.java

@@ -91,6 +91,10 @@ public class BuildSceneMQListener implements RocketMQListener<String> {
     public void onMessage(String message) {
         log.info("开始处理消息,消费者组:{},主题名:{}, 消息内容:{}", consumerGroup, topicName, message);
         BuildSceneMqMessage buildSceneMqMessage = JSONObject.parseObject(message, BuildSceneMqMessage.class);
+        if(StringUtils.isBlank(buildSceneMqMessage.getSceneNum())){
+            log.error("消息结构错误,消费者组:{},主题名:{}, 消息内容:{}", consumerGroup, topicName, message);
+            return;
+        }
         process(buildSceneMqMessage);
     }
 
@@ -606,15 +610,15 @@ public class BuildSceneMQListener implements RocketMQListener<String> {
             //发送计算结果到mq,再由消费者消费并操作数据库
             rocketMQProducer.sendOneWay(buildSceneResultTopic,
                                         BuildSceneResultMqMessage.builder()
-                                        .buildSuccess(buildSuccess)
-                                        .cameraType(cameraType)
-                                        .computeTime(computeTime)
-                                        .fileId(fileId)
-                                        .payStatus(payStatus)
-                                        .scenenCode(projectNum)
-                                        .space(space)
-                                        .videosJson(videosJson.toJSONString())
-                                        .build());
+                                                .buildSuccess(buildSuccess)
+                                                .cameraType(cameraType)
+                                                .computeTime(computeTime)
+                                                .fileId(fileId)
+                                                .payStatus(payStatus)
+                                                .sceneCode(projectNum)
+                                                .space(space)
+                                                .videosJson(videosJson.toJSONString())
+                                                .build());
             try{
                 if(Objects.nonNull(sceneProId)){
                     com.alibaba.fastjson.JSONObject statusJson = new com.alibaba.fastjson.JSONObject();

+ 53 - 48
4dkankan-center-scene/src/main/java/com/fdkankan/scene/listener/BuildSceneResultMQListener.java

@@ -62,61 +62,66 @@ public class BuildSceneResultMQListener implements RocketMQListener<String> {
     }
 
     private void process(BuildSceneResultMqMessage message){
-        int cameraType = Integer.valueOf(message.getCameraType());
-        String sceneCode = message.getScenenCode();
-        String fileId = message.getFileId();
-        Long space = message.getSpace();
-        Integer payStatus = message.getPayStatus();
-        String videosJson = message.getVideosJson();
-        Long computeTime = message.getComputeTime();
-        Boolean buildSuccess = message.getBuildSuccess();
-        if(!buildSuccess){//建模失败,修改状态为失败状态
-
-            sceneService.updateStatus(sceneCode, -1);
-
-            SceneFileBuild sceneFileBuild = sceneFileBuildService.findByFileId(fileId);
-            sceneFileBuild.setBuildStatus(BuildStatus.fail.code());
-            sceneFileBuildService.updateById(sceneFileBuild);
-
-            return;
-        }
-
-        //建模成功
-        if(cameraType < 3){
-            sceneService.updateTime(sceneCode, space, payStatus);
-        }else{
-
-            sceneProService.updateTime(sceneCode, space, payStatus, videosJson, computeTime);
-
-            SceneFileBuild sceneFileBuild = sceneFileBuildService.findByFileId(fileId);
-            sceneFileBuild.setBuildStatus(BuildStatus.success.code());
-            sceneFileBuildService.updateById(sceneFileBuild);
+        try {
+            int cameraType = Integer.parseInt(message.getCameraType());
+            String sceneCode = message.getSceneCode();
+            String fileId = message.getFileId();
+            Long space = message.getSpace();
+            Integer payStatus = message.getPayStatus();
+            String videosJson = message.getVideosJson();
+            Long computeTime = message.getComputeTime();
+            Boolean buildSuccess = message.getBuildSuccess();
+            Integer sceneStatus = message.getSceneStatus();
+            if(!buildSuccess){//建模失败,修改状态为失败状态
+                log.error("建模失败,修改状态为失败状态");
+                sceneService.updateStatus(sceneCode, -1);
+                SceneFileBuild sceneFileBuild = sceneFileBuildService.findByFileId(fileId);
+                sceneFileBuild.setBuildStatus(BuildStatus.fail.code());
+                sceneFileBuildService.updateById(sceneFileBuild);
+                return;
+            }
 
-            //更改相机容量
-            ScenePro scenePro = sceneProService.findBySceneNum(sceneCode);
-            if(Objects.nonNull(scenePro)){
-                SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
-                ResultData<CameraDetail> resultData = platformClient.updateCameraDetailByCameraIdAndSpace(scenePro.getCameraId(), sceneProExt.getSpace());
-                if(resultData.getCode() != 200){
-                    log.info("调用platform服务updateCameraDetailByCameraIdAndSpace失败,参数{},{}" ,scenePro.getCameraId(), sceneProExt.getSpace());
-                    return ;
+            //建模成功
+            log.info("cameraType:{}",cameraType);
+            if(cameraType < 3){
+                sceneService.updateTime(sceneCode, space, payStatus);
+            }else{
+                sceneProService.updateTime(sceneCode, space, payStatus, videosJson, computeTime);
+                SceneFileBuild sceneFileBuild = sceneFileBuildService.findByFileId(fileId);
+                if(sceneFileBuild != null){
+                    sceneFileBuild.setBuildStatus(BuildStatus.success.code());
+                    sceneFileBuildService.updateById(sceneFileBuild);
                 }
-                CameraDetail cameraDetail = JSONObject.parseObject(JSONObject.toJSONString(resultData.getData()), CameraDetail.class);
+                //更改相机容量
+                ScenePro scenePro = sceneProService.findBySceneNum(sceneCode);
+                if(Objects.nonNull(scenePro)){
+                    SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+                    ResultData<CameraDetail> resultData = platformClient.updateCameraDetailByCameraIdAndSpace(scenePro.getCameraId(), sceneProExt.getSpace());
+                    if(resultData.getCode() != 200){
+                        log.error("调用platform服务updateCameraDetailByCameraIdAndSpace失败,参数{},{}" ,scenePro.getCameraId(), sceneProExt.getSpace());
+                        return ;
+                    }
+                    CameraDetail cameraDetail = JSONObject.parseObject(JSONObject.toJSONString(resultData.getData()), CameraDetail.class);
 
-                UserIncrement userIncrement = platformClient.getUserIncrementByCameraId(scenePro.getCameraId());
-                if(userIncrement == null || userIncrement.getIsExpired() == 1){
-                    // 新上传的场景,如果总容量小于使用容量,则该大场景保留在临时存储空间30天
-                    if (cameraDetail.getTotalSpace().compareTo(cameraDetail.getUsedSpace()) == -1){
-                        List<Long> ids = new ArrayList<>();
-                        ids.add(scenePro.getId());
-                        sceneProService.tempScenes(ids);
+                    ResultData<UserIncrement> resultData1 = platformClient.getUserIncrementByCameraId(scenePro.getCameraId());
+                    if(resultData1.getCode() != 200){
+                        log.error("调用platform服务getUserIncrementByCameraId失败,参数{}" ,scenePro.getCameraId());
+                        return;
+                    }
+                    if( resultData1.getData() == null || resultData1.getData().getIsExpired() ==1) {
+                        // 新上传的场景,如果总容量小于使用容量,则该大场景保留在临时存储空间30天
+                        if (cameraDetail.getTotalSpace().compareTo(cameraDetail.getUsedSpace()) == -1){
+                            List<Long> ids = new ArrayList<>();
+                            ids.add(scenePro.getId());
+                            sceneProService.tempScenes(ids);
+                        }
                     }
                 }
-            }
 
+            }
+        }catch ( Exception e){
+            log.error("处理消息出错:{}",e);
         }
-
-
     }
 
 }

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java

@@ -3034,7 +3034,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             return scenePro.getId();
         }).collect(Collectors.toList());
         sceneProExtService.update(new LambdaUpdateWrapper<SceneProExt>()
-                .eq(SceneProExt::getSceneProId, sceneProIds)
+                .in(SceneProExt::getSceneProId, sceneProIds)
                 .set(SceneProExt::getSceneStatus, SceneStatus.NO_DISPLAY.code())
                 .set(SceneProExt::getSpace, space)
                 .set(SceneProExt::getPayStatus, payStatus)