Files
Excelbuilder/docs/excel-import-template-feature-design.md

15 KiB
Raw Blame History

Excel 导入模板功能设计文档:单条模板 / 批量模板

1. 设计目标

当前项目已经具备“模板管理”能力,但需要进一步明确模板类型,避免把单条变量模板和从 Excel 导入的一整套变量混在一起。

新的设计目标是把模板管理拆成两类:

单条模板管理:每次新增变量时,复制/套用一条变量模板。
批量模板管理:导入 Excel读取 MES_基本变量原始数据保存为一整套批量模板。

其中:

  • 单条模板 保留现在的使用方式,用于新增或编辑单条变量时快速填充字段。
  • 批量模板 用于把外部 Excel 中的 MES_基本变量原始数据 整批复制到当前设备模块。
  • 批量模板只读取导入 Excel 的 MES_基本变量原始数据 Sheet。
  • 批量模板不读取、不解析、不使用 设备类型对应表
  • 批量模板不会根据外部 Excel 修改当前网页中的设备模块、工位、设备 IP、DB。

2. 模板管理分类

模板管理分为两个 Tab 或两个区域:

单条模板管理 | 批量模板管理
类型 数据来源 使用方式 结果
单条模板管理 用户手动维护的一条变量字段模板 新增变量时选择并套用 新增 1 条变量
批量模板管理 外部 Excel 的 MES_基本变量原始数据 选择批量模板并使用 一次新增多条变量

第一版不做设备模板、不做工位模板、不从 Excel 反向生成设备配置。

3. 单条模板管理

单条模板管理保留当前功能。

3.1 功能定位

单条模板用于减少单条变量录入时的重复填写。

例如用户新增变量时,可以选择:

  • Bool 信号模板
  • Int 数值模板
  • Real 浮点模板
  • String 字符串模板

然后自动填充:

  • TagTypeID
  • TagLong
  • 变量类型
  • 是否启用
  • 是否监控
  • 其它常用字段

3.2 单条模板使用规则

新增变量时:

  1. 用户点击 新增变量
  2. 系统打开变量编辑弹窗。
  3. 用户选择一个单条模板。
  4. 点击 使用模板
  5. 模板字段填入当前变量表单。
  6. 用户继续补充 TagID / TagName / 变量地址 / 测量项目 等字段。
  7. 保存后只新增一条共享变量。

3.3 单条模板保存内容

单条模板保存的是一条变量的部分字段,不需要保存完整 38 字段。

建议结构:

{
  "id": "tpl-bool-signal",
  "templateName": "Bool 信号模板",
  "description": "常用 Bool 开关量信号",
  "fields": {
    "TagTypeID": "11",
    "TagLong": "1",
    "变量类型": "Bool",
    "是否启用": "1",
    "是否监控": "1"
  }
}

4. 批量模板管理

批量模板管理是本次新增的重点。

4.1 功能定位

批量模板用于把外部 Excel 中的一整套基本变量原始数据保存成可复用模板。

用户后续可以选择这个批量模板,并一次性追加到当前设备模块的共享变量数据中。

效果类似之前版本:

直接复制 Excel 中的 MES_基本变量原始数据

4.2 批量模板来源

批量模板只来自外部 Excel 的:

MES_基本变量原始数据

即使导入 Excel 中存在:

设备类型对应表

系统也不读取、不解析、不使用。

4.3 批量模板使用结果

用户使用批量模板后:

  • 批量模板中的所有变量追加到当前选中的设备模块。
  • 当前设备模块右侧 MES_基本变量原始数据展开预览 立即刷新。
  • 如果当前设备模块有多个配置行,右侧按多个工位展开显示。
  • 导出 Excel 时,新追加的变量会出现在 MES_基本变量原始数据 中。

5. Excel 导入规则

5.1 Sheet 读取规则

导入 Excel 时只查找并读取:

MES_基本变量原始数据

如果没有该 Sheet提示

未找到 MES_基本变量原始数据 Sheet无法导入批量模板。

不会读取:

设备类型对应表

也不会读取其它 Sheet。

5.2 表头规则

第一行作为表头。

字段以当前系统中的 MES_HEADERS 为准。

处理规则:

情况 处理方式
Excel 存在系统支持字段 读取该字段
Excel 存在未知字段 忽略
Excel 缺少系统字段 补为空
Excel 空行 忽略

至少应存在:

  • TagID
  • TagName

建议必须填写:

  • TagTypeID
  • TagLong

5.3 字段保留规则

批量模板保存导入 Excel 中识别出的多条基本变量原始数据。

保存时字段仍按 38 列标准字段管理:

TagID
TagName
工位号
数据来源
IP
TagTypeID
TagLong
DbName
...
IsWebSocket

但导出和右侧预览时,以下字段仍以当前网页设备模块配置为准:

  • 工位号
  • 数据来源
  • IP
  • DbName

也就是说,外部 Excel 中这些字段可以被导入保存,但不会覆盖当前网页的设备模块配置。

5.4 TagID 规则

外部 Excel 中可能存在两种格式:

TAG_0000001
ST04_TAG_0000001

批量模板保存时建议统一保存为基础格式:

TAG_0000001

规则:

如果 TagID 中包含 TAG_则从 TAG_ 开始截取。

示例:

导入值 模板保存值
TAG_0000001 TAG_0000001
ST04_TAG_0000001 TAG_0000001
ST11_TAG_0000023 TAG_0000023

使用批量模板追加到设备模块后,页面预览和 Excel 导出再按当前工位展开:

ST04_TAG_0000001
ST05_TAG_0000001

6. 批量模板使用规则

6.1 使用入口

在模板管理中进入:

批量模板管理

选择一个批量模板后点击:

使用批量模板

6.2 使用前提

必须先选择左侧设备模块。

如果未选择设备模块,提示:

请先选择设备模块,再使用批量模板。

6.3 追加方式

使用批量模板时,不覆盖当前设备模块已有变量,而是追加。

示例:

当前设备模块已有变量3 条
批量模板变量23 条
使用后当前设备模块变量26 条

6.4 TagID 冲突处理

如果批量模板中的 TagID 与当前设备模块已有变量重复,推荐第一版自动重排。

示例:

当前已有:

TAG_0000001
TAG_0000002

批量模板中有:

TAG_0000001
TAG_0000002
TAG_0000003

追加后生成:

TAG_0000003
TAG_0000004
TAG_0000005

这样可以避免同一设备模块中基础 TagID 重复。

6.5 展开预览

批量模板追加后,右侧表格按当前设备模块配置行展开。

例如:

当前设备模块配置行ST04、ST05
批量模板变量23 条
右侧展开显示46 行

7. 数据结构建议

7.1 总配置结构

建议 OPFS/localStorage 中保存:

{
  "version": 3,
  "updatedAt": "2026-06-02T10:00:00.000Z",
  "devices": [],
  "variableTemplates": [],
  "batchVariableTemplates": []
}

7.2 单条模板结构

{
  "id": "tpl-bool-signal",
  "templateName": "Bool 信号模板",
  "description": "常用 Bool 开关量信号",
  "fields": {
    "TagTypeID": "11",
    "TagLong": "1",
    "变量类型": "Bool"
  }
}

7.3 批量模板结构

{
  "id": "batch-tpl-001",
  "templateName": "放油标准批量模板",
  "description": "从外部 Excel 导入",
  "sourceFileName": "SignalTable_CZ.xlsx",
  "createdAt": "2026-06-02T10:00:00.000Z",
  "variables": [
    {
      "TagID": "TAG_0000001",
      "TagName": "PLC_PC_工件到位",
      "TagTypeID": "11",
      "TagLong": "1",
      "变量类型": "Bool",
      "变量地址": "0",
      "变量其它": ".0"
    }
  ]
}

8. 页面交互设计

8.1 模板管理弹窗

模板管理弹窗分为两个 Tab

单条模板管理 | 批量模板管理

8.2 单条模板管理

保留当前能力:

  • 新增单条模板
  • 编辑单条模板
  • 删除单条模板
  • 在新增变量弹窗中使用单条模板
  • 从当前变量保存为单条模板

8.3 批量模板管理

新增能力:

  • 导入 Excel
  • 预览批量模板
  • 使用批量模板
  • 删除批量模板

批量模板列表展示:

  • 模板名称
  • 来源文件
  • 变量数量
  • 创建时间

8.4 导入 Excel 确认弹窗

导入 Excel 后先展示确认信息:

来源文件SignalTable_CZ.xlsx
读取 SheetMES_基本变量原始数据
有效变量数23
忽略空行0
忽略未知列2

模板名称:[放油标准批量模板]
模板说明:[从外部 Excel 导入]

[取消] [保存为批量模板]

9. 测试方案

9.1 单条模板测试

  1. 打开新增变量弹窗。
  2. 选择一个单条模板。
  3. 点击 使用模板
  4. 确认只填充当前变量表单。
  5. 保存后只新增一条变量。

9.2 批量模板导入测试

  1. 打开模板管理。
  2. 进入 批量模板管理
  3. 点击 导入 Excel
  4. 选择包含 MES_基本变量原始数据 的 Excel。
  5. 确认系统只读取该 Sheet。
  6. 保存后生成一个批量模板。

9.3 非目标 Sheet 测试

  1. 导入包含 设备类型对应表 的 Excel。
  2. 确认系统不读取、不解析、不使用该 Sheet。
  3. 当前设备模块配置不发生变化。

9.4 批量模板使用测试

  1. 选择左侧一个设备模块。
  2. 在批量模板管理中选择一个模板。
  3. 点击 使用批量模板
  4. 当前设备模块一次性新增多条变量。
  5. 右侧 MES_基本变量原始数据展开预览 立即刷新。

9.5 Excel 导出测试

  1. 使用批量模板批量新增变量。
  2. 点击 生成 Excel
  3. 导出的 MES_基本变量原始数据 包含新增变量。
  4. 导出的 工位号 / 数据来源 / IP / DbName 使用当前网页设备模块配置。
  5. 导出的 Excel 仍只包含两个 Sheet。

9.6 异常测试

需要验证:

  • Excel 没有 MES_基本变量原始数据 时提示错误。
  • Excel 表头缺少 TagIDTagName 时提示错误。
  • Excel 空行被忽略。
  • Excel 未知列被忽略。
  • 批量模板保存后刷新页面仍存在。

10. 页面草图

10.1 模板管理

┌──────────────────────────────────────────────────────────────────────────────┐
│ 模板管理                                                                     │
├──────────────────────────────────────────────────────────────────────────────┤
│ [单条模板管理] [批量模板管理]                                                 │
├──────────────────────────────┬───────────────────────────────────────────────┤
│ 批量模板列表                  │ 批量模板预览                                  │
│ [导入 Excel]                  │ 模板名称:放油标准批量模板                    │
│ ┌──────────────────────────┐ │ 来源文件SignalTable_CZ.xlsx                 │
│ │ 放油标准批量模板  23 条    │ │ 变量数量23                                  │
│ │ 称重批量模板      12 条    │ │                                               │
│ └──────────────────────────┘ │ ┌───────────────────────────────────────────┐ │
│                              │ │ TagID        TagName        TagTypeID     │ │
│                              │ │ TAG_0000001 PLC_PC_工件到位 11           │ │
│                              │ │ TAG_0000002 PLC_PC_读取完成 11           │ │
│                              │ └───────────────────────────────────────────┘ │
├──────────────────────────────┴───────────────────────────────────────────────┤
│                                      [删除模板] [使用批量模板] [关闭]         │
└──────────────────────────────────────────────────────────────────────────────┘

10.2 导入确认

┌──────────────────────────────────────────────────────┐
│ 导入 Excel 为批量模板                                │
├──────────────────────────────────────────────────────┤
│ 来源文件SignalTable_CZ.xlsx                        │
│ 读取 SheetMES_基本变量原始数据                      │
│ 有效变量数23                                       │
│ 忽略空行0                                          │
│ 忽略未知列2                                        │
│                                                      │
│ 模板名称:[放油标准批量模板                ]          │
│ 模板说明:[从外部 Excel 导入               ]          │
├──────────────────────────────────────────────────────┤
│                              [取消] [保存为批量模板]  │
└──────────────────────────────────────────────────────┘

11. 后续迭代方向

后续可以继续增强:

  • 支持导入 Excel 后直接追加到当前设备模块,不先保存为批量模板。
  • 支持批量模板内变量字段编辑。
  • 支持批量模板导出为 JSON。
  • 支持从当前设备模块变量保存为批量模板。
  • 支持批量模板使用时选择 TagID 策略:自动重排、保留原值、覆盖重复。
  • 支持导入前筛选变量,例如按 变量类型TagName是否启用 筛选。