dengsixing 8 månader sedan
förälder
incheckning
e67c5c988b

+ 26 - 0
src/main/java/com/fdkankan/contro/bean/SyncLaserResultBean.java

@@ -0,0 +1,26 @@
+package com.fdkankan.contro.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SyncLaserResultBean {
+
+    private String num;
+    private String dataSource;
+    private Integer sceneStatus;
+    private Date createTime;
+    private Integer shootCount;
+    private Integer payStatus;
+    private Integer mixture;
+    private String version;
+
+
+}

+ 3 - 0
src/main/java/com/fdkankan/contro/entity/ScenePlusExt.java

@@ -154,6 +154,9 @@ public class ScenePlusExt implements Serializable {
     @TableField("location")
     private Integer location;
 
+    @TableField("mixture")
+    private Integer mixture;
+
     /**
      * 创建时间
      */

+ 45 - 23
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.contro.bean.SceneJsonBean;
+import com.fdkankan.contro.bean.SyncLaserResultBean;
 import com.fdkankan.contro.constant.UserEditDataType;
 import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.mq.service.IBuildSceneService;
@@ -148,13 +149,6 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
     @Autowired
     private ILinkPanService linkPanService;
 
-    public static void main(String[] args) {
-        SceneJsonBean sceneJson = new SceneJsonBean();
-        sceneJson.setNum("123123123");
-        String jsonString = JSON.toJSONString(sceneJson);
-        System.out.println(111);
-
-    }
 
     @Override
     public void buildScenePre(BuildSceneCallMessage message) throws Exception{
@@ -475,7 +469,15 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
 
             if (cameraType == 14) {
                 //计算成功  激光转台相机 同步 请求
-                fdkkLaserService.syncBuildResult(scenePlus.getNum(), path, scenePlus.getCreateTime(), Calendar.getInstance().getTime(), scenePlusExt.getShootCount(), scenePlus.getPayStatus());
+                fdkkLaserService.syncBuildResult(
+                        SyncLaserResultBean.builder()
+                        .num(sceneCode).dataSource(path)
+                        .sceneStatus(2)
+                        .createTime(scenePlus.getCreateTime())
+                        .shootCount(scenePlusExt.getShootCount())
+                        .payStatus(scenePlus.getPayStatus())
+                        .mixture(scenePlusExt.getMixture())
+                        .version(SceneVersionType.V4.code()).build());
                 sceneEditControlsService.update(new LambdaUpdateWrapper<SceneEditControls>().set(SceneEditControls::getShowMap,0)
                         .eq(SceneEditControls::getEditInfoId,sceneEditInfo.getId()));
                 sceneEditControls.setShowMap(0);
@@ -964,13 +966,21 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
 //        scenePlusExt.setModelKind(modelKind);
 
         //统计点位数量
-        scenePlusExt.setShootCount(this.getShootCount(scenePlusExt));
+        Map<String, Integer> result = this.getShootCount(scenePlusExt);
+        Integer shootCount = result.get("shootCount");
+        Integer mixture = result.get("mixture");
+        scenePlusExt.setShootCount(shootCount);
+        scenePlusExt.setMixture(mixture);
 
         scenePlusExtService.updateById(scenePlusExt);
     }
 
-    private Integer getShootCount(ScenePlusExt scenePlusExt){
-        Integer shootCount = null;
+    private Map<String, Integer> getShootCount(ScenePlusExt scenePlusExt){
+
+        Map<String, Integer> result = new HashMap<>();
+
+        Integer shootCount = 0;
+        Integer mixture = Objects.isNull(scenePlusExt.getMixture()) ? 0 : scenePlusExt.getMixture();
         String homePath = SceneUtil.getHomePath(scenePlusExt.getDataSource());
         JSONObject dataFdageObj = JSON.parseObject(fYunFileService.getFileContent(homePath.concat("data.fdage")));
         if(Objects.nonNull(dataFdageObj)){
@@ -980,23 +990,35 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             }
         }
         if(Objects.nonNull(shootCount) && shootCount > 0){
-            return shootCount;
-        }
-
-        String slamDataStr = fYunFileService.getFileContent(homePath.concat("slam_data.json"));
-        JSONObject slamDataObj = JSON.parseObject(slamDataStr);
-        if(Objects.nonNull(slamDataObj)){
-            JSONArray viewsInfo = slamDataObj.getJSONArray("views_info");
-            if(CollUtil.isNotEmpty(viewsInfo)){
-                shootCount = viewsInfo.stream().mapToInt(info -> {
-                    return  ((JSONObject) info).getJSONArray("list_pose").size();
-                }).sum();
+            if(Objects.nonNull(scenePlusExt.getLocation()) && scenePlusExt.getLocation() == 6){
+                mixture = CommonStatus.YES.code().intValue();
             }
+        }else{
+            String slamDataStr = fYunFileService.getFileContent(homePath.concat("slam_data.json"));
+            JSONObject slamDataObj = JSON.parseObject(slamDataStr);
+            if(Objects.nonNull(slamDataObj)){
+                JSONArray viewsInfo = slamDataObj.getJSONArray("views_info");
+                if(CollUtil.isNotEmpty(viewsInfo)){
+                    shootCount = viewsInfo.stream().mapToInt(info -> {
+                        return  ((JSONObject) info).getJSONArray("list_pose").size();
+                    }).sum();
+                }
+            }
+            mixture = CommonStatus.NO.code().intValue();
         }
 
-        return shootCount;
+        result.put("shootCount", shootCount);
+        result.put("mixture", mixture);
+
+        return result;
     }
 
+    public static void main(String[] args) {
+        JSONObject dataFdageObj = JSON.parseObject(null);
+        System.out.println(dataFdageObj);
+    }
+
+
     public boolean uploadHouseTypeJson(String num, String dataSource) {
         String floorPlanCardFilePath = dataSource + File.separator + "results/floorplan_cad.json";
         if (!new File(floorPlanCardFilePath).exists()) {

+ 2 - 1
src/main/java/com/fdkankan/contro/service/IFdkkLaserService.java

@@ -1,6 +1,7 @@
 package com.fdkankan.contro.service;
 
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.contro.bean.SyncLaserResultBean;
 import com.fdkankan.contro.entity.Camera;
 import com.fdkankan.contro.entity.ScenePlus;
 import com.fdkankan.contro.entity.ScenePlusExt;
@@ -16,7 +17,7 @@ import java.util.Date;
  * @since 2022/1/14
  **/
 public interface IFdkkLaserService {
-    void syncBuildResult(String sceneNum, String dataSource, Date createTime, Date algorithmTime, Integer shootCount, Integer payStatus);
+    void syncBuildResult(SyncLaserResultBean laserResultBean);
 
     void pushBuildStatusToLaserSystem(String projectNum, String laserObjFilePath, Integer buildObjStatus);
 

+ 34 - 24
src/main/java/com/fdkankan/contro/service/impl/IFdkkLaserServiceImpl.java

@@ -2,8 +2,11 @@ package com.fdkankan.contro.service.impl;
 
 import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.constant.CommonStatus;
+import com.fdkankan.common.constant.SceneVersionType;
 import com.fdkankan.common.util.DateUtil;
 import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.contro.bean.SyncLaserResultBean;
 import com.fdkankan.contro.entity.Camera;
 import com.fdkankan.contro.entity.ScenePlus;
 import com.fdkankan.contro.entity.ScenePlusExt;
@@ -19,12 +22,10 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
+import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 @Service
 @Slf4j
@@ -42,6 +43,9 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
     @Value("${queue.application.laser.update-scene}")
     private String updateScene;
 
+    @Value("${queue.application.laser.init-scene:laser-init-scene}")
+    private String initScene;
+
     @Value("${queue.application.laser.update-build-status}")
     private String updateBuildStatus;
 
@@ -54,28 +58,22 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
     @Value("${4dkk.laserService.cloud-point-fyun-path}")
     private String cloudPointFyunPath;
 
-    @Autowired
+    @Resource
     private FYunFileServiceInterface fYunFileService;
 
 
-    public void updateSceneStatus(String sceneCode, int sceneStatus, String path, Date createTime, Date algorithmTime, Integer shootCount, Integer payStatus) {
-        Map<String, Object> params = new HashMap<>();
-        params.put("sceneCode", sceneCode);
-        params.put("status", sceneStatus);
-        params.put("version",getSceneVersion(sceneCode));
-        params.put("createTime", createTime);
-        params.put("algorithmTime", algorithmTime);
-        if (!ObjectUtils.isEmpty(path)) {
-            params.put("path", path);
-        }
-        params.put("shootCount", shootCount);
-        params.put("payStatus", payStatus);
-        rabbitMqProducer.sendByWorkQueue(updateScene, params);
-    }
-
-    public void syncBuildResult(String sceneNum, String dataSource,Date createTime, Date algorithmTime, Integer shootCount, Integer payStatus) {
+    public void syncBuildResult(SyncLaserResultBean laserResultBean) {
         log.info("激光转台相机构建结果 同步 请求 ");
         try {
+            String num = laserResultBean.getNum();
+            String dataSource = laserResultBean.getDataSource();
+            Integer sceneStatus = laserResultBean.getSceneStatus();
+            Date createTime = laserResultBean.getCreateTime();
+            Integer shootCount = laserResultBean.getShootCount();
+            Integer payStatus = laserResultBean.getPayStatus();
+            Boolean mixture = laserResultBean.getMixture() == CommonStatus.NO.code().intValue() ? false : true;
+            String version = SceneVersionType.V4.code();
+
             String jgPath = dataSource;
             //创建目录
             if (dataSource.lastIndexOf("/") != -1) {
@@ -105,7 +103,19 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
             }
             FileUtils.copyFile(dataSource + "/results/laserData", jgPath, true);
 
-            updateSceneStatus(sceneNum, 2, jgPath + File.separator + "laserData",createTime, algorithmTime, shootCount, payStatus);
+//            updateSceneStatus(scenePlus, scenePlusExt, jgPath + File.separator + "laserData",createTime, algorithmTime, scenePlusExt);
+
+            Map<String, Object> params = new HashMap<>();
+            params.put("sceneCode", num);
+            params.put("status", sceneStatus);
+            params.put("version",version);
+            params.put("createTime", DateUtil.date2String(createTime, null));
+            params.put("algorithmTime", DateUtil.date2String(Calendar.getInstance().getTime(), null));
+            params.put("path", jgPath + File.separator + "laserData");
+            params.put("shootCount", shootCount);
+            params.put("payStatus", payStatus);
+            params.put("mixture", mixture);
+            rabbitMqProducer.sendByWorkQueue(updateScene, params);
         } catch (Exception e) {
             log.error("激光转台相机同步失败", e);
         }
@@ -144,7 +154,7 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
             params.put("location", fdageJson.getInteger("location"));
         }
         params.put("payStatus", payStatus);
-        rabbitMqProducer.sendByWorkQueue(updateScene, params);
+        rabbitMqProducer.sendByWorkQueue(initScene, params);
     }
 
     public void saveScene(ScenePro scenePro, String scenePassword, Camera cameraEntity, String phone, boolean rebuild, Integer payStatus) {
@@ -167,7 +177,7 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
         params.put("title", scenePro.getSceneName());
         params.put("userId", scenePro.getUserId());
         params.put("payStatus", payStatus);
-        rabbitMqProducer.sendByWorkQueue(updateScene, params);
+        rabbitMqProducer.sendByWorkQueue(initScene, params);
     }
 
     private String getSceneVersion(String num) {