Forráskód Böngészése

楼层接口处理

linhuili 2 éve
szülő
commit
94f4d30914

+ 90 - 0
src/main/java/com/persagy/dmp/middleware/controller/FloorController.java

@@ -1,12 +1,18 @@
 package com.persagy.dmp.middleware.controller;
 
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.middleware.constant.CommonConsant;
 import com.persagy.dmp.middleware.constant.enums.RelationTypeEnum;
 import com.persagy.dmp.middleware.entity.dto.CommonRequestDTO;
+import com.persagy.dmp.middleware.entity.dto.FloorDTO;
 import com.persagy.dmp.middleware.entity.dto.InstanceUrlParam;
 import com.persagy.dmp.middleware.entity.response.CommonResult;
 import com.persagy.dmp.middleware.service.IBaseService;
@@ -21,7 +27,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.management.ObjectInstance;
 import javax.ws.rs.QueryParam;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -66,9 +74,53 @@ public class FloorController {
                 RelationTypeEnum.ARCHSUBSET_BD2FL.getRelCode(), request.getBuildId(), 0);
         // 查询建筑下的楼层列表
         CommonResult response = baseService.doQuery(context,queryCriteria ,null);
+        List<JSONObject> content = (List<JSONObject>) response.getContent();
+        //结果集处理
+        handleResultList(content);
+        response.setContent(content);
         return  response;
     }
 
+    /**
+     * 编辑楼层信息
+     * @param projectId
+     * @param list
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/save")
+    public CommonResult update(@QueryParam("groupCode") String groupCode,@QueryParam("projectId") String projectId,
+                                  @RequestBody List<FloorDTO> list) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, null);
+        CommonResult<Object> response = new CommonResult<>();
+        //保存楼层信息
+        baseService.doUpdate(context,null,list);
+        response.setContent(list);
+        return  response;
+    }
+
+
+    /**
+     * 结果集处理
+     * @param content
+     * @return
+     */
+    private void handleResultList(List<JSONObject> content){
+        if(CollUtil.isEmpty(content)){
+           return ;
+        }
+        for (JSONObject node : content) {
+            Double area = node.getDouble("area");
+            if(area == null){
+                node.put("area",0);
+            }
+            Double height = node.getDouble("height");
+            if(height == null){
+                node.put("height",0);
+            }
+        }
+    }
 
     /**
      * 统计楼层下各信息
@@ -121,4 +173,42 @@ public class FloorController {
     }
 
 
+
+    /**
+     * 查询楼层下的空间列表
+     * @param projectId
+     * @param list
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/queryFloorSpaceList")
+    public CommonResult queryFloorUnSpaceList(@QueryParam("groupCode") String groupCode,@QueryParam("projectId") String projectId,
+                                            @RequestBody List<CommonRequestDTO> list) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, null);
+        if(CollUtil.isEmpty(list)){
+            return new CommonResult();
+        }
+        List<JSONObject> result = new ArrayList<>();
+        for (CommonRequestDTO commonRequestDTO : list) {
+            if(StringUtils.isEmpty(commonRequestDTO.getFloorId())){
+                throw new Exception("楼层ID不能为空");
+            }
+            List<JSONObject> content = floorService.queryFloorUnSpaceList(context, commonRequestDTO);
+            JSONObject floorSpace = new JSONObject();
+            floorSpace.put("floorId",commonRequestDTO.getFloorId());
+            if(CollUtil.isNotEmpty(content)){
+                //类型名称相同的合并处理
+                content = EntityTransferUtil.combineData(content);
+                //按首字母,对象数量为0放后的规则进行排序
+                content = SortUtil.sortByCharacter(content, CommonConsant.OBJ_TYPE, CommonConsant.CLASS_NAME);
+            }
+            floorSpace.put("spaceInfos",content);
+            result.add(floorSpace);
+        }
+        //设置返回值
+        CommonResult<List<JSONObject>> response = CommonResult.success(result);
+        response.setCount(result == null ? 0 : Long.valueOf(result.size()));
+        return  response;
+    }
 }

+ 3 - 0
src/main/java/com/persagy/dmp/middleware/entity/dto/CommonRequestDTO.java

@@ -28,4 +28,7 @@ public class CommonRequestDTO {
     /** 空间ID,多个 */
     private Set<String> spaceIds;
 
+    /** 模块编码 */
+    private String modelCode;
+
 }

+ 9 - 0
src/main/java/com/persagy/dmp/middleware/entity/dto/FloorDTO.java

@@ -2,8 +2,17 @@ package com.persagy.dmp.middleware.entity.dto;
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class FloorDTO {
 
+    private String id;
+
+    private String code;
+
+    private String name;
+
+    private List<String> $remove;
 
 }

+ 8 - 0
src/main/java/com/persagy/dmp/middleware/service/IFloorService.java

@@ -31,4 +31,12 @@ public interface IFloorService{
      * @return
      */
     List<JSONObject> query(InstanceUrlParam context, CommonRequestDTO requestDTO);
+
+    /**
+     * 查询楼层下的设备空间阀门信息
+     * @param context
+     * @param requestDTO
+     * @return
+     */
+    List<JSONObject> queryFloorUnSpaceList(InstanceUrlParam context, CommonRequestDTO requestDTO);
 }

+ 5 - 4
src/main/java/com/persagy/dmp/middleware/service/impl/AbstractBaseServiceImpl.java

@@ -239,12 +239,13 @@ public class AbstractBaseServiceImpl<T> implements IBaseService<T> {
         }
         ArrayNode vos = EntityTransferUtil.toDmpMultiEntity(voList);
         // 调用中台修改
-        DmpResult<cn.hutool.json.JSONArray> response = rwdClient.updateObject(context, JSONArray.parseArray(vos.toString()));
-        if(!DmpResult.SUCCESS.equals(response.getResult())) {
-            throw new RuntimeException("调用中台查询接口出错:" + response.getMessage());
+        DmpResult dmpResult = rwdClient.updateObject(context, JSONArray.parseArray(vos.toString()));
+        if(!DmpResult.SUCCESS.equals(dmpResult.getResult())) {
+            throw new RuntimeException("调用中台查询接口出错:" + dmpResult.getMessage());
         }
         // 转换为结果
-        return EntityTransferUtil.toAdmMultiEntity(response.getData(),null, clazz);
+        return null;
+      //  return EntityTransferUtil.toAdmMultiEntity(response.getData(),null, clazz);
     }
 
     /**

+ 21 - 0
src/main/java/com/persagy/dmp/middleware/service/impl/FloorServiceImpl.java

@@ -17,6 +17,7 @@ import com.persagy.dmp.middleware.entity.response.CommonResult;
 import com.persagy.dmp.middleware.entity.vo.WdDefineTypeRel;
 import com.persagy.dmp.middleware.service.*;
 import com.persagy.dmp.middleware.utils.EntityTransferUtil;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -107,6 +108,23 @@ public class FloorServiceImpl implements IFloorService {
     }
 
     /**
+     * 查询广联达楼层下的空间
+     * @param context
+     * @param request
+     * @return
+     */
+    @Override
+    public List<JSONObject> queryFloorUnSpaceList(InstanceUrlParam context, CommonRequestDTO request) {
+        //查询楼层下的空间
+        List<JSONObject> result = new ArrayList<>();
+        //查询楼层下的空间信息
+        List<JSONObject> spaceList = queryFloorSpaceList(context, request);
+        if(CollUtil.isNotEmpty(spaceList)){
+            result.addAll(spaceList);
+        }
+        return result;
+    }
+    /**
      * 获取楼层下的空间
      * @param context
      * @param request
@@ -116,6 +134,9 @@ public class FloorServiceImpl implements IFloorService {
         WdDefineTypeRel defineTypeRel = new WdDefineTypeRel();
         defineTypeRel.setObjType(WdDefTypeEnum.SPACE.getValue());
         defineTypeRel.setWdModelCode(WdModeCodeEnum.LC.getValue());
+        if(StringUtils.isNotEmpty(request.getSystemCode())){
+            defineTypeRel.setWdSystemCode(request.getSystemCode());
+        }
         List<WdDefineTypeRel> defineTypeRels = iWdDefineTypeRelService.query(context,defineTypeRel);
 
         //过滤不需要的类型,只需要楼层功能相关的空间

+ 85 - 1
src/main/resources/md/管理说明书接口缺失整理-后台.md

@@ -30,7 +30,8 @@
        "localName":"B2",  //楼层本地名称
        "wD_gcname":"B2",  //工程信息化楼层名称  
        "height":50,  //高度
-       "area":120    //面积
+       "area":120,    //面积
+       "floorIntro":"***"  //楼层简介 (20220418新增)
     }
    ]
 }
@@ -72,6 +73,38 @@
 
 ​       注:排序规则:优先按数字是否为0排序,然后按类型名称首字母排序
 
+## 2. 楼层编辑(楼层功能)
+
+接口名称:http://<ip>:<port>/floor/save?groupCode=集团编码&projectId=项目id
+
+请求参数:
+
+```
+{
+     "id":"楼层id", //楼层id,必传
+     "信息点编码": "信息点值",
+    "$remove": [ "要清除的信息点编码" ]
+}
+```
+注:1.楼层简介信息点编码:area, 2.楼层简介信息点编码:floorIntro ,3 租赁面积信息点编码:leaseArea
+
+返回参数:
+
+```
+{
+
+   "result":"success"
+   "count":12,
+   "content":[
+    {
+       “id”:"Fl******",   //楼层id
+       “code”:"#1",    //楼层本地编码
+       "floorIntro":"" //楼层简介
+    }
+   ]
+}
+```
+
 ## 4. 查询/统计楼层下的设备空间(楼层功能 - 单层)
 
 接口名称:http://<ip>:<port>/floor/query?groupCode=集团编码&projectId=项目id
@@ -117,6 +150,57 @@
 
 注:具体信息点编码参考中台数据字典定义
 
+## 4. 查询楼层下的空间
+
+接口名称:http://<ip>:<port>/floor/queryFloorSpaceList?groupCode=集团编码&projectId=项目id
+
+请求参数:
+
+```
+[{
+    “buildId”:"****",    //建筑id(必传)
+    "floorId":"****",    //楼层id (必传),
+    "systemCode":"****", //万达系统编码
+}]
+```
+
+返回参数:
+
+```
+{
+   "result":"success"
+   "count":12,
+   "content":【
+   { 
+     "floorId":"楼层id",
+     "spaceInfos":[
+      {
+       “bimTypeId”:"***",  //BIM构建编码
+       “className”:"***",  //类型名称
+       “systemCode”:"***", //所属系统编码
+       "count":8,          //对象数量
+       “objects”:[         //空间
+          "id":“****”,         //id
+          "name":”****“,       //名称
+          “localId”:****,      //本地编码   
+          “localName”:****,    //本地名称(展示时使用此名称)
+          “bimId":"***",       //bimID
+          "bimLocation":"-178.1,126.3,225.9", //bim坐标
+          “bimTypeId”:"***",   //BIM构建编码
+          “systemCode”:"****",  //所属系统编码
+          “outLine”:[{"x":123.2,"y":210,"z":227.9}],  //轮廓坐标
+          “objType”:"***",     //对象类型:equipment-设备,space-空间,material-阀门
+          “classCode”:"***"    //类型编码
+       ]
+     }
+    ]
+   }
+   】
+}
+```
+
+注:具体信息点编码参考中台数据字典定义
+
 ## 5. 查询/统计楼层下的设备空间(设备设施(通用)-全局/单层 )
 
 接口名称:http://<ip>:<port>/equip/query?groupCode=集团编码&projectId=项目id