refactor(core): finish model import cleanup

This commit is contained in:
caoqianming 2026-04-15 16:20:53 +08:00
parent a1e2536844
commit 6b3c52e45e
3 changed files with 18 additions and 14 deletions

View File

@ -17,9 +17,9 @@ use plc_platform_core::util::{
};
use crate::{
model::{Node, Point},
AppState,
};
use plc_platform_core::model::{Node, Point};
async fn notify_units(
state: &AppState,
@ -690,3 +690,4 @@ fn monitor_value_to_number(item: &crate::telemetry::PointMonitorInfo) -> Option<
_ => None,
}
}

View File

@ -13,8 +13,9 @@ use std::collections::{HashMap, VecDeque};
use plc_platform_core::util::response::ApiErr;
use crate::{AppState, model::{Node, Source}};
use anyhow::{Context};
use plc_platform_core::model::{Node, Source};
use crate::AppState;
use sqlx::QueryBuilder;
// 树节点结构体
@ -54,7 +55,7 @@ impl TreeNode {
}
// 带连接状态的Source响应结构体
// 蟶ヲ霑樊磁迥カ諤∫噪Source蜩榊コ皮サ捺桷菴?
#[derive(Debug, Serialize, Clone)]
pub struct SourceWithStatus {
#[serde(flatten)]
@ -100,14 +101,14 @@ pub async fn get_source_list(State(state): State<AppState>) -> Result<impl IntoR
let pool = &state.pool;
let sources: Vec<Source> = crate::service::get_all_enabled_sources(pool).await?;
// 获取所有连接状态
// 闔キ蜿匁園譛芽ソ樊磁迥カ諤?
let status_map: std::collections::HashMap<Uuid, (bool, Option<String>, Option<DateTime<Utc>>)> =
state.connection_manager.get_all_status().await
.into_iter()
.map(|(source_id, s)| (source_id, (s.is_connected, s.last_error, Some(s.last_time))))
.collect();
// 组合Source和连接状态
// <EFBFBD>粋Source蜥瑚ソ樊磁迥カ諤?
let sources_with_status: Vec<SourceWithStatus> = sources
.into_iter()
.map(|source| {
@ -133,7 +134,7 @@ pub async fn get_node_tree(
) -> Result<impl IntoResponse, ApiErr> {
let pool = &state.pool;
// 查询所有属于该source的节点
// 譟・隸「謇€譛牙ア樔コ手ッ・source逧<EFBFBD>鰍轤?
let nodes: Vec<Node> = sqlx::query_as::<_, Node>(
r#"SELECT * FROM node WHERE source_id = $1 ORDER BY created_at"#,
)
@ -141,7 +142,7 @@ pub async fn get_node_tree(
.fetch_all(pool)
.await?;
// 构建节点树
// <EFBFBD>サコ闃らせ譬?
let tree = build_node_tree(nodes);
Ok(Json(tree))
@ -152,7 +153,7 @@ fn build_node_tree(nodes: Vec<Node>) -> Vec<TreeNode> {
let mut children_map: HashMap<Uuid, Vec<Uuid>> = HashMap::new();
let mut roots: Vec<Uuid> = Vec::new();
// ① 转换 + 记录 parent 关系
// 竭?霓ャ謐「 + 隶ー蠖<EFBDB0> parent 蜈ウ邉サ
for node in nodes {
let tree_node = TreeNode::from_node(node);
let id = tree_node.id;
@ -166,7 +167,7 @@ fn build_node_tree(nodes: Vec<Node>) -> Vec<TreeNode> {
node_map.insert(id, tree_node);
}
// ② 递归构建
// 竭?騾貞ス呈桷蟒コ
fn attach_children(
id: Uuid,
node_map: &mut HashMap<Uuid, TreeNode>,
@ -185,7 +186,7 @@ fn build_node_tree(nodes: Vec<Node>) -> Vec<TreeNode> {
Some(node)
}
// ③ 生成最终树
// 竭?逕滓<E98095>€扈域<E68988><E59F9F>
roots
.into_iter()
.filter_map(|rid| attach_children(rid, &mut node_map, &children_map))
@ -411,7 +412,7 @@ pub async fn browse_and_save_nodes(
}
////////////////////////////////////////////////////////////////
// 浏览单个节点(含 continuation
// 豬剰ァ亥黒荳ェ闃らせ<EFBFBD>亥性 continuation<6F>?
////////////////////////////////////////////////////////////////
async fn browse_single_node(
@ -468,7 +469,7 @@ async fn browse_single_node(
}
////////////////////////////////////////////////////////////////
// 处理单个 Reference核心优化版
// <EFBFBD>炊蜊穂クェ Reference<63><EFBFBD>ク蠢<EFBDB8>シ伜喧迚茨シ?
////////////////////////////////////////////////////////////////
async fn process_reference(
@ -604,7 +605,7 @@ async fn load_namespace_map(
let result = session.read(&[read_request], TimestampsToReturn::Neither, 0f64).await
.context("Failed to read namespace map")?;
// 解析并构建命名空间映射
// 隗」譫仙ケカ譫<EFBFBD>サコ蜻ス蜷咲ゥコ髣エ譏<EFBFBD>蟆?
let mut map = HashMap::new();
if let Some(value) = &result[0].value {
if let Variant::Array(array) = value {
@ -622,3 +623,4 @@ async fn load_namespace_map(
}

View File

@ -1,7 +1,7 @@
use crate::{
handler::equipment::EquipmentListItem,
model::{Equipment, Point},
};
use plc_platform_core::model::{Equipment, Point};
use sqlx::{query_as, PgPool, Row};
use uuid::Uuid;
@ -307,3 +307,4 @@ mod tests {
assert_eq!(equipment_order_clause(), "e.code");
}
}