Browse Source

管网计算先暂停,先联调关系

lijie 3 years ago
parent
commit
655219cf27
16 changed files with 556 additions and 12 deletions
  1. 13 1
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/constant/EquipmentTypeEnum.java
  2. 15 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ConnectedBlockMapper.java
  3. 15 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ConnectedBlockSourceMapper.java
  4. 11 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ObjectDigitalMapper.java
  5. 11 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/ConnectedBlockService.java
  6. 11 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/ConnectedBlockSourceService.java
  7. 198 6
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/calstrategy/SysBlockCalculateServiceImpl.java
  8. 20 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ConnectedBlockServiceImpl.java
  9. 20 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ConnectedBlockSourceServiceImpl.java
  10. 2 1
      dmp-business/dmp-rwd/src/main/resources/db/init/schema.sql
  11. 18 2
      dmp-business/dmp-rwd/src/main/resources/mapper/ObjectDigitalMapper.xml
  12. 8 1
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/define/entity/DigitalEquipClassRel.java
  13. 121 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ConnectedBlock.java
  14. 80 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ConnectedBlockSource.java
  15. 6 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectDigital.java
  16. 7 1
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectRelationProjectCal.java

+ 13 - 1
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/constant/EquipmentTypeEnum.java

@@ -13,7 +13,19 @@ public enum EquipmentTypeEnum {
     /**气体管道的设备类型,信息点useType代表管段用途*/
     OTAAPL,
     /**液体管道的设备类型,信息点useType代表管段用途*/
-    OTLAPL;
+    OTLAPL,
+    /**部件构件*/
+    OTMCCN,
+    /**设备构件*/
+    OTMCEM,
+    /**其他构件*/
+    OTMCOT,
+    /**连接件构件*/
+    OTMCJO,
+    /**液体管道构件*/
+    OTMCPL,
+    /**气体管道构件*/
+    OTMCDU;
 
 
 

+ 15 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ConnectedBlockMapper.java

@@ -0,0 +1,15 @@
+package com.persagy.dmp.rwd.digital.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.dmp.digital.entity.ConnectedBlock;
+
+/**
+ * @Entity generator.domain.ConnectedBlock
+ */
+public interface ConnectedBlockMapper extends BaseMapper<ConnectedBlock> {
+
+}
+
+
+
+

+ 15 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ConnectedBlockSourceMapper.java

@@ -0,0 +1,15 @@
+package com.persagy.dmp.rwd.digital.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.persagy.dmp.digital.entity.ConnectedBlockSource;
+
+/**
+ * @Entity generator.domain.ConnectedBlockSource
+ */
+public interface ConnectedBlockSourceMapper extends BaseMapper<ConnectedBlockSource> {
+
+}
+
+
+
+

+ 11 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ObjectDigitalMapper.java

@@ -165,4 +165,15 @@ public interface ObjectDigitalMapper extends BaseMapper<ObjectDigital> {
     List<ObjectDigital> queryConnectors(@Param("groupCode") String groupCode,@Param("projectId") String projectId,
                                         @Param("modelId") String modelId,@Param("useType") String useType,
                                         @Param("classCode") String classCode);
+    /***
+     * Description: 查询模型元素(设备构件,部件构件,其他构件,连接件构件,水管构件,液体管构件)
+     * @param groupCode : 集团编码
+     * @param projectId : 项目id
+     * @param modelId : 模型id
+     * @return : java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>  
+     * @author : lijie
+     * @date :2021/10/13 14:18
+     * Update By lijie 2021/10/13 14:18
+     */
+    List<ObjectDigital> queryModelElements(String groupCode, String projectId, String modelId);
 }

+ 11 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/ConnectedBlockService.java

@@ -0,0 +1,11 @@
+package com.persagy.dmp.rwd.digital.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.persagy.dmp.digital.entity.ConnectedBlock;
+
+/**
+ *
+ */
+public interface ConnectedBlockService extends IService<ConnectedBlock> {
+
+}

+ 11 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/ConnectedBlockSourceService.java

@@ -0,0 +1,11 @@
+package com.persagy.dmp.rwd.digital.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.persagy.dmp.digital.entity.ConnectedBlockSource;
+
+/**
+ *
+ */
+public interface ConnectedBlockSourceService extends IService<ConnectedBlockSource> {
+
+}

+ 198 - 6
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/calstrategy/SysBlockCalculateServiceImpl.java

@@ -5,25 +5,28 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.persagy.dmp.basic.dto.RelationCalRuleDTO;
+import com.persagy.dmp.basic.dto.RequestData;
+import com.persagy.dmp.common.constant.CommonConstant;
+import com.persagy.dmp.define.entity.DigitalEquipClassRel;
 import com.persagy.dmp.define.entity.RelationDefine;
-import com.persagy.dmp.digital.entity.ObjectDigital;
-import com.persagy.dmp.digital.entity.ObjectRelation;
-import com.persagy.dmp.digital.entity.ObjectRelationProjectCal;
+import com.persagy.dmp.digital.entity.*;
 import com.persagy.dmp.rwd.basic.constant.EquipmentTypeEnum;
+import com.persagy.dmp.rwd.define.service.DigitalEquipClassRelService;
 import com.persagy.dmp.rwd.define.service.IRelationDefineService;
 import com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper;
 import com.persagy.dmp.rwd.digital.dao.ObjectRelationMapper;
 import com.persagy.dmp.rwd.digital.domain.CalculatingDTO;
 import com.persagy.dmp.rwd.digital.domain.FloorCalDTO;
-import com.persagy.dmp.rwd.digital.service.CalculateService;
-import com.persagy.dmp.rwd.digital.service.IObjectRelationService;
-import com.persagy.dmp.rwd.digital.service.RelationProjectCalService;
+import com.persagy.dmp.rwd.digital.service.*;
 import com.persagy.dmp.rwd.digital.utils.ObjectDigitalCriteriaHelper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.locationtech.jts.math.Vector2D;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /***
  * Description: 管网系统设备分块关系计算
@@ -41,6 +44,9 @@ public class SysBlockCalculateServiceImpl implements CalculateService {
     private final ObjectDigitalMapper objectDigitalMapper;
     private final RelationProjectCalService relationProjectCalService;
     private final IRelationDefineService relationDefineService;
+    private final ConnectedBlockSourceService connectedBlockSourceService;
+    private final ConnectedBlockService connectedBlockService;
+    private final DigitalEquipClassRelService digitalEquipClassRelService;
 
 
     /***
@@ -69,11 +75,159 @@ public class SysBlockCalculateServiceImpl implements CalculateService {
         // 2.分块
         relCalculateBlock(calRule,calculatingDTO,mepSystemTypes,defineName);
         // 3.设置源
+        setSourceType(calRule,calculatingDTO,mepSystemTypes,defineName);
         // 4.计算流向
 
 
 
     }
+
+    /***
+     * Description: 设置数据源
+     * @param calRule : 计算规则
+     * @param calculatingDTO : 请求参数
+     * @param mepSystemTypes : 构件用途类型
+     * @param defineName : 边类型名称
+     * @return : void
+     * @author : lijie
+     * @date :2021/10/13 18:49
+     * Update By lijie 2021/10/13 18:49
+     */
+    private void setSourceType(RelationCalRuleDTO calRule, CalculatingDTO calculatingDTO,
+                               Set<String> mepSystemTypes, String defineName) {
+        // 1.根据项目id和边类型编码名称查询项目边关系数据
+        List<DigitalEquipClassRel> objectRelationProjectCals =
+                queryObjectRelationProjectCalsByProjectIdAndRelName(calculatingDTO.getGroupCode(),
+                        calculatingDTO.getProjectId(),defineName);
+        if (CollUtil.isEmpty(objectRelationProjectCals)){
+            // 2.没有指定源设备类型, 直接删除项目下所有源设备类型
+            deletePrevSource(calculatingDTO.getProjectId(), null, mepSystemTypes);
+            return;
+        }
+        // 3.根据设备类型查询设备数据
+        // 3.1 根据对象类型code查询对象数据
+        Set<String> equipClassCodes = objectRelationProjectCals
+                .stream()
+                .map(DigitalEquipClassRel::getSourceEquipCode)
+                .collect(Collectors.toSet());
+        List<ObjectDigital> equipments = queryEquipmentsByClassCodes(equipClassCodes,calculatingDTO.getProjectId());
+        if (CollUtil.isEmpty(equipments)){
+            return;
+        }
+        Set<String> equipmentIds = equipments.stream().map(ObjectDigital::getId).collect(Collectors.toSet());
+        // 3.2 根据项目id和管道用途类型查询分块数据
+        List<ConnectedBlock> connectedBlocks =
+                queryConnectedBlockByProjectId(calculatingDTO.getGroupCode(), calculatingDTO.getProjectId(),mepSystemTypes);
+        if (CollUtil.isEmpty(connectedBlocks)){
+            return;
+        }
+        List<ConnectedBlockSource> result = new ArrayList<>();
+        for (ConnectedBlock connectedBlock : connectedBlocks) {
+            if (!equipmentIds.contains(connectedBlock.getFirstId())
+                    && !equipmentIds.contains(connectedBlock.getSecondId())){
+                continue;
+            }
+            ConnectedBlockSource connectedBlockSource = new ConnectedBlockSource();
+            connectedBlockSource.setProjectId(connectedBlock.getProjectId());
+            connectedBlockSource.setBlockId(connectedBlock.getBlockId());
+            connectedBlockSource.setDomain(connectedBlock.getDomain());
+            connectedBlockSource.setMepSystemType(connectedBlock.getMepSystemType());
+            connectedBlockSource.setBuildingId(connectedBlock.getBuildingId());
+            if (equipmentIds.contains(connectedBlock.getFirstId())){
+                connectedBlockSource.setSourceId(connectedBlock.getFirstId());
+                connectedBlockSource.setSourceType(connectedBlock.getFirstType());
+                connectedBlockSource.setSourceFlag(true);
+            }else {
+                connectedBlockSource.setSourceId(connectedBlock.getSecondId());
+                connectedBlockSource.setSourceType(connectedBlock.getSecondType());
+                connectedBlockSource.setSourceFlag(true);
+            }
+            result.add(connectedBlockSource);
+        }
+        if (CollUtil.isNotEmpty(result)){
+            deletePrevSource(calculatingDTO.getProjectId(),null,mepSystemTypes);
+            connectedBlockSourceService.saveBatch(result);
+        }
+    }
+    /***
+     * Description: 根据项目id查询分块信息
+     * @param groupCode : 集团编码
+     * @param projectId : 项目id
+     * @param mepSystemTypes : 管道用途分类
+     * @return : java.util.List<com.persagy.dmp.digital.entity.ConnectedBlock>
+     * @author : lijie
+     * @date :2021/10/13 22:21
+     * Update By lijie 2021/10/13 22:21
+     */
+    private List<ConnectedBlock> queryConnectedBlockByProjectId(String groupCode, String projectId,
+                                                                Set<String> mepSystemTypes) {
+        LambdaQueryWrapper<ConnectedBlock> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ConnectedBlock::getGroupCode,groupCode);
+        queryWrapper.eq(ConnectedBlock::getProjectId,projectId);
+        queryWrapper.in(ConnectedBlock::getMepSystemType,mepSystemTypes);
+        queryWrapper.eq(ConnectedBlock::getValid,true);
+        return connectedBlockService.list(queryWrapper);
+    }
+
+    /***
+     * Description: 根据对象类型查询设备列表
+     * @param classCodes : 对象类型列表
+     * @param projectId: 项目id
+     * @return : java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>
+     * @author : lijie
+     * @date :2021/10/13 22:06
+     * Update By lijie 2021/10/13 22:06
+     */
+    private List<ObjectDigital> queryEquipmentsByClassCodes(Set<String> classCodes, String projectId) {
+        QueryWrapper<ObjectDigital> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in(ObjectDigital.CLASS_CODE,classCodes);
+        queryWrapper.eq(StrUtil.toUnderlineCase(CommonConstant.QUERY_PROJECTID),projectId);
+        queryWrapper.eq(ObjectDigital.PROP_VALID,true);
+        queryWrapper.isNotNull("JSON_UNQUOTE(JSON_EXTRACT(infos, '$.bimId'))");
+        return objectDigitalMapper.selectList(queryWrapper);
+    }
+
+    /***
+     * Description:  删除项目下所有源设备类型
+     * @param projectId : 项目id
+     * @param buildingId : 建筑id
+     * @param mepSystemTypes : 管道用途类型名称
+     * @return : void
+     * @author : lijie
+     * @date :2021/10/13 20:06
+     * Update By lijie 2021/10/13 20:06
+     */
+    private void deletePrevSource(String projectId, String buildingId, Set<String> mepSystemTypes) {
+        LambdaQueryWrapper<ConnectedBlockSource> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ConnectedBlockSource::getProjectId,projectId);
+        queryWrapper.in(ConnectedBlockSource::getMepSystemType,mepSystemTypes);
+        if (StrUtil.isNotBlank(buildingId)){
+            queryWrapper.eq(ConnectedBlockSource::getBuildingId,buildingId);
+        }
+        connectedBlockSourceService.remove(queryWrapper);
+    }
+
+    /***
+     * Description: 根据项目id和边类型编码名称查询数据
+     *
+     * @param groupCode
+     * @param projectId : 项目id
+     * @param defineName : 边类型编码名称
+     * @return : java.util.List<com.persagy.dmp.digital.entity.ObjectRelationProjectCal>
+     * @author : lijie
+     * @date :2021/10/13 20:00
+     * Update By lijie 2021/10/13 20:00
+     */
+    private List<DigitalEquipClassRel> queryObjectRelationProjectCalsByProjectIdAndRelName(String groupCode, String projectId,
+                                                                                           String defineName) {
+        LambdaQueryWrapper<DigitalEquipClassRel> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(DigitalEquipClassRel::getGroupCode,groupCode);
+        queryWrapper.eq(DigitalEquipClassRel::getProjectId,projectId);
+        queryWrapper.eq(DigitalEquipClassRel::getRelCodeName,defineName);
+        queryWrapper.eq(DigitalEquipClassRel::getValid,true);
+        return digitalEquipClassRelService.list(queryWrapper);
+    }
+
     /***
      * Description: 分块
      * @param calRule : 计算规则
@@ -101,6 +255,12 @@ public class SysBlockCalculateServiceImpl implements CalculateService {
                 if (CollUtil.isEmpty(connectors)){
                     continue;
                 }
+                // 2.1 对connectors进行排序
+                sortConnectorsAndSetUseState(connectors);
+                // 3.根据modelId查询其他构件
+                List<ObjectDigital> elements = objectDigitalMapper.queryModelElements(calculatingDTO.getGroupCode(),
+                        calculatingDTO.getProjectId(),floor.getModelId());
+                // 4.获得一个楼层的分块
 
 
 
@@ -110,6 +270,38 @@ public class SysBlockCalculateServiceImpl implements CalculateService {
 
     }
     /***
+     * Description: 根据设备,部件,连接件,其他,水管,风管进行排序
+     * @param connectors : 设备连接件构件集合
+     * @return : void  
+     * @author : lijie
+     * @date :2021/10/13 16:40
+     * Update By lijie 2021/10/13 16:40
+     */
+    private void sortConnectorsAndSetUseState(List<ObjectDigital> connectors) {
+        Map<String,Integer> sortMap = new HashMap<>();
+        sortMap.put(EquipmentTypeEnum.OTMCEM.name(),0);
+        sortMap.put(EquipmentTypeEnum.OTMCCN.name(),1);
+        sortMap.put(EquipmentTypeEnum.OTMCJO.name(),2);
+        sortMap.put(EquipmentTypeEnum.OTMCOT.name(),2);
+        sortMap.put(EquipmentTypeEnum.OTMCPL.name(),3);
+        sortMap.put(EquipmentTypeEnum.OTMCDU.name(),4);
+        connectors.forEach(connector->{
+            if (null==connector.getInfos()
+                    || !connector.getInfos().has("belongType")){
+                return;
+            }
+            String belongType = connector.getInfos().get("belongType").asText();
+            if (!sortMap.containsKey(belongType)) {
+                return;
+            }
+            connector.setSequenceId(sortMap.get(belongType));
+            connector.setUsedFlag(false);
+        });
+        // 根据sequenceId进行排序
+        connectors.sort(Comparator.comparing(ObjectDigital::getSequenceId));
+    }
+
+    /***
      * Description: 根据项目id查询楼层
      * @param calculatingDTO : 请求参数
      * @return : java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>

+ 20 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ConnectedBlockServiceImpl.java

@@ -0,0 +1,20 @@
+package com.persagy.dmp.rwd.digital.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.persagy.dmp.digital.entity.ConnectedBlock;
+import com.persagy.dmp.rwd.digital.dao.ConnectedBlockMapper;
+import com.persagy.dmp.rwd.digital.service.ConnectedBlockService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class ConnectedBlockServiceImpl extends ServiceImpl<ConnectedBlockMapper, ConnectedBlock>
+implements ConnectedBlockService {
+
+}
+
+
+
+

+ 20 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ConnectedBlockSourceServiceImpl.java

@@ -0,0 +1,20 @@
+package com.persagy.dmp.rwd.digital.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.persagy.dmp.digital.entity.ConnectedBlockSource;
+import com.persagy.dmp.rwd.digital.dao.ConnectedBlockSourceMapper;
+import com.persagy.dmp.rwd.digital.service.ConnectedBlockSourceService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ */
+@Service
+public class ConnectedBlockSourceServiceImpl extends ServiceImpl<ConnectedBlockSourceMapper, ConnectedBlockSource>
+implements ConnectedBlockSourceService {
+
+}
+
+
+
+

+ 2 - 1
dmp-business/dmp-rwd/src/main/resources/db/init/schema.sql

@@ -163,10 +163,11 @@ CREATE TABLE IF NOT EXISTS `dt_relation` (
 -- ----------------------------
 -- Table structure for relation_project_cal
 -- ----------------------------
-CREATE TABLE  IF NOT EXISTS `relation_project_cal`  (
+CREATE TABLE  IF NOT EXISTS `dt_relation_project_cal`  (
 `id` varchar(200) NOT NULL COMMENT '主键,32位UUID',
 `graph_code` varchar(100) NULL DEFAULT NULL COMMENT '图类型',
 `rel_code` varchar(100) NULL DEFAULT NULL COMMENT '关系类型编码',
+"rel_code_name" varchar(100) DEFAULT NULL COMMENT '关系类型编码名称',
 `source_flag` tinyint(0) NULL DEFAULT NULL COMMENT '是否需要配置源末端',
 `automatic_flag` tinyint(0) NULL DEFAULT NULL COMMENT '是否自动计算类型',
 `manual` tinyint(0) NULL DEFAULT NULL COMMENT '手动计算类型 1 禁用  2提示引导 3手动维护',

+ 18 - 2
dmp-business/dmp-rwd/src/main/resources/mapper/ObjectDigitalMapper.xml

@@ -14,6 +14,7 @@
             <result property="objType" column="obj_type" jdbcType="VARCHAR"/>
             <result property="classCode" column="class_code" jdbcType="VARCHAR"/>
             <result property="grouping" column="grouping" jdbcType="INTEGER"/>
+            <result property="sequenceId" column="sequenceId" jdbcType="INTEGER"/>
             <result property="infos" column="infos" jdbcType="VARCHAR" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
             <result property="virtualCodes" column="virtual_codes" jdbcType="VARCHAR" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
             <result property="createApp" column="create_app" jdbcType="VARCHAR"/>
@@ -688,14 +689,29 @@
         FROM
             dt_object AS dto
         WHERE dto.obj_type='equipment'
+            AND dto.class_code='OTMCCT'
         <if test="null!=modelId and modelId.length>0">
             AND JSON_UNQUOTE(JSON_EXTRACT(dto.infos, '$.modelId')) = #{modelId}
         </if>
         <if test="null!=useType and useType.length>0">
             AND JSON_UNQUOTE(JSON_EXTRACT(dto.infos, '$.useType')) = #{useType}
         </if>
-        <if test="null!=classCode and classCode.length>0">
-            AND dto.class_code=#{classCode}
+        <if test="null!=projectId and projectId.length>0">
+            AND dto.project_id = #{projectId}
+        </if>
+        <if test="null!=groupCode and groupCode.length>0">
+            AND dto.group_code = #{groupCode}
+        </if>
+    </select>
+    <select id="queryModelElements" resultType="com.persagy.dmp.digital.entity.ObjectDigital">
+        SELECT
+        *
+        FROM
+        dt_object AS dto
+        WHERE dto.obj_type='equipment'
+        AND dto.class_code IN('OTMCEM','OTMCCN','OTMCOT','OTMCJO','OTMCPL','OTMCDU')
+        <if test="null!=modelId and modelId.length>0">
+            AND JSON_UNQUOTE(JSON_EXTRACT(dto.infos, '$.modelId')) = #{modelId}
         </if>
         <if test="null!=projectId and projectId.length>0">
             AND dto.project_id = #{projectId}

+ 8 - 1
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/define/entity/DigitalEquipClassRel.java

@@ -16,7 +16,7 @@ import java.util.Date;
 @TableName(value ="dt_equip_class_rel")
 @Data
 @EqualsAndHashCode(callSuper = true)
-public class DigitalEquipClassRel extends AuditableEntity {
+public class DigitalEquipClassRel extends AuditableEntity<DigitalEquipClassRel> {
 
     /**
      * 集团编码
@@ -53,6 +53,13 @@ public class DigitalEquipClassRel extends AuditableEntity {
      */
     @TableField(value = "rel_code")
     private String relCode;
+
+    /**
+     * 边类型编码
+     */
+    @TableField(value = "rel_code_name")
+    private String relCodeName;
+
     /**
      * 边类型名称
      */

+ 121 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ConnectedBlock.java

@@ -0,0 +1,121 @@
+package com.persagy.dmp.digital.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.persagy.dmp.common.model.entity.AuditableEntity;
+import lombok.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 
+ * @TableName dt_connected_block
+ */
+@TableName(value ="dt_connected_block")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ConnectedBlock extends AuditableEntity<ConnectedBlock> {
+
+    /**
+     * 第一个id
+     */
+    @TableField(value = "first_id")
+    private String firstId;
+
+    /**
+     * 第一个设备的类型
+     */
+    @TableField(value = "first_type")
+    private String firstType;
+
+    /**
+     * 第一个设备的模型id
+     */
+    @TableField(value = "first_model_id")
+    private String firstModelId;
+
+    /**
+     * 第二个设备id
+     */
+    @TableField(value = "second_id")
+    private String secondId;
+
+    /**
+     * 第二个设备的类型
+     */
+    @TableField(value = "second_type")
+    private String secondType;
+
+    /**
+     * 第二个设备模型id
+     */
+    @TableField(value = "second_model_id")
+    private String secondModelId;
+
+    /**
+     * 1表示从id1到id2, -1表示从id2到id1, 0 表示双向关系
+null表示未计算
+     */
+    @TableField(value = "direction")
+    private Byte direction;
+
+    /**
+     * 分块id
+     */
+    @TableField(value = "block_id")
+    private String blockId;
+
+    /**
+     * 集团编码
+     */
+    @TableField(value = "group_code")
+    private String groupCode;
+
+    /**
+     * 项目id
+     */
+    @TableField(value = "project_id")
+    private String projectId;
+
+    /**
+     * 深度, 0表示根部
+     */
+    @TableField(value = "depth")
+    private Byte depth;
+
+    /**
+     * 系统类型名称,  参考revit.connector表的mep_system_type列
+     */
+    @TableField(value = "mep_system_type")
+    private String mepSystemType;
+
+    /**
+     * 系统类型所属域,  参考revit.connector表的domain列
+     */
+    @TableField(value = "domain")
+    private String domain;
+
+    /**
+     * 建筑id
+     */
+    @TableField(value = "building_id")
+    private String buildingId;
+
+    /**
+     * 类型编码,设备编码或者其他编码
+     */
+    @TableField(value = "first_type_code")
+    private String firstTypeCode;
+
+    /**
+     * 类型编码,设备编码或者其他编码
+     */
+    @TableField(value = "second_type_code")
+    private String secondTypeCode;
+
+}

+ 80 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ConnectedBlockSource.java

@@ -0,0 +1,80 @@
+package com.persagy.dmp.digital.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.persagy.dmp.common.model.entity.AuditableEntity;
+import lombok.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 
+ * @TableName dt_connected_block_source
+ */
+@TableName(value ="dt_connected_block_source")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ConnectedBlockSource extends AuditableEntity<ConnectedBlockSource> {
+
+    /**
+     * 集团编码
+     */
+    @TableField(value = "group_code")
+    private String groupCode;
+
+    /**
+     * 项目id
+     */
+    @TableField(value = "project_id")
+    private String projectId;
+
+    /**
+     * 分块id
+     */
+    @TableField(value = "block_id")
+    private String blockId;
+
+    /**
+     * 被指定的源的id, 是uuid并非模型上的id
+     */
+    @TableField(value = "source_id")
+    private String sourceId;
+
+    /**
+     * 被指定的源的类型
+     */
+    @TableField(value = "source_type")
+    private String sourceType;
+
+    /**
+     * 系统类型
+     */
+    @TableField(value = "mep_system_type")
+    private String mepSystemType;
+
+    /**
+     * 域
+     */
+    @TableField(value = "domain")
+    private String domain;
+
+    /**
+     * 建筑id
+     */
+    @TableField(value = "building_id")
+    private String buildingId;
+
+    /**
+     * true是源, false是末端
+     */
+    @TableField(value = "source_flag")
+    private Boolean sourceFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 6 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectDigital.java

@@ -96,6 +96,12 @@ public class ObjectDigital extends AuditableEntity {
     /** 模型id */
     @TableField(exist = false)
     private String modelId;
+    /** 序号 */
+    @TableField(exist = false)
+    private Integer sequenceId;
+    /** 是否使用的标记 */
+    @TableField(exist = false)
+    private Boolean usedFlag;
     /** 关联的对象列表 */
     @TableField(exist = false,typeHandler = JacksonTypeHandler.class)
     private List<ObjectDigital> relObjs;

+ 7 - 1
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectRelationProjectCal.java

@@ -11,7 +11,7 @@ import java.util.Set;
  * 
  * @TableName relation_project_cal
  */
-@TableName(value ="relation_project_cal")
+@TableName(value ="dt_relation_project_cal")
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
@@ -32,6 +32,12 @@ public class ObjectRelationProjectCal extends AuditableEntity {
     private String relCode;
 
     /**
+     * 关系类型编码名称
+     */
+    @TableField(value = "rel_code_name")
+    private String relCodeName;
+
+    /**
      * 是否需要配置源末端
      */
     @TableField(value = "source_flag")