通用明细表方案设计

该文档分5部分

  • 功能说明
  • 设计文档
  • 实现思路
  • 关键步骤
  • 任务WBS

功能说明

(1)实现明细表模板定义功能

(2)基于明细表模板定义,实现基础数据及统计数据获取

(3)基于明细表模板定义,填充表数据及UI展示数据。

(4)资源对话框管理明细表-删除及显示

设计文档

明细表迁移

场布算量明细表详细设计-2020.0826

实现思路

通用明细表方案设计_第1张图片

1.定义一个明细表模版类IBmDetailListTemplate

(1)主要是建立保存各类数据的映射关系。

(2)定义明细表数据显示模板,即每个明细单元显示什么数据

2.定义一个明细表数据过滤类IBmDetailListDataFilter

(1)实现哪些数据需要进行统计显示在明细表中

3.定义一个表单元数据填充器

4.定义个明细表类-BmDetailList

(1)解析明细表模板,调用不同表单元填充器,获取表单元数据将明细数据填充到数据表中。

(2)展现明细统计结果

5.静态结构图

通用明细表方案设计_第2张图片

6.产品端使用方法

(1)定义自己的明细表模版,包括如下数据:

  • 表头数据定义
  • 行数据字段定义
  • 统计对象CategoryID列表-哪些对象需要统计
  • 统计对象参数ID列表-需要统计对象的哪些参数
  • 分组参数ID列表-需要按哪些参数分组
  • 统计合并参数ID列表-哪些参数需要合并统计

(2)创建明细表,然后给明细表设置指定的模板

(3)然后更新明细表

关键步骤

1.明细表模板的设计-BmDetailListTemplate

通用明细表方案设计_第3张图片

  主要是建立保存各元类数据的映射关系。

(1) 模板类单元格数据有四类:

  • 统计类数据
  • 静态固定数据-例如表头
  • 行重复数据 
  • 内置数据-例如序列号

(2)数据源参数定义

  • 统计对象CategoryID列表-哪些对象需要统计
  • 统计对象参数ID列表-需要统计对象的哪些参数
  • 分组参数ID列表-需要按哪些参数分组
  • 统计合并参数ID列表-哪些参数需要合并统计

(3)元数据结构-CellMetaDataInfo

  •   单元格行位置- (startCellColIndex,endCellColIndex,StartRowIndex,EndRowIndex);
  •   对应统计对象参数ID
  •   单元格内数据类型
  •   对齐样式
  •   字体样式
  •   字体大小
  •   边框线样式

2.明细表数据过滤类设计

(1)实现明细统计过滤逻辑,生成明细表的数据源。

 通用明细表方案设计_第4张图片

数据过滤器处理逻辑:

a. 根据模板定义的类型ID及参数ID,获取基础的原始表数据,并存入数据基础表中。

b.利用sqlite的查询功能处理表达式逻辑计算功能,获取包含推导数据和原始数据,并存入衍生数据表中。

c.根据模板填充表单元定义,生成统计SQL语句,利用sqlite的统计功能,生成统计数据和填充到表中的数据。

(2)提供明细表数据源的访问接口

  •  提供接口访问统计数据-根据统计对象参数ID获取值
  •  提供提供分组行单元数据
  •  提供分组个数接口
  •  提供静态固定数据访问接口,例如表头数据等

  每个明细表数据过滤器有唯一的名称,通过名称获取对应的数据过滤器。

3.明细表数据填充类设计

(1)设计表单元填充接口类-IBmDetailListCellDataFiller,派生四个四类:

  •  行单元填充类-BmDetailListRowCellDataFiller
  •  表头数据单元填充类-BmDetaiListHeaderDataFiller
  •  统计数据单元填充类-BmDetailListStatisticsDataFiller

(2) 表数据填充接口-BmDetailListDataFiller

负责解析模板数据,调用不同的数据单元填充类填充明细表单元。

由具体的实现类完成。

通用明细表方案设计_第5张图片

 

4.明细表类设计

(1)可以复用GAP中的代码

(2)新增如下变量

        DATA(ElementID,m_detailListTemplateID)

        DATA(bool,NeedUpdateData)-表明数据是否过时,需要更新

 (3)调用明细表数据填充类,获取单元填充数据

5.资源管理器-明细表项

(1)使用资源管理器自定义上下文菜单处理接口.

IBmModelViewDlgContextMenuEventHandler

(2)使用资源管理器自定义鼠标双击操处理接口

IBmModelViewDlgDoubleClickEventHandler

(3)使用资源管理器自定义刷新处理接口

IBmModelViewDlgRefreshEventHandler

插件加载时,注册事件处理器。卸载时,注销事件处理器。

 

明细表任务WBS

任务 子任务 工时
明细表模板类 实现明细表模板类定义 0.5
实现明细表单元结构设计 0.5
完成明细表模板数据合法性检查 0.5
完成明细表模板表单元映射关系及表单元访问接口 1.5
明细表数据过滤 完成过滤器接口设计 0.5
完成过滤器数据接口实现 0.5
完成过滤器管理实现 0.5
明细表数据填充器 完成表数据填充器类及单元数据填充器设计 0.5
完成表头、表名及固定数据数据填充器实现 0.5
完成行数据填充器实现 1
完成统计数据填充器实现 1
明细表类 完成明细表数据添加创建API 1
完善迁移代码功能 1
明细表数据更新 1
明细表UI 完成在资源管理管理明细表显示 0.5
完成在资源管理管理菜单处理 1
完成对话框中显示明细表数据 1
完成在资源管理管理双击操作 1
其他 迁移代码完善及问题修复 3
测试UI 0.5
空指针检查 0.5
代码评审 2
总工时 20
预计 24

 

你可能感兴趣的:(CAD开发)