Browse Source

模型修改时修改计算关系标志

linhuili 3 years ago
parent
commit
8919620c40

+ 8 - 0
src/main/java/com/persagy/proxy/adm/controller/AdmModelRelController.java

@@ -1,10 +1,12 @@
 package com.persagy.proxy.adm.controller;
 
+import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.proxy.adm.model.AdmModelRel;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmModelRelService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import lombok.extern.slf4j.Slf4j;
+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;
@@ -41,6 +43,12 @@ public class AdmModelRelController {
      */
     @PostMapping("/equip-ispace")
     public AdmResponse update(@RequestBody AdmModelRel admModelRel) throws Exception {
+        if(StringUtils.isEmpty(admModelRel.getModelId())){
+            throw new BusinessException("模型ID不能为空");
+        }
+        if(StringUtils.isEmpty(admModelRel.getFloorId())){
+            throw new BusinessException("楼层ID不能为空");
+        }
         List<AdmModelRel> vos = service.doUpdateModelInfo(AdmContextUtil.toDmpContext(), AdmModelRel.class,admModelRel);
         return AdmResponse.success(vos);
     }

+ 18 - 0
src/main/java/com/persagy/proxy/adm/controller/AdmReportEquipController.java

@@ -20,6 +20,7 @@ import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.dmp.simple.client.DigitalObjectSimpleFacade;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.constant.enums.AdmDictCategoryEnum;
 import com.persagy.proxy.adm.model.*;
 import com.persagy.proxy.adm.model.equip.EquipUpDateEnclosure;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
@@ -32,6 +33,7 @@ import com.persagy.proxy.adm.service.IAdmSystemService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.adm.utils.AdmQueryCriteriaHelper;
 import com.persagy.proxy.common.entity.DmpResult;
+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.*;
@@ -814,6 +816,20 @@ public class AdmReportEquipController {
         }
     }
 
+    /**
+     * 查询系统-设备类树
+     * @return
+     * @throws Exception
+     */
+    @GetMapping("/type/tree")
+    public AdmResponse querySystemEquipCategory() throws Exception {
+        // 组装上下文条件
+        AdmDict request = new AdmDict();
+        InstanceUrlParam context = AdmContextUtil.toDmpContext();
+        request.setType(AdmDictCategoryEnum.SYSTEM_EQUIP.getValue());
+        return dictService.queryCategory(context,request,AdmObjectType.class);
+    }
+
 
     /**
      * 计算动态、静态信息点
@@ -1024,4 +1040,6 @@ public class AdmReportEquipController {
             infos.put(attribute, upTarget);
         }
     }
+
+
 }

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

@@ -101,12 +101,12 @@ public class AdmObjectInfo {
 
     /** 是否只读, 如果是则不允许对该信息点做变更 */
     private Boolean readonly;
-
     /** 排序 */
     private Integer sort;
 
     /** 是否显示 */
-   private Boolean visible;
+    private Boolean visible;
+
 
     /** 是否编辑 */
     private Boolean editable;
@@ -123,4 +123,7 @@ public class AdmObjectInfo {
 
     /** 字典内容 */
    private List<AdmObjectInfo> content;
+
+   /** 展示顺序 */
+   private Integer showOrder;
 }

+ 18 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmBaseService.java

@@ -55,4 +55,22 @@ public interface IAdmBaseService<T> {
      * @return
      */
     AdmResponse doQuery(InstanceUrlParam context, QueryCriteria request, Class<T> clazz);
+
+    /**
+     * 条件查询标记计算关系
+     * @param context
+     * @param dmpRequest
+     * @param clazz
+     * @return
+     */
+    AdmResponse doQueryRelationProjectCal(InstanceUrlParam context, QueryCriteria dmpRequest, Class<T> clazz);
+
+    /**
+     * 修改标记计算关系
+     * @param context
+     * @param clazz
+     * @param voList
+     * @return
+     */
+    List<T> doUpdateRelationProjectCal(InstanceUrlParam context, Class<T> clazz, List<T> voList);
 }

+ 30 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmObjectRelationCalService.java

@@ -0,0 +1,30 @@
+package com.persagy.proxy.adm.service;
+
+import com.persagy.dmp.digital.entity.ObjectRelationProjectCal;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 标记关系计算
+ * @author:linhuili
+ * @date:2021/10/15
+ */
+public interface IAdmObjectRelationCalService extends IAdmBaseService<ObjectRelationProjectCal> {
+
+    /**
+     *  根据关系类型查询标记计算关系
+     * @param context
+     * @param relationType
+     * @return
+     */
+    List<ObjectRelationProjectCal> queryCalRelByRelationType(InstanceUrlParam context, Set<String> relationType);
+
+    /**
+     * 更新标记计算关系
+     * @param context
+     * @param objectRelationProjectCals
+     */
+    void updateObjectCalRel(InstanceUrlParam context, List<ObjectRelationProjectCal> objectRelationProjectCals);
+}

+ 50 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AbstractAdmBaseServiceImpl.java

@@ -412,4 +412,54 @@ public class AbstractAdmBaseServiceImpl<T> implements IAdmBaseService<T> {
         return response;
     }
 
+    /**
+     * 查询标记计算关系
+     * @param context
+     * @param dmpRequest
+     * @param clazz
+     * @return
+     */
+    @Override
+    public AdmResponse doQueryRelationProjectCal(InstanceUrlParam context, QueryCriteria dmpRequest, Class<T> clazz) {
+        // 转换参数
+        JSONObject para = null;
+        try {
+            para = JsonHelper.toJsonObject(dmpRequest);
+        } catch (IOException e) {
+            log.error(e.getMessage(), e);
+            return null;
+        }
+        // 调用中台查询
+        DmpResult<JSONArray> dmpResult = rwdClient.queryRelationProjectCal(context, para);
+        List<T> admVOs = AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.getData(), null, clazz);
+        // 设置返回值
+        AdmResponse response = AdmResponse.success(admVOs);
+        Long total = dmpResult.getCount() == null ? null : dmpResult.getCount().longValue();
+        response.setTotal(total);
+        return response;
+    }
+
+
+    /**
+     * 修改
+     * @param context
+     * @param clazz
+     * @param voList
+     * @return
+     */
+    @Override
+    public List<T> doUpdateRelationProjectCal(InstanceUrlParam context, Class<T> clazz, List<T> voList) {
+        if(CollUtil.isEmpty(voList)) {
+            return null;
+        }
+        ArrayNode vos = AdmEntityTransferUtil.toDmpMultiEntity(voList);
+        // 调用中台修改
+        DmpResult<JSONArray> response = rwdClient.updateRelationProjectCal(context, JSONArray.parseArray(vos.toString()));
+        if(!DmpResult.SUCCESS.equals(response.getResult())) {
+            throw new RuntimeException("调用中台查询接口出错:" + response.getMessage());
+        }
+        // 转换为结果
+        return AdmEntityTransferUtil.toAdmMultiEntity(response.getData(), null, clazz);
+    }
+
 }

+ 2 - 51
src/main/java/com/persagy/proxy/adm/service/impl/AbstractAdmDictBaseServiceImpl.java

@@ -199,6 +199,7 @@ public class AbstractAdmDictBaseServiceImpl<T> implements IAdmDictBaseService<T>
             admVO.setMultiple(admVO.getIsMultiple());
             admVO.setRegion(admVO.getIsRegion());
             admVO.setGroupCode(groupCode);
+            admVO.setSort(admVO.getShowOrder());
 
             //path路径处理
             if(StringUtils.isEmpty(admVO.getFirstName()) || AdmDictConstant.FIRST_BASE_TAG.equals(admVO.getFirstName())
@@ -212,60 +213,10 @@ public class AbstractAdmDictBaseServiceImpl<T> implements IAdmDictBaseService<T>
             if(admVO.getVisible() == null){
                 admVO.setVisible(false);
             }
-            //信息点是否可编辑设置默认值
-            if(admVO.getEditable() == null){
-                List<String> unEditableList = checkoutDefInfoUnEditable();
-                if(unEditableList.contains(admVO.getCode())){
-                    admVO.setEditable(false);
-                }else {
-                    admVO.setEditable(true);
-                }
-            }
-            //是否禁止操作设置默认值
-            if(admVO.getUnDisabled() == null){
-                List<String> unDisableList = checkoutDefInfoUnDisable();
-                if(unDisableList.contains(admVO.getCode())){
-                    admVO.setUnDisabled(false);
-                }else {
-                    admVO.setUnDisabled(true);
-                }
-            }
         }
     }
 
-    /**
-     * 校验信息点是否可编辑
-     * @return
-     */
-    public List<String> checkoutDefInfoUnEditable(){
-        List<String> list = new ArrayList<>();
-        list.add("id");
-        list.add("name");
-        list.add("qRCodePic");
-        list.add("defaultQRCode");
-        list.add("bimId");
-        list.add("bimFamilyName");
-        list.add("bimFamilySymbol");
-        return list;
-    }
-    
-    /**
-     * 校验信息点是否禁止使用
-     * @return
-     */
-    public List<String> checkoutDefInfoUnDisable(){
-        List<String> list = new ArrayList<>();
-        list.add("id");
-        list.add("name");
-        list.add("localId");
-        list.add("localName");
-        list.add("qRCodePic");
-        list.add("defaultQRCode");
-        list.add("bimId");
-        list.add("bimFamilyName");
-        list.add("bimFamilySymbol");
-        return list;
-    }
+
 
     /**
      * 字典数据格式与ADM兼容

+ 85 - 6
src/main/java/com/persagy/proxy/adm/service/impl/AdmDictServiceImpl.java

@@ -354,9 +354,12 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
      */
     @Override
     public AdmResponse query(InstanceUrlParam context, AdmDictQueryCriteria request, String fieldName, Class<T> clazz) {
+        //转换排序字段
+        revertSortField(request);
         //查询类型下的所有信息点信息
         AdmResponse admResponse = doQueryObjectInfo(context, request, AdmDictConstant.CLASS_CODE, clazz);
         List<AdmObjectInfo> admObjectInfos = (List<AdmObjectInfo>) admResponse.getContent();
+        admObjectInfos = sortFuncidForEdit(admObjectInfos);
         //查询平台级信息点采集信息
         List<ObjectInfoCollect> commonObjectInfoCollect = queryObjectInfoCollect(context, "common", request.getType(), clazz);
         Map<String, Boolean> commonObjectInfoCollectMap = commonObjectInfoCollect.stream().filter(item -> StrUtil.isNotEmpty(item.getDefineInfoId())).collect(Collectors.toMap(ObjectInfoCollect::getDefineInfoId,ObjectInfoCollect::getVisiable));
@@ -366,7 +369,6 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         Map<String, Boolean> projectObjectInfoCollectMap = projectObjectInfoCollect.stream().filter(item -> StrUtil.isNotEmpty(item.getDefineInfoId())).collect(Collectors.toMap(ObjectInfoCollect::getDefineInfoId,ObjectInfoCollect::getVisiable));
 
         String dictType = request.getDictType();
-
         //采集值配置查询
         if(StringUtils.isNotEmpty(dictType)){
             //查询平台级、项目级信息点采集信息
@@ -379,7 +381,6 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
             admResponse.setContent(admObjectInfos);
             return admResponse;
         }
-
         //只查看采集值 todo
         if(CollUtil.isNotEmpty(projectObjectInfoCollectMap)){
             setOnlyQueryObjectInfoVisiable(admObjectInfos,projectObjectInfoCollectMap,dictType);
@@ -391,6 +392,14 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
     }
 
     /**
+     * 转换排序字段
+     * @param request
+     */
+    private void revertSortField(AdmDictQueryCriteria request){
+     request.setOrders("showOrder asc, name desc");
+    }
+
+    /**
      * 设置信息点是否可见
      * @param admObjectInfos
      * @param objectInfoCollectMap
@@ -416,6 +425,8 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
                 }
             }
             admObjectInfo.setVisible(visiable);
+            admObjectInfo.setEditable(true);
+            admObjectInfo.setUnDisabled(true);
         }
     }
 
@@ -432,20 +443,72 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         for (AdmObjectInfo admObjectInfo : admObjectInfos) {
             Boolean visiable = null;
             String id = admObjectInfo.getId();
+            //设置信息点是否可见
             if(CollUtil.isNotEmpty(objectInfoCollectMap)){
                 visiable = objectInfoCollectMap.get(id);
-            }else {
-                if(visiable == null && ("localId".equals(admObjectInfo.getCode()) || "localName".equals(admObjectInfo.getCode()))){
-                    visiable = true;
-                }
+            }
+            if(visiable == null && ("localId".equals(admObjectInfo.getCode()) || "localName".equals(admObjectInfo.getCode()))){
+                visiable = true;
             }
             if(visiable == null){
                 visiable = false;
             }
+            //信息点是否可编辑设置默认值
+            if(admObjectInfo.getEditable() == null){
+                List<String> unEditableList = checkoutDefInfoUnEditable();
+                if(unEditableList.contains(admObjectInfo.getCode())){
+                    admObjectInfo.setEditable(false);
+                }else {
+                    admObjectInfo.setEditable(true);
+                }
+            }
+            //是否禁止操作设置默认值
+            if(admObjectInfo.getUnDisabled() == null){
+                List<String> unDisableList = checkoutDefInfoUnDisable();
+                if(unDisableList.contains(admObjectInfo.getCode())){
+                    admObjectInfo.setUnDisabled(false);
+                }else {
+                    admObjectInfo.setUnDisabled(true);
+                }
+            }
             admObjectInfo.setVisible(visiable);
         }
     }
 
+
+    /**
+     * 校验信息点是否可编辑
+     * @return
+     */
+    public List<String> checkoutDefInfoUnEditable(){
+        List<String> list = new ArrayList<>();
+        list.add("id");
+        list.add("name");
+        list.add("qRCodePic");
+        list.add("defaultQRCode");
+        list.add("bimId");
+        list.add("bimFamilyName");
+        list.add("bimFamilySymbol");
+        return list;
+    }
+
+    /**
+     * 校验信息点是否禁止使用
+     * @return
+     */
+    public List<String> checkoutDefInfoUnDisable(){
+        List<String> list = new ArrayList<>();
+        list.add("id");
+        list.add("name");
+        list.add("localId");
+        list.add("localName");
+        list.add("qRCodePic");
+        list.add("defaultQRCode");
+        list.add("bimId");
+        list.add("bimFamilyName");
+        list.add("bimFamilySymbol");
+        return list;
+    }
     /**
      * 查询信息点采集信息
      * @param context
@@ -466,6 +529,22 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         return (List<ObjectInfoCollect>) admResponse.getContent();
     }
 
+    private List<AdmObjectInfo> sortFuncidForEdit(List<AdmObjectInfo> list) {
+        List<AdmObjectInfo> resultOrders = new ArrayList<>();
+        List<AdmObjectInfo> defaultOrders = new ArrayList<>();
+        for (AdmObjectInfo admObjectInfo : list) {
+            if(admObjectInfo.getSort()!=null){
+                resultOrders.add(admObjectInfo);
+            }else{
+                defaultOrders.add(admObjectInfo);
+            }
+        }
+        if(CollUtil.isNotEmpty(defaultOrders)){
+            resultOrders.addAll(defaultOrders);
+        }
+        return resultOrders;
+    }
+
     /**
      * 统计类型下的非静态信息点
      * @param context

+ 47 - 35
src/main/java/com/persagy/proxy/adm/service/impl/AdmModelRelServiceImpl.java

@@ -3,8 +3,12 @@ package com.persagy.proxy.adm.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.digital.entity.ObjectRelationProjectCal;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.*;
@@ -18,9 +22,8 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import javax.management.Query;
+import java.util.*;
 
 /**
  * @ClassName AdmModelRelServiceImpl
@@ -43,6 +46,9 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
     @Autowired
     private IAdmISpaceService iSpaceService;
 
+    @Autowired
+    private IAdmObjectRelationCalService iAdmObjectRelationCalService;
+
     /**
      * 模型修改设备元空间的建筑楼层信息
      * @param context
@@ -58,10 +64,15 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
         floorCriteria.setModelId(vo.getModelId());
         List<AdmFloor> floorList = queryFloorEntity(context,floorCriteria);
         if(CollUtil.isNotEmpty(floorList)){
-            List<String> floorQueryTypes = getFloorQueryTypes(floorList);
-            //根据类型查询relation_type_project
-            //更新边类型计算状态:computationalState为2
-
+            Set<String> floorQueryTypes = getFloorQueryTypes(floorList);
+            List<ObjectRelationProjectCal> relationProjectCals = iAdmObjectRelationCalService.queryCalRelByRelationType(context, floorQueryTypes);
+            if(CollUtil.isNotEmpty(relationProjectCals)){
+                //更新边类型计算状态:computationalState为2
+                relationProjectCals.forEach(item->{
+                    item.setComputationalState(2);
+                });
+                iAdmObjectRelationCalService.updateObjectCalRel(context,relationProjectCals);
+            }
         }
         //2.修改设备和元空间的建筑楼层信息
         String oldBimId = vo.getOldBimId();
@@ -315,6 +326,7 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
         if(StringUtils.isNotEmpty(vo.getFloorId())){
             criteria.setFilters("id = '"+vo.getFloorId()+"'");
         }
+        criteria.setName("floor");
         AdmResponse admResponse = floorService.doQuery(context, criteria, AdmFloor.class);
         return (List<AdmFloor>)admResponse.getContent();
     }
@@ -324,38 +336,38 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
      * 获取楼层查询类型
      * @param floorList
      */
-    private List<String> getFloorQueryTypes(List<AdmFloor> floorList){
-        List<String> types = new ArrayList<>();
+    private Set<String> getFloorQueryTypes(List<AdmFloor> floorList){
+        Set<String> types = new HashSet<>();
         for (AdmFloor admFloor : floorList) {
             if(CollUtil.isNotEmpty(admFloor.getOutline())){
-                types.add("eq2fl");
-                types.add("fl2sp");
-                types.add("bd2sp");
+                types.add(AdmRelationTypeEnum.EQ2FL.getRelCode());
+                types.add(AdmRelationTypeEnum.FL2SP.getRelCode());
+                types.add(AdmRelationTypeEnum.BD2SP.getRelCode());
             }
-            types.add(AdmRelationTypeEnum.EQ2SP_IN.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_ACAIRNETWORK_2.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_CONDWATERNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_VENTNETWORK_2.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_ACAIRNETWORK_3.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_HEATWATERLOOP_4.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_HEATWATERLOOP_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_DHWNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_RECYCLEWATERNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_FIREVENTNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_FIREWATERNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_VRFNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_CHILLWATERLOOP_2.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQFRESHAIRNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_CHILLWATERLOOP_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_DRINKINGWATERNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_COOLINGWATERLOOP_2.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_VENTNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_HEATWATERLOOP_2.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_COOLINGWATERLOOP_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_ACAIRNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_SUPPLYWATERNETWORK_1.getRelCode());
-            types.add(AdmRelationTypeEnum.EQ2EQ_DRAININGWATERNETWORK_1.getRelCode());
         }
+        types.add(AdmRelationTypeEnum.EQ2SP_IN.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_ACAIRNETWORK_2.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_CONDWATERNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_VENTNETWORK_2.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_ACAIRNETWORK_3.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_HEATWATERLOOP_4.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_HEATWATERLOOP_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_DHWNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_RECYCLEWATERNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_FIREVENTNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_FIREWATERNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_VRFNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_CHILLWATERLOOP_2.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQFRESHAIRNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_CHILLWATERLOOP_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_DRINKINGWATERNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_COOLINGWATERLOOP_2.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_VENTNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_HEATWATERLOOP_2.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_COOLINGWATERLOOP_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_ACAIRNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_SUPPLYWATERNETWORK_1.getRelCode());
+        types.add(AdmRelationTypeEnum.EQ2EQ_DRAININGWATERNETWORK_1.getRelCode());
         return types;
     }
 }

+ 55 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmObjectRelationCalServiceImpl.java

@@ -0,0 +1,55 @@
+package com.persagy.proxy.adm.service.impl;
+
+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.ObjectRelationProjectCal;
+import com.persagy.proxy.adm.model.AdmModelRel;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmObjectRelationCalService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 标记关系计算
+ *
+ * @author:linhuili
+ * @date:2021/10/15
+ */
+@Service
+@Slf4j
+public class AdmObjectRelationCalServiceImpl extends AbstractAdmBaseServiceImpl<ObjectRelationProjectCal> implements IAdmObjectRelationCalService {
+
+    /**
+     * 根据关系类型查询标记计算关系
+     * @param context
+     * @param relationType
+     * @return
+     */
+    @Override
+    public List<ObjectRelationProjectCal> queryCalRelByRelationType(InstanceUrlParam context, Set<String> relationType){
+        //设置查询条件
+        QueryCriteria queryCriteria = new QueryCriteria();
+        ObjectNode criteria = JsonNodeFactory.instance.objectNode();
+        ArrayNode arrayNode = criteria.putObject("relCode").putArray("$in");
+        relationType.stream().forEach(relCode -> arrayNode.add(relCode));
+        queryCriteria.setCriteria(criteria);
+        //查询标记计算关系
+        AdmResponse admResponse = doQueryRelationProjectCal(context, queryCriteria, ObjectRelationProjectCal.class);
+        return (List<ObjectRelationProjectCal>)admResponse.getContent();
+    }
+
+    /**
+     * 更新标记计算关系
+     * @param objectRelationProjectCals
+     */
+    @Override
+    public void updateObjectCalRel(InstanceUrlParam context, List<ObjectRelationProjectCal> objectRelationProjectCals) {
+        doUpdateRelationProjectCal(context, ObjectRelationProjectCal.class, objectRelationProjectCals);
+    }
+}

+ 1 - 1
src/main/java/com/persagy/proxy/common/client/DmpRwdClient.java

@@ -182,7 +182,7 @@ public interface DmpRwdClient {
      * @return: com.persagy.dmp.common.DmpResult
      */
     @PostMapping(DmpUrlConstant.RELATION_PROJECT_CAL_QUERY)
-    DmpResult<JSONArray> queryRelationProjectCal(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONArray objectArr);
+    DmpResult<JSONArray> queryRelationProjectCal(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONObject criteria);
 
 
     /**