Browse Source

更新:
全景园林添加VR模型

wuweihao 4 năm trước cách đây
mục cha
commit
f876aefb1a

+ 55 - 0
cms_pano_fcb/gis_domain/src/main/java/com/gis/domain/dto/GardenVrModelDto.java

@@ -0,0 +1,55 @@
+package com.gis.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Created by owen on 2020/3/2 0028 16:36
+ * 全景园林保存VR模型实体
+ */
+@Data
+public class GardenVrModelDto {
+
+    @ApiModelProperty(value = "id, 修改时必须传,新增忽略", name = "id")
+    private String id;
+
+
+    @NotBlank(message = "楼盘id不能为空")
+    @ApiModelProperty(value = "楼盘id", required = true)
+    private String houseId;
+
+    @NotBlank(message = "vrModelId不能为空")
+    @ApiModelProperty(value = "vrModelId(四维看看场景id)" ,required = true)
+    private String vrModelId;
+
+    @ApiModelProperty(value = "封面图")
+    private String icon;
+
+    @ApiModelProperty(value = "文件名")
+    private String fileName;
+
+    @ApiModelProperty(value = "场景名称")
+    private String sceneTitle;
+
+
+    @NotBlank(message = "场景码不能为空")
+    @ApiModelProperty(value = "场景码(四维看看)", required = true)
+    private String sceneCode;
+
+    @NotBlank(message = "类型不能为空")
+    @ApiModelProperty(value = "类型, garden", required = true)
+    private String byType;
+
+    /** website 需要这个hengdaId*/
+    @NotBlank(message = "恒大id不能为空")
+    @ApiModelProperty(value = "恒大id", required = true)
+    private String hengdaId;
+
+
+
+
+
+
+}

+ 3 - 0
cms_pano_fcb/gis_domain/src/main/java/com/gis/domain/entity/SceneEntity.java

@@ -84,5 +84,8 @@ public class SceneEntity extends BaseEntity implements Serializable {
     @ApiModelProperty(value =  "热点关联场景, 场景码,允许多个以逗号隔开")
     private String useHots;
 
+    @ApiModelProperty(value =  "模型在全景园林显示byType=garden")
+    private String byType;
+
 
 }

+ 3 - 0
cms_pano_fcb/gis_mapper/src/main/java/com/gis/mapper/SceneMapper.java

@@ -20,6 +20,9 @@ public interface SceneMapper extends IBaseMapper<SceneEntity, String> {
     @SelectProvider(type = SceneProvider.class, method = "search")
     List<SceneEntity> search(ScenePageDto param);
 
+//    @SelectProvider(type = SceneProvider.class, method = "searchUnion")
+//    List<SceneEntity> searchUnion(ScenePageDto param);
+
     @SelectProvider(type = SceneProvider.class, method = "searchUnion")
     List<SceneEntity> searchUnion(ScenePageDto param);
 

+ 78 - 4
cms_pano_fcb/gis_mapper/src/main/java/com/gis/mapper/provider/SceneProvider.java

@@ -22,13 +22,23 @@ public class SceneProvider {
         if(!StringUtils.isAllBlank(searchKey)){
             sql.append(" and (");
             sql.append(" scene_title like '%").append(searchKey).append("%'");
-//            sql.append(" or room_name like '%").append(searchKey).append("%'");
             sql.append( ")");
         }
 
         String type = param.getType();
         if(!StringUtils.isAllBlank(type)){
-            sql.append(" and ( type = '").append(type).append("' )");
+            // 园林全景需要把by_type=garden的模型数据展现到园林全景
+            if (type.equals("garden")) {
+                sql.append(" and (");
+                sql.append(" type = '").append(type).append("'");
+                sql.append(" or by_type = '").append(type).append("'");
+                sql.append( ")");
+            }  else if (type.equals("house")) {
+                sql.append(" and type = '").append(type).append("'");
+                sql.append(" and by_type = '0'");
+            } else {
+                sql.append(" and type = '").append(type).append("'");
+            }
         }
 
         String status = param.getStatus();
@@ -44,7 +54,7 @@ public class SceneProvider {
     }
 
 
-    public String searchUnion(ScenePageDto param){
+    public String searchUnion2(ScenePageDto param){
         // type=building、garden ,查scene_title
         StringBuffer sql = new StringBuffer("select * from tb_scene where is_delete = 0 and (type='building' or type='garden')");
 
@@ -67,13 +77,61 @@ public class SceneProvider {
             sql.append( ")");
         }
 
+        // UNION
+        // type=house ,查询room_name
+        sql.append(" UNION select * from tb_scene where is_delete = 0 and type='house'");
+        if(!StringUtils.isAllBlank(houseId)){
+            sql.append(" and house_id = '").append(houseId).append("'");
+        }
 
+        if(StringUtils.isNotBlank(status)){
+            sql.append(" and status >= '").append(status).append("'");
+        }
+
+        if(!StringUtils.isAllBlank(searchKey)){
+            sql.append(" and (");
+            sql.append(" room_name like '%").append(searchKey).append("%'");
+            sql.append( ")");
+        }
+
+
+        sql.append(" order by sort asc, create_time asc");
+
+        log.info("sql: {}", sql.toString());
+        return sql.toString();
+    }
+
+    /**
+     * 根据不同类型模糊查询不同字段
+     * @param param
+     * @return
+     */
+    public String searchUnion(ScenePageDto param){
+        // type=building、garden ,查scene_title
+        StringBuffer sql = new StringBuffer("select * from tb_scene where is_delete = 0 and (type='building' or type='garden')");
+
+        String houseId = param.getHouseId();
+        if(!StringUtils.isAllBlank(houseId)){
+            sql.append(" and house_id = '").append(houseId).append("'");
+        }
 
+        String status = param.getStatus();
+        // 传3 过来,会把审核:4、未审核:3的都传给前端
+        if(StringUtils.isNotBlank(status)){
+            sql.append(" and status >= '").append(status).append("'");
+        }
 
+        String searchKey = param.getSearchKey();
+        if(!StringUtils.isAllBlank(searchKey)){
+            sql.append(" and (");
+            sql.append(" scene_title like '%").append(searchKey).append("%'");
+//            sql.append(" or room_name like '%").append(searchKey).append("%'");
+            sql.append( ")");
+        }
 
         // UNION
         // type=house ,查询room_name
-        sql.append(" UNION select * from tb_scene where is_delete = 0 and type='house' ");
+        sql.append(" UNION select * from tb_scene where is_delete = 0 and type='house' and by_type='0'");
         if(!StringUtils.isAllBlank(houseId)){
             sql.append(" and house_id = '").append(houseId).append("'");
         }
@@ -88,6 +146,22 @@ public class SceneProvider {
             sql.append( ")");
         }
 
+        // 园林全景-模型, 使用scene_title 搜索
+        sql.append(" UNION select * from tb_scene where is_delete = 0 and type='house' and by_type='garden'");
+        if(!StringUtils.isAllBlank(houseId)){
+            sql.append(" and house_id = '").append(houseId).append("'");
+        }
+
+        if(StringUtils.isNotBlank(status)){
+            sql.append(" and status >= '").append(status).append("'");
+        }
+
+        if(!StringUtils.isAllBlank(searchKey)){
+            sql.append(" and (");
+            sql.append(" scene_title like '%").append(searchKey).append("%'");
+            sql.append( ")");
+        }
+
 
         sql.append(" order by sort asc, create_time asc");
 

+ 2 - 0
cms_pano_fcb/gis_service/src/main/java/com/gis/service/SceneService.java

@@ -68,4 +68,6 @@ public interface SceneService extends IBaseService<SceneEntity, String> {
     List<SceneEntity> searchUseHots(String houseId, String sceneCode);
 
     JSONObject searchUnion(ScenePageDto param);
+
+    Result saveGardenVrModel(GardenVrModelDto param);
 }

+ 82 - 0
cms_pano_fcb/gis_service/src/main/java/com/gis/service/impl/SceneServiceImpl.java

@@ -307,6 +307,23 @@ public class SceneServiceImpl extends IBaseServiceImpl<SceneEntity, String> impl
         log.info("page size: " + page.getSize());
         log.info("page total: " + page.getTotal());
 
+        // 特殊处理,需要把byType=garden的类型修改为type=garden
+        List<SceneEntity> list = page.getList();
+
+        List<SceneEntity> resultList = new ArrayList<>();
+
+        // 使用foreach遍历,for循环容易导致数据有误
+        if (!list.isEmpty()) {
+            for (SceneEntity sceneEntity: list) {
+                String byType = sceneEntity.getByType();
+                if (byType.equals("garden")) {
+                    sceneEntity.setType("garden");
+                }
+                resultList.add(sceneEntity);
+            }
+        }
+        // 使用更新后的resultList
+        page.setList(resultList);
         JSONObject result = new JSONObject();
         result.put("code", 0);
         result.put("data", page);
@@ -317,6 +334,71 @@ public class SceneServiceImpl extends IBaseServiceImpl<SceneEntity, String> impl
     }
 
     @Override
+    public Result saveGardenVrModel(GardenVrModelDto param) {
+        String id = param.getId();
+        log.info("id: "+ id);
+
+        // 检查VR项目状态
+        String houseId = param.getHouseId();
+        Result resStatus =  getHouseStatus(houseId);
+        if (resStatus != null) {
+            return resStatus;
+        }
+
+
+        SceneEntity entity = null;
+
+        List<SceneEntity> index = entityMapper.getIndex(param.getHouseId());
+
+        if ( id == null) {
+            entity = entityMapper.findByVrModelIdAndHouseId(param.getVrModelId(), param.getHouseId());
+            if (entity != null){
+                log.error("VrModelId已存在");
+                return Result.failure(3001, "场景码已存在, 不能重复添加");
+            }
+
+            entity = new SceneEntity();
+
+            @NotBlank(message = "场景码不能为空") String sceneCode = param.getSceneCode();
+            @NotBlank(message = "恒大id不能为空") String hengdaId = param.getHengdaId();
+            String webSite = "/hengda.html?m="+ sceneCode + "&prodId=" + hengdaId + "&houseId=" + houseId;
+
+
+            BeanUtils.copyProperties(param, entity);
+            if (index.size() == 0) {
+                entity.setIsIndex(1);
+
+//                HouseSceneIndexDto indexDto = new HouseSceneIndexDto();
+//                indexDto.setId(entity.getHouseId());
+//                indexDto.setSceneNum(entity.getSceneCode());
+//                indexDto.setUpdateTime(LocalDateTime.now());
+//                indexDto.setFcbHouseId(entity.getHengdaId());
+//                Result result = houseFeign.updateHouseSceneIndex(indexDto);
+
+//                if (result.getCode() == 0) {
+//                    log.info("更新了初始场景到VR项目完成");
+//                } else {
+//                    log.error("更新了初始场景到VR项目异常");
+//                    return Result.failure(result.getMsg());
+//                }
+            }
+            entity.setId(RandomUtils.getUuid());
+            entity.setType("house");
+            entity.setStatus(3);
+            entity.setWebSite(webSite);
+            this.save(entity);
+            log.info("保存VR模型完成");
+        } else {
+            entity = this.findById(id);
+            BeanUtils.copyProperties(param, entity);
+            entity.setUpdateTime(new Date());
+            this.update(entity);
+            log.info("更新VR模型完成");
+        }
+        return Result.success();
+    }
+
+    @Override
     public Result saveUseHots(UseHotsDto param) {
         String id = param.getId();
         SceneEntity entity = this.findById(id);

+ 29 - 29
cms_pano_fcb/gis_web/src/main/java/com/gis/web/aop/WebLogAspect.java

@@ -85,35 +85,35 @@ public class WebLogAspect {
 
 
 
-//        JSONObject jsonObject = JSONObject.parseObject(userInfo);
-//        log.info("userInfo : " + jsonObject.toString());
-
-//        log.info("request description  : {}", description);
-//        List<String> detail = getDetail(description);
-//            LogInfoDto logInfoDto = new LogInfoDto();
-//            logInfoDto.setId(RandomUtils.getUuid());
-//            String detail_0 = detail.get(0);
-////            log.info("detail_0:"+detail_0);
-//            logInfoDto.setOperateType(detail_0);
-//            String detail_1 = detail.get(1);
-////            log.info("detail_1:"+detail_1);
-//            logInfoDto.setOperateContent(detail_1);
-//            // 所属公司ID
-//            logInfoDto.setOperatorCompanyId(jsonObject.getString("departmentId"));
-//            // 所属公司
-//            logInfoDto.setOperatorCompanyName(jsonObject.getString("departmentName"));
-//            logInfoDto.setOperatorId(jsonObject.getString("id"));
-//            logInfoDto.setOperatorName(jsonObject.getString("nickName"));
-//            logInfoDto.setOperatorPhone(jsonObject.getString("userName"));
-//            logInfoDto.setOperatorRoleId(jsonObject.getString("roleId"));
-//            logInfoDto.setOperatorRoleName(jsonObject.getString("roleName"));
-//
-//            LocalDateTime now = LocalDateTime.now();
-//            logInfoDto.setUpdateTime(now);
-//            logInfoDto.setCreateTime(now);
-//            logInfoDto.setOperateTime(now);
-//
-//            houseFeign.addLog(logInfoDto);
+        JSONObject jsonObject = JSONObject.parseObject(userInfo);
+        log.info("userInfo : " + jsonObject.toString());
+
+        log.info("request description  : {}", description);
+        List<String> detail = getDetail(description);
+            LogInfoDto logInfoDto = new LogInfoDto();
+            logInfoDto.setId(RandomUtils.getUuid());
+            String detail_0 = detail.get(0);
+//            log.info("detail_0:"+detail_0);
+            logInfoDto.setOperateType(detail_0);
+            String detail_1 = detail.get(1);
+//            log.info("detail_1:"+detail_1);
+            logInfoDto.setOperateContent(detail_1);
+            // 所属公司ID
+            logInfoDto.setOperatorCompanyId(jsonObject.getString("departmentId"));
+            // 所属公司
+            logInfoDto.setOperatorCompanyName(jsonObject.getString("departmentName"));
+            logInfoDto.setOperatorId(jsonObject.getString("id"));
+            logInfoDto.setOperatorName(jsonObject.getString("nickName"));
+            logInfoDto.setOperatorPhone(jsonObject.getString("userName"));
+            logInfoDto.setOperatorRoleId(jsonObject.getString("roleId"));
+            logInfoDto.setOperatorRoleName(jsonObject.getString("roleName"));
+
+            LocalDateTime now = LocalDateTime.now();
+            logInfoDto.setUpdateTime(now);
+            logInfoDto.setCreateTime(now);
+            logInfoDto.setOperateTime(now);
+
+            houseFeign.addLog(logInfoDto);
 
 
 

+ 8 - 2
cms_pano_fcb/gis_web/src/main/java/com/gis/web/controller/SceneController.java

@@ -57,7 +57,6 @@ public class SceneController extends BaseController {
      * 30s 轮询一次
      * VR项目有计算中的模型,(true)允许轮询,(false)否则停止轮询
      */
-//    @WebControllerLog(description = "场景管理-场景列表")
     @ApiOperation(value = "场景列表", position = 1)
     @PostMapping("list")
     public JSONObject list(@RequestBody ScenePageDto param) {
@@ -115,7 +114,7 @@ public class SceneController extends BaseController {
         return sceneService.upload(file);
     }
 
-//    @WebControllerLog(description = "场景管理-编辑场景")
+    @WebControllerLog(description = "VR项目-编辑VR项目")
     @ApiOperation(value = "VR项目修改", position = 3, notes = "修改VR项目的基础信息")
     @PostMapping("house/edit")
     public Result editHouse(@Valid @RequestBody EditHouseDto param) {
@@ -252,6 +251,13 @@ public class SceneController extends BaseController {
         return sceneService.saveVrModel(param);
     }
 
+
+    @ApiOperation("全景园林保存VR模型")
+    @PostMapping("saveGardenVrModel")
+    public Result saveGardenVrModel(@Valid @RequestBody GardenVrModelDto param) {
+        return sceneService.saveGardenVrModel(param);
+    }
+
 //    @WebControllerLog(description = "场景管理-保存初始画面")
     @ApiOperation("保存初始画面")
     @PostMapping("saveIndex")

+ 7 - 1
cms_pano_fcb/remark.md

@@ -95,6 +95,8 @@ sit:
    -   alter table tb_scene add init_visual varchar(255) ; (已更新)
    -   alter table tb_scene add use_hots longtext COMMENT '热点关联场景, 场景码允许多个以逗号隔开';
    
+   -   alter table tb_scene add by_type varchar(10) DEFAULT '0' COMMENT '模型在全景园林显示byType=garden';
+   
    测试切图工具命令
    krpanotools makepano -config=templates/vtour-multires.config /mnt/cms_pano_fcb_data/test/test.jpg
    
@@ -166,7 +168,11 @@ sit:
         全景图匹配素材标题,三维场景匹配户型名称
          
     20210302-1200
-        去掉日志功能            
+        去掉日志功能 
+        
+    20210304-1200
+        全景园林添加VR模型, 需要更新数据库
+        保存VR项目日志               
 
 # pro 更新日志
     20210228-1722