Bläddra i källkod

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/adm-middleware into develop

lijie 3 år sedan
förälder
incheckning
fd0e334043
31 ändrade filer med 1357 tillägg och 139 borttagningar
  1. 129 0
      src/main/java/com/persagy/proxy/adm/controller/AdmDoorController.java
  2. 64 0
      src/main/java/com/persagy/proxy/adm/controller/AdmRelationController.java
  3. 49 0
      src/main/java/com/persagy/proxy/adm/controller/AdmRelationObjectController.java
  4. 100 7
      src/main/java/com/persagy/proxy/adm/controller/AdmSpaceController.java
  5. 128 0
      src/main/java/com/persagy/proxy/adm/controller/AdmVirtualWallController.java
  6. 128 0
      src/main/java/com/persagy/proxy/adm/controller/AdmWindowController.java
  7. 28 0
      src/main/java/com/persagy/proxy/adm/model/AdmDCSQueryRequest.java
  8. 51 0
      src/main/java/com/persagy/proxy/adm/model/AdmDoor.java
  9. 49 0
      src/main/java/com/persagy/proxy/adm/model/AdmDtRelation.java
  10. 35 0
      src/main/java/com/persagy/proxy/adm/model/AdmGraphicType.java
  11. 9 0
      src/main/java/com/persagy/proxy/adm/model/AdmLocation.java
  12. 9 0
      src/main/java/com/persagy/proxy/adm/model/AdmPoint.java
  13. 73 0
      src/main/java/com/persagy/proxy/adm/model/AdmRelationType.java
  14. 19 0
      src/main/java/com/persagy/proxy/adm/model/AdmSpace.java
  15. 20 0
      src/main/java/com/persagy/proxy/adm/model/AdmUpDataFloorAndBuildingRequests.java
  16. 37 0
      src/main/java/com/persagy/proxy/adm/model/AdmVirtualWall.java
  17. 53 0
      src/main/java/com/persagy/proxy/adm/model/AdmWindow.java
  18. 10 0
      src/main/java/com/persagy/proxy/adm/service/IAdmDoorService.java
  19. 17 0
      src/main/java/com/persagy/proxy/adm/service/IAdmDtRelationService.java
  20. 16 0
      src/main/java/com/persagy/proxy/adm/service/IAdmGraphicTypeService.java
  21. 13 0
      src/main/java/com/persagy/proxy/adm/service/IAdmRelationTypeService.java
  22. 1 38
      src/main/java/com/persagy/proxy/adm/service/IAdmSpaceService.java
  23. 11 0
      src/main/java/com/persagy/proxy/adm/service/IAdmVirtualWallService.java
  24. 11 0
      src/main/java/com/persagy/proxy/adm/service/IAdmWindowService.java
  25. 16 0
      src/main/java/com/persagy/proxy/adm/service/impl/AdmDoorServiceImpl.java
  26. 21 0
      src/main/java/com/persagy/proxy/adm/service/impl/AdmDtRelationServiceImpl.java
  27. 59 0
      src/main/java/com/persagy/proxy/adm/service/impl/AdmGraphicTypeServiceImpl.java
  28. 28 0
      src/main/java/com/persagy/proxy/adm/service/impl/AdmRelationTypeServiceImpl.java
  29. 141 94
      src/main/java/com/persagy/proxy/adm/service/impl/AdmSpaceServiceImpl.java
  30. 16 0
      src/main/java/com/persagy/proxy/adm/service/impl/AdmVirtualWallServiceImpl.java
  31. 16 0
      src/main/java/com/persagy/proxy/adm/service/impl/AdmWindowServiceImpl.java

+ 129 - 0
src/main/java/com/persagy/proxy/adm/controller/AdmDoorController.java

@@ -0,0 +1,129 @@
+package com.persagy.proxy.adm.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.model.AdmDoor;
+import com.persagy.proxy.adm.request.AdmCreateRequest;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmDoorService;
+import com.persagy.proxy.adm.service.IAdmDoorService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.ws.rs.QueryParam;
+import java.util.List;
+
+/**
+ * ADM 门 API
+ * @author xujiaheng
+ * @date 2021-09-06
+ */
+@RestController
+@RequestMapping("/object/door")
+public class AdmDoorController {
+
+    @Autowired
+    private IAdmDoorService service;
+    @Value("${middleware.group.code}")
+    private String groupCode;
+
+    /**
+     * 创建
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/create")
+    public AdmResponse create(@RequestBody AdmCreateRequest<AdmDoor> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        List<AdmDoor> vos = CollUtil.newArrayList(createRequest.getContent());
+        vos = service.doInsert(context, AdmDoor.class, vos);
+        return AdmResponse.success(vos);
+    }
+
+    /**
+     * 创建(主键重复则忽略)
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/create_ignore")
+    public AdmResponse createIgnore(@RequestBody AdmCreateRequest<AdmDoor> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        createRequest.getContent().forEach(request->{
+            //TODO
+        });
+        return AdmResponse.success();
+    }
+
+    /**
+     * 根据ID删除
+     * @param vos
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/delete")
+    public AdmResponse delete(@RequestBody List<AdmDoor> vos) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, null, AdmCommonConstant.APP_ID);
+        service.doDelete(context, vos);
+        return AdmResponse.success();
+    }
+
+    /**
+     * 更新
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/update")
+    public AdmResponse update(@RequestBody AdmCreateRequest<AdmDoor> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        List<AdmDoor> vos = CollUtil.newArrayList(createRequest.getContent());
+        vos = service.doUpdate(context, AdmDoor.class, vos);
+        return AdmResponse.success(vos);
+    }
+
+    /**
+     * 查询
+     * @param projectId
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/query")
+    public AdmResponse query(@QueryParam("projectId") String projectId,
+                             @RequestBody AdmQueryCriteria request) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        request.setName("equipment");
+        request.setFilters("classCode = 'CFBEDR'");
+        return service.doQuery(context, request, AdmDoor.class);
+    }
+
+    /**
+     * 统计
+     * @param projectId
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/count")
+    public AdmResponse count(@QueryParam("projectId") String projectId,
+                             @RequestBody AdmQueryCriteria request) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        request.setName("equipment");
+        request.setOnlyCount(true);
+        return service.doQuery(context, request, AdmDoor.class);
+    }
+}

+ 64 - 0
src/main/java/com/persagy/proxy/adm/controller/AdmRelationController.java

@@ -0,0 +1,64 @@
+package com.persagy.proxy.adm.controller;
+
+import cn.hutool.core.collection.CollUtil;
+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.common.helper.SpringHelper;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.model.AdmFloor;
+import com.persagy.proxy.adm.model.AdmGraphicType;
+import com.persagy.proxy.adm.model.AdmRelationType;
+import com.persagy.proxy.adm.model.AdmWindow;
+import com.persagy.proxy.adm.request.AdmCreateRequest;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmGraphicTypeService;
+import com.persagy.proxy.adm.service.IAdmRelationService;
+import com.persagy.proxy.adm.service.IAdmRelationTypeService;
+import com.persagy.proxy.adm.service.IAdmWindowService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.ws.rs.QueryParam;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * ADM 窗户 API
+ * @author xujiaheng
+ * @date 2021-09-3
+ */
+@RestController
+@RequestMapping("/rel")
+public class AdmRelationController {
+
+    @Autowired
+    private IAdmGraphicTypeService service;
+
+    @Value("${middleware.group.code}")
+    private String groupCode;
+
+    /**
+     * 创建
+     * @param
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/equip/category")
+    public AdmResponse equipRel(@QueryParam("projectId") String projectId) {
+        //组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        AdmResponse res = service.query(context);
+        return res;
+    }
+}

+ 49 - 0
src/main/java/com/persagy/proxy/adm/controller/AdmRelationObjectController.java

@@ -0,0 +1,49 @@
+package com.persagy.proxy.adm.controller;
+
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.model.AdmDtRelation;
+import com.persagy.proxy.adm.model.AdmGraphicType;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmDtRelationService;
+import com.persagy.proxy.adm.service.IAdmGraphicTypeService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.ws.rs.QueryParam;
+
+/**
+ * ADM 窗户 API
+ * @author xujiaheng
+ * @date 2021-09-3
+ */
+@RestController
+@RequestMapping("/rel/obj")
+public class AdmRelationObjectController {
+
+    @Autowired
+    private IAdmDtRelationService service;
+
+    @Value("${middleware.group.code}")
+    private String groupCode;
+
+    /**
+     * 创建
+     * @param
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/equip/query")
+    public AdmResponse equipRel(@QueryParam("projectId") String projectId) {
+        //组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        AdmQueryCriteria criteria = new AdmQueryCriteria();
+        criteria.setFilters("projectId = "+projectId);
+        AdmResponse admResponse = service.doQuery(context, criteria, AdmDtRelation.class);
+        return admResponse;
+    }
+}

+ 100 - 7
src/main/java/com/persagy/proxy/adm/controller/AdmSpaceController.java

@@ -2,16 +2,25 @@ package com.persagy.proxy.adm.controller;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+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.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.model.*;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmBuildingService;
+import com.persagy.proxy.adm.service.IAdmFloorService;
+import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.service.IAdmSpaceService;
+import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
+import com.persagy.proxy.common.entity.RelationDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -21,6 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.ws.rs.QueryParam;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -36,6 +46,10 @@ public class AdmSpaceController {
     private IAdmSpaceService service;
     @Autowired
     private IAdmBuildingService buildingService;
+    @Autowired
+    private IAdmRelationService relationService;
+    @Autowired
+    private IAdmFloorService floorService;
     @Value("${middleware.group.code}")
     private String groupCode;
 
@@ -170,19 +184,97 @@ public class AdmSpaceController {
     /**
      * 修改业务空间对象和建筑楼层的关系
      * spaceId 业务空间id,id 楼层或建筑id,type 业务空间的类型
-     * @param upDataFloorAndBuildingRequestsList
+     * @param voList
      * @return
      * @throws Exception
      */
     @PostMapping("/update-fl-bd")
-    public AdmResponse updateFlBd(@RequestBody List<AdmUpDataFloorAndBuildingRequests> upDataFloorAndBuildingRequestsList, @QueryParam("projectId") String projectId) throws Exception {
-        if(CollUtil.isEmpty(upDataFloorAndBuildingRequestsList)){
+    public AdmResponse updateFlBd(@RequestBody List<AdmUpDataFloorAndBuildingRequests> voList, @QueryParam("projectId") String projectId) throws Exception {
+        if(CollUtil.isEmpty(voList)){
             return AdmResponse.failure("不可以传入空数据");
         }
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
-        List<AdmSpace> vos = service.doUpdateFloorORBuilding(context, upDataFloorAndBuildingRequestsList);
-        return AdmResponse.success(vos);
+        //List<AdmSpace> vos = service.doUpdateFloorORBuilding(context, upDataFloorAndBuildingRequestsList);
+        //TODO 循环删除 需要改为 批量删除
+        List<RelationDTO> RSpInBd_up = new ArrayList<>();
+        List<RelationDTO> RSpInFl_up = new ArrayList<>();
+        List<AdmSpace> space_up = new ArrayList<>();
+        QueryCriteria queryCriteria = new QueryCriteria();
+        voList.stream().forEach(requestData -> {
+            String spaceId = requestData.getSpaceId();
+            String id = requestData.getId();
+            String type = requestData.getType();//classCode
+
+            /** 清除空间和建筑楼层的的数据 */
+            ObjectNode rBd = JsonNodeFactory.instance.objectNode();
+            rBd.put("objTo",spaceId);
+            rBd.put("relCode","Bd2Sp");
+            queryCriteria.setCriteria(rBd);
+            relationService.doDelete(context, queryCriteria);
+
+            ObjectNode rFl = JsonNodeFactory.instance.objectNode();
+            rFl.put("objTo",spaceId);
+            rFl.put("relCode","Fl2Sp");
+            queryCriteria.setCriteria(rFl);
+            relationService.doDelete(context, queryCriteria);
+
+            if(StrUtil.isNotEmpty(id)){
+                if(id.startsWith("Fl") && StrUtil.isNotEmpty(spaceId)){
+                    AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
+                    admQueryCriteria.setName("floor");
+                    AdmResponse admResponseFl = floorService.doQuery(context, admQueryCriteria, AdmFloor.class);
+                    if(CollUtil.isNotEmpty(admResponseFl.getContent())){
+                        AdmFloor floor = JSONUtil.toBean(admResponseFl.getContent().get(0).toString(), AdmFloor.class);
+                        if (floor!=null){
+                            //更新关系
+                            RelationDTO rBd_up = new RelationDTO();
+                            rBd_up.setObjTo(spaceId);
+                            rBd_up.setRelCode("Bd2Sp");
+                            rBd_up.setObjFrom(floor.getBuildingId());
+                            RSpInBd_up.add(rBd_up);
+
+                            RelationDTO rFl_up = new RelationDTO();
+                            rFl_up.setObjTo(spaceId);
+                            rFl_up.setRelCode("Fl2Sp");
+                            rFl_up.setObjFrom(floor.getId());
+                            RSpInFl_up.add(rFl_up);
+
+                            //更新实体
+                            AdmSpace space = new AdmSpace();
+                            space.setId(spaceId);
+                            space.setObjectType("space");
+                            space.setZoneType(type);
+                            space.setClassCode(type);
+                            space.setBuildingId(floor.getBuildingId());
+                            space.setFloorId(floor.getId());
+                            space_up.add(space);
+                        }
+                    }
+                }else if(id.startsWith("Bd")){
+                    //更新关系
+                    RelationDTO rBd_up = new RelationDTO();
+                    rBd_up.setObjTo(spaceId);
+                    rBd_up.setRelCode("Bd2Sp");
+                    rBd_up.setObjFrom(id);
+                    RSpInBd_up.add(rBd_up);
+
+                    //更新实体
+                    AdmSpace space = new AdmSpace();
+                    space.setId(spaceId);
+                    space.setObjectType("space");
+                    space.setZoneType(type);
+                    space.setClassCode(type);
+                    space.setBuildingId(id);
+                    space.setFloorId(null);
+                    space_up.add(space);
+                }
+            }
+        });
+        service.doUpdate(context, AdmSpace.class, space_up);
+        relationService.doSave(context, RSpInBd_up);
+        relationService.doSave(context, RSpInFl_up);
+         return AdmResponse.success(space_up);
     }
 
     /**
@@ -197,6 +289,7 @@ public class AdmSpaceController {
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
         List<AdmSpace> vos = CollUtil.newArrayList(createRequest.getContent());
         vos = service.doUpdate(context, AdmSpace.class, vos);
+        //TODO 更新计算关系ZoneSpaceBaseService.upDateOutline
         return AdmResponse.success(vos);
     }
 
@@ -209,7 +302,7 @@ public class AdmSpaceController {
      */
     @PostMapping("/query-outline")
     public AdmResponse queryOutline(@QueryParam("projectId") String projectId,
-                                      @RequestBody AdmQueryCriteria request) throws Exception {
+                                      @RequestBody AdmDCSQueryRequest request) throws Exception {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
         request.setName("space");
@@ -225,7 +318,7 @@ public class AdmSpaceController {
         list.add("infos");
         list.add("properties");
         request.setProjection(list);
-        return service.doQuery(context, request, AdmSpace.class);
+        return service.doQuerySpaces(context, request);
     }
 
 

+ 128 - 0
src/main/java/com/persagy/proxy/adm/controller/AdmVirtualWallController.java

@@ -0,0 +1,128 @@
+package com.persagy.proxy.adm.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.model.AdmVirtualWall;
+import com.persagy.proxy.adm.request.AdmCreateRequest;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmVirtualWallService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.ws.rs.QueryParam;
+import java.util.List;
+
+/**
+ * ADM 窗户 API
+ * @author xujiaheng
+ * @date 2021-09-3
+ */
+@RestController
+@RequestMapping("/object/virtualWall")
+public class AdmVirtualWallController {
+
+    @Autowired
+    private IAdmVirtualWallService service;
+    @Value("${middleware.group.code}")
+    private String groupCode;
+
+    /**
+     * 创建
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/create")
+    public AdmResponse create(@RequestBody AdmCreateRequest<AdmVirtualWall> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        List<AdmVirtualWall> vos = CollUtil.newArrayList(createRequest.getContent());
+        vos = service.doInsert(context, AdmVirtualWall.class, vos);
+        return AdmResponse.success(vos);
+    }
+
+    /**
+     * 创建(主键重复则忽略)
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/create_ignore")
+    public AdmResponse createIgnore(@RequestBody AdmCreateRequest<AdmVirtualWall> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        createRequest.getContent().forEach(it->{
+            //TODO
+        });
+        return AdmResponse.success();
+    }
+
+    /**
+     * 根据ID删除
+     * @param vos
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/delete")
+    public AdmResponse delete(@RequestBody List<AdmVirtualWall> vos) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, null, AdmCommonConstant.APP_ID);
+        service.doDelete(context, vos);
+        return AdmResponse.success();
+    }
+
+    /**
+     * 更新
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/update")
+    public AdmResponse update(@RequestBody AdmCreateRequest<AdmVirtualWall> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        List<AdmVirtualWall> vos = CollUtil.newArrayList(createRequest.getContent());
+        vos = service.doUpdate(context, AdmVirtualWall.class, vos);
+        return AdmResponse.success(vos);
+    }
+
+    /**
+     * 查询
+     * @param projectId
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/query")
+    public AdmResponse query(@QueryParam("projectId") String projectId,
+                             @RequestBody AdmQueryCriteria request) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        request.setName("equipment");
+        request.setFilters("classCode = 'VIRTUALWALL'");
+        return service.doQuery(context, request, AdmVirtualWall.class);
+    }
+
+    /**
+     * 统计
+     * @param projectId
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/count")
+    public AdmResponse count(@QueryParam("projectId") String projectId,
+                             @RequestBody AdmQueryCriteria request) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        request.setName("equipment");
+        request.setOnlyCount(true);
+        return service.doQuery(context, request, AdmVirtualWall.class);
+    }
+}

+ 128 - 0
src/main/java/com/persagy/proxy/adm/controller/AdmWindowController.java

@@ -0,0 +1,128 @@
+package com.persagy.proxy.adm.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.model.AdmWindow;
+import com.persagy.proxy.adm.request.AdmCreateRequest;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmWindowService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.ws.rs.QueryParam;
+import java.util.List;
+
+/**
+ * ADM 窗户 API
+ * @author xujiaheng
+ * @date 2021-09-3
+ */
+@RestController
+@RequestMapping("/object/window")
+public class AdmWindowController {
+
+    @Autowired
+    private IAdmWindowService service;
+    @Value("${middleware.group.code}")
+    private String groupCode;
+
+    /**
+     * 创建
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/create")
+    public AdmResponse create(@RequestBody AdmCreateRequest<AdmWindow> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        List<AdmWindow> vos = CollUtil.newArrayList(createRequest.getContent());
+        vos = service.doInsert(context, AdmWindow.class, vos);
+        return AdmResponse.success(vos);
+    }
+
+    /**
+     * 创建(主键重复则忽略)
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/create_ignore")
+    public AdmResponse createIgnore(@RequestBody AdmCreateRequest<AdmWindow> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        createRequest.getContent().forEach(request->{
+            //TODO
+        });
+        return AdmResponse.success();
+    }
+
+    /**
+     * 根据ID删除
+     * @param vos
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/delete")
+    public AdmResponse delete(@RequestBody List<AdmWindow> vos) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, null, AdmCommonConstant.APP_ID);
+        service.doDelete(context, vos);
+        return AdmResponse.success();
+    }
+
+    /**
+     * 更新
+     * @param createRequest
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/update")
+    public AdmResponse update(@RequestBody AdmCreateRequest<AdmWindow> createRequest, @QueryParam("projectId") String projectId) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        List<AdmWindow> vos = CollUtil.newArrayList(createRequest.getContent());
+        vos = service.doUpdate(context, AdmWindow.class, vos);
+        return AdmResponse.success(vos);
+    }
+
+    /**
+     * 查询
+     * @param projectId
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/query")
+    public AdmResponse query(@QueryParam("projectId") String projectId,
+                             @RequestBody AdmQueryCriteria request) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        request.setName("equipment");
+        request.setFilters("classCode = 'CFBEWN'");
+        return service.doQuery(context, request, AdmWindow.class);
+    }
+
+    /**
+     * 统计
+     * @param projectId
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/count")
+    public AdmResponse count(@QueryParam("projectId") String projectId,
+                             @RequestBody AdmQueryCriteria request) throws Exception {
+        // 组装上下文条件
+        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        request.setName("equipment");
+        request.setOnlyCount(true);
+        return service.doQuery(context, request, AdmWindow.class);
+    }
+}

+ 28 - 0
src/main/java/com/persagy/proxy/adm/model/AdmDCSQueryRequest.java

@@ -0,0 +1,28 @@
+package com.persagy.proxy.adm.model;
+
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 业务空间查询请求体
+ * @author lvxy
+ * @date 2021/9/8
+ */
+@Data
+public class AdmDCSQueryRequest extends AdmQueryCriteria {
+    /** 楼层id */
+    
+    private String floorId;
+
+    /** 建筑id */
+   
+    private String buildingId;
+
+    /** 空间类型 */
+    private String zoneType;
+
+    /** 空间类型 空间类型列表 */ 
+    private List<String> zoneTypeList;
+}

+ 51 - 0
src/main/java/com/persagy/proxy/adm/model/AdmDoor.java

@@ -0,0 +1,51 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * ADM 建筑 实体
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+@Data
+public class AdmDoor {
+
+    /** 模型ID */
+    private String id;
+    /** 名称 */
+    private String name;
+    /** 模型所属楼层的id */
+    private String modelFloorId;
+    /** 定位点 */
+    private AdmLocation location;
+    /** 轮廓线 */
+    private List<List<AdmPoint>> outline;
+    /** 面方向 */
+    private AdmPoint faceDirection;
+    /** Hand方向 */
+    private AdmPoint handDirection;
+    /** 类型中文名称 */
+    private String familyName;
+    /** 族符号 */
+    private String familySymbol;
+    /** 厚度 */
+    private String thick;
+    /** 所属墙 */
+    private String wallId;
+    /** 拥有者的RevitId */
+    private String owner;
+    /** 模型id(外键) */
+    private String modelId;
+    /** 类型 */
+    private String elementType;
+    /** revit模型中的id */
+    private String revitId;
+    /** 对应Revit模型id */
+    private String sourceId;
+
+    private String classCode = "CFBEDR";
+    private String objectType = "equipment";
+
+}

+ 49 - 0
src/main/java/com/persagy/proxy/adm/model/AdmDtRelation.java

@@ -0,0 +1,49 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * ADM 建筑 实体
+ * @author xujiaheng
+ * @date 2021-09-06
+ */
+@Data
+public class AdmDtRelation {
+
+    /** ID */
+    private String id;
+    private String group_code;
+    private String project_id;
+    /** 图主键 */
+    private String graph_id;
+    /** 图编码 */
+    private String graph_code;
+    /** 关系编码 */
+    private String rel_code;
+    /** 关系值 */
+    private String rel_value;
+    /** 来源对象 */
+    private String obj_from;
+    /** 目标对象 */
+    private String obj_to;
+    /** 创建应用 */
+    private String create_app;
+    /** 最后更新应用 */
+    private String update_app;
+    /** 创建人 */
+    private String creator;
+    /** 创建时间 */
+    private String creation_time;
+    /** 最后修改人 */
+    private String modifier;
+    /** 最后修改时间 */
+    private String modified_time;
+    /** 合法标识 */
+    private Integer valid;
+    /** 乐观锁 */
+    private Date ts;
+
+}

+ 35 - 0
src/main/java/com/persagy/proxy/adm/model/AdmGraphicType.java

@@ -0,0 +1,35 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * ADM 建筑 实体
+ * @author xujiaheng
+ * @date 2021-09-06
+ */
+@Data
+public class AdmGraphicType {
+
+    /** ID */
+    private String id;
+    /** 名称 */
+    private String name;
+    /** 图类型编码 */
+    private String code;
+    /** 说明 */
+    private String note;
+    /** 更新时间 */
+    private Date lastUpdate;
+    /** 创建时间 */
+    private Date createTime;
+    /** 大分类id */
+    private String parentId;
+    /** 排序 */
+    private int sort;
+    /** 级联-状态信息 */
+    List<AdmRelationType> relationTypeList;
+
+}

+ 9 - 0
src/main/java/com/persagy/proxy/adm/model/AdmLocation.java

@@ -0,0 +1,9 @@
+package com.persagy.proxy.adm.model;
+
+import java.util.List;
+
+public class AdmLocation {
+
+    private String type;
+    private List<AdmPoint> points;
+}

+ 9 - 0
src/main/java/com/persagy/proxy/adm/model/AdmPoint.java

@@ -0,0 +1,9 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+public class AdmPoint {
+    private Double x;
+    private Double y;
+    private Double z;
+}

+ 73 - 0
src/main/java/com/persagy/proxy/adm/model/AdmRelationType.java

@@ -0,0 +1,73 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+import javax.json.Json;
+import java.util.Date;
+
+/**
+ * ADM 关联类型 实体
+ * @author xujiaheng
+ * @date 2021-09-06
+ */
+@Data
+public class AdmRelationType {
+    /** ID */
+    private String id;
+    /** 名称 */
+    private String name;
+    /** 图类型编码 */
+    private String code;
+    /** 图类型id */
+    private String graphicId;
+    /** 说明 */
+    private String note;
+    /** 连接对象 */
+    private String conneObject;
+    /** 是否需要配置源末端 */
+    private Integer isSource;
+    /** 是否自动计算类型 */
+    private Integer isAutomatic;
+    /** 手动计算类型 1 禁用  2提示引导 3手动维护 */
+    private Integer manual;
+    /** 提示信息 */
+    private String prompting;
+    /** 更新时间 */
+    private Date lastUpdate;
+    /** 创建时间 */
+    private Date createTime;
+    /** 关系表名 */
+    private String tableName;
+    /** 关系是否双向 */
+    private Integer isThorough;
+    /** 关系类型,数据中心用 */
+    private String relationType;
+    /** 业务分区类型 */
+    private String zoneType;
+    /** 风系统1,水系统0 */
+    private Integer systemType;
+    /** 手动计算查询函数 */
+    private String manualQuery;
+    /** 手动计算主对象类型 */
+    private String mainType;
+    /** 手动计算从对象类型 */
+    private String fromType;
+    /** 添加关系 */
+    private String addRel;
+    /** 删除关系 */
+    private String delRel;
+    /** 手动计算关系类型 */
+    private String relManualType;
+    /** 主对象 */
+    private String mainObject;
+    /** 从对象 */
+    private String fromObject;
+    /** 机电系统类型 */
+    private Json mepSystemType;
+    /** 图类型 */
+    private String graphicType;
+    /** 边类型 */
+    private String relCode;
+    /** 文件名 */
+    private String fileName;
+}

+ 19 - 0
src/main/java/com/persagy/proxy/adm/model/AdmSpace.java

@@ -133,4 +133,23 @@ public class AdmSpace {
     //private T spaceOutline;
     /** 对象类型 */
     private String objectType = "space";
+
+    public String getZoneType(){
+        return zoneType;
+
+    }
+    public void setZoneType(String zoneType){
+        this.zoneType = zoneType;
+        this.classCode = zoneType;
+    }
+
+    public String getClassCode(){
+        return classCode;
+    }
+    public void setClassCode(String classCode){
+        this.zoneType = classCode;
+        this.classCode = classCode;
+    }
+
+
 }

+ 20 - 0
src/main/java/com/persagy/proxy/adm/model/AdmUpDataFloorAndBuildingRequests.java

@@ -0,0 +1,20 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+/**
+ * 间和楼层建筑的关系
+ * @author lvxy
+ * @date 2021/9/7
+ */
+@Data
+public class AdmUpDataFloorAndBuildingRequests {
+    /** 业务空间id */
+    private String spaceId;
+
+    /** 建筑或楼层id */
+    private String id;
+
+    /** 业务空间类型 */
+    private String type;
+}

+ 37 - 0
src/main/java/com/persagy/proxy/adm/model/AdmVirtualWall.java

@@ -0,0 +1,37 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * ADM 虚拟墙 实体
+ * @author xujiaheng
+ * @date 2021-09-06
+ */
+@Data
+public class AdmVirtualWall {
+
+    /** 模型ID */
+    private String id;
+    /** 名称 */
+    private String name;
+    /** 模型所属楼层的id */
+    private String modelFloorId;
+    /** 定位点 */
+    private AdmLocation location;
+    /** 轮廓线 */
+    private List<List<AdmPoint>> outline;
+    /** 模型id(外键) */
+    private String modelId;
+    /** 类型 */
+    private String elementType;
+    /** revit模型中的id */
+    private String revitId;
+    /** 对应Revit模型id */
+    private String sourceId;
+
+    private String classCode = "VIRTUALWALL";
+    private String objectType = "equipment";
+
+}

+ 53 - 0
src/main/java/com/persagy/proxy/adm/model/AdmWindow.java

@@ -0,0 +1,53 @@
+package com.persagy.proxy.adm.model;
+
+import com.persagy.proxy.adm.annotations.CascadeColumn;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ADM 建筑 实体
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+@Data
+public class AdmWindow {
+
+    /** ID */
+    private String id;
+    /** 模型所属楼层的id */
+    private String modelFloorId;
+    /** 模型id(外键) */
+    private String modelId;
+    /** 类型 */
+    private String elementType;
+    /** revit模型中的id */
+    private String revitId;
+    /** 对应Revit模型id */
+    private String sourceId;
+    /** 所属墙 */
+    private String wallId;
+    /** 拥有者的RevitId */
+    private String owner;
+    /** 名称 */
+    private String name;
+    /** 宽度 */
+    private Double width;
+    /** 定位点 */
+    private AdmLocation location;
+    /** 轮廓线 */
+    private List<List<AdmPoint>> outline;
+    /** 类型中文名称 */
+    private String familyName;
+    /** 族符号 */
+    private String familySymbol;
+    /** 厚度 */
+    private Double thick;
+
+    private String classCode = "CFBEWN";
+
+    private String objectType = "equipment";
+
+}

+ 10 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmDoorService.java

@@ -0,0 +1,10 @@
+package com.persagy.proxy.adm.service;
+
+import com.persagy.proxy.adm.model.AdmDoor;
+/**
+ * ADM 门接口类
+ * @author xujiaheng
+ * @date 2021-09-16
+ */
+public interface IAdmDoorService extends IAdmBaseService<AdmDoor> {
+}

+ 17 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmDtRelationService.java

@@ -0,0 +1,17 @@
+package com.persagy.proxy.adm.service;
+
+import com.persagy.proxy.adm.model.AdmDtRelation;
+import com.persagy.proxy.adm.model.AdmGraphicType;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+
+/**
+ * ADM 图解接口
+ * @author lvxy
+ * @date 2021/8/18
+ */
+public interface IAdmDtRelationService extends IAdmBaseService<AdmDtRelation>{
+
+
+
+}

+ 16 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmGraphicTypeService.java

@@ -0,0 +1,16 @@
+package com.persagy.proxy.adm.service;
+
+import com.persagy.proxy.adm.model.AdmGraphicType;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+
+/**
+ * ADM 图解接口
+ * @author lvxy
+ * @date 2021/8/18
+ */
+public interface IAdmGraphicTypeService extends IAdmBaseService<AdmGraphicType>{
+
+
+    AdmResponse query(InstanceUrlParam context);
+}

+ 13 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmRelationTypeService.java

@@ -0,0 +1,13 @@
+package com.persagy.proxy.adm.service;
+
+import com.persagy.proxy.adm.model.AdmRelationType;
+
+/**
+ * ADM 图解接口
+ * @author lvxy
+ * @date 2021/8/18
+ */
+public interface IAdmRelationTypeService extends IAdmBaseService<AdmRelationType>{
+
+
+}

+ 1 - 38
src/main/java/com/persagy/proxy/adm/service/IAdmSpaceService.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.persagy.proxy.adm.model.AdmDCSQueryRequest;
 import com.persagy.proxy.adm.model.AdmSpace;
 import com.persagy.proxy.adm.model.AdmUpDataFloorAndBuildingRequests;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 
@@ -27,47 +28,9 @@ public interface IAdmSpaceService extends IAdmBaseService<AdmSpace>{
     List<AdmSpace> doInsertExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList);
 
     /**
-     * 修改
-     * @param context
-     * @param clazz
-     * @param voList
-     * @return
-     */
-    List<AdmSpace> doUpdateExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList);
-
-    /**
-     * 修改空间对象的楼层建筑信息
-     * @param context
-     * @param voList
-     * @return
-     */
-    List<AdmSpace> doUpdateFloorORBuilding(InstanceUrlParam context, List<AdmUpDataFloorAndBuildingRequests> voList);
-
-    /**
-     * 修改空间轮廓线
-     * @param context
-     * @param clazz
-     * @param voList
-     * @return
-     */
-    List<AdmSpace> doUpdateOutline(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList);
-
-
-    /**
-     * 删除
-     *
-     * @param context
-     * @param voList
-     * @return
-     */
-    void doDeleteExt(InstanceUrlParam context, List<AdmSpace> voList);
-
-    /**
      * 查询业务空间所有类型
      */
     AdmResponse doQueryType(InstanceUrlParam context, AdmDCSQueryRequest request);
-
-
     /**
      * 查询业务空间 级联查询:建筑(buildingList),楼层(floorlList),空间类型(objectType)未明确楼层(isnull),未明确建筑(isnull)
      */

+ 11 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmVirtualWallService.java

@@ -0,0 +1,11 @@
+package com.persagy.proxy.adm.service;
+
+import com.persagy.proxy.adm.model.AdmVirtualWall;
+
+/**
+ * ADM 建筑 接口类
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+public interface IAdmVirtualWallService extends IAdmBaseService<AdmVirtualWall> {
+}

+ 11 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmWindowService.java

@@ -0,0 +1,11 @@
+package com.persagy.proxy.adm.service;
+
+import com.persagy.proxy.adm.model.AdmWindow;
+
+/**
+ * ADM 建筑 接口类
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+public interface IAdmWindowService extends IAdmBaseService<AdmWindow> {
+}

+ 16 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmDoorServiceImpl.java

@@ -0,0 +1,16 @@
+package com.persagy.proxy.adm.service.impl;
+
+import com.persagy.proxy.adm.model.AdmDoor;
+import com.persagy.proxy.adm.service.IAdmDoorService;
+import org.springframework.stereotype.Service;
+
+/**
+ * ADM 建筑 实现类
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+@Service
+public class AdmDoorServiceImpl extends AbstractAdmBaseServiceImpl<AdmDoor> implements IAdmDoorService {
+
+
+}

+ 21 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmDtRelationServiceImpl.java

@@ -0,0 +1,21 @@
+package com.persagy.proxy.adm.service.impl;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.persagy.proxy.adm.model.AdmDtRelation;
+import com.persagy.proxy.adm.service.IAdmDtRelationService;
+import com.persagy.proxy.common.client.DmpRwdClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * ADM 设备 实现
+ * @author lvxy
+ * @date 2021/8/18
+ */
+@Slf4j
+@Service
+public class AdmDtRelationServiceImpl extends AbstractAdmBaseServiceImpl<AdmDtRelation> implements IAdmDtRelationService {
+
+
+}

+ 59 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmGraphicTypeServiceImpl.java

@@ -0,0 +1,59 @@
+package com.persagy.proxy.adm.service.impl;
+
+import com.persagy.proxy.adm.model.AdmGraphicType;
+import com.persagy.proxy.adm.model.AdmRelationType;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmGraphicTypeService;
+import com.persagy.proxy.adm.service.IAdmRelationTypeService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * ADM 图解类型 实现
+ * @author xujiaheng
+ * @date 2021/09/08
+ */
+@Slf4j
+@Service
+public class AdmGraphicTypeServiceImpl extends AbstractAdmBaseServiceImpl<AdmGraphicType> implements IAdmGraphicTypeService {
+
+    @Autowired
+    private IAdmGraphicTypeService service;
+    @Autowired
+    private IAdmRelationTypeService admRelationTypeService;
+
+    @Override
+    public AdmResponse query(InstanceUrlParam context) {
+        //查询类型
+        AdmQueryCriteria criteria = new AdmQueryCriteria();
+        criteria.setFilters("graphTypeName in ('强电类', '暖通空调类', '给排水类', '消防类', '测控类')");
+        AdmResponse admResponse = service.doQuery(context, criteria, AdmGraphicType.class);
+        List<AdmGraphicType> typeList = (List<AdmGraphicType>) admResponse.getContent();
+        //id列表
+        List<String> idList = typeList.stream().map(AdmGraphicType::getId).collect(Collectors.toList());
+        //查询二级类型
+        String idString = "(\'" + String.join("\',\'", idList) + "\')";
+        AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
+        admQueryCriteria.setFilters("parentId in ("+idString+")");
+        AdmResponse response = service.doQuery(context, admQueryCriteria, AdmGraphicType.class);
+        List<AdmGraphicType> graphicTypeList = (List<AdmGraphicType>) response.getContent();
+        graphicTypeList.forEach(graphicType->{
+            //查询三级类型
+            AdmQueryCriteria queryCriteria = new AdmQueryCriteria();
+            queryCriteria.setFilters("graphicId = "+graphicType.getId());
+            AdmResponse doQueryResponse = admRelationTypeService.doQuery(context, queryCriteria, AdmRelationType.class);
+            List<AdmRelationType> relationTypes = (List<AdmRelationType>) doQueryResponse.getContent();
+            graphicType.setRelationTypeList(relationTypes);
+        });
+        AdmResponse res = new AdmResponse();
+        res.setTotal(Long.valueOf(graphicTypeList.size()));
+        res.setContent(graphicTypeList);
+        return res;
+    }
+}

+ 28 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmRelationTypeServiceImpl.java

@@ -0,0 +1,28 @@
+package com.persagy.proxy.adm.service.impl;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.persagy.proxy.adm.model.AdmGraphicType;
+import com.persagy.proxy.adm.model.AdmRelationType;
+import com.persagy.proxy.adm.service.IAdmGraphicTypeService;
+import com.persagy.proxy.adm.service.IAdmRelationTypeService;
+import com.persagy.proxy.common.client.DmpRwdClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * ADM 设备 实现
+ * @author lvxy
+ * @date 2021/8/18
+ */
+@Slf4j
+@Service
+public class AdmRelationTypeServiceImpl extends AbstractAdmBaseServiceImpl<AdmRelationType> implements IAdmRelationTypeService {
+
+    @Autowired
+    private DmpRwdClient rwdClient;
+    @Autowired
+    private ObjectMapper objectMapper;
+
+
+}

+ 141 - 94
src/main/java/com/persagy/proxy/adm/service/impl/AdmSpaceServiceImpl.java

@@ -6,25 +6,22 @@ import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 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.basic.utils.JsonNodeUtils;
 import com.persagy.dmp.common.model.entity.BaseEntity;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.proxy.adm.model.*;
-import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmSpaceService;
+import com.persagy.proxy.adm.utils.AdmQueryCriteriaHelper;
 import com.persagy.proxy.common.client.DmpRwdClient;
 import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 import com.persagy.proxy.common.entity.ObjRelationDTO;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -49,8 +46,8 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
         Map<String, AdmSpace> spaceIdMap = CollUtil.fieldValueMap(voList, BaseEntity.PROP_ID);
         //key spid, value floorId
         Map<String, String> spId2FlId_map = voList.stream().filter(admSpace -> StrUtil.isNotEmpty(admSpace.getFloorId())).collect(Collectors.toMap(AdmSpace::getId,AdmSpace::getFloorId));
-        //查询空间中floorId 对应的flool
-        DmpResult<JSONArray> floors = queryFloors(context, spId2FlId_map);
+        //查询空间中floorId 对应的floor
+        DmpResult<JSONArray> floors = queryFloorsByFloorIds(context, spId2FlId_map.values());
         ArrayList<AdmFloor> floorList = CollUtil.newArrayList(JSONUtil.toList(floors.getData().toString(),AdmFloor.class));
         //space.height = floor.infos.height
         List<AdmSpace> vos = processHeight(spaceIdMap, floorList, spId2FlId_map);
@@ -65,40 +62,6 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
     }
 
     @Override
-    public List<AdmSpace> doUpdateExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList) {
-        return null;
-    }
-
-
-
-    @Override
-    public List<AdmSpace> doUpdateFloorORBuilding(InstanceUrlParam context, List<AdmUpDataFloorAndBuildingRequests> voList) {
-
-            voList.stream().forEach(requestData -> {
-
-            });
-
-            //根据id查询对象集合
-            //处理关系
-
-
-
-
-
-        return null;
-    }
-
-    @Override
-    public List<AdmSpace> doUpdateOutline(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList) {
-        return null;
-    }
-
-    @Override
-    public void doDeleteExt(InstanceUrlParam context, List<AdmSpace> voList) {
-
-    }
-
-    @Override
     public AdmResponse doQueryType(InstanceUrlParam context, AdmDCSQueryRequest request) {
         //查询定义类型
         ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
@@ -122,7 +85,98 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
 
     @Override
     public AdmResponse doQuerySpaces(InstanceUrlParam context, AdmDCSQueryRequest request) {
-        return null;
+        QueryCriteria dmpRequest = AdmQueryCriteriaHelper.toDmpCriteria(request);
+        //查询的时候,floorId,buildingId 按照空间对象的自定义信息点处理
+        //TODO 这个ifelse判断是原来的代码实现,写此方法实现的时候不清楚实际业务,保留原来的判断,之后了解业务再根据业务调整
+        DmpResult<JSONArray> dmpResult = new DmpResult<>();
+        List spaceArray = new ArrayList();
+        List<String> zoneTypeList = StrUtil.isNotEmpty(request.getZoneType()) ? CollUtil.newArrayList(request.getZoneType()) : request.getZoneTypeList();
+        if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isNotEmpty(request.getFloorId()) && !request.getFloorId().equals("isnull")){
+            querySpaceByFl(dmpRequest,context, spaceArray, zoneTypeList, request.getFloorId(), "Fl2Sp");
+
+        }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isNotEmpty(request.getFloorId()) && request.getFloorId().equals("isnull")){
+            QueryCriteria queryFloor = ensureQueryCommParm(dmpRequest,context, Arrays.asList("floor"), "floor");
+            ObjectNode criteriaFl = queryFloor.getCriteria();
+            criteriaFl.put("buildingId", request.getBuildingId());
+            queryFloor.setCriteria(criteriaFl);
+            DmpResult<JSONArray> dmpResultFloors = queryObj(context, queryFloor);
+            List<AdmFloor> floorList = JSONUtil.toList(JSONUtil.toJsonStr(dmpResultFloors.getData()), AdmFloor.class);
+            Map<String, AdmFloor> floorMap = CollUtil.fieldValueMap(floorList, BaseEntity.PROP_ID);
+
+            if(CollUtil.isNotEmpty(floorMap)){
+                QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
+                ObjectNode criteriaPe = queryCriteria.getCriteria();
+                JSONArray jsonArray = new JSONArray();
+                floorMap.keySet().forEach(floorId -> jsonArray.add(floorId));
+                criteriaPe.putPOJO("floorId", jsonArray);
+                queryCriteria.setCriteria(criteriaPe);
+                dmpResult = queryObj(context, queryCriteria);
+                if(CollUtil.isNotEmpty(dmpResult.getData())){
+                    spaceArray.addAll(dmpResult.getData());
+                }
+                querySpaceByFl(dmpRequest, context, spaceArray, zoneTypeList, request.getBuildingId(), "Bd2Sp");
+            }
+        }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId()) && !request.getBuildingId().equals("isnull")){
+            querySpaceByFl(dmpRequest,context, spaceArray, zoneTypeList, request.getBuildingId(), "Bd2Sp");
+        }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId()) && request.getBuildingId().equals("isnull")){
+            //未明确建筑
+            QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
+            ObjectNode criteriaPe = queryCriteria.getCriteria();
+            JSONObject isnull = new JSONObject();
+            isnull.put("$null", true);
+            criteriaPe.putPOJO("buildingId", isnull);
+            queryCriteria.setCriteria(criteriaPe);
+            dmpResult = queryObj(context, queryCriteria);
+            if(CollUtil.isNotEmpty(dmpResult.getData())){
+                spaceArray.addAll(dmpResult.getData());
+            }
+        }else if(StrUtil.isEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId())){
+            QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
+            ObjectNode criteriaPe = queryCriteria.getCriteria();
+            JSONObject isnull = new JSONObject();
+            isnull.put("$null", false);
+            criteriaPe.putPOJO("floorId", isnull);
+            queryCriteria.setCriteria(criteriaPe);
+            dmpResult = queryObj(context, queryCriteria);
+            if(CollUtil.isNotEmpty(dmpResult.getData())){
+                spaceArray.addAll(dmpResult.getData());
+            }
+        }
+        //处理查询结果转化为目标返回值
+        List<JSONObject> jsonObjects = new ArrayList<JSONObject>();
+        if(CollUtil.isNotEmpty(spaceArray)){
+            List<AdmSpace> spaceList = JSONUtil.toList(JSONUtil.toJsonStr(spaceArray), AdmSpace.class);
+            Map<String, AdmSpace> admSpaceMap = CollUtil.fieldValueMap(spaceList, BaseEntity.PROP_ID);
+            admSpaceMap.values().stream().forEach(admSpace -> {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("zoneType", admSpace.getClassCode());
+                jsonObject.put("floorId", admSpace.getFloorId());
+                jsonObjects.add(jsonObject);
+            });
+        }
+        AdmResponse admResponse = new AdmResponse();
+        admResponse.setContent(jsonObjects);
+        admResponse.setTotal(jsonObjects.size()*1l);
+        admResponse.setPageSize(request.getPageSize());
+        admResponse.setPageNumber(request.getPageNumber());
+        return admResponse;
+    }
+
+    /**
+     * 根据信息点查询空间
+     * @param context
+     * @param spaceArray
+     * @param zoneTypeList
+     * @param objFrom  flooIds /  bulidingIds
+     * @param relCode
+     */
+    private void querySpaceByFl(QueryCriteria dmpRequest, InstanceUrlParam context, List spaceArray, List<String> zoneTypeList, String objFrom, String relCode){
+        QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest,context, zoneTypeList, "space");
+        addRelationTo(queryCriteria,objFrom,relCode);
+        DmpResult<JSONArray> dmpResult = queryObj(context, queryCriteria);
+        if(CollUtil.isNotEmpty(dmpResult.getData())){
+            spaceArray.addAll(dmpResult.getData());
+        }
     }
 
     /**
@@ -174,16 +228,20 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
         return rwdClient.queryObject(context, paraPe);
     }
 
-    private JSONArray queryAndDealObjs(InstanceUrlParam context, Set<String> codes){
-        QueryCriteria criteriaObject = new QueryCriteria();
+    private QueryCriteria ensureQueryCommParm(QueryCriteria dmpRequest, InstanceUrlParam context, Collection<String> classCodes, String objType){
         ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
-        ArrayNode array = criteriaEq.putObject("classCode").putArray("$in");
-        codes.forEach(code -> array.add(code));
-        criteriaEq.put("objType", "space");
-        criteriaObject.setSize(1000L);
-        criteriaObject.setPage(1L);
-        criteriaObject.setCriteria(criteriaEq);
+        if(CollUtil.isNotEmpty(classCodes)){
+            ArrayNode array = criteriaEq.putObject("classCode").putArray("$in");
+            classCodes.forEach(code -> array.add(code));
+        }
+        criteriaEq.put("objType", objType);
+        dmpRequest.setCriteria(criteriaEq);
+        return dmpRequest;
+    }
 
+    private JSONArray queryAndDealObjs(InstanceUrlParam context, Set<String> codes){
+        QueryCriteria criteriaObject = ensureQueryCommParm(new QueryCriteria(), context, codes,"space");
+        criteriaObject.setSize(50L);
         DmpResult<JSONArray> dmpResult = queryObj(context, criteriaObject);
         if(CollUtil.isEmpty(dmpResult.getData())){
             return null;
@@ -214,35 +272,22 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
     /**
      * 查询空间flooId对应的infos中height存在的 flool
      * @param context
-     * @param spId2FlId_map
+     * @param floolIds
      * @return
      */
-    private DmpResult<JSONArray> queryFloors(InstanceUrlParam context, Map<String, String> spId2FlId_map){
-        QueryCriteria criteriaObject = new QueryCriteria();
-        ObjectNode criteriaPe = JsonNodeFactory.instance.objectNode();
-        ArrayNode array = criteriaPe.putObject("id").putArray("$in");
-        spId2FlId_map.values().forEach(floorId -> array.add(floorId));
-        criteriaPe.put("classCode", "floor");
-        criteriaPe.put("objType", "floor");
-
+    private DmpResult<JSONArray> queryFloorsByFloorIds(InstanceUrlParam context, Collection<String> floolIds){
+        QueryCriteria queryCriteria = ensureQueryCommParm(new QueryCriteria(),context, CollUtil.newArrayList("floor"),"floor");
+        ObjectNode criteriaPe = queryCriteria.getCriteria();
+        if(CollUtil.isNotEmpty(floolIds)){
+            ArrayNode array = criteriaPe.putObject("id").putArray("$in");
+            floolIds.forEach(floorId -> array.add(floorId));
+        }
         JSONObject height = new JSONObject();
         height.put("$gt", 0f);
         criteriaPe.putPOJO("height", height);
-
-        criteriaObject.setCriteria(criteriaPe);
-        criteriaObject.setSize(spId2FlId_map.size() * 1L);
-        criteriaObject.setPage(1L);
-        criteriaObject.setWithoutCount(true);
-        // 转换参数
-        JSONObject paraPe = null;
-        try {
-            String paraStr = objectMapper.writeValueAsString(criteriaObject);
-            paraPe = JSONObject.parseObject(paraStr);
-        } catch (JsonProcessingException e) {
-            log.error(e.getMessage(), e);
-            return null;
-        }
-        return rwdClient.queryObject(context, paraPe);
+        queryCriteria.setCriteria(criteriaPe);
+        queryCriteria.setWithoutCount(true);
+        return queryObj(context, queryCriteria);
     }
 
     /**
@@ -362,6 +407,24 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
         defineType.remove("id");
     }
 
+    private void addRelationTo(QueryCriteria rwdQueryCriteria, String objFrom, String relCode){
+        ObjectNode relationTO = JsonNodeFactory.instance.objectNode();
+        relationTO.put("relCode", relCode);
+        relationTO.put("objFrom", objFrom);
+        ObjectNode criteria = rwdQueryCriteria.getCriteria();
+        criteria.putPOJO("relationTo", relationTO);
+        rwdQueryCriteria.setCriteria(criteria);
+    }
+
+    private void addRelationFrom(QueryCriteria rwdQueryCriteria, String objTo, String relCode){
+        ObjectNode relationFrom = JsonNodeFactory.instance.objectNode();
+        if(StrUtil.isNotEmpty(objTo)){
+            relationFrom.put("objTo", objTo);
+        }
+        ObjectNode criteria = rwdQueryCriteria.getCriteria();
+        criteria.putPOJO("relationFrom", relationFrom);
+        rwdQueryCriteria.setCriteria(criteria);
+    }
     /**
      *  查询存在空间的数量
      * @param context
@@ -370,27 +433,11 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
      * @return
      */
     private int countSpace(InstanceUrlParam context, String classCode, String objFrom){
-        QueryCriteria rwdQueryCriteria = new QueryCriteria();
-        ObjectNode rwdCriteria = JsonNodeFactory.instance.objectNode();
-        rwdCriteria.put("objType", "space");
-        rwdCriteria.put("classCode", classCode);
-        ObjectNode relationTO = JsonNodeFactory.instance.objectNode();
-        relationTO.put("relCode", "Fl2Sp");
-        if(StrUtil.isNotEmpty(objFrom)){
-            relationTO.put("objFrom", objFrom);
-        }
-        rwdCriteria.putPOJO("relationTo", relationTO);
-        rwdQueryCriteria.setCriteria(rwdCriteria);
-        rwdQueryCriteria.setOnlyCount(true);
-        // 转换参数
-        JSONObject paraRel = null;
-        try {
-            String paraStr = objectMapper.writeValueAsString(rwdQueryCriteria);
-            paraRel = JSONObject.parseObject(paraStr);
-        } catch (JsonProcessingException e) {
-            log.error(e.getMessage(), e);
-        }
-        return rwdClient.queryObject(context, paraRel).getCount();
+        QueryCriteria queryCriteria = ensureQueryCommParm(new QueryCriteria(), context, CollUtil.newArrayList(classCode),"space");
+        addRelationTo(queryCriteria, objFrom,"Fl2Sp");
+        queryCriteria.setOnlyCount(true);
+        DmpResult<JSONArray> dmpResult = queryObj(context, queryCriteria);
+        return dmpResult.getCount();
     }
 
 

+ 16 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmVirtualWallServiceImpl.java

@@ -0,0 +1,16 @@
+package com.persagy.proxy.adm.service.impl;
+
+import com.persagy.proxy.adm.model.AdmVirtualWall;
+import com.persagy.proxy.adm.service.IAdmVirtualWallService;
+import org.springframework.stereotype.Service;
+
+/**
+ * ADM 建筑 实现类
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+@Service
+public class AdmVirtualWallServiceImpl extends AbstractAdmBaseServiceImpl<AdmVirtualWall> implements IAdmVirtualWallService {
+
+
+}

+ 16 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmWindowServiceImpl.java

@@ -0,0 +1,16 @@
+package com.persagy.proxy.adm.service.impl;
+
+import com.persagy.proxy.adm.model.AdmWindow;
+import com.persagy.proxy.adm.service.IAdmWindowService;
+import org.springframework.stereotype.Service;
+
+/**
+ * ADM 建筑 实现类
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+@Service
+public class AdmWindowServiceImpl extends AbstractAdmBaseServiceImpl<AdmWindow> implements IAdmWindowService {
+
+
+}