xiewj 1 年之前
父节点
当前提交
7db9695ac4

+ 9 - 0
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/WorkEntity.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import javax.persistence.Entity;
 import javax.persistence.Table;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 作品表
@@ -67,4 +68,12 @@ public class WorkEntity extends BaseStrEntity implements Serializable {
     private String snCode;
 
 
+    private Integer location;
+
+
+    @ApiModelProperty(value = "场景来源:相机拍摄10以内表示,1表示八目,2双目,3转台,4 激光 5深光  其他来源10以上,11:一键换装,12:123看房,13文通虚拟场景")
+    private Integer sceneSource;
+
+    @ApiModelProperty(value = "计算完成时间")
+    private Date algorithmTime;
 }

+ 51 - 42
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneListener.java

@@ -3,12 +3,13 @@ package com.gis.listener;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.gis.constant.CmdConstant;
 import com.gis.constant.ConfigConstant;
-import com.gis.entity.FodderEntity;
 import com.gis.entity.ScenePanoEntity;
 import com.gis.entity.SceneQueueDTO;
 import com.gis.entity.WorkEntity;
@@ -92,47 +93,47 @@ public class SceneListener {
                 log.error("参数列表错误(缺少),格式不匹配,{}",param);
                 channel.basicAck(deliveryTag, false);
             }
-            if (ObjectUtil.isNotEmpty(param.getSceneCode())&&param.getStatus()==0){
+            WorkEntity workEntity=workService.findByNum(param.getSceneCode());
+            if (ObjectUtil.isEmpty(workEntity)&&param.getStatus()==0){
                 //初始化创建work表数据
-                workService.entityAdd(param.getPhoneNum(),param.getSceneCode(),param.getStatus(),param.getSceneName(),param.getSnCode());
+                workService.entityAdd(param);
+                channel.basicAck(deliveryTag, false);
+            }if (ObjectUtil.isNotEmpty(workEntity)&&param.getStatus()==0){
+                //修改状态
+                workEntity.setCalcStatus(0);
+                workService.update(workEntity);
                 channel.basicAck(deliveryTag, false);
             }else if (ObjectUtil.isNotEmpty(param.getSceneCode())&&param.getStatus()==1){
                 //计算完成处理
-                WorkEntity workEntity=workService.findByNum(param.getSceneCode());
-                //处理业务
                 //1,下载场景的全景图 默认 。scene_view_data/panorama/目录下的全景图图片
-                String ossPath =  "scene_view_data/"+param.getSceneCode()+"/panorama";
-                List<String> list=aliyunOssUtil.getFileFolder("4dkankan",ossPath);
-//            workEntity.setIcon(someDataJson.getString("icon"));
-//            workEntity.setShare(someDataJson.getString("share"));
-//            workEntity.setQrCode(someDataJson.getString("qrCode"));
+                workEntity.setAlgorithmTime(param.getAlgorithmTime());
+                workEntity.setCalcStatus(0);
+                workService.update(workEntity);
+
+
+                String visionUrl = "http://4dkk.4dage.com/scene_view_data/"+param.getSceneCode()+"/images/vision.txt";
+                HttpResponse execute = HttpRequest.get(visionUrl+"?m="+System.currentTimeMillis()).execute();
+                List<String> uuidList=new LinkedList<>();
+                if (execute.getStatus()==200){
+                    log.info("vision.txt存在: {}");
+                    JSONObject visJson = JSONObject.parseObject(execute.body());
+                    if(visJson.containsKey("sweepLocations")){
+                        JSONArray sweepLocations = visJson.getJSONArray("sweepLocations");
+                        for (Object sweepLocation : sweepLocations) {
+                            JSONObject sweepLocationJson = (JSONObject) sweepLocation;
+                            String uuid = sweepLocationJson.getString("uuid");
+                            uuidList.add(uuid);
+                        }
+                    }
+                }
 
                 //2,使用krpano工具生成全景图数据
-                List<ScenePanoEntity> scenePanoEntities=new ArrayList<>();
                 List<Map<String,Object>> scenes=new ArrayList<>();
-                int index = 0;
-                for (String item : list) {
-                    if (item.endsWith(".jpg")) {
-                    log.info("key:{}",item);
-                    if (index % 2 != 0) {
-                        index++;
-                        continue; // 跳过不是偶数位置的元素
-                    }
-                    index++;
+                for (int i = 0; i < uuidList.size(); i++) {
+                    String item = uuidList.get(i);
+                    String ossKey="scene_view_data/"+param.getSceneCode()+"/images/panoramas/"+item+".jpg";
                     Map<String,Object> scene=new HashMap<>();
-
-                    ScenePanoEntity scenePanoEntity = this.doSlice(traceId ,item, param.getSceneCode(), workEntity.getId(),index+".jpg");
-
-
-
-
-
-
-
-
-
-
-                    scenePanoEntities.add(scenePanoEntity);
+                    ScenePanoEntity scenePanoEntity = this.doSlice(traceId ,ossKey, param.getSceneCode(), workEntity.getId(),item+".jpg");
                     //  "icon": "https://ossxiaoan.4dage.com/720yun_fd_manage/fd720_8nRkFlzpp/vtour/panos/fd720_8nRkFlzpp.tiles/thumb.jpg",
                     //   "sceneCode": "fd720_8nRkFlzpp",
                     // "sceneTitle": "0",
@@ -148,17 +149,24 @@ public class SceneListener {
                     String customId = generateCustomId();
                     scene.put("id", customId);
                     scenes.add(scene);
+                    if (i==0){
+                        workEntity.setIcon(scenePanoEntity.getIcon());
+                        workService.update(workEntity);
                     }
+
                 }
 
                 log.info("场景切图完成组装json");
                 //3,修改json文件,并创建work作品表数据,增加作品类型为相机拍摄全景图
-                JSONObject someDataToJson= this.editSomeData(workEntity.getId(),scenes);
+                JSONObject someDataToJson= this.editSomeData(workEntity,scenes);
 
 
                 // 更新跟目录tour.xml 2022-09-15
                 this.updateTour(someDataToJson, workEntity.getId());
 
+                workEntity.setCalcStatus(1);
+                workService.update(workEntity);
+
                 channel.basicAck(deliveryTag, false);
             }
 
@@ -367,7 +375,7 @@ public class SceneListener {
     }
 
 
-    private JSONObject editSomeData(String id, List<Map<String, Object>> scenes){
+    private JSONObject editSomeData(WorkEntity workEntity, List<Map<String, Object>> scenes){
         // 如基someData作出修改,记得把代码里的someData 跟服务器里的someData都修改
         String baseSomeDataPath = configConstant.serverBasePath + "baseData/someData.json";
         String baseSomeDataSceneDataPath = configConstant.serverBasePath + "baseData/someDataSceneData.json";
@@ -396,18 +404,19 @@ public class SceneListener {
 
 
         JSONObject jsonObject = JSONObject.parseObject(content);
-        jsonObject.put("id", id + "");
+        jsonObject.put("id", workEntity.getId() + "");
 
 
         // 创建二维码、二维码url
-        String shareUrl = configConstant.domain4dKK + "/panorama/showMobile.html?id=" + id;
-        String qrCode = qrCodeUtils.generateLogoQrCode(shareUrl, configConstant.serverBasePath, configConstant.ossBasePath, configConstant.ossDomain, id);
+        String shareUrl = configConstant.domain4dKK + "/panorama/showMobile.html?id=" + workEntity.getId();
+        String qrCode = qrCodeUtils.generateLogoQrCode(shareUrl, configConstant.serverBasePath, configConstant.ossBasePath, configConstant.ossDomain, workEntity);
         jsonObject.put("share", shareUrl);
         jsonObject.put("qrCode", qrCode);
-
-        String ossKeyPath = configConstant.ossBasePath + id + "/someData.json";
-
-
+        jsonObject.put("icon",workEntity.getIcon());
+        String ossKeyPath = configConstant.ossBasePath + workEntity.getId() + "/someData.json";
+        workEntity.setQrCode(qrCode);
+        workEntity.setShare(shareUrl);
+        workService.update(workEntity);
 
         JSONArray scenesJson = new JSONArray();
         for (Map<String, Object> scene : scenes) {

+ 3 - 1
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/service/WorkService.java

@@ -1,6 +1,7 @@
 package com.gis.service;
 
 
+import com.gis.entity.SceneQueueDTO;
 import com.gis.entity.WorkEntity;
 
 
@@ -9,6 +10,7 @@ import com.gis.entity.WorkEntity;
  */
 public interface WorkService extends IBaseService<WorkEntity, String>{
 
-    WorkEntity entityAdd(String phoneNum, String sceneCode, int status, String sceneName, String snCode);
+    WorkEntity entityAdd(SceneQueueDTO sceneQueueDTO);
     WorkEntity findByNum(String num);
+
 }

+ 9 - 7
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/service/impl/WorkServiceImpl.java

@@ -1,6 +1,7 @@
 package com.gis.service.impl;
 
 import com.gis.constant.ConfigConstant;
+import com.gis.entity.SceneQueueDTO;
 import com.gis.entity.WorkEntity;
 import com.gis.mapper.IBaseStrMapper;
 import com.gis.mapper.WorkMapper;
@@ -39,22 +40,23 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
     }
 
     @Override
-    public WorkEntity entityAdd(String phoneNum, String sceneCode, int status, String sceneName, String snCode) {
+    public WorkEntity entityAdd(SceneQueueDTO sceneQueueDTO) {
 
         WorkEntity entity = new WorkEntity();
         entity.setId(SnowFlakeUUidUtils.getUuid("WK"));
-        entity.setUserId(phoneNum);
+        entity.setUserId(sceneQueueDTO.getPhoneNum());
         entity.setStatus(0);
         Date date = new Date();
         entity.setCreateTime(date);
         entity.setUpdateTime(date);
-        entity.setCalcStatus(status);
-        entity.setNum(sceneCode);
+        entity.setCalcStatus(sceneQueueDTO.getStatus());
+        entity.setNum(sceneQueueDTO.getSceneCode());
         entity.setType("pro");
-        entity.setName(sceneName);
-        entity.setSnCode(snCode);
+        entity.setName(sceneQueueDTO.getSceneName());
+        entity.setSnCode(sceneQueueDTO.getSnCode());
+        entity.setLocation(sceneQueueDTO.getLocation());
+        entity.setSceneSource(sceneQueueDTO.getSceneSource());
         this.save(entity);
-
         String id = entity.getId();
         log.info("创建对象完成: {}", id);
 

+ 6 - 0
720yun_fd_manage/gis_common/src/main/java/com/gis/common/httpclient/FdkkClient.java

@@ -1,7 +1,9 @@
 package com.gis.common.httpclient;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.dtflys.forest.annotation.Get;
+import com.dtflys.forest.annotation.Header;
 import com.dtflys.forest.annotation.Var;
 import com.dtflys.forest.extensions.DownloadFile;
 import com.gis.common.util.Result;
@@ -18,5 +20,9 @@ public interface FdkkClient {
     **/
     @Get("/service/manage/inner/getServiceUpTip?type=2")
     Result getServiceUpTip();
+    @Get(value = "/api/laser/getSnCodeByPhone?phone={phone}&sceneSource={sceneSource}")
+    JSONObject getCameraListByPhone(@Var("phone") String phone, @Var("sceneSource") Integer sceneSource);
+    @Get(value = "/api/laser/getSnCodeByPhone?sceneSource={sceneSource}")
+    JSONObject getCameraListByToken(@Header("token") String token, @Var("sceneSource") String sceneSource);
 
 }

+ 4 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/dto/AgePageDto.java

@@ -3,6 +3,8 @@ package com.gis.domain.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * Created by owen on 2022/10/31 0031 18:31
  * 四维看看后端使用
@@ -23,6 +25,8 @@ public class AgePageDto extends PageDateDto {
     @ApiModelProperty(value = "排序字段:time:创建日期(默认) | visit:浏览量")
     private String orderBy;
 
+    private List<String> snCodes;
+
 
 
 }

+ 11 - 0
720yun_fd_manage/gis_domain/src/main/java/com/gis/domain/entity/WorkEntity.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import javax.persistence.Entity;
 import javax.persistence.Table;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 作品表
@@ -65,4 +66,14 @@ public class WorkEntity extends BaseStrEntity implements Serializable {
 
     @ApiModelProperty(value = "相机编码")
     private String snCode;
+
+
+    private Integer location;
+
+
+    @ApiModelProperty(value = "场景来源:相机拍摄10以内表示,1表示八目,2双目,3转台,4 激光 5深光  其他来源10以上,11:一键换装,12:123看房,13文通虚拟场景")
+    private Integer sceneSource;
+
+    @ApiModelProperty(value = "计算完成时间")
+    private Date algorithmTime;
 }

+ 8 - 0
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/provider/WorkProvider.java

@@ -1,5 +1,6 @@
 package com.gis.mapper.provider;
 
+import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
 import com.gis.common.util.RegexUtil;
 import com.gis.domain.dto.AgePageDto;
@@ -8,6 +9,8 @@ import lombok.extern.log4j.Log4j2;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.List;
+
 /**
  * Created by owen on 2021/1/8 0008 16:50
  */
@@ -43,6 +46,11 @@ public class WorkProvider {
             sql.append(" and create_time between '").append(startTime).append("' and '").append(endTime).append("'");
         }
 
+        List<String> snCodes = param.getSnCodes();
+        if (ArrayUtil.isNotEmpty(snCodes)){
+            sql.append(" and (  sn_code in (").append(StringUtils.join(snCodes, ",")).append(") )");
+        }
+
 
         String orderBy = param.getOrderBy();
         orderBy = "visit".equals(orderBy) ? "visit" : "create_time";

+ 2 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/WorkService.java

@@ -56,4 +56,6 @@ public interface WorkService extends IBaseService<WorkEntity, String> {
     void fixSomeData2(String workId,String active);
 
     Result getServiceUpTip();
+
+    Result<WorkEntity> searchSceneWorkList(AgePageDto param);
 }

+ 19 - 0
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java

@@ -1142,4 +1142,23 @@ public class WorkServiceImpl extends IBaseStrServiceImpl<WorkEntity, String> imp
             return Result.success();
         }
     }
+
+    @Override
+    public Result<WorkEntity> searchSceneWorkList(AgePageDto param) {
+        String token = getToken();
+        JSONObject cameraList =fdkkClient.getCameraListByToken(token,"3,4,5");
+        List<String> snCodes = new ArrayList<>();
+        if (cameraList.getInteger("code") == 0) {
+            JSONArray data = cameraList.getJSONObject("data").getJSONArray("snCodes");
+            for (Object datum : data) {
+                snCodes.add(String.valueOf(datum));
+            }
+        } else {
+            return Result.failure("获取四维用户激光数据失败");
+        }
+        startPage(param);
+        List<WorkEntity> search = entityMapper.search(param, "");
+
+        return Result.success(new PageInfo<>(search));
+    }
 }

+ 6 - 0
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/WorkController.java

@@ -55,6 +55,12 @@ public class WorkController extends BaseController {
         return workService.search(param, false);
     }
 
+    @ApiOperation(value = "四维看看相机拍摄坐标列表", position = 1)
+    @PostMapping("sceneWorkList")
+    public Result<WorkEntity> sceneWorkList(@RequestBody AgePageDto param) {
+        return workService.searchSceneWorkList(param);
+    }
+
 
     /**
      * 创建一个基础someData.json