点搜索
这是按时间段查询特定标签的已采集时序数据,并将结果以表格/CSV下载的界面。操作员进行昨天09点至11点之间PLC值是否在正常范围内等巡检时使用。

点击工具栏上的数据库图标(fa-database,左侧第六个)或直接访问http://<gateway>/ui/point。
1. 界面结构
┌────────────────────────────────────────────────────────────────┐
│ ⊙ 포인트 검색 — 시계열 데이터 조회 · TM_TAG_POINT [←] [↻] │
├────────────────────┬───────────────────────────────────────────┤
│ [검색 조건] │ [포인트 목록 — 최신 순] [CSV 다운로드] │
│ ─ 검색 기간 │ ┌──────────────────────────────────────┐ │
│ ─ OPC ID * │ │ 시각 │ 태그 ID │ 값 │ 타입 │ 품질 │ 에러 │ │
│ ─ 태그 ID * │ └──────────────────────────────────────┘ │
│ [검색] │ … │
└────────────────────┴───────────────────────────────────────────┘
左侧面板宽度比标准col-md-2加宽50px,以防止标签/下拉框被截断。
2. 顶部栏
| 按钮 | 操作 |
|---|---|
← (fa-arrow-left) | 返回/ui/main |
↻ (fa-sync) | 重新调用point.search()(保留现有条件,用于刷新) |
3. 搜索条件(左侧面板)
3.1 搜索时间段 (s_date_range)
- 基于daterangepicker — 格式
YYYY-MM-DD HH:mm ~ YYYY-MM-DD HH:mm - 进入界面时自动填充为最近1小时(
moment().subtract(1, 'hours')~moment()) - 点击 → 弹出日历+时间选择器
3.2 OPC ID(必填)
- 通过
POST /connect/opc/list结果填充下拉框 — 按opc_id字母ASC排序 - 标签格式:
OPC_ID (OPC_NAME)— 若name为空则仅显示OPC_ID - 更改选择后,下方的标签ID下拉框将重新加载为该OPC下的标签
3.3 标签ID(必填)
- 选择OPC前:
disabled+ 提示选项*— 选择OPC后加载 —* - 选择OPC后通过
POST /connect/tag/list { opc_id }结果填充 — 按tag_idASC排序 - 标签格式:
TAG_ID (TAG_NAME)— 若name为空则仅显示TAG_ID - 加载失败时显示*— 加载失败 —*选项并弹出错误提示
未选择标签就点击搜索
会弹出*“请先选择OPC和标签。”*的模态框(bootbox alert)— 这是防止因数据缺失导致空结果和时间浪费的守护机制。
4. 结果表格(6列)
GET /point/search响应由DataTables绘制。默认排序为时间戳降序(从最新开始)。
| # | 列 | 宽度 | 排序 | 显示/含义 |
|---|---|---|---|---|
| 1 | 时间 | 180px | 默认降序 | timestamp.iso或原始timestamp — 居中对齐 |
| 2 | 标签ID | 180px | — | 搜索的标签ID — 居中对齐 |
| 3 | 值 | *(自适应) | — | 根据类型对齐方式不同 — integer/long/float/double 右对齐,boolean/string等 居中对齐(UI-DESIGN的表格值对齐规则) — 粗体 |
| 4 | 类型 | 100px | — | 用formatTypeBadge()创建的彩色徽章(例如:STRING / INT / DOUBLE / BOOL) |
| 5 | 质量 | 70px | — | OPC质量码(例如:192=Good)。为空时显示空白 |
| 6 | 错误 | 70px | — | error_code为0/null时显示*—*(灰色),否则显示红色错误码 |
每页长度:10 / 20 / 50 / 100 / 1000 — 默认100。韩文界面(Korean.json)。
5. CSV下载
右上角下载CSV按钮 — 调用point.csv()。
- 本地导出 — 将最后搜索结果(
point._lastData)在客户端转换为CSV → 立即下载。无额外服务器调用 - 文件名:
point_<TAG_ID>_<TIMESTAMP>.csv格式(例如:point_TAG_LS_XBC_0001_20260510_1530.csv) - 列:时间 / 标签ID / 值 / 类型 / 质量 / 错误 — 与UI表格一致
搜索无结果时点击CSV
*“请先进行搜索。”*提示模态框 — 防止生成空CSV。
6. 数据来源
界面查询的后端流程:
PLC → Collector → PointProcessor → Cassandra: tm_tag_point (TTL = edge.ttl 일)
↑
/point/search?tag_id&from&to
- TTL过期的数据不再被查询。
app.properties的edge.ttl默认30天。 tm_tag_point的row是(tag_id, time_bucket, time)集群 — 短时间段搜索很快。一次拉取超过一个月的数据可能会导致响应变慢,建议按几十分钟到几小时的粒度查询。
7. 运维提示
- 异常值追踪:将报警出现的时间段设为搜索范围并查询该标签 — 可发现突发的峰值 / 0值 / 质量变化
- PLC通信中断:如果同一标签的错误列在特定时间段内满是红色错误码,说明PLC响应失败区间 — 可在
/ui/connect/list中与采集状态交叉验证 - CSV转Excel:将下载的CSV在Excel/LibreOffice中打开,用值列绘制趋势图可快速可视化 — 完整图表请参考实时值查看或标签值趋势查看
8. 相关文档
- 实时值查看(
/ui/connect/tag-view) — 单标签1秒轮询+实时图表 - 采集历史查看
- REST API —
GET /api/v1/tag/{tag_id}/value— 使用X-API-Key从外部系统直接查询同一数据