432 lines
14 KiB
Markdown
432 lines
14 KiB
Markdown
|
|
# 数据处理小工具需求分析报告
|
|||
|
|
|
|||
|
|
## 1. 项目概述
|
|||
|
|
|
|||
|
|
本项目是一个基于Electron+React的数据处理桌面应用,主要用于处理Excel表格数据,并将数据导入到SQLite数据库中进行存储和管理。应用提供树状结构展示、数据筛选、详情查看与编辑等功能,界面风格类似VSCode。
|
|||
|
|
|
|||
|
|
### 1.1 项目目标
|
|||
|
|
|
|||
|
|
- 实现Excel数据的导入与处理(处理合并单元格问题)
|
|||
|
|
- 构建树状结构展示(总部→单位→建设单位)
|
|||
|
|
- 提供数据筛选、查询、编辑功能
|
|||
|
|
- 支持多条数据选择与分析
|
|||
|
|
- 实现Windows桌面应用一键安装
|
|||
|
|
|
|||
|
|
## 2. 功能需求分析
|
|||
|
|
|
|||
|
|
### 2.1 核心功能
|
|||
|
|
|
|||
|
|
#### 2.1.1 Excel数据导入与处理
|
|||
|
|
|
|||
|
|
- **功能描述**:导入Excel表格数据,处理合并单元格问题
|
|||
|
|
- **处理逻辑**:
|
|||
|
|
- 取消Excel中的合并单元格
|
|||
|
|
- 将取消前的内容复制到新的单元格中
|
|||
|
|
- 提取"单位"字段和"建设单位"字段,形成树状结构
|
|||
|
|
- **技术要点**:
|
|||
|
|
- 需要使用Node.js的Excel处理库(如ExcelJS、xlsx)
|
|||
|
|
- 需要处理合并单元格的特殊情况
|
|||
|
|
|
|||
|
|
#### 2.1.2 树状结构展示
|
|||
|
|
|
|||
|
|
- **功能描述**:将单位和建设单位形成树状结构展示
|
|||
|
|
- **结构层次**:总部→单位→建设单位
|
|||
|
|
- **交互功能**:
|
|||
|
|
- 点击总部:显示所有数据
|
|||
|
|
- 点击单位:显示与该单位相关的数据
|
|||
|
|
- 点击建设单位:显示该建设单位的相关数据
|
|||
|
|
- **技术要点**:
|
|||
|
|
- 使用React组件实现树状结构(如Ant Design的Tree组件)
|
|||
|
|
- 树节点与数据筛选的联动
|
|||
|
|
|
|||
|
|
#### 2.1.3 数据存储与管理
|
|||
|
|
|
|||
|
|
- **功能描述**:将处理后的数据存储到SQLite数据库
|
|||
|
|
- **数据操作**:
|
|||
|
|
- 数据导入
|
|||
|
|
- 数据查询
|
|||
|
|
- 数据编辑与保存
|
|||
|
|
- **技术要点**:
|
|||
|
|
- 使用Node.js的SQLite库(如better-sqlite3)
|
|||
|
|
- 设计合理的数据库结构
|
|||
|
|
|
|||
|
|
#### 2.1.4 数据筛选与查询
|
|||
|
|
|
|||
|
|
- **功能描述**:提供多种方式筛选和查询数据
|
|||
|
|
- **筛选方式**:
|
|||
|
|
- 通过树状结构筛选(总部/单位/建设单位)
|
|||
|
|
- 通过单项工程名称筛选
|
|||
|
|
- 通过工具栏功能按钮筛选(工程、风险等)
|
|||
|
|
- **技术要点**:
|
|||
|
|
- 实现多条件组合筛选
|
|||
|
|
- 优化查询性能
|
|||
|
|
|
|||
|
|
#### 2.1.5 数据详情查看与编辑
|
|||
|
|
|
|||
|
|
- **功能描述**:点击数据条目,以表单形式展示详情并支持编辑
|
|||
|
|
- **操作流程**:
|
|||
|
|
- 点击数据行→显示详情表单
|
|||
|
|
- 修改表单内容→保存更新
|
|||
|
|
- **技术要点**:
|
|||
|
|
- 表单验证
|
|||
|
|
- 数据更新与状态管理
|
|||
|
|
|
|||
|
|
#### 2.1.6 多数据选择与分析
|
|||
|
|
|
|||
|
|
- **功能描述**:选择多条数据进行分析,在右侧展示分析结果
|
|||
|
|
- **操作方式**:通过复选框选择多条数据
|
|||
|
|
- **技术要点**:
|
|||
|
|
- 复选框状态管理
|
|||
|
|
- 分析结果展示区域设计
|
|||
|
|
|
|||
|
|
### 2.2 界面需求
|
|||
|
|
|
|||
|
|
#### 2.2.1 整体布局
|
|||
|
|
|
|||
|
|
- **风格要求**:与VSCode工具风格一致
|
|||
|
|
- **布局结构**:
|
|||
|
|
- 左侧:工具栏(数据筛选工具栏)
|
|||
|
|
- 中左:树状结构展示区(类似VSCode文件目录区)
|
|||
|
|
- 中右:数据展示区(类似VSCode代码编辑区)
|
|||
|
|
- 右侧:分析结果展示区
|
|||
|
|
|
|||
|
|
#### 2.2.2 工具栏设计
|
|||
|
|
|
|||
|
|
- **位置**:最左侧
|
|||
|
|
- **功能按钮**:
|
|||
|
|
- 工程
|
|||
|
|
- 风险
|
|||
|
|
- 查找
|
|||
|
|
- 其他功能按钮
|
|||
|
|
|
|||
|
|
#### 2.2.3 树状结构区
|
|||
|
|
|
|||
|
|
- **位置**:VSCode文件目录区域位置
|
|||
|
|
- **内容**:总部→单位→建设单位的树状结构
|
|||
|
|
- **交互**:点击节点筛选相关数据
|
|||
|
|
|
|||
|
|
#### 2.2.4 数据展示区
|
|||
|
|
|
|||
|
|
- **位置**:VSCode代码编辑区域位置
|
|||
|
|
- **功能**:
|
|||
|
|
- 表格形式展示数据
|
|||
|
|
- 支持单项工程名称筛选
|
|||
|
|
- 包含复选框用于多选
|
|||
|
|
- 点击行显示详情
|
|||
|
|
|
|||
|
|
#### 2.2.5 详情表单区
|
|||
|
|
|
|||
|
|
- **触发方式**:点击数据行
|
|||
|
|
- **内容**:以表单形式展示所有字段
|
|||
|
|
- **功能**:支持编辑和保存
|
|||
|
|
|
|||
|
|
#### 2.2.6 分析结果区
|
|||
|
|
|
|||
|
|
- **位置**:页面最右侧
|
|||
|
|
- **触发条件**:选择多条数据
|
|||
|
|
- **内容**:展示分析结果(具体分析功能不需实现)
|
|||
|
|
|
|||
|
|
### 2.3 非功能需求
|
|||
|
|
|
|||
|
|
#### 2.3.1 性能需求
|
|||
|
|
|
|||
|
|
- Excel处理性能:能够处理大型Excel文件
|
|||
|
|
- 查询响应时间:数据筛选和查询响应迅速
|
|||
|
|
- 应用启动时间:应用启动速度快
|
|||
|
|
|
|||
|
|
#### 2.3.2 安装部署需求
|
|||
|
|
|
|||
|
|
- 支持Windows桌面应用
|
|||
|
|
- 实现一键安装功能
|
|||
|
|
- 安装包体积合理
|
|||
|
|
|
|||
|
|
#### 2.3.3 用户体验需求
|
|||
|
|
|
|||
|
|
- 界面简洁美观
|
|||
|
|
- 操作流程直观
|
|||
|
|
- 响应及时
|
|||
|
|
|
|||
|
|
## 3. 技术架构分析
|
|||
|
|
|
|||
|
|
### 3.1 技术栈选择
|
|||
|
|
|
|||
|
|
#### 3.1.1 前端技术
|
|||
|
|
|
|||
|
|
- **框架**:Electron + React
|
|||
|
|
- **UI组件库**:Ant Design
|
|||
|
|
- **状态管理**:Redux或Context API
|
|||
|
|
- **样式方案**:Less/Sass + CSS Modules
|
|||
|
|
|
|||
|
|
#### 3.1.2 后端技术
|
|||
|
|
|
|||
|
|
- **运行环境**:Node.js (Electron主进程)
|
|||
|
|
- **数据库**:SQLite
|
|||
|
|
- **Excel处理**:ExcelJS/xlsx
|
|||
|
|
- **文件操作**:fs-extra
|
|||
|
|
|
|||
|
|
### 3.2 架构设计
|
|||
|
|
|
|||
|
|
#### 3.2.1 整体架构
|
|||
|
|
|
|||
|
|
- **Electron架构**:
|
|||
|
|
- 主进程:负责文件操作、数据库交互
|
|||
|
|
- 渲染进程:负责UI渲染、用户交互
|
|||
|
|
- **数据流架构**:
|
|||
|
|
- Excel数据 → 数据处理 → 数据存储 → 数据展示
|
|||
|
|
|
|||
|
|
#### 3.2.2 模块划分
|
|||
|
|
|
|||
|
|
- **数据导入模块**:处理Excel导入和合并单元格问题
|
|||
|
|
- **数据存储模块**:管理SQLite数据库操作
|
|||
|
|
- **树状结构模块**:构建和管理树状结构
|
|||
|
|
- **数据展示模块**:表格展示和交互
|
|||
|
|
- **详情编辑模块**:表单展示和数据编辑
|
|||
|
|
- **数据分析模块**:多选数据分析功能
|
|||
|
|
|
|||
|
|
## 4. 数据流程分析
|
|||
|
|
|
|||
|
|
### 4.1 数据导入流程
|
|||
|
|
|
|||
|
|
1. 用户选择Excel文件
|
|||
|
|
2. 系统读取Excel文件内容
|
|||
|
|
3. 处理合并单元格问题
|
|||
|
|
4. 提取单位和建设单位字段
|
|||
|
|
5. 构建树状结构数据
|
|||
|
|
6. 将数据导入SQLite数据库
|
|||
|
|
|
|||
|
|
### 4.2 数据查询流程
|
|||
|
|
|
|||
|
|
1. 用户通过树状结构或筛选条件选择查询条件
|
|||
|
|
2. 系统根据条件从SQLite数据库查询数据
|
|||
|
|
3. 将查询结果展示在数据展示区
|
|||
|
|
|
|||
|
|
### 4.3 数据编辑流程
|
|||
|
|
|
|||
|
|
1. 用户点击数据行
|
|||
|
|
2. 系统以表单形式展示详情
|
|||
|
|
3. 用户编辑表单内容
|
|||
|
|
4. 用户保存修改
|
|||
|
|
5. 系统更新SQLite数据库
|
|||
|
|
|
|||
|
|
### 4.4 数据分析流程
|
|||
|
|
|
|||
|
|
1. 用户通过复选框选择多条数据
|
|||
|
|
2. 系统收集选中的数据
|
|||
|
|
3. 系统在右侧展示分析结果
|
|||
|
|
|
|||
|
|
## 5. 数据库设计分析
|
|||
|
|
|
|||
|
|
### 5.1 数据库表设计
|
|||
|
|
|
|||
|
|
#### 5.1.1 主数据表
|
|||
|
|
|
|||
|
|
包含Excel中的所有字段:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
CREATE TABLE projects (
|
|||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|||
|
|
unit TEXT, -- 单位
|
|||
|
|
project_number TEXT, -- 项目编号
|
|||
|
|
safety_code TEXT, -- 安全编码
|
|||
|
|
major_project_name TEXT, -- 大项工程名称
|
|||
|
|
sub_project_name TEXT, -- 单项工程名称
|
|||
|
|
construction_scope TEXT, -- 在施工程作业范围
|
|||
|
|
project_scale TEXT, -- 工程规模
|
|||
|
|
safety_director TEXT, -- 安全总监
|
|||
|
|
construction_unit TEXT, -- 建设单位
|
|||
|
|
supervision_unit TEXT, -- 监理单位
|
|||
|
|
construction_company TEXT, -- 施工单位
|
|||
|
|
project_location TEXT, -- 工程位置
|
|||
|
|
actual_start_time TEXT, -- 实际开工时间
|
|||
|
|
planned_completion_time TEXT, -- 计划竣工时间
|
|||
|
|
current_progress TEXT, -- 当前工程进度
|
|||
|
|
current_status TEXT, -- 当前工程状态
|
|||
|
|
participants_count INTEGER, -- 参建人数
|
|||
|
|
new_team_count INTEGER, -- 新班组进场数量
|
|||
|
|
new_person_count INTEGER, -- 新人进场数量
|
|||
|
|
leader_info TEXT, -- 带班人姓名、电话
|
|||
|
|
next_week_plan TEXT, -- 下周作业计划
|
|||
|
|
next_week_condition TEXT, -- 下周8+2工况内容
|
|||
|
|
is_schedule_tight BOOLEAN, -- 工期是否紧张
|
|||
|
|
has_off_book_matters BOOLEAN, -- 是否存在"账外事"
|
|||
|
|
current_risk_level TEXT, -- 当前风险等级
|
|||
|
|
risk_judgment_reason TEXT, -- 当前风险判断理由
|
|||
|
|
risk_tips TEXT, -- 隐患提示/工作要求
|
|||
|
|
completion_time TEXT, -- 完成时间
|
|||
|
|
next_review_time TEXT, -- 下次梳理时间
|
|||
|
|
remarks TEXT -- 备注
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 5.1.2 树结构表
|
|||
|
|
|
|||
|
|
用于存储和优化树状结构查询:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
CREATE TABLE tree_structure (
|
|||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|||
|
|
headquarters TEXT, -- 总部
|
|||
|
|
unit TEXT, -- 单位
|
|||
|
|
construction_unit TEXT, -- 建设单位
|
|||
|
|
parent_id INTEGER, -- 父节点ID
|
|||
|
|
node_level INTEGER, -- 节点级别(1:总部, 2:单位, 3:建设单位)
|
|||
|
|
FOREIGN KEY (parent_id) REFERENCES tree_structure(id)
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5.2 索引设计
|
|||
|
|
|
|||
|
|
为提高查询性能,建议创建以下索引:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
CREATE INDEX idx_unit ON projects(unit);
|
|||
|
|
CREATE INDEX idx_construction_unit ON projects(construction_unit);
|
|||
|
|
CREATE INDEX idx_sub_project_name ON projects(sub_project_name);
|
|||
|
|
CREATE INDEX idx_current_risk_level ON projects(current_risk_level);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 6. 界面设计分析
|
|||
|
|
|
|||
|
|
### 6.1 主界面布局
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
+------------------+------------------------+------------------------+------------------+
|
|||
|
|
| | | | |
|
|||
|
|
| | | | |
|
|||
|
|
| 工具栏 | 树状结构区 | 数据展示区 | 分析结果区 |
|
|||
|
|
| (VSCode风格) | (类似文件目录区) | (类似代码编辑区) | |
|
|||
|
|
| | | | |
|
|||
|
|
| - 工程 | 总部 | [筛选框: 单项工程名称] | |
|
|||
|
|
| - 风险 | ├─ 单位1 | +----+----+----+----+ | |
|
|||
|
|
| - 查找 | │ ├─ 建设单位1 | | □ | 字段1 | ... | | |
|
|||
|
|
| - ... | │ └─ 建设单位2 | +----+----+----+----+ | |
|
|||
|
|
| | └─ 单位2 | | □ | 字段2 | ... | | |
|
|||
|
|
| | ├─ 建设单位3 | +----+----+----+----+ | |
|
|||
|
|
| | └─ 建设单位4 | | □ | 字段3 | ... | | |
|
|||
|
|
| | | +----+----+----+----+ | |
|
|||
|
|
| | | | |
|
|||
|
|
+------------------+------------------------+------------------------+------------------+
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6.2 详情表单设计
|
|||
|
|
|
|||
|
|
点击数据行后弹出的详情表单:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
+----------------------------------------------+
|
|||
|
|
| 数据详情 [X] |
|
|||
|
|
+----------------------------------------------+
|
|||
|
|
| 单位: [ ] |
|
|||
|
|
| 项目编号: [ ] |
|
|||
|
|
| 安全编码: [ ] |
|
|||
|
|
| 大项工程名称: [ ] |
|
|||
|
|
| 单项工程名称: [ ] |
|
|||
|
|
| ... |
|
|||
|
|
| (所有字段以表单形式展示) |
|
|||
|
|
| |
|
|||
|
|
| |
|
|||
|
|
| [取消] [保存] |
|
|||
|
|
+----------------------------------------------+
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 7. 实现难点分析
|
|||
|
|
|
|||
|
|
### 7.1 Excel合并单元格处理
|
|||
|
|
|
|||
|
|
- **难点描述**:Excel中的合并单元格在导入时需要特殊处理
|
|||
|
|
- **解决思路**:
|
|||
|
|
- 使用专业的Excel处理库(如ExcelJS)识别合并单元格
|
|||
|
|
- 开发算法取消合并单元格并复制内容
|
|||
|
|
- 对处理后的数据进行验证和清洗
|
|||
|
|
|
|||
|
|
### 7.2 树状结构与数据筛选联动
|
|||
|
|
|
|||
|
|
- **难点描述**:点击树节点需要实时筛选相关数据
|
|||
|
|
- **解决思路**:
|
|||
|
|
- 设计合理的数据结构关联树节点和数据
|
|||
|
|
- 优化查询性能,可考虑缓存常用查询结果
|
|||
|
|
- 实现高效的状态管理机制
|
|||
|
|
|
|||
|
|
### 7.3 大数据量处理性能
|
|||
|
|
|
|||
|
|
- **难点描述**:当Excel数据量较大时,可能影响应用性能
|
|||
|
|
- **解决思路**:
|
|||
|
|
- 实现数据分批处理和导入
|
|||
|
|
- 优化SQLite查询(合理使用索引)
|
|||
|
|
- 实现数据虚拟滚动,只渲染可视区域数据
|
|||
|
|
|
|||
|
|
### 7.4 一键安装实现
|
|||
|
|
|
|||
|
|
- **难点描述**:实现Windows一键安装功能
|
|||
|
|
- **解决思路**:
|
|||
|
|
- 使用Electron-builder打包应用
|
|||
|
|
- 配置安装程序和自动更新功能
|
|||
|
|
- 处理权限和依赖问题
|
|||
|
|
|
|||
|
|
## 8. 项目风险分析
|
|||
|
|
|
|||
|
|
### 8.1 技术风险
|
|||
|
|
|
|||
|
|
- **风险点**:Electron应用体积较大,启动较慢
|
|||
|
|
- **应对策略**:
|
|||
|
|
- 优化应用打包配置
|
|||
|
|
- 实现启动优化
|
|||
|
|
- 考虑使用更轻量级的框架替代方案
|
|||
|
|
|
|||
|
|
### 8.2 数据处理风险
|
|||
|
|
|
|||
|
|
- **风险点**:Excel格式多样,可能存在特殊情况处理不当
|
|||
|
|
- **应对策略**:
|
|||
|
|
- 全面测试各种Excel格式
|
|||
|
|
- 实现错误处理和数据验证机制
|
|||
|
|
- 提供手动修正功能
|
|||
|
|
|
|||
|
|
### 8.3 用户体验风险
|
|||
|
|
|
|||
|
|
- **风险点**:界面复杂度高,用户上手困难
|
|||
|
|
- **应对策略**:
|
|||
|
|
- 提供简洁的操作流程
|
|||
|
|
- 添加必要的用户引导
|
|||
|
|
- 收集用户反馈持续优化
|
|||
|
|
|
|||
|
|
## 9. 总结与建议
|
|||
|
|
|
|||
|
|
### 9.1 项目总结
|
|||
|
|
|
|||
|
|
本项目是一个基于Electron+React的数据处理桌面应用,主要用于处理Excel表格数据并提供数据管理功能。项目核心功能包括Excel数据导入与处理、树状结构展示、数据筛选查询、详情编辑等。技术架构采用Electron+React+SQLite,界面风格类似VSCode。
|
|||
|
|
|
|||
|
|
### 9.2 实施建议
|
|||
|
|
|
|||
|
|
1. **分阶段开发**:
|
|||
|
|
- 第一阶段:实现基础数据导入和存储功能
|
|||
|
|
- 第二阶段:实现树状结构和数据展示功能
|
|||
|
|
- 第三阶段:实现数据编辑和分析功能
|
|||
|
|
- 第四阶段:优化界面和用户体验
|
|||
|
|
|
|||
|
|
2. **技术选型建议**:
|
|||
|
|
- Excel处理:推荐使用ExcelJS库,功能全面
|
|||
|
|
- UI组件:推荐Ant Design,有丰富的组件和VSCode风格主题
|
|||
|
|
- 数据库操作:推荐better-sqlite3,性能较好
|
|||
|
|
|
|||
|
|
3. **测试建议**:
|
|||
|
|
- 重点测试Excel导入功能,尤其是合并单元格处理
|
|||
|
|
- 全面测试树状结构筛选功能
|
|||
|
|
- 性能测试大数据量处理能力
|
|||
|
|
|
|||
|
|
### 9.3 扩展建议
|
|||
|
|
|
|||
|
|
1. **功能扩展**:
|
|||
|
|
- 添加数据导出功能
|
|||
|
|
- 实现数据备份和恢复功能
|
|||
|
|
- 添加数据可视化图表功能
|
|||
|
|
|
|||
|
|
2. **性能优化**:
|
|||
|
|
- 实现数据缓存机制
|
|||
|
|
- 优化大数据量处理性能
|
|||
|
|
- 减小应用体积
|
|||
|
|
|
|||
|
|
3. **用户体验提升**:
|
|||
|
|
- 添加自定义主题功能
|
|||
|
|
- 实现快捷键操作
|
|||
|
|
- 提供操作历史记录和撤销功能
|