linhuili 3 роки тому
батько
коміт
751c9bf4b7

+ 12 - 0
src/main/java/com/persagy/dmp/middleware/constant/CommonConsant.java

@@ -18,9 +18,18 @@ public class CommonConsant {
     /** 类型编码 */
     public final static String CLASS_CODE = "classCode";
 
+    /** 类型名称 */
+    public final static String CLASS_NAME = "className";
+
+    /** 对象类型 */
+    public final static String OBJ_TYPE = "objType";
+
     /** BIM构建编码 */
     public final static String BIM_TYPE_ID = "bimTypeId";
 
+    /** roomLocalFuncTypeID */
+    public final static String ROOM_LOCAL_FUNC_TYPE_ID = "roomLocalFuncTypeID";
+
     /** 冷却塔bimTypeID */
     public final static String ACCCOT_BIMTYPEID= "20.30.20.10";
 
@@ -36,4 +45,7 @@ public class CommonConsant {
     /** 集水器bimTypeID */
     public final static String COLLECT_BREECH_BIMTYPEID= "20.30.20.40.20";
 
+    /** 商铺bimTypeID */
+    public final static String STORE_BIMTYPEID= "1.3.2.0";
+
 }

+ 22 - 5
src/main/java/com/persagy/dmp/middleware/controller/EquipController.java

@@ -2,14 +2,17 @@ package com.persagy.dmp.middleware.controller;
 
 
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.context.AppContext;
+import com.persagy.dmp.middleware.constant.CommonConsant;
 import com.persagy.dmp.middleware.entity.dto.CommonRequestDTO;
 import com.persagy.dmp.middleware.entity.dto.InstanceUrlParam;
 import com.persagy.dmp.middleware.entity.response.CommonResult;
 import com.persagy.dmp.middleware.entity.vo.WdConstructDescription;
 import com.persagy.dmp.middleware.service.IConstructDescriptionService;
 import com.persagy.dmp.middleware.service.IEquipService;
+import com.persagy.dmp.middleware.utils.SortUtil;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -55,7 +58,12 @@ public class EquipController {
             throw new Exception("建筑ID不能为空");
         }
         //查询设备空间信息
-        CommonResult response = equipService.query(context,request);
+        List<JSONObject> content = equipService.query(context, request);
+        //按首字母,对象数量为0放后的规则进行排序
+        content = SortUtil.sortByCharacter(content,CommonConsant.OBJ_TYPE, CommonConsant.CLASS_NAME);
+        //设置返回值
+        CommonResult<List<JSONObject>> response = CommonResult.success(content);
+        response.setCount(content == null ? 0 : Long.valueOf(content.size()));
         return  response;
     }
 
@@ -72,7 +80,12 @@ public class EquipController {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, null);
         //查询冷却塔设备类下的设备,制冷机房空间下的设备/阀门信息
-        CommonResult response = equipService.queryHavcSystem(context,request);
+        List<JSONObject> content = equipService.queryHavcSystem(context,request);
+        //按首字母,对象数量为0放后的规则进行排序
+        content = SortUtil.sortByCharacter(content,CommonConsant.OBJ_TYPE, CommonConsant.CLASS_NAME);
+        //设置返回值
+        CommonResult<List<JSONObject>> response = CommonResult.success(content);
+        response.setCount(content == null ? 0 : Long.valueOf(content.size()));
         return  response;
     }
 
@@ -89,11 +102,15 @@ public class EquipController {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, null);
         //查询分水器、集水器类型下的对象信息
-        CommonResult response = equipService.querysubCatchment(context,request);
+        List<JSONObject> content =  equipService.querysubCatchment(context,request);
+        //按首字母,对象数量为0放后的规则进行排序
+        content = SortUtil.sortByCharacter(content,CommonConsant.OBJ_TYPE, CommonConsant.CLASS_NAME);
+        //设置返回值
+        CommonResult<List<JSONObject>> response = CommonResult.success(content);
+        response.setCount(content == null ? 0 : Long.valueOf(content.size()));
         return  response;
     }
 
-
     /**
      * 查询土建装饰说明
      * @param projectId
@@ -170,7 +187,7 @@ public class EquipController {
      * @return
      * @throws Exception
      */
-    @PostMapping("/construction/update")
+    @PostMapping("/construction/delete")
     public CommonResult deleteConstructionDesc(@QueryParam("groupCode") String groupCode, @QueryParam("projectId") String projectId,
                                                @RequestBody List<String> vos) throws Exception {
         // 组装上下文条件

+ 10 - 1
src/main/java/com/persagy/dmp/middleware/controller/FloorController.java

@@ -1,8 +1,10 @@
 package com.persagy.dmp.middleware.controller;
 
+import com.alibaba.fastjson.JSONObject;
 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.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.InstanceUrlParam;
@@ -11,6 +13,7 @@ import com.persagy.dmp.middleware.service.IBaseService;
 import com.persagy.dmp.middleware.service.IFloorService;
 import com.persagy.dmp.middleware.service.ISpaceService;
 import com.persagy.dmp.middleware.utils.EntityTransferUtil;
+import com.persagy.dmp.middleware.utils.SortUtil;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -19,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.ws.rs.QueryParam;
+import java.util.List;
 
 /**
  * @ClassName FloorController
@@ -104,7 +108,12 @@ public class FloorController {
             throw new Exception("建筑ID不能为空");
         }
         //查询/统计楼层下的设备空间
-        CommonResult response = floorService.query(context,request);
+        List<JSONObject> content = floorService.query(context,request);
+        //按首字母,对象数量为0放后的规则进行排序
+        content = SortUtil.sortByCharacter(content, CommonConsant.OBJ_TYPE, CommonConsant.CLASS_NAME);
+        //设置返回值
+        CommonResult<List<JSONObject>> response = CommonResult.success(content);
+        response.setCount(content == null ? 0 : Long.valueOf(content.size()));
         return  response;
     }
 

+ 1 - 1
src/main/java/com/persagy/dmp/middleware/controller/SpaceController.java

@@ -60,7 +60,7 @@ public class SpaceController {
     }
 
     /**
-     * 查询空间内的设备/阀门
+     * 查询空间内的设备/阀门 todo
      * @param projectId
      * @param request
      * @return

+ 14 - 2
src/main/java/com/persagy/dmp/middleware/entity/vo/WdConstructDescription.java

@@ -1,11 +1,14 @@
 package com.persagy.dmp.middleware.entity.vo;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import lombok.Data;
 import lombok.NonNull;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -20,6 +23,7 @@ import java.util.List;
 public class WdConstructDescription {
 
     /** id */
+    @TableId(type = IdType.AUTO)
     private Integer id;
 
     /** 集团编码 */
@@ -32,10 +36,18 @@ public class WdConstructDescription {
     private String wdSystemCode;
 
     /** 楼层id */
-    @NonNull
     private String floorId;
 
     /** 备注 */
-    @NonNull
+    //@TableField(typeHandler = JacksonTypeHandler.class)
     private String remark;
+
+    /** 有效标示 1-有效 0-无线 */
+    private Integer valid;
+
+    /** 创建时间 */
+    private Date create_time;
+
+    /** 修改时间 */
+    private Date update_time;
 }

+ 1 - 1
src/main/java/com/persagy/dmp/middleware/service/IConstructDescriptionService.java

@@ -41,5 +41,5 @@ public interface IConstructDescriptionService extends IService<WdConstructDescri
      * @param vos
      * @return
      */
-    CommonResult delete(InstanceUrlParam context, List<String> vos);
+    CommonResult delete(InstanceUrlParam context, List<String> vos) throws Exception;
 }

+ 3 - 3
src/main/java/com/persagy/dmp/middleware/service/IEquipService.java

@@ -27,7 +27,7 @@ public interface IEquipService {
      * @param request
      * @return
      */
-    CommonResult query(InstanceUrlParam context, CommonRequestDTO request);
+    List<JSONObject> query(InstanceUrlParam context, CommonRequestDTO request);
 
 
     /**
@@ -36,7 +36,7 @@ public interface IEquipService {
      * @param request
      * @return
      */
-    CommonResult queryHavcSystem(InstanceUrlParam context, CommonRequestDTO request) throws Exception;
+    List<JSONObject> queryHavcSystem(InstanceUrlParam context, CommonRequestDTO request) throws Exception;
 
 
     /**
@@ -45,7 +45,7 @@ public interface IEquipService {
      * @param request
      * @return
      */
-    CommonResult querysubCatchment(InstanceUrlParam context, CommonRequestDTO request) throws Exception;
+    List<JSONObject> querysubCatchment(InstanceUrlParam context, CommonRequestDTO request) throws Exception;
 
 
     /**

+ 4 - 1
src/main/java/com/persagy/dmp/middleware/service/IFloorService.java

@@ -1,9 +1,12 @@
 package com.persagy.dmp.middleware.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.persagy.dmp.middleware.entity.dto.CommonRequestDTO;
 import com.persagy.dmp.middleware.entity.dto.InstanceUrlParam;
 import com.persagy.dmp.middleware.entity.response.CommonResult;
 
+import java.util.List;
+
 /**
  * @ClassName FloorService
  * @Description: 楼层
@@ -27,5 +30,5 @@ public interface IFloorService{
      * @param requestDTO
      * @return
      */
-    CommonResult query(InstanceUrlParam context, CommonRequestDTO requestDTO);
+    List<JSONObject> query(InstanceUrlParam context, CommonRequestDTO requestDTO);
 }

+ 11 - 2
src/main/java/com/persagy/dmp/middleware/service/impl/ConstructDescriptionServiceImpl.java

@@ -1,5 +1,6 @@
 package com.persagy.dmp.middleware.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.dmp.middleware.dao.WdConstructDescriptionMapper;
@@ -82,8 +83,16 @@ public class ConstructDescriptionServiceImpl extends ServiceImpl<WdConstructDesc
      * @return
      */
     @Override
-    public CommonResult delete(InstanceUrlParam context, List<String> vos) {
-        constructDescriptionMapper.deleteBatchIds(vos);
+    public CommonResult delete(InstanceUrlParam context, List<String> vos) throws Exception {
+
+        List<WdConstructDescription> descriptions = constructDescriptionMapper.selectBatchIds(vos);
+        if(CollUtil.isEmpty(descriptions)){
+            throw new Exception("对象不存在");
+        }
+        for (WdConstructDescription description : descriptions) {
+            description.setValid(0);
+        }
+        saveOrUpdateBatch(descriptions);
         return CommonResult.success(vos);
     }
 

+ 30 - 29
src/main/java/com/persagy/dmp/middleware/service/impl/EquipServiceImpl.java

@@ -3,13 +3,11 @@ package com.persagy.dmp.middleware.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.ObjectRelation;
 import com.persagy.dmp.middleware.constant.CommonConsant;
 import com.persagy.dmp.middleware.constant.enums.RelationTypeEnum;
 import com.persagy.dmp.middleware.dao.WdConstructDescriptionMapper;
@@ -17,7 +15,6 @@ import com.persagy.dmp.middleware.dao.WdDefineTypeRelMapper;
 import com.persagy.dmp.middleware.entity.dto.CommonRequestDTO;
 import com.persagy.dmp.middleware.entity.dto.InstanceUrlParam;
 import com.persagy.dmp.middleware.entity.response.CommonResult;
-import com.persagy.dmp.middleware.entity.vo.WdConstructDescription;
 import com.persagy.dmp.middleware.entity.vo.WdDefineTypeRel;
 import com.persagy.dmp.middleware.service.IBaseService;
 import com.persagy.dmp.middleware.service.IEquipService;
@@ -59,23 +56,20 @@ public class EquipServiceImpl implements IEquipService {
      * @return
      */
     @Override
-    public CommonResult query(InstanceUrlParam context, CommonRequestDTO request) {
-
+    public List<JSONObject> query(InstanceUrlParam context, CommonRequestDTO request) {
+        //查询设备设施模块下的设备/阀门
         List<JSONObject> result = new ArrayList<>();
-
         //查询系统下的设备
         List<JSONObject> equipList = querySystemEquipList(context, request);
         if(CollUtil.isNotEmpty(equipList)){
             result.addAll(equipList);
         }
-
         //查询系统下的阀门
         List<JSONObject> materiaList = querySystemMateriaList(context, request);
         if(CollUtil.isNotEmpty(materiaList)){
             result.addAll(materiaList);
         }
-
-        return CommonResult.success(result);
+        return  result;
     }
 
 
@@ -86,27 +80,28 @@ public class EquipServiceImpl implements IEquipService {
      * @return
      */
     @Override
-    public CommonResult queryHavcSystem(InstanceUrlParam context, CommonRequestDTO request) throws Exception {
+    public List<JSONObject> queryHavcSystem(InstanceUrlParam context, CommonRequestDTO request) throws Exception {
         // 查询冷却塔设备类下的设备,制冷机房空间下的设备/阀门信息
         List<JSONObject> result = new ArrayList<>();
 
         //1.查询冷却塔设备类下的设备/阀门
         List<WdDefineTypeRel> coolTowerDefineTypeRels = queryGldHavcTypeRel(CommonConsant.ACCCOT_BIMTYPEID,CommonConsant.WD_HAVC_SYSTEM_CODE);
         List<JSONObject> coolTowerObjects = queryEquipObjectByInfoCode(context, coolTowerDefineTypeRels, request, CommonConsant.BIM_TYPE_ID);
-        if(CollUtil.isNotEmpty(coolTowerObjects)){
-            result.addAll(coolTowerObjects);
+        List<JSONObject> coolTowerContent = combineQueryEquipResultData(coolTowerDefineTypeRels, coolTowerObjects, CommonConsant.BIM_TYPE_ID);
+        if(CollUtil.isNotEmpty(coolTowerContent)){
+            result.addAll(coolTowerContent);
         }
 
         //2. 查询制冷机房空间下的所有空间
         QueryCriteria queryCriteria = new QueryCriteria();
         ObjectNode objectNode = JsonNodeFactory.instance.objectNode();
-        objectNode.put(CommonConsant.BIM_TYPE_ID,CommonConsant.ACCCOT_SPACE_BIMTYPEID);
+        objectNode.put(CommonConsant.ROOM_LOCAL_FUNC_TYPE_ID,CommonConsant.ACCCOT_SPACE_BIMTYPEID);
         queryCriteria.setCriteria(objectNode);
         CommonResult commonResult = baseService.doQuery(context, queryCriteria, JSONObject.class);
         List<JSONObject> spaceList = (List<JSONObject>) commonResult.getContent();
 
         if(CollUtil.isEmpty(spaceList)){
-            return CommonResult.success(result);
+            return result;
         }
 
         //3.查询空间下的设备/阀门
@@ -117,7 +112,7 @@ public class EquipServiceImpl implements IEquipService {
             result.addAll(content);
         }
 
-        return CommonResult.success(result);
+        return result;
     }
 
     /**
@@ -128,23 +123,25 @@ public class EquipServiceImpl implements IEquipService {
      * @throws Exception
      */
     @Override
-    public CommonResult querysubCatchment(InstanceUrlParam context, CommonRequestDTO request) throws Exception {
+    public List<JSONObject> querysubCatchment(InstanceUrlParam context, CommonRequestDTO request) throws Exception {
         // 查询分水器/集水器下的对象信息
         List<JSONObject> result = new ArrayList<>();
 
         //1.查询分水器
         List<WdDefineTypeRel> divideDefineTypeRels = queryGldHavcTypeRel(CommonConsant.DIVIDE_BREECH_BIMTYPEID,CommonConsant.WD_HAVC_SYSTEM_CODE);
         List<JSONObject> divideBreechObjects = queryEquipObjectByInfoCode(context, divideDefineTypeRels, request, CommonConsant.BIM_TYPE_ID);
-        if(CollUtil.isNotEmpty(divideBreechObjects)){
-            result.addAll(divideBreechObjects);
+        List<JSONObject> divideContent = combineQueryEquipResultData(divideDefineTypeRels, divideBreechObjects, CommonConsant.BIM_TYPE_ID);
+        if(CollUtil.isNotEmpty(divideContent)){
+            result.addAll(divideContent);
         }
         //2. 查询集水器
         List<WdDefineTypeRel> collectDefineTypeRels = queryGldHavcTypeRel(CommonConsant.COLLECT_BREECH_BIMTYPEID,CommonConsant.WD_HAVC_SYSTEM_CODE);
         List<JSONObject> collectBreechObjects = queryEquipObjectByInfoCode(context, collectDefineTypeRels, request, CommonConsant.BIM_TYPE_ID);
-        if(CollUtil.isNotEmpty(collectBreechObjects)){
-            result.addAll(collectBreechObjects);
+        List<JSONObject> collectContent = combineQueryEquipResultData(collectDefineTypeRels, collectBreechObjects, CommonConsant.BIM_TYPE_ID);
+        if(CollUtil.isNotEmpty(collectContent)){
+            result.addAll(collectContent);
         }
-        return CommonResult.success(result);
+        return result;
     }
 
     /**
@@ -171,7 +168,7 @@ public class EquipServiceImpl implements IEquipService {
         //根据系统过滤
         if(StringUtils.isNotEmpty(request.getSystemCode())){
             String systemCode = request.getSystemCode();
-            defineTypeRels = defineTypeRels.stream().filter(k->!systemCode.equals(k.getWdSystemCode())).collect(Collectors.toList());
+            defineTypeRels = defineTypeRels.stream().filter(k->systemCode.equals(k.getWdSystemCode())).collect(Collectors.toList());
         }
         //根据广联达设备类型查询设备信息
         List<JSONObject> equipList = queryEquipByGldTypeRel(context, defineTypeRels, request);
@@ -190,7 +187,7 @@ public class EquipServiceImpl implements IEquipService {
         //根据系统过滤
         if(StringUtils.isNotEmpty(request.getSystemCode())){
             String systemCode = request.getSystemCode();
-            defineTypeRels = defineTypeRels.stream().filter(k->!systemCode.equals(k.getWdSystemCode())).collect(Collectors.toList());
+            defineTypeRels = defineTypeRels.stream().filter(k->systemCode.equals(k.getWdSystemCode())).collect(Collectors.toList());
         }
         //根据广联达设备类型查询设备信息
         List<JSONObject> equipList = queryMateriaByGldTypeRel(context, defineTypeRels, request);
@@ -219,9 +216,9 @@ public class EquipServiceImpl implements IEquipService {
     @Override
     public List<JSONObject> queryEquipByGldTypeRel(InstanceUrlParam context, List<WdDefineTypeRel> defineTypeRels, CommonRequestDTO request){
         // 根据bimTypeId查询楼层下的设备
-        List<JSONObject> bimTypeSpace = queryEquipObjectByInfoCode(context, defineTypeRels, request, "bimTypeId");
+        List<JSONObject> bimTypeSpace = queryEquipObjectByInfoCode(context, defineTypeRels, request, CommonConsant.BIM_TYPE_ID);
         // 数据组装:根据bimTypeId查询楼层下的设备结果
-        List<JSONObject> result = combineQueryEquipResultData(defineTypeRels, bimTypeSpace, "bimTypeId");
+        List<JSONObject> result = combineQueryEquipResultData(defineTypeRels, bimTypeSpace, CommonConsant.BIM_TYPE_ID);
         return result;
     }
 
@@ -235,6 +232,9 @@ public class EquipServiceImpl implements IEquipService {
      */
     @Override
     public List<JSONObject> queryEquipObjectByInfoCode(InstanceUrlParam context, List<WdDefineTypeRel> defineTypeRels, CommonRequestDTO request, String infoCode){
+        if(CollUtil.isEmpty(defineTypeRels)){
+            return new ArrayList<>();
+        }
         //1. 根据bimTypeId查询楼层下的设备
         Set<String> bimTypeIdSets = defineTypeRels.stream().filter(k-> StringUtils.isNotEmpty(k.getBimTypeId())).map(k->k.getBimTypeId()).collect(Collectors.toSet());
         ObjectNode criteria = JsonNodeFactory.instance.objectNode();
@@ -277,9 +277,9 @@ public class EquipServiceImpl implements IEquipService {
     @Override
     public List<JSONObject> queryMateriaByGldTypeRel(InstanceUrlParam context, List<WdDefineTypeRel> defineTypeRels, CommonRequestDTO request){
         // 根据bimTypeId查询楼层下的设备
-        List<JSONObject> bimTypeSpace = queryEquipObjectByInfoCode(context, defineTypeRels, request,"bimTypeId");
+        List<JSONObject> bimTypeSpace = queryEquipObjectByInfoCode(context, defineTypeRels, request,CommonConsant.BIM_TYPE_ID);
         // 数据组装:根据bimTypeId查询楼层下的设备结果
-        List<JSONObject> result = combineQueryEquipResultData(defineTypeRels, bimTypeSpace, "bimTypeId");
+        List<JSONObject> result = combineQueryEquipResultData(defineTypeRels, bimTypeSpace, CommonConsant.BIM_TYPE_ID);
         return result;
     }
 
@@ -304,13 +304,14 @@ public class EquipServiceImpl implements IEquipService {
             data.put("bimTypeId",defineTypeRel.getBimTypeId());
             data.put("className",defineTypeRel.getWdClassName());
             data.put("systemCode",defineTypeRel.getWdSystemCode());
+            data.put("objType",defineTypeRel.getObjType());
 
             List<JSONObject> objects = new ArrayList<>();
             if(CollUtil.isNotEmpty(spaceMap)){
-                spaceMap.get(defineTypeRel.getBimTypeId());
+                objects = spaceMap.get(defineTypeRel.getBimTypeId());
             }
             data.put("objects",objects);
-            data.put("count",objects.size());
+            data.put("count",objects == null ? 0:objects.size());
             result.add(data);
         }
         return result;

+ 24 - 11
src/main/java/com/persagy/dmp/middleware/service/impl/FloorServiceImpl.java

@@ -60,7 +60,7 @@ public class FloorServiceImpl implements IFloorService {
         //查询楼层信息
         List<JSONObject> floorList = queryFloorInfo(context, request);
         if(CollUtil.isEmpty(floorList)){
-            throw new Exception("楼层不存在:id"+request.getFloorId());
+            throw new Exception("楼层不存在");
         }
         JSONObject floor = floorList.get(0);
         ObjectNode content = JsonNodeFactory.instance.objectNode();
@@ -69,10 +69,12 @@ public class FloorServiceImpl implements IFloorService {
         //统计租赁面积
         content.put("leaseArea",floor.getDouble(CommonConsant.FLOOR_LEASE_AREA));
         //统计该楼层各商铺数量
+        Long storeNum = countStoreNum(context, request);
+        content.put("storeNum",storeNum);
 
         //统计该楼层机动车位数量
-        Long parkingCar = countParkingCar(context, request);
-        content.put("countParkingCar",parkingCar);
+        Long parkingCarNum = countParkingCar(context, request);
+        content.put("countParkingCar",parkingCarNum);
 
         result.add(content);
         return CommonResult.success(content);
@@ -85,29 +87,25 @@ public class FloorServiceImpl implements IFloorService {
      * @return
      */
     @Override
-    public CommonResult query(InstanceUrlParam context, CommonRequestDTO request) {
-
+    public List<JSONObject> query(InstanceUrlParam context, CommonRequestDTO request) {
+        //查询楼层下的设备,空间,阀门
         List<JSONObject> result = new ArrayList<>();
-
         //查询楼层下的空间信息
         List<JSONObject> spaceList = queryFloorSpaceList(context, request);
         if(CollUtil.isNotEmpty(spaceList)){
             result.addAll(spaceList);
         }
-
         //查询楼层下的设备
         List<JSONObject> equipList = queryFloorEquipList(context, request);
         if(CollUtil.isNotEmpty(equipList)){
             result.addAll(equipList);
         }
-
         //查询楼层下的阀门
         List<JSONObject> materiaList = queryFloorMateriaList(context, request);
         if(CollUtil.isNotEmpty(materiaList)){
             result.addAll(materiaList);
         }
-
-        return CommonResult.success(result);
+        return result;
     }
 
     /**
@@ -119,7 +117,7 @@ public class FloorServiceImpl implements IFloorService {
         //查询广联达空间类型
         List<WdDefineTypeRel> defineTypeRels = spaceService.queryGldSpaceTypeRel();
         //过滤不需要的类型,只需要楼层功能相关的空间
-        List<WdDefineTypeRel> floorDefineTypeRels = defineTypeRels.stream().filter(k->!"LC".equals(k.getWdModelCode())).collect(Collectors.toList());
+        List<WdDefineTypeRel> floorDefineTypeRels = defineTypeRels.stream().filter(k->"LC".equals(k.getWdModelCode())).collect(Collectors.toList());
 
         //根据广联达空间类型查询空间信息
         List<JSONObject> spaceList = spaceService.querySpaceByGldTypeRel(context, floorDefineTypeRels, request);
@@ -186,4 +184,19 @@ public class FloorServiceImpl implements IFloorService {
     }
 
 
+    /**
+     * 统计商铺数量
+     * @param context
+     * @param request
+     * @return
+     */
+    private Long countStoreNum(InstanceUrlParam context, CommonRequestDTO request){
+        ObjectNode criteria = JsonNodeFactory.instance.objectNode();
+        criteria.put(CommonConsant.ROOM_LOCAL_FUNC_TYPE_ID, CommonConsant.STORE_BIMTYPEID);
+        QueryCriteria queryCriteria = EntityTransferUtil.transDmpRelationCriteria(criteria,RelationTypeEnum.ARCHSUBSET_FL2SP.getGraphCode(),
+                RelationTypeEnum.ARCHSUBSET_FL2SP.getRelCode(), request.getFloorId(), 0);
+        CommonResult commonResult = baseService.doQuery(context, queryCriteria, JSONObject.class);
+        return commonResult.getCount();
+    }
+
 }

+ 35 - 17
src/main/java/com/persagy/dmp/middleware/service/impl/SpaceServiceImpl.java

@@ -1,6 +1,7 @@
 package com.persagy.dmp.middleware.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -80,18 +81,21 @@ public class SpaceServiceImpl implements ISpaceService {
      */
     @Override
     public List<JSONObject> querySpaceByGldTypeRel(InstanceUrlParam context, List<WdDefineTypeRel> defineTypeRels, CommonRequestDTO request){
+        if(CollUtil.isEmpty(defineTypeRels)){
+            return new ArrayList<>();
+        }
         //1. 筛选出bimTypeId为空间类型的数据:bimTypeId:FireZone
         List<WdDefineTypeRel> spaceTypeRels = filterSpaceType(context, defineTypeRels);
 
         //2. 根据bimTypeId查询楼层下的空间
-        List<JSONObject> bimTypeSpace = querySpaceObjectByInfoCode(context, defineTypeRels, request, "bimTypeId");
+        List<JSONObject> bimTypeSpace = querySpaceObjectByInfoCode(context, defineTypeRels, request, CommonConsant.ROOM_LOCAL_FUNC_TYPE_ID);
         //3. 数据组装:根据bimTypeId查询楼层下的空间结果
-        List<JSONObject> bimTypeSpaceResult = combineQuerySpaceResultData(defineTypeRels, bimTypeSpace, "bimTypeId");
+        List<JSONObject> bimTypeSpaceResult = combineQuerySpaceResultData(defineTypeRels, bimTypeSpace, CommonConsant.ROOM_LOCAL_FUNC_TYPE_ID);
 
         //4. 根据空间类型查询楼层下的空间
-        List<JSONObject> classCodeSpace = querySpaceObjectByInfoCode(context, spaceTypeRels, request, "classCode");
+        List<JSONObject> classCodeSpace = querySpaceObjectByInfoCode(context, spaceTypeRels, request, CommonConsant.CLASS_CODE);
         //5. 数据组装:根据空间类型查询楼层下的空间结果
-        List<JSONObject> classCodeSpaceResult = combineQuerySpaceResultData(spaceTypeRels, classCodeSpace, "classCode");
+        List<JSONObject> classCodeSpaceResult = combineQuerySpaceResultData(spaceTypeRels, classCodeSpace,CommonConsant.CLASS_CODE);
 
         //6. 数据合并:根据bimTypeId查询的空间+根据空间类型查询到的空间
         List<JSONObject> result = new ArrayList<>();
@@ -120,10 +124,15 @@ public class SpaceServiceImpl implements ISpaceService {
         JSONObject space = spaceList.get(0);
 
         //获取空间的BIM构建编码
-        String bimTypeId = space.getString(CommonConsant.BIM_TYPE_ID);
+        String bimTypeId = space.getString(CommonConsant.ROOM_LOCAL_FUNC_TYPE_ID);
 
-        JSONArray baseSpaceTypes = getDmpBaseSpaceType(context);
-        if(baseSpaceTypes.contains(space.getString(CommonConsant.CLASS_CODE))){
+        //查询中台基础空间类型
+        List<JSONObject> dmpSpaceTypeList = getDmpBaseSpaceType(context);
+        Set<String> dmpSpaceTypeCodes= new HashSet<>();
+        if(CollUtil.isNotEmpty(dmpSpaceTypeList)){
+            dmpSpaceTypeCodes = dmpSpaceTypeList.stream().map(k->k.getString("code")).collect(Collectors.toSet());
+        }
+        if(dmpSpaceTypeCodes.contains(bimTypeId)){
             bimTypeId = space.getString(CommonConsant.CLASS_CODE);
         }
         //查询指定空间类型下的设备
@@ -244,14 +253,15 @@ public class SpaceServiceImpl implements ISpaceService {
             JSONObject data = new JSONObject();
             data.put("bimTypeId",defineTypeRel.getBimTypeId());
             data.put("className",defineTypeRel.getWdClassName());
+            data.put("objType",defineTypeRel.getObjType());
             data.put("systemCode",defineTypeRel.getWdSystemCode());
 
             List<JSONObject> objects = new ArrayList<>();
             if(CollUtil.isNotEmpty(spaceMap)){
-                spaceMap.get(defineTypeRel.getBimTypeId());
+                objects = spaceMap.get(defineTypeRel.getBimTypeId());
             }
             data.put("objects",objects);
-            data.put("count",objects.size());
+            data.put("count",objects == null ? 0 : objects.size());
             result.add(data);
         }
         return result;
@@ -273,7 +283,7 @@ public class SpaceServiceImpl implements ISpaceService {
         bimTypeIdSets.forEach(item->{bimTypeIds.add(item);});
 
         QueryCriteria queryCriteria = EntityTransferUtil.transDmpRelationCriteria(criteria, RelationTypeEnum.ARCHSUBSET_FL2SP.getGraphCode(),
-                RelationTypeEnum.ARCHSUBSET_FL2SP.getRelCode(), request.getFloorId(), 1);
+                RelationTypeEnum.ARCHSUBSET_FL2SP.getRelCode(), request.getFloorId(), 0);
         CommonResult commonResult = baseService.doQuery(context, queryCriteria, JsonNode.class);
         return (List<JSONObject>)commonResult.getContent();
     }
@@ -285,7 +295,7 @@ public class SpaceServiceImpl implements ISpaceService {
      * @return
      * @throws IOException
      */
-    private JSONArray getDmpBaseSpaceType(InstanceUrlParam instanceUrlParam){
+    private List<JSONObject> getDmpBaseSpaceType(InstanceUrlParam instanceUrlParam){
         //封装查询条件
         QueryCriteria queryCriteria = new QueryCriteria();
         ObjectNode criteria = JsonNodeFactory.instance.objectNode();
@@ -300,7 +310,7 @@ public class SpaceServiceImpl implements ISpaceService {
             e.printStackTrace();
         }
         DmpResult<JSONArray> typeResult = dmpRwdClient.queryObjectType(instanceUrlParam, object);
-        return  typeResult.getData();
+        return EntityTransferUtil.toMultiEntity(typeResult.getData());
     }
 
 
@@ -316,11 +326,19 @@ public class SpaceServiceImpl implements ISpaceService {
         }
         List<WdDefineTypeRel> spaceTypeRels = new ArrayList<>();
         //获取中台基础空间类型
-        JSONArray dmpSpaceType = getDmpBaseSpaceType(instanceUrlParam);
-        for (WdDefineTypeRel defineTypeRel : defineTypeRels) {
-            if(dmpSpaceType.contains(defineTypeRel.getBimTypeId())){
-                defineTypeRels.remove(defineTypeRel);
-                spaceTypeRels.add(defineTypeRel);
+        List<JSONObject> dmpSpaceTypeList = getDmpBaseSpaceType(instanceUrlParam);
+        Set<String> dmpSpaceTypeCodes= new HashSet<>();
+        if(CollUtil.isNotEmpty(dmpSpaceTypeList)){
+           dmpSpaceTypeCodes = dmpSpaceTypeList.stream().map(k->k.getString("code")).collect(Collectors.toSet());
+        }
+
+        //移除非bimTypeID格式的数据,并单独存储
+        Iterator<WdDefineTypeRel> iterator = defineTypeRels.iterator();
+        while (iterator.hasNext()){
+            WdDefineTypeRel wdDefineTypeRel = iterator.next();
+            if(dmpSpaceTypeCodes.contains(wdDefineTypeRel.getBimTypeId())){
+                spaceTypeRels.add(wdDefineTypeRel);
+                iterator.remove();
             }
         }
         return spaceTypeRels;

+ 3 - 0
src/main/java/com/persagy/dmp/middleware/utils/EntityTransferUtil.java

@@ -50,6 +50,9 @@ public class EntityTransferUtil {
      */
     public static List<JSONObject> toMultiEntity(JSONArray data) {
         List<JSONObject> result = new ArrayList<>();
+        if(CollUtil.isEmpty(data)){
+            return result;
+        }
         for (Object datum : data) {
             result.add(JSONObject.parseObject(JSON.toJSONString(datum)));
         }

+ 88 - 0
src/main/java/com/persagy/dmp/middleware/utils/SortUtil.java

@@ -0,0 +1,88 @@
+package com.persagy.dmp.middleware.utils;
+
+import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import java.text.Collator;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 排序
+ */
+public class SortUtil {
+
+    /**
+     * 按首字母分组排序,并且数量为0的在后面
+     * @param list
+     * @return
+     */
+    public static List<JSONObject> sortByCharacter(List<JSONObject> list, String groupType,String sortName) throws Exception {
+        if (CollUtil.isEmpty(list)) {
+            return new ArrayList<>();
+        }
+
+        //按对象类型分组处理
+        Map<String, List<JSONObject>> groupMap = list.stream().collect(Collectors.groupingBy(k-> k.getString(groupType)));
+
+        //按首字母,按objType,按为0的
+        List<JSONObject> result = new ArrayList<>();
+        List<JSONObject> zoreList = new ArrayList<>();
+        for(Map.Entry<String, List<JSONObject>> entry : groupMap.entrySet()){
+            //按中文首字母排序
+            List<JSONObject> objects = entry.getValue();
+            sortByAlphabetical(objects,sortName);
+
+            //去重为0的数据,单独存储
+            Iterator<JSONObject> iterator = objects.iterator();
+            while (iterator.hasNext()){
+                JSONObject next = iterator.next();
+                if(next.getInteger("count") == null || next.getInteger("count") == 0){
+                    zoreList.add(next);
+                    iterator.remove();
+                }
+            }
+            result.addAll(objects);
+        }
+        if(CollUtil.isNotEmpty(zoreList)){
+            result.addAll(zoreList);
+        }
+        return result;
+    }
+
+    /**
+     * 按首字母排序
+     * @param list
+     * @param name
+     */
+    public static void sortByAlphabetical(List<JSONObject> list, String name) {
+        Collections.sort(list, new Comparator<JSONObject>() {
+            @Override
+            public int compare(JSONObject o1, JSONObject o2) {
+                return arrangeStringsAccordingToAscii(o1.getString(name), o2.getString(name));
+            }
+        });
+    }
+
+    /**
+     * ascii编码排序
+     * @param firstText
+     * @param lastText
+     * @return
+     */
+    private static int arrangeStringsAccordingToAscii(String firstText, String lastText) {
+        char[] firstChars = firstText.toCharArray();
+        char[] lastChars = lastText.toCharArray();
+        int min = Math.min(firstChars.length, lastChars.length);
+        for (int index = 0; index < min; index++) {
+            if (firstChars[index] > lastChars[index]) {
+                return 1;
+            } else if (firstChars[index] < lastChars[index]) {
+                return-1;
+            }
+        }
+        return firstChars.length - lastChars.length;
+    }
+
+}

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

@@ -127,7 +127,7 @@
 {
     “buildId”:"****",    //建筑id(必传)
     "floorId":"****",    //楼层id (非必传,不传查全楼)
-    “systemCode”:"****", //系统编码(必传,可根据系统筛选,不传时查所有
+    “systemCode”:"****", //系统编码(必传)
     //”bimTypeId“:["****"] //BIM构建编码(非必传)
 }
 ```
@@ -170,7 +170,7 @@
 
 ## 6. 通过id查询对象详情 (设备设施(通用)-单空间/单设备)
 
-接口名称:http://<ip>:<port>/space/queryInfo?groupCode=集团编码&projectId=项目id
+接口名称:http://<ip>:<port>/space/query?groupCode=集团编码&projectId=项目id
 
 请求参数:
 
@@ -343,7 +343,7 @@
 
 ## 11. 防火分区数量统计
 
-接口名称:http://<ip>:<port>/equip/fireZone/count?groupCode=集团编码&projectId=项目id
+接口名称:http://<ip>:<port>/space/fireZone/count?groupCode=集团编码&projectId=项目id
 
 请求参数:
 
@@ -384,7 +384,7 @@
 
 注:查询各防火分区下的空间信息
 
-接口名称:http://<ip>:<port>/object/fireZone/query?groupCode=集团编码&projectId=项目id
+接口名称:http://<ip>:<port>/space/fireZone/query?groupCode=集团编码&projectId=项目id
 
 请求参数:
 
@@ -431,16 +431,14 @@
 
 ## 14. 查询土建装饰设备设施说明
 
-接口名称:http://<ip>:<port>/object/construction/query?groupCode=集团编码&projectId=项目id
+接口名称:http://<ip>:<port>/equip/construction/query?groupCode=集团编码&projectId=项目id
 
 请求参数:
 
 ```
 {
-    “buildId”:"****",    //建筑id(非必传,楼层ID为空时,必传)
     "floorId":"****",    //楼层id (非必传,不传查全楼)
-    //“systemCode”:"****", //系统编码(非必传,可根据系统筛选,不传时查所有)
-    //”bimTypeId“:"****"   //空间的BIM构建编码(必传)
+    “wdSystemCode”:"scpz", //系统编码,必传,默认“scpz”
 }
 ```
 
@@ -452,8 +450,9 @@
    "count":12,
    "content":[
      {
-      "floorId":"****", //楼层id
-      "remark":"***"    //说明
+       "floorId":"****",    //楼层id 
+       “wdSystemCode”:"scpz", //系统编码
+       ”remark“:"****"   //说明
      }
    ]
 }
@@ -461,16 +460,18 @@
 
 ## 15. 添加土建装饰设备设施说明
 
-接口名称:http://<ip>:<port>/object/construction/add?groupCode=集团编码&projectId=项目id
+接口名称:http://<ip>:<port>/equip/construction/insert?groupCode=集团编码&projectId=项目id
 
 请求参数:
 
 ```
-{
-    “buildId”:"****",    //建筑id(非必传,楼层ID为空时,必传)
-    "floorId":"****",    //楼层id (非必传,不传查全楼)
-    "remark":"***"       //说明(必传)
-}
+[
+  {
+       "floorId":"****",    //楼层id ,必传
+       “wdSystemCode”:"scpz", //系统编码,必传,默认“scpz”
+       ”remark“:"****"   //说明,必传
+   }
+]
 ```
 
 返回参数:
@@ -481,8 +482,9 @@
    "count":12,
    "content":[
      {
-      "floorId":"****", //楼层id
-      "remark":"***"    //说明
+      "floorId":"****",    //楼层id 
+       “wdSystemCode”:"scpz", //系统编码
+       ”remark“:"****"   //说明
      }
    ]
 }
@@ -490,16 +492,19 @@
 
 ## 16. 修改土建装饰设备设施说明
 
-接口名称:http://<ip>:<port>/object/construction/update?groupCode=集团编码&projectId=项目id
+接口名称:http://<ip>:<port>/equip/construction/update?groupCode=集团编码&projectId=项目id
 
 请求参数:
 
 ```
-{
-    “buildId”:"****",    //建筑id(非必传,楼层ID为空时,必传)
-    "floorId":"****",    //楼层id (非必传,不传查全楼)
-    "remark":"***"       //说明(必传)
-}
+[
+  {
+       “id”:"****",          //该条说明id,必传
+       "floorId":"****",    //楼层id ,必传
+       “wdSystemCode”:"scpz", //系统编码,必传,默认“scpz”
+       ”remark“:"****"   //说明,必传
+   }
+]
 ```
 
 返回参数:
@@ -510,24 +515,23 @@
    "count":12,
    "content":[
      {
-      "floorId":"****", //楼层id
-      "remark":"***"    //说明
-     }
+       “id”:"****",          //该条说明id,必传
+       "floorId":"****",    //楼层id ,必传
+       “wdSystemCode”:"scpz", //系统编码,必传,默认“scpz”
+       ”remark“:"****"   //说明,必传
+    }
    ]
 }
 ```
 
 ## 17. 删除土建装饰设备实施说明
 
-接口名称:http://<ip>:<port>/object/construction/delete?groupCode=集团编码&projectId=项目id
+接口名称:http://<ip>:<port>/equip/construction/delete?groupCode=集团编码&projectId=项目id
 
 请求参数:
 
 ```
-{
-    “buildId”:"****",    //建筑id(非必传,楼层ID为空时,必传)
-    "floorId":"****",    //楼层id (非必传,不传查全楼)
-}
+["id"]
 ```
 
 返回参数:
@@ -538,16 +542,18 @@
    "count":12,
    "content":[
      {
-      "floorId":"****", //楼层id
-      "remark":"***"    //说明
-     }
+       “id”:"****",          //该条说明id,必传
+       "floorId":"****",    //楼层id ,必传
+       “wdSystemCode”:"scpz", //系统编码,必传,默认“scpz”
+       ”remark“:"****"   //说明,必传
+    }
    ]
 }
 ```
 
 ## 18. 根据楼层获取地板对象
 
-接口名称:http://<ip>:<port>/object/floorBoard/query?groupCode=集团编码&projectId=项目id
+接口名称:http://<ip>:<port>/equip/floorBoard/query?groupCode=集团编码&projectId=项目id
 
 请求参数: