feat: 添加回路名称字段并实现元数据缓存查询
在 RCU 事件处理中新增回路名称(loop_name)字段,用于标识具体设备回路。 - 在 rcu_action_events 表中添加 loop_name 字段 - 新增项目元数据缓存模块,每日从 temporary_project 表刷新房间与回路信息 - 处理消息时,根据 device_id、dev_addr 等字段查询缓存获取回路名称 - 若缓存未命中,则根据设备类型规则生成兜底名称 - 更新环境变量、文档及测试用例以适配新功能
This commit is contained in:
@@ -75,4 +75,20 @@ ACK (待补充)
|
||||
|
||||
5. 队列结构
|
||||
队列分区数:6
|
||||
Topic:blwlog4Nodejs-rcu-action-topic
|
||||
Topic:blwlog4Nodejs-rcu-action-topic
|
||||
|
||||
|
||||
6. 入库前特殊操作
|
||||
- 定期从temporary_project表中读取数据并保存到`内存`中(以全局变量的形式),每天凌晨1点从数据库更新一次。
|
||||
- 每条数据写库之前,需要根据项目ID从内存中读取项目信息。
|
||||
- 我需要在现有数据表`rcu_action_events`里,添加一个字段:`loop_name`,用于存储回路名称。
|
||||
- 查询`loop_name`的方法是:
|
||||
- 根据要插入的数据中的`device_id`在`rooms`表中找出对应的房间 -> 得到 `room_type_id`。
|
||||
- 根据 `room_type_id` 和 `loop_address` 在 `loops` 表中查找对应的 `loop_name`。
|
||||
- `loop_address` 的生成规则:将数据的 `dev_type`、`dev_addr`、`dev_loop` 分别转换为 3 位字符串(不足前方补 0),然后拼接。
|
||||
- 例如:`dev_type=1, dev_addr=23, dev_loop=12` -> `001` + `023` + `012` -> `001023012`。
|
||||
- **兜底逻辑**:如果根据上述规则在 `loops` 缓存中未找到对应的 `loop_name`,则使用 `dev_type` 对应的设备名称(配置在 `ACTION_TYPE_DEV_TYPE_RULES` 中)默认名称。
|
||||
- 格式:`[dev_type名称+'-'+dev_addr+'-'+dev_loop]`
|
||||
- 例如:`dev_type=35` (名称: TimeCtrl), `addr=14`, `loop=21` -> `[35TimeCtrl-14-21]`
|
||||
- 最后将找到的或生成的 `loop_name` 写入 `rcu_action_events` 表。
|
||||
- 注意,所有查库操作都要通过内存缓存来实现。
|
||||
|
||||
231
docs/temporary_project.sql
Normal file
231
docs/temporary_project.sql
Normal file
@@ -0,0 +1,231 @@
|
||||
/*
|
||||
Navicat Premium Dump SQL
|
||||
|
||||
Source Server : FnOS 109
|
||||
Source Server Type : PostgreSQL
|
||||
Source Server Version : 150004 (150004)
|
||||
Source Host : 10.8.8.109:5433
|
||||
Source Catalog : log_platform
|
||||
Source Schema : temporary_project
|
||||
|
||||
Target Server Type : PostgreSQL
|
||||
Target Server Version : 150004 (150004)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 02/02/2026 14:28:41
|
||||
*/
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for hotels
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "temporary_project"."hotels";
|
||||
CREATE TABLE "temporary_project"."hotels" (
|
||||
"guid" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"hotel_id" int4 NOT NULL,
|
||||
"hotel_name" varchar(255) COLLATE "pg_catalog"."default",
|
||||
"id" int4
|
||||
)
|
||||
;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for loops_default
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "temporary_project"."loops_default";
|
||||
CREATE TABLE "temporary_project"."loops_default" (
|
||||
"guid" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"id" int4 NOT NULL,
|
||||
"loop_name" varchar(255) COLLATE "pg_catalog"."default",
|
||||
"room_type_id" int4 NOT NULL,
|
||||
"loop_address" varchar(255) COLLATE "pg_catalog"."default",
|
||||
"loop_type" varchar(50) COLLATE "pg_catalog"."default"
|
||||
)
|
||||
;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for room_type
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "temporary_project"."room_type";
|
||||
CREATE TABLE "temporary_project"."room_type" (
|
||||
"guid" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"id" int4 NOT NULL,
|
||||
"room_type_name" varchar(255) COLLATE "pg_catalog"."default",
|
||||
"hotel_id" int4
|
||||
)
|
||||
;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for rooms_default
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "temporary_project"."rooms_default";
|
||||
CREATE TABLE "temporary_project"."rooms_default" (
|
||||
"guid" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"hotel_id" int4 NOT NULL,
|
||||
"room_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"room_type_id" int4,
|
||||
"device_id" varchar(50) COLLATE "pg_catalog"."default",
|
||||
"mac" varchar(50) COLLATE "pg_catalog"."default",
|
||||
"id" int4
|
||||
)
|
||||
;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for loops
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "temporary_project"."loops";
|
||||
CREATE TABLE "temporary_project"."loops" (
|
||||
"guid" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"id" int4 NOT NULL,
|
||||
"loop_name" varchar(255) COLLATE "pg_catalog"."default",
|
||||
"room_type_id" int4 NOT NULL,
|
||||
"loop_address" varchar(255) COLLATE "pg_catalog"."default",
|
||||
"loop_type" varchar(50) COLLATE "pg_catalog"."default"
|
||||
)
|
||||
PARTITION BY (
|
||||
)
|
||||
;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for rooms
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "temporary_project"."rooms";
|
||||
CREATE TABLE "temporary_project"."rooms" (
|
||||
"guid" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"hotel_id" int4 NOT NULL,
|
||||
"room_id" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
|
||||
"room_type_id" int4,
|
||||
"device_id" varchar(50) COLLATE "pg_catalog"."default",
|
||||
"mac" varchar(50) COLLATE "pg_catalog"."default",
|
||||
"id" int4
|
||||
)
|
||||
PARTITION BY LIST (
|
||||
"hotel_id" "pg_catalog"."int4_ops"
|
||||
)
|
||||
;
|
||||
ALTER TABLE "temporary_project"."rooms" ATTACH PARTITION "temporary_project"."rooms_default" DEFAULT;
|
||||
|
||||
-- ----------------------------
|
||||
-- Indexes structure for table hotels
|
||||
-- ----------------------------
|
||||
CREATE INDEX "idx_hotels_hotel_id" ON "temporary_project"."hotels" USING btree (
|
||||
"hotel_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_hotels_hotel_name" ON "temporary_project"."hotels" USING btree (
|
||||
"hotel_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_hotels_id" ON "temporary_project"."hotels" USING btree (
|
||||
"id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table hotels
|
||||
-- ----------------------------
|
||||
ALTER TABLE "temporary_project"."hotels" ADD CONSTRAINT "hotels_pkey" PRIMARY KEY ("hotel_id", "guid");
|
||||
|
||||
-- ----------------------------
|
||||
-- Indexes structure for table loops_default
|
||||
-- ----------------------------
|
||||
CREATE INDEX "loops_default_id_idx" ON "temporary_project"."loops_default" USING btree (
|
||||
"id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "loops_default_loop_address_idx" ON "temporary_project"."loops_default" USING btree (
|
||||
"loop_address" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "loops_default_loop_name_idx" ON "temporary_project"."loops_default" USING btree (
|
||||
"loop_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "loops_default_loop_type_idx" ON "temporary_project"."loops_default" USING btree (
|
||||
"loop_type" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "loops_default_room_type_id_idx" ON "temporary_project"."loops_default" USING btree (
|
||||
"room_type_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table loops_default
|
||||
-- ----------------------------
|
||||
ALTER TABLE "temporary_project"."loops_default" ADD CONSTRAINT "loops_default_pkey" PRIMARY KEY ("guid", "id", "room_type_id");
|
||||
|
||||
-- ----------------------------
|
||||
-- Indexes structure for table room_type
|
||||
-- ----------------------------
|
||||
CREATE INDEX "idx_room_type_hotel_id" ON "temporary_project"."room_type" USING btree (
|
||||
"hotel_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_room_type_id" ON "temporary_project"."room_type" USING btree (
|
||||
"id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_room_type_name" ON "temporary_project"."room_type" USING btree (
|
||||
"room_type_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table room_type
|
||||
-- ----------------------------
|
||||
ALTER TABLE "temporary_project"."room_type" ADD CONSTRAINT "room_type_pkey" PRIMARY KEY ("guid", "id");
|
||||
|
||||
-- ----------------------------
|
||||
-- Indexes structure for table rooms_default
|
||||
-- ----------------------------
|
||||
CREATE INDEX "rooms_default_device_id_idx" ON "temporary_project"."rooms_default" USING btree (
|
||||
"device_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "rooms_default_hotel_id_idx" ON "temporary_project"."rooms_default" USING btree (
|
||||
"hotel_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "rooms_default_id_idx" ON "temporary_project"."rooms_default" USING btree (
|
||||
"id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "rooms_default_mac_idx" ON "temporary_project"."rooms_default" USING btree (
|
||||
"mac" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table rooms_default
|
||||
-- ----------------------------
|
||||
ALTER TABLE "temporary_project"."rooms_default" ADD CONSTRAINT "rooms_default_pkey" PRIMARY KEY ("guid", "hotel_id", "room_id");
|
||||
|
||||
-- ----------------------------
|
||||
-- Indexes structure for table loops
|
||||
-- ----------------------------
|
||||
CREATE INDEX "idx_loops_address" ON "temporary_project"."loops" USING btree (
|
||||
"loop_address" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_loops_id" ON "temporary_project"."loops" USING btree (
|
||||
"id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_loops_name" ON "temporary_project"."loops" USING btree (
|
||||
"loop_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_loops_room_type_id" ON "temporary_project"."loops" USING btree (
|
||||
"room_type_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_loops_type" ON "temporary_project"."loops" USING btree (
|
||||
"loop_type" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table loops
|
||||
-- ----------------------------
|
||||
ALTER TABLE "temporary_project"."loops" ADD CONSTRAINT "loops_pkey" PRIMARY KEY ("guid", "id", "room_type_id");
|
||||
|
||||
-- ----------------------------
|
||||
-- Indexes structure for table rooms
|
||||
-- ----------------------------
|
||||
CREATE INDEX "idx_rooms_device_id" ON "temporary_project"."rooms" USING btree (
|
||||
"device_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_rooms_hotel_id" ON "temporary_project"."rooms" USING btree (
|
||||
"hotel_id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_rooms_id" ON "temporary_project"."rooms" USING btree (
|
||||
"id" "pg_catalog"."int4_ops" ASC NULLS LAST
|
||||
);
|
||||
CREATE INDEX "idx_rooms_mac" ON "temporary_project"."rooms" USING btree (
|
||||
"mac" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
|
||||
);
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table rooms
|
||||
-- ----------------------------
|
||||
ALTER TABLE "temporary_project"."rooms" ADD CONSTRAINT "rooms_pkey" PRIMARY KEY ("guid", "hotel_id", "room_id");
|
||||
Reference in New Issue
Block a user