Selaa lähdekoodia

Merge remote-tracking branch 'origin/develop' into develop

lijie 3 vuotta sitten
vanhempi
commit
a0928151de

+ 7 - 1
src/main/java/com/persagy/proxy/adm/controller/AdmFloorController.java

@@ -54,6 +54,7 @@ public class AdmFloorController {
     @PostMapping("/create")
     public AdmResponse create(@RequestBody AdmCreateRequest<AdmFloor> createRequest) throws Exception {
         List<AdmFloor> vos = createRequest.getContent();
+        service.ensureSpecialValues(AdmContextUtil.toDmpContext(), vos, false);
         for(AdmFloor floor : vos){
             if(StrUtil.isEmpty(floor.getName())){
                 floor.setName(ObjectNameUtil.objectName("楼层-"));
@@ -168,6 +169,7 @@ public class AdmFloorController {
     @PostMapping("/update")
     public AdmResponse update(@RequestBody AdmCreateRequest<AdmFloor> admFloor) throws Exception {
         List<AdmFloor> vos = CollUtil.newArrayList(admFloor.getContent());
+        service.ensureSpecialValues(AdmContextUtil.toDmpContext(), vos, false);
         /** 遍历楼层列表 */
         Map<String, AdmFloor> admFloorBdMap = CollUtil.fieldValueMap(vos, "buildingId");
         if (CollUtil.isNotEmpty(admFloorBdMap)){
@@ -242,7 +244,11 @@ public class AdmFloorController {
     @PostMapping("/query")
     public AdmResponse query(@RequestBody AdmQueryCriteria request) throws Exception {
         request.setName(AdmFloor.OBJ_TYPE);
-        return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmFloor.class);
+        AdmResponse rs = service.doQuery(AdmContextUtil.toDmpContext(), request, AdmFloor.class);
+        List<AdmFloor> vos = (List<AdmFloor>) rs.getContent();
+        service.ensureSpecialValues(AdmContextUtil.toDmpContext(), vos, true);
+        rs.setContent(vos);
+        return rs;
     }
 
 

+ 3 - 3
src/main/java/com/persagy/proxy/adm/controller/AdmShaftController.java

@@ -80,7 +80,7 @@ public class AdmShaftController {
      * @throws Exception
      */
     @PostMapping("/create")
-    public AdmResponse create(@RequestBody AdmCreateRequest<AdmShaft> createRequest, @QueryParam("projectId") String projectId) throws Exception {       
+    public AdmResponse create(@RequestBody AdmCreateRequest<AdmShaft> createRequest) throws Exception {
         List<AdmShaft> vos = CollUtil.newArrayList(createRequest.getContent());
         List<AdmShaft> unRelationShaft = new ArrayList<>();
         List<AdmShaft> admShafts = new ArrayList<>(vos.size());
@@ -93,10 +93,10 @@ public class AdmShaftController {
                 unRelationShaft.add(admShaft);
             }else{
                 //插入对象 添加关系
-                List<AdmShaft> shafts = service.doInsert(AdmContextUtil.toDmpContext(), AdmShaft.class, unRelationShaft);
+                List<AdmShaft> shafts = service.doInsert(AdmContextUtil.toDmpContext(), AdmShaft.class, CollUtil.newArrayList(admShaft));
                 admShaft.getBuildingList().stream().forEach(admBuilding ->{
                     if(StrUtil.isNotEmpty(admBuilding.getId())){
-                        relationDTOS.add(new RelationDTO(null, "ArchSubset", "Bd2Sh", null, shafts.get(0).getId() , admBuilding.getId()));
+                        relationDTOS.add(new RelationDTO(null, "ArchSubset", "Bd2Sh", null , admBuilding.getId(), shafts.get(0).getId()));
                     }
                 });
                 admShafts.addAll(shafts);

+ 22 - 6
src/main/java/com/persagy/proxy/adm/controller/AdmSpaceController.java

@@ -7,6 +7,7 @@ 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.basic.utils.JsonNodeUtils;
 import com.persagy.proxy.adm.model.*;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
@@ -122,8 +123,13 @@ public class AdmSpaceController {
      * @throws Exception
      */
     @PostMapping("/query")
-    public AdmResponse query(@RequestBody AdmDCSQueryRequest request) throws Exception {
-        return service.doQuerySpaces( AdmContextUtil.toDmpContext(), request);
+    public ObjectNode query(@RequestBody AdmDCSQueryRequest request) throws Exception {
+        AdmResponse response = service.doQuerySpaces( AdmContextUtil.toDmpContext(), request);
+        ObjectNode objectNode = JsonNodeUtils.toObjectNode(response, null, null);
+        if(StrUtil.isNotEmpty(request.getZoneType())){
+            objectNode.put("zoneType", request.getZoneType());
+        }
+        return objectNode;
     }
 
     /**
@@ -270,7 +276,7 @@ public class AdmSpaceController {
      * @throws Exception
      */
     @PostMapping("/query-outline")
-    public AdmResponse queryOutline(@RequestBody AdmDCSQueryRequest request) throws Exception {
+    public ObjectNode queryOutline(@RequestBody AdmDCSQueryRequest request) throws Exception {
         request.setName(AdmSpace.OBJ_TYPE);
         request.setProjection(null);
         List<String> list = new ArrayList<>();
@@ -284,7 +290,12 @@ public class AdmSpaceController {
         list.add("infos");
         list.add("properties");
         request.setProjection(list);
-        return service.doQuerySpaces( AdmContextUtil.toDmpContext(), request);
+        AdmResponse response = service.doQuerySpaces( AdmContextUtil.toDmpContext(), request);
+        ObjectNode objectNode = JsonNodeUtils.toObjectNode(response, null, null);
+        if(StrUtil.isNotEmpty(request.getZoneType())){
+            objectNode.put("zoneType", request.getZoneType());
+        }
+        return objectNode;
     }
 
 
@@ -307,8 +318,13 @@ public class AdmSpaceController {
      * @throws Exception
      */
     @PostMapping("/type")
-    public AdmResponse queryType(@RequestBody AdmDCSQueryRequest request) throws Exception {
-        return service.doQueryType( AdmContextUtil.toDmpContext(), request);
+    public ObjectNode queryType(@RequestBody AdmDCSQueryRequest request) throws Exception {
+        AdmResponse response = service.doQueryType( AdmContextUtil.toDmpContext(), request);
+        ObjectNode objectNode = JsonNodeUtils.toObjectNode(response, null, null);
+        if(StrUtil.isNotEmpty(request.getZoneType())){
+            objectNode.put("zoneType", request.getZoneType());
+        }
+        return objectNode;
     }
 
 

+ 1 - 1
src/main/java/com/persagy/proxy/adm/controller/AdmSystemController.java

@@ -122,7 +122,7 @@ public class AdmSystemController {
                     String floorId = info.get("FloorID") == null ? null : info.get("FloorID").textValue();
                     String buildID = info.get("BuildID") == null ? null : info.get("BuildID").textValue();
                     if(StrUtil.isNotEmpty(floorId)){
-                        relationDTOS.add(new RelationDTO(null, "MechInArch", "Bd2Fl", null, systemId , floorId));
+                        relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Fl", null, systemId , floorId));
                     }
                     if(StrUtil.isNotEmpty(buildID)){
                         relationDTOS.add(new RelationDTO(null, "MechForArch", "Sy2Bd", null, systemId , buildID));

+ 5 - 2
src/main/java/com/persagy/proxy/adm/model/AdmFloor.java

@@ -6,7 +6,6 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * ADM 楼层 实体
@@ -62,7 +61,11 @@ public class AdmFloor extends AdmSBaseEntity<AdmFloor>{
     private String count;
 
     /** 自定义信息点 */
-    private Map<String, Object> properties;
+    private ObjectNode properties;
+    /**
+     * 中台存储自定义信息点 properties的string形式
+     */
+    private String propertiesInfo;
 
     /** 二维码图片 */
     private String qrcodePic;

+ 8 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmFloorService.java

@@ -28,4 +28,12 @@ public interface IAdmFloorService extends IAdmBaseService<AdmFloor>{
      * @return
      */
     List<AdmFloor> queryFloorInBuilding(InstanceUrlParam context, String buildingId);
+
+    /**
+     * 楼层自定义信息点处理 新增,properties 转化为String类型,放到propertiesInfo信息点存储,查询相关,propertiesInfo转为为properties 页面展示
+     * @param context
+     * @param queryFlag true 查询,false 更新或者新增
+     * @return
+     */
+    void ensureSpecialValues(InstanceUrlParam context, List<AdmFloor> vos, boolean queryFlag);
 }

+ 49 - 2
src/main/java/com/persagy/proxy/adm/service/impl/AdmFloorServiceImpl.java

@@ -1,12 +1,19 @@
 package com.persagy.proxy.adm.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.proxy.adm.model.AdmFloor;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmFloorService;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -17,6 +24,8 @@ import java.util.List;
  */
 @Service
 public class AdmFloorServiceImpl extends AbstractAdmBaseServiceImpl<AdmFloor> implements IAdmFloorService {
+    @Autowired
+    private ObjectMapper objectMapper;
 
     @Override
     public AdmResponse doQueryOutLine(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmFloor> clazz) {
@@ -32,7 +41,11 @@ public class AdmFloorServiceImpl extends AbstractAdmBaseServiceImpl<AdmFloor> im
         list.add("infos");
         list.add("properties");
         request.setProjection(list);
-        return doQuery(context, request, clazz);
+        AdmResponse rs = doQuery(context, request, clazz);
+        List<AdmFloor> vos = (List<AdmFloor>) rs.getContent();
+        ensureSpecialValues(context, vos, true);
+        rs.setContent(vos);
+        return rs;
     }
 
     @Override
@@ -42,6 +55,40 @@ public class AdmFloorServiceImpl extends AbstractAdmBaseServiceImpl<AdmFloor> im
         request.resetRelationCond(false, "ArchSubset", "Bd2Fl", buildingId);
         request.setOrders("floorSequenceId desc");
         AdmResponse rs = doQuery(context, request, AdmFloor.class);
-        return (List<AdmFloor>) rs.getContent();
+        List<AdmFloor> vos = (List<AdmFloor>) rs.getContent();
+        ensureSpecialValues(context, vos, true);
+        return vos;
+    }
+
+    /**
+     * 楼层自定义信息点处理 新增,properties 转化为String类型,放到propertiesInfo信息点存储,查询相关,propertiesInfo转为为properties 页面展示
+     * @param context
+     * @param queryFlag true 查询,false 更新或者新增
+     * @return
+     */
+    @Override
+    public void ensureSpecialValues(InstanceUrlParam context, List<AdmFloor> vos, boolean queryFlag) {
+        if(CollUtil.isNotEmpty(vos)){
+            if(queryFlag){//查询
+                vos.stream().forEach(admFloor -> {
+                    if(StrUtil.isNotEmpty(admFloor.getPropertiesInfo())){
+                        try {
+                            ObjectNode properties = (ObjectNode) objectMapper.readTree(admFloor.getPropertiesInfo());
+                            admFloor.setProperties(properties);
+                            admFloor.setPropertiesInfo(null);
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                });
+            }else{//新增或者更新
+                vos.stream().forEach(admFloor -> {
+                    if(!JSONUtil.isNull(admFloor.getProperties())){
+                        admFloor.setPropertiesInfo(admFloor.getProperties().toString());
+                        admFloor.setProperties(null);
+                    }
+                });
+            }
+        }
     }
 }

+ 27 - 45
src/main/java/com/persagy/proxy/adm/service/impl/AdmSpaceServiceImpl.java

@@ -21,11 +21,12 @@ import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.service.IAdmSpaceService;
+import com.persagy.proxy.adm.utils.AdmContextUtil;
 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 com.persagy.proxy.common.entity.RelationDTO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -50,22 +51,22 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
 
     @Override
     public List<AdmSpace> doInsertExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList) {
-        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));
+        Map<String, AdmSpace> spaceMapByFlId = CollUtil.fieldValueMap(voList, "floorId");
         //查询空间中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);
+        DmpResult<JSONArray> floors = queryFloorsByFloorIds(context, spaceMapByFlId.keySet());
+        if(CollUtil.isNotEmpty(floors.getData())){
+            ArrayList<AdmFloor> floorList = CollUtil.newArrayList(JSONUtil.toList(floors.getData().toString(),AdmFloor.class));
+            //space.height = floor.infos.height
+            voList = processHeight(spaceMapByFlId, floorList);
+        }
         //插入空间
-        List<AdmSpace> vosR = doInsert(context, clazz, vos);
+        List<AdmSpace> vosR = doInsert(context, clazz, voList);
         //添加绑定关系
-        DmpResult<List<ObjRelationDTO>> dmpResult = processRelations(context, vosR);
+        processRelations(vosR);
         //处理关系标记
         //TODO 处理关系标记
         //processRelationType();
-        return doInsert(context, clazz, vosR);
+        return vosR;
     }
 
     @Override
@@ -166,6 +167,8 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
         admResponse.setTotal(jsonObjects.size()*1l);
         admResponse.setPageSize(request.getPageSize());
         admResponse.setPageNumber(request.getPageNumber());
+        admResponse.setResult(DmpResult.SUCCESS);
+        admResponse.setMessage("");
         return admResponse;
     }
 
@@ -377,63 +380,43 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
 
     /**
      * space.height = floor.infos.height
-     * @param spaceIdMap
+     * @param spaceMapByFlId
      * @param floorList
-     * @param spId2FlId_map
      * @return
      */
-    private List<AdmSpace> processHeight(Map<String, AdmSpace> spaceIdMap, List<AdmFloor> floorList,  Map<String, String> spId2FlId_map){
-        Map<String, String> newMap = spId2FlId_map.entrySet().stream().collect(Collectors.toMap(entry -> entry.getValue(), entry -> entry.getKey()));
+    private List<AdmSpace> processHeight(Map<String, AdmSpace> spaceMapByFlId, List<AdmFloor> floorList){
         floorList.forEach(admFloor -> {
             if(CollUtil.isNotEmpty(admFloor.getInfos())){
                 Float height = (Float) admFloor.getInfos().get("height");
-                AdmSpace admSpace = spaceIdMap.get(newMap.get(admFloor.getId()));
+                AdmSpace admSpace = spaceMapByFlId.get(admFloor.getId());
                 admSpace.setHeight(height);
             }
         });
-        return (List<AdmSpace>) spaceIdMap.values();
+        return (List<AdmSpace>) spaceMapByFlId.values();
     }
 
     /**
      * 添加绑定关系
      */
-    private DmpResult<List<ObjRelationDTO>> processRelations(InstanceUrlParam context, List<AdmSpace> vosR){
-        if(CollUtil.isNotEmpty(vosR)){
-            JSONArray jsonArray = new JSONArray();
+    private void processRelations(List<AdmSpace> vosR){
+        if(CollUtil.isNotEmpty(vosR)) {
+            List<RelationDTO> relationDTOS = new ArrayList<>(vosR.size());
             vosR.forEach(admSpace -> {
                 JSONObject requestData = new JSONObject();
                 if (StrUtil.isNotEmpty(admSpace.getBuildingId())) {
-                    addXParam("Bd2Sp", admSpace.getBuildingId(), admSpace.getId(), requestData);
-                    addCommParam(context, requestData);
-                    jsonArray.add(requestData);
+                    relationDTOS.add(new RelationDTO(null, "ArchSubset", "Bd2Sp", null, admSpace.getBuildingId(), admSpace.getId()));
                 }
                 if (StrUtil.isNotEmpty(admSpace.getFloorId())) {
-                    addXParam("Fl2Sp", admSpace.getFloorId(), admSpace.getId(), requestData);
-                    addCommParam(context, requestData);
-                    jsonArray.add(requestData);
+                    relationDTOS.add(new RelationDTO(null, "ArchSubset", "Fl2Sp", null, admSpace.getFloorId(), admSpace.getId()));
+
                 }
             });
-            DmpResult<List<ObjRelationDTO>> dmpResult = rwdClient.createObjRelations(context,jsonArray);
-            return dmpResult;
-        }else{
-            return null;
+            if (CollUtil.isNotEmpty(relationDTOS)) {
+                relationService.doSave(AdmContextUtil.toDmpContext(), relationDTOS);
+            }
         }
     }
 
-    private JSONObject addXParam(String relCode, String masterObjType, String slaveObjType, JSONObject requestData){
-        requestData.put("relCode", "Bd2Sp");
-        requestData.put("graphCode", "ArchSubset");
-        requestData.put("masterObjType", masterObjType);
-        requestData.put("slaveObjType", slaveObjType);
-        return requestData;
-    }
-
-    private JSONObject addCommParam(InstanceUrlParam context, JSONObject requestData){
-        requestData.put("sign", 1);
-        requestData.put("graphCode", context.getGroupCode());
-        requestData.put("projectId", context.getProjectId());
-        return requestData;
-    }
 
     /**
      * TODO 处理关系标记
@@ -444,7 +427,6 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
         JSONArray jsonArray = new JSONArray();
         listtype.forEach(type -> {
             JSONObject relationProjectCal = new JSONObject();
-            addCommParam(context, relationProjectCal);
             //relationProjectCal.put("");
 
         });