Procházet zdrojové kódy

系统图json修改

caiaf před 3 roky
rodič
revize
3e6c25fd08

+ 53 - 0
docs/dev/data-center/relations/belongs/Sp2Sp3.md

@@ -0,0 +1,53 @@
+# 业务空间邻接关系
+## 前置条件
+    1. 业务空间有所在楼层
+    2. 业务空间有外轮廓
+## 处理逻辑
+    1. 查出所有有所在楼层关系, 并且外轮廓不是null的业务空间
+    2. 根据所在楼层, 业务空间分区类型来将业务空间分为不同的组 (例如 : A 楼层下的默认业务空间是一组, A楼层下的空调分区是另外一组)
+    3. 计算每个分组内的业务空间的相邻关系
+    计算相邻算法 (如下图):
+    1. 在一个分组内, 查到所有的门信息,根据门的outline作垂线算出线段的方程,y=kx+a
+        1). 根据 x2-x1 = 根号 d2/1+k2, 和门的中点,算出上下两边长度均为door_length长的点
+    2. 将上面找到的点, 依次与组内其他业务空间外轮廓做一次点是否在多边形内的判断, 如果在, 则认为该多边形与图中多边形相邻
+    
+   
+![image](./img/sp2sp2-1.png)
+
+
+## 函数
+
+###  业务空间轮廓结构
+```
+[
+    [
+        [
+            {点坐标},
+            {点坐标}...
+        ], // 子轮廓的外轮廓
+        [
+            {点坐标},
+            {点坐标}...
+        ], // 子轮廓的第n个需要被排除的轮廓
+    ], // 子轮廓
+    [
+        [
+            {点坐标},
+            {点坐标}...
+        ]
+    ],
+]
+```
+
+<details>
+<summary>源码</summary>
+
+```
+
+```
+
+</details>
+
+## 入参
+    1. 项目id
+## 例子

+ 1 - 1
docs/dev/data-center/relations/jiaojie/server.md

@@ -20,7 +20,7 @@
 
 # 测试服3  windows
     
-    IP : 172.16.44.63      Garrett/123456
+    IP : 192.168.12.22      Garrett/123456
     
     启动revit客户端, 点击桌面的Client.exe快捷方式. 
     revit客户端使用的数据库 是在本机的mysql(8.0版本). 3306端口, root/123456, 数据库名: worker_str

binární
docs/dev/data-center/relations/topology/img/4.png


+ 42 - 0
docs/dev/data-center/relations/topology/sys_block2.md

@@ -0,0 +1,42 @@
+# 管网系统设备分块
+## 前置条件
+    1. 项目下的模型文件已上传;
+    2. 所有管网已正确连接;
+    3. (非强制)通过模型检查:连接件检查、系统类型名称检查、管网及相关设备检查、管段检查
+
+## 处理逻辑
+
+    1. 获取所有当前项目project_id下的的有模型文件models; 表:revit.model_folder、revit.model_floor、revit.model_file
+    2. 遍历models,获取model层的系统图systemGraphs;
+        1. 获取model下所有的connector,connectors,表:revit.connector
+        2. 获取model下所有的设备、部件、其它、风管、水管,连接头表:revit.equipment、revit.component、revit.other、revit.pipe、revit.duct、revit.joinObject
+        3. 对connector连接件进行排序,按照设备优先的顺序排序,通过连接件的owner所属对象和connected_ids 和此对象连接的其他连接点,将设备和设备一一连接
+        4. 将管道和other去除,joinObject看作一个虚设备,将设备和虚设备进行相连,虚设备再连接其他设备。
+    4. 删除本项目下project_id、表revit_calc.(设备和设备关系)
+    5. 将合并后的数据存入数据库,表:revit_calc.设备和设备关系
+
+
+# 函数
+
+<details>
+<summary>源码</summary>
+
+```
+
+```
+
+</details>
+
+
+## 输入
+    1. 项目id
+    2. 需要计算的building_id,如果没有提供时请传入null,不能传""
+## 返回结果
+    True    成功
+    False   失败
+    
+## 结果展示
+![原模型图](img/1.png)
+![抽象后的图](img/2.png)
+![确定完流向的图](img/3.png)
+![管网抽象结构图](img/4.png)

+ 78 - 0
docs/dev/postgresql/citus/README.md

@@ -0,0 +1,78 @@
+# citus实战系列之一
+citus是一款基于PostgreSQL的开源分布式数据库,自动继承了PostgreSQL强大的SQL支持能力和应用生态。安装了citus之后
+postgresql就不必再安装了,因为会集成进来
+
+## docker下载citus镜像
+```
+docker pull citusdata/citus
+```
+
+## docker运行citus
+
+```
+//运行容器并指定密码
+docker run --name citus_standalone1 -e POSTGRES_PASSWORD=123456  -p 5433:5432 citusdata/citus
+```
+
+## 启动citus集群便捷方法
+
+docker-compose.yml文件提供了一种启动Citus集群的简便方法,该集群由多个工作程序组成。只需将其复制到当前目录并运行
+```
+docker-compose -p citus up
+```
+
+示例docker-compose文件,可根据需要进行修改
+```yaml
+version: '3'
+
+services:
+  master:
+    container_name: "${COMPOSE_PROJECT_NAME:-citus}_master"
+    image: 'citusdata/citus:9.5.1'
+    ports: ["${MASTER_EXTERNAL_PORT:-5432}:5432"]
+    labels: ['com.citusdata.role=Master']
+    environment: &AUTH
+      POSTGRES_USER: "${POSTGRES_USER:-postgres}"
+      POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
+      PGUSER: "${POSTGRES_USER:-postgres}"
+      PGPASSWORD: "${POSTGRES_PASSWORD}"
+      POSTGRES_HOST_AUTH_METHOD: "${POSTGRES_HOST_AUTH_METHOD:-trust}"
+  worker:
+    image: 'citusdata/citus:9.5.1'
+    labels: ['com.citusdata.role=Worker']
+    depends_on: [ manager ]
+    environment: *AUTH
+    command: "/wait-for-manager.sh"
+    volumes: 
+      - healthcheck-volume:/healthcheck
+  manager:
+    container_name: "${COMPOSE_PROJECT_NAME:-citus}_manager"
+    image: 'citusdata/membership-manager:0.3.0'
+    volumes: 
+      - "${DOCKER_SOCK:-/var/run/docker.sock}:/var/run/docker.sock"
+      - healthcheck-volume:/healthcheck
+    depends_on: [ master ]
+    environment: *AUTH
+volumes:
+  healthcheck-volume:
+
+```
+
+#citus实战系列之二
+citus的安装非常简单,但要实际用到生产上还需要下一番功夫。比如如何扩容
+citus为主从结构,分为cn节点和worker节点
+cn节点只存储分片信息,不存储元数据,而worker节点存储元数据
+
+常用命令
+```sql
+SELECT * FROM master_get_active_worker_nodes(); //查看所有节点
+
+select * from master_add_node('ip-or-name', port); //添加worker节点
+
+SELECT create_distributed_table('table', 'field'); //根据字段分片
+
+SELECT * from pg_dist_shard_placement order by shardid, placementid; //查询分片
+```
+
+
+