t+产品开发手册

上传人:gbs****77 文档编号:10638328 上传时间:2020-04-13 格式:DOCX 页数:209 大小:5.93MB
返回 下载 相关 举报
t+产品开发手册_第1页
第1页 / 共209页
t+产品开发手册_第2页
第2页 / 共209页
t+产品开发手册_第3页
第3页 / 共209页
点击查看更多>>
资源描述
1 T 产品开发手册 作 者 T 产 品 研 发 部 版 本 号 1 0 时间 版 权 所 有 畅 捷 通 信 息 技 术 有 限 公 司 ChanJet Corp Ltd 2 3 1 变更说明 目前的 T 平 台 在 不 断 的 完 善 过 程 中 因 此 T 产 品 开 发 过 程 也 会 不 断 变 化 下 面 的 表 单 用 于 详 细 记 录 本 开 发 手 册 变 更 过 程 序 号 变 更 位 置 变 更 内 容 说 明 变更人 变 更 日 期 1 2 3 4 5 6 7 8 9 2 引 言 2 1 编 写目 的 随着 T 产 品 业 务 的 不 断 扩 大 个 性 化 需 求 越 来 越 多 如 何 能 够 让 其 他 人 员 利 用 T 平 台 进 行 个 性 化 开 发 是 要 面 临 的 重 要 问 题 同 时 随 着 T 产 品 开 发 人 员 流 动 如 何 降 低 新 员 工 学习成 本 更快 的融 入开 发团队 也 是亟 待解 决的 问题 为解 决以 上问 题 急需一 个成 熟的 开 发 手 册 为 此 撰 写 此 T 产 品 开 发 手 册 2 2 名 词 术 语 说 明 在开发 描述 中会 涉及 到一 些通用 的名 词术 语 为便 于阅读 者理 解 对这 些名 词术语 进行 进 一 步 说 明 具 体 说 明 如 下 序 号 名 称 术 语 详 细 描 述 变 更 日 期 1 2 3 4 5 6 7 4 8 9 2 3 参 考资 料 3 开发模型 3 1 拓 扑模 型 此系统 是一 个 B S 架 构的 产品 服 务器 集中部 暑 在内部 局域 网中 用 户可 以通过 浏览 器 直 接 访 问 WEB 服 务 器 其 它 受 管 辖 的 局 域 网 也 可 以 通 过 专 网 访 问 内 网 中 WEB 服 务 器 另 外 Internet 用 户 可 以 跨 越 防 火 墙 通 过 代 理 服 务 器 进 行 业 务 操 作 为了提 高性 能 我们 可以 把 web 服务 器与 应用 服务 部署在 一台 服务 器上 减 少不必 要的 远程调 用 如果 用户 想要 把 web 服务 器与 应用 服务 器进行 物理 上的 分离 部暑 我们 的应 用框 架 也 支 持 这 种 部 暑 并 且 我 们 采 用 http 的 传 输 协 议 此 系 统 架 构 中 采 用 后 台 提 供 服 务 的 架 构 设 计 降 低 产 品 中 各 模 块 的 偶 合 度 逻 辑 模 型 Intranet Internet 通 数 据 库 服 务 器 通 应 用 服 务 器 移动 PC 通Web服务器 防火墙 Web客户端Web客户端 Web客户端 PDA 5 上 面 所 式 三 层 服 务 体 系 结 构 基 本 上 是 一 个 松 散 的 三 层 体 系 结 构 三 层 分 别 是 表 示 层 表 示 层 提 供 应 用 程 序 的 用 户 界 面 UI 处 理 用 户 和 软 件 间 的 交 互 主 要 职 责 是 向 用 户 显 示 信 息 并 把 从 用 户 获 取 的 信 息 解 释 成 业 务 层 或 者 数 据 源 层 的 各 种 动 作 业务层 业 务层 实现 应用程 序的 业务 逻辑 根 据输入 或者 已有 的数 据进 行计算 对从 表 现 层 输 入 的 数 据 进 行 验 证 处 理 从 表 现 层 接 受 到 的 命 令 来 确 定 应 该 调 用 那 些 数 据 源 逻 辑 数 据 源 层 数 据 层 提 供 对 外 部 系 统 如 数 据 库 和 其 它 系 统 提 供 的 服 务 的 访 问 每 一 层 应 当 按 下 面 各 段 落 所 述 进 行 构 造 表 示 层 包 括 一 系 列 与 用 户 交 互 的 窗 体 或 页 面 每 个 窗 体 用 来 显 示 系 统 提 供 的 信 息 以 及 传 递 用 户 的 输 入 信 息 这 种 基 于 窗 体 的 用 户 界 面 包 括 两 种 类 型 的 组 件 用 户 界 面 组 件 UI 基 于 NET Framework 提 供 的 组 件 包 括 Win Form 组 件 和 Web Form 组 件 第 三 方 提 供 的 组 件 和 平 台 开 发 的 组 件 例 如 单 据 参 照 单 据 列 表 组 件 等 用 户 界 面 处 理 组 件 UIP 复杂的 用 户 界面 通常 需要 很多非 常复 杂的 窗体 为 了提 高 其可 复用 性 可维 护 性和可 扩展 性 需要 创建 一个分 离用 户界 面处 理的 组件 以封 装窗 体和 界面 导航之 间的相 关逻 辑 可以 对一 个简单 窗体 中组 件之 间的 依赖 确认 和导 航应 用相 同的概 念 业 务 层 大型的企业级应用通常围绕业务组件和业务过程进行构造 这些通常以业务层的很多组件 实体 代理和接口展现出来 业 务 对 象 BE 业 务 对 象 封 装 一 个 业 务 中 的 元 数 据 存 储 并 发 和 一 件 事 物 的 业 务 规 则 过 程 或 事件 多个独立的但有关联关系的业务对象可以一起协作来完成一个应用 完成不 6 同的任务需执行很多具有不同特点的业务对象 业务对象负责执行包括强制的业务 规则 应用规则 数据有效性 并发和存储等所有方面的内容 业务实体对象是业 务 中 实 际 存 在 的 事 物 或 概 念 是 对 ER 模 型 中 概 念 的 面 向 对 象 的 扩 展 业务处理对象 BP 描述贯穿 业务的工作流程和信息 这些处理驱动业务实体完成业务功能 业 务处理对象可能由工作流系统 业务对象管理器 面向对象语言 程序语言 或交 互过程定义系统实现 通过调度一个或多个业务对象实现业务处理 业务处理可以 作为对象的一部分在内部完成 服 务 接 口 Interface 一个应用可能会以服务的方式提供一些功能供其它应用使用 服务接口代表这种对外 的服务 它隐藏了实现细节 只提供必要的业务接口 表 示 和 业 务 的 调 用 业 务 层 的 调 用 服 务 通 过 平 台 提 供 的 服 务 工 厂 来 实 现 这 样 有 利 于 二 次 开 发 服 务 能 够 动 态 的 扩 展 到 应 用 程 序 中 去 数 据 层 业务应用必须访问存储在数据库中的数据 这些数据库通常是关系数据库 数据访问组件负责访 问存储在这些数据库中的数据 并与业务层进行交互 数据访问组件隔离业务层和数据存储管理 这种隔离有以下好处 减少数据库提供者变更带来的影响 减 少 因 数 据 对 象 变 更 带 来 的 影 响 如 变 更 数 据 库 的 schema 封装数据的处理操作 这将在很大程度上减少测试和维护工作 通 过 平 台 提 供 的 数 据 访 问 服 务 组 件 管 理 O R mapping的 复 杂 度 同 时 能 够 再 不 改 变 表 现 层 和 业 务 层的情况下来转换不同的数据库 实 体 数 据 传 递 EntityData 在 Web服 务 器 端 和 应 用 服 务 器 端 通 讯 或 应 用 之 间 通 讯 时 我 们 采 用 粗 粒 度 的 服 务 使 用 DTO Data Transfer Object 来 传 递 数 据 在 设 计 时 我 们 将 为 每 一 个 实 体 类 自 动 产 生 一 个 EntityData数 据 类 该 类 中 包 含与实体相同的属性 在前端可以使用数据类 但不能使用实体类 服务网关 业 务 组 件 经 常 必 须 访 问 内 部 或 外 部 的 服 务 或 应 用 一 个 服 务 网 关 是 封 装 了 接 口 协 议 和 使 用 这 种 服 务 的代码的组件 服务网关可以模拟外部服务促进领域测试 技术平 台 EAP 基 础 引 擎 服 务 总 线 O R Maping 系 统 日 志 事 务 缓 存 Ajax 认 证 安 全 等内容 基础组件和模版组件 工作流 数据交换 业务平 台 BAP 根 据小 企业的 特点 定业 业务 模式 框架 7 3 2 物 理模 型 客户端 浏览器 0 Http 1 1 Web服 务 器 应用服务器 T21协 议 UIC UIP Https协 议 1 1 Service BP Interface EAP BE EAP 1 1 数据库服务器 用 户 界 面 组 件 UIC 和 用 户 界 面 进 程 组 件 UIP 和 业 务 层 接 口 Interface 是对 Internet 公 开 的 并 且 可 能 潜 在 地 与 许 多 客 户 端 交 互 由 于 这 些 表 示 层 组 件 通 常 公 开 于 公 司防火 墙 外 部 因此 其安 全要求 通常 比未 公开 的组 件具有 多得 多的 限制 此 外 许多 组织 要 求公开 于 Internet 中的 服务器 不能 包含 任何 敏感 数据 因此 通过 将表 示 层组件 单独 放入 一级并 配 置 该级 使其 具有 最高安 全性 可 显著 提高 解决方 案的 总体 安全 性 同时可 尽量 降低 对 安 全 性 要 求 相 对 较 低 的 组 件 的 影 响 由于表 示层 组件 公开 于 Internet 中 因 此其 性能 和 可伸缩 性要 求通 常不 同于 域和数 据 访问层 组 件 的性 能和 可伸 缩性要 求 表 示层 组件 通常 为处理 以突 发方 式与 组件 交互的 许多 并 发用户 而 进 行优 化 域 和数 据访问 层组 件通 常为 处理 来自相 对较 少的 源所 发出 的稳定 请求 流 而进行 优 化 配置一 个可 充分支 持这 两组 优化 的级 可能是 非常 困难 的 因此 解 决方 案是 使 用 两 级 并 使 每 一 层 针 对 所 驻 留 的 组 件 类 型 进 行 优 化 3 3 部 署路 径 T 核 心 应 用 层 App 扩 展 层扩 展 纬 度 逻 辑 纬 度 Core Extends WEB 服 务 器 UFSmart update Eap ColumnSet set IsSystem 1 IsDevField 1 where SolutionID select id from eap ColumnSetSolution where Name 自 己 命名的方案 Name 4 预 置 展 示 字 段 23 24 其 中 需 要 注 意 的 字 符 类 型 的 小 数 位 数 和 精 度 字 段 必 须 为 null 字 段 预 置 和 DTO 对 应 如 果 是 引 用 关 系 则 依 据 DTO 中 属 性 层 级 关 系 预 置 如 上 图 所 属 仓 库 预 置 5 导 出 脚 本 通 过 工 具 中 导 出 菜 单 则 导 出 栏 目 预 置 脚 本 至 此 栏 目 预 置 完 成 4 2 1 1 3 6 第六步 卡片表单预置 卡 片 表 单 目 前 有 可 视 化 预 置 工 具 工 具 位 置 安 装 包 Appserver server VoucherDesigner exe 预 置 过 程 如 下 1 确 定 卡 片 所 属 分 组 目 前 包 暂 命 名 为 xx 公 司 管 理 新 建 分 组 如 下 25 2 确 定 物 流 公 司 卡 片 表 单 名 称 并 创 建 表 单 命 名 开 发 者 可 以 自 己 定 义 对 于 物 流 公 司 卡 片 表 单 命 名 为 AppCjtIDLogisticVoucher 其 中 表 单 创 建 必 须 依 赖 于 已 存 在 DTO 3 通 过 拖 拽 方 式 创 建 表 单 26 如上图 所示 对 于文 本类 型的属 性 直接 拖拽 一 般不用 进行 修改 即可 对 于引用 类型 的则 需 要 设 置 对 一 些 属 性 进 行 设 置 以 满 足 控 件 要 求 比 如 下 拉 参 照 等 4 导 出 元 数 据 脚 本 通 过 工 具 的 导 出 元 数 据 功 能 实 现 对 表 单 原 始 的 导 出 如 下 图 所 示 27 至 此 卡 片 表 单 预 置 完 成 4 2 1 1 3 7 第七步 配置及功能实现 通 过 以 上 6 步 数 据 及 代 码 准 备 工 作 基 础 设 置 列 表 及 表 单 开 发 可 以 如 下 配 置 并 实 现 1 Website 创 建 独 立 的 运 行 目 录 命 名 为 AppCjtID 2 增 加 新 增 模 块 配 置 文 件 配 置 信 息 在 Website BAPFunctionMapping config 中增加新增模块配置文件的配置信息如 下 28 3 新 增 配 置 文 件 在 Website AppCjtID Config 目 录 下 创 建 voucher config 配 置 文 件 内 容 如 下 其 中 红 圈 标 注 部 分 需 要 注 意 a subsystem 节 点 的 assembly 属 性 指 的 是 前 端 对 应 的 后 台 处 理 程 序 集 名 称 b controller 节点中 viewName 为 baseInfoCard 对 应 的 type 指 的 是 卡 片 表 单 后 台 处 理 类 名 templateName 属 性 节 点 对 应 的 value 值 指 的 是 该 卡 片 表 单 对 应 的 卡 片元数 据名 称 已在 前面 预置过 c controller 节 点 中 viewName 为 baseInfoListView 指 的 是 卡 片 列 表 后 台 处 理 类 名 columnSetName 属 性节 点对应 的 value 值指 的是 该卡片 列表 对应 的栏 目方 案 名称 已在 前面 预置 过 4 新 建 卡 片 表 单 前 台 处 理 脚 本 并 修 改 对 应 的 后 台 处 理 类 a 在 Website AppCjtID Js 下 新 增 脚 本 文 件 CjtIDLogisticCard js 并 添 加 内 容 如 下 其 中 T Bap Declare 部 分 是 声 明 命 名 空 间 下 面 的 部 分 是 创 建 改 卡 片 表 单 自 己 的 前 台 处 理 类 并 继 承 自 Website BAPView Js Voucher vsdoc js 文 件 中 Ufida T BAP Client Card 脚 本 基 类 29 b 修 改 卡 片 表 单 对 应 的 后 台 处 理 类 Ufida T App CjtID UIP CjtIDLogisticCardController 如 下 如 红 色 标 注 所 示 需 要 声 明 ClientObject 属 性 参 数 为 前 台 js 类 名 并 注 册 脚 本 5 新 建 卡 片 列 表 前 台 处 理 脚 步 并 修 改 对 应 的 后 台 处 理 类 a 在 Website AppCjtID Js 下 新 增 脚 本 文 件 CjtIDLogisticList js 并 添 加 内 容 如 下 其 中 T Bap Declare部 分 是 声 明 命 名 空 间 下 面 的 部 分 是 创 建 改 卡 片 表 单 自 己 的 前 台 处 理 类 并 继 承 自 Website BAPView Js List vsdoc js文 件 中 Ufida T BAP Client ReadOnlyList脚 本 基 类 b 修 改 卡 片 表 单 对 应 的 后 台 处 理 类 Ufida T App CjtID UIP CjtIDLogisticListController类 如下 30 如 红 色 标 注 所 示 需 要 声 明 ClientObject 属 性 参 数 为 前 台 js 类 名 并 注 册 脚 本 c 重 新 编 译 此 dll 6 修 改 服 务 配 置 文 件 服 务 配 置 文 件 在 安 装 包 Appserver config 目 录 下 涉 及 到 配 置 文 件 的 修 改 如 下 可 以 在 原 有 配 置 文 件 的 基 础 上 新 增 服 务 接 口 配 置 也 可 以 重 新 创 建 自 己 的 服 务 接 口 配 置 文 件 并 把 此 配 置 文 件 添 加 上 服 务 配 置 中 目 前 采 用 后 者 配 置 如 下 a 修 改 services xml 如 下 b 新 增 配 置 文 件 services appcjtid xml 并 配 置 如 下 其中 name 为新 增服 务接 口 名称 className 是 接口 对 应服务 实现 类名 loadFrom 是 服 务 所 在 程 序 集 7 修 改 菜 单 配 置 文 件 a 进 入 菜 单 预 置 工 具 修 改 物 流 公 司 菜 单 对 应 的 RequestUrl为 BAPView BaseInfoList aspx sysId AppCjtID 2 如 果 是 报 表 联 查 单 据 则 在 报 表 工 具 的 栏 目 设 置 中 将 链 接 标 题 列 输 入 查 看 被 联 查 单据 菜单 名 链接 提示 列 输入 查 看 菜 单名 d 查询预置 预 置 分 组 序 号 参 见 需 求 的 分 组 顺 序 分 组 名 称 参 见 需 求 的 分 组 中 的 列 名 分 组 小 计 参 见 参 见 需 求 的 分 组 中 的 默 认 分 组 小 计 分 组 汇 总 参 见 参 见 需 求 的 分 组 中 的 默 认 分 组 汇 总 简 单 查 询 来 自 于 需 求 的 过 滤 条 件 的 列 名 注 意 设 置 完 毕 之 后 需 要 使 用 searchTool 进 一 步 设 置 不 要 使 用 右 下 角 的 设 置 59 至 少 保 存 一 次 否 则 看 到 的 东 西 不 会 保 存 到 数 据 库 报 错 找 不 到 查 询 方 案 4 查 询 预 置 工 具 SearchTool exe 的 使 用 查 询 预 置 工 具 提 供 了 设 置 报 表 高 级 或 简 单 查 询 的 过 滤 条 件 字 段 查 询 页 面 中 显 示 查 询 条 件 的 预 置 注意 首先 参照 需求 文档 的 过 滤条 件 设置 简 单方案 过滤 条件 表 格的 类 型 对 应查 询工 具的 控 件类型 设置 如下 逻辑 类 型 控 件类 型 设 为 CheckBox 默认 值也 需 要设置 为要 求的 数值 日期 类 型 控 件类 型 设 为 DateSelectDropDown 条件值 类型 设 为 Text 类 型 默 认值 根 据 需 求 说 明 设 置 枚举 类 型 控 件类 型 设 为 ComboBox 默认 值根 据 需求设 置 数值类 型 控 件类 型 设 为 NumTextBox 条 件值 类 型设 为 Text 类 型 字符 类 型 需要 根据 过 滤条件 表 格的 说 明 内容设 置 控件 类型 说 明 包 含 区 间 查 询 与 参 照 控 件 类 型 设 为 RefComboBox 条 件 值 类 型 设为 Code 类型 60 说 明 不 包含 区间 查询 但包 含 参 照 控件 类型 设 为 MultiRefTextBox 条 件 值 类 型 设 为 ID 类 型 但 制 单 人 修 改 人 审 核 人 字 段 的 控 件 类 型 设 为 TextComboBox 条 件 值 类 型 设 为 Text 类 型 说 明 不 包 含 区 间 查 询 与 参 照 控 件 类 型 设 为 TextBox 条 件 值 类 型 设为 Text 类 型 整型 控 件类 型 设为 NumTextBox 条 件值 类型 设 为 ID 类型 具 体 的 字 段 查 询 设 置 可 以 查 找 eap SearchPlanItem 表 相 应 字 段 的 预 置 高级 方案 只 需要 从 从简单 方案 导入 字段 再 进行简 单修 改即 可 5 自 定 义 项 数 据 预 置 a 需求说明 1 基 础 档 案 只 有 专 用 的 5 个 字 符 5 个 数 值 5 个 共 10 个 2 表 头 自 定 义 项 有 6 个 专 用 字 符 6 个 数 值 6 个 6 个 公 用 字 符 6 个 数 值 6 个 共 24 个 3 表 体 自 定 义 项 有 4 个 专 用 字 符 4 个 数 值 4 个 4 个 公 用 字 符 4 个 数 值 4 个 共 16 个 4 顺 序 专 用 字 符 1 n 专 用 数 字 1 n 公 用 字 符 1 n 公 用 数 字 1 n b 预置报表元数据 打开报 表工 具 打开 一个 报表的 字段 设置 界面 点 击导入 自定 义项 按钮 输 入 Dto 名称 别 名 输 入 自 定 义 想 数 目 点 击 确 定 自 动 生 成 报 表 元 数 据 61 元 数 据 规 则 DtoPro 前 缀 的 预 制 规 则 为 当 前 数 据 所 在 的 单 据 的 名 称 属 性 的 全 路 径 RefDtoPro 前 缀的 预制 规 则为 被引 用 的 Dto 所 在单 据的名 称 被引 用 的 dtoName 例如 销 售 订 单 SaleOrder 的 前 缀 DtoProp 前 缀 SaleOrder RefDtoProp 前 缀 SaleOrder SaleOrderDTO 销 售 订 单 明 细 SaleOrderDetail DtoProp 前 缀 SaleOrder SaleOrderDetails RefDtoProp 前 缀 SaleOrder SaleOrderDetailDTO 销 售 订 单 中 的 客 户 的 自 定 义 项 DtoProp 前 缀 SaleOrder Customer RefDtoProp 前 缀 Partner PartnerDTO 销 售 订 单 中 的 销 售 订 单 明 细 中 的 货 品 的 自 定 义 项 DtoProp 前 缀 SaleOrder SaleOrderDetails Inventory RefDtoProp 前 缀 Inventory InventoryDTO 所 有 其 他 相 关 元 数 据 中 RefDtpProp 的 属 性 一 律 等 于 VoucherName DtoName FieldName 此 属 性 用 于 更 新 其 他 相 关 元 数 据 的 启 用 状 态 可 见 以 及 同 步 标 题 由于表 头自 定义 项和 表体 自定义 项也 进行 分组 所以 需要把 分组 中的 自定 义项 进行上 面 的 设 置 和 设 置 默 认 不 显 示 isSystem 1 6 特 别 说 明 分 级 处 理 说 明 分 级 预 置 只 针 对 报 表 的 汇 总 表 与 执 行 表 明 细 表 与 帐 表 不 参 与 分 级 62 a 基础档案进行了如下处理 增 加 了 几 张 表 将 原 来 的 递 归 型 的 转 换 为 非 递 归 的 数 据 行 有级次的基础档案 基础档案的部门 费用 收入 货位 出入库类别 地区档案 货品分类 往来分类 上述八种档案 创建对应的表 AA ParentXXX 具体如下 部门 AA ParentDepartment 费 用 AA ParentExpenseItem 收入 AA ParentIncome 货位 AA ParentInventoryLocation 出入库类别 AA ParentRDStyle 地区档案 AA ParentDistrict 货品分类 AA ParentInventoryClass 往来分类 AA ParentPartnerClass b 字段预制的处理 如 图 所 示 设 置 分 级 父 字 段 末 级 字 段 标 识 可 分 级 次 63 c 分 组 预 置 需要 可 分级 次 汇 总 级次 需 求默 认 为 1 分 级父字 段 末级 字段 标识 如 果前 面 设 置 好 这 里 会 自 动 带 过 来 否 则 要 手 工 输 入 严 格 区 分 大 小 写 d 查 询 的 预 置 查 询 工 具 的 分 级 字 段 需 要 过 滤 类 型 特 殊 需 要 作 如 下 处 理 in select IDSon from AA ParentDepartment where IDParent in 0 64 注 意 使 用 上 级 的 表 的 ID 不 要 使 用 子 表 的 举 例 地 区 字 段 为 partner iddistrict 不 要 使 用 District Id 部 门 字 段 为 arap iddepartment 不 要 使 用 Department Id 往 来 单 位 分 类 为 partner idpartnerclass 不 要 使 用 PartnerClass Id 2 7 自 由 项 数 据 预 置 报 表 预 制 工 具 的 字 段 设 置 加上 关 联 DTO 属性 格 式为 Eap EnumItemDTO FreeItem 序号 报 表 预 制 工 具 的 查 询 设 置 如果自 由项 需要 分组 需 要将分 组字 段设 置的 系 统 字段 栏勾 选 已 使其 在没 有启用 的情 况 下 不 显 示 出 来 65 查 询 工 具 设 置 系 统 字 段 为 true 4 2 2 4 UIP 文件的建立 建 立 各 模 块 的 项 目 Ufida T 模 块 编 码 名 称 Report UIP 如 Ufida T PU Report UIP 建 立 文 件 注 意 命 名 规 范 要 和 报 表 预 置 一 致 参 考 各 模 块 代 码 举例 进 货单 统计 表 namespace Ufida T PU Report UIP public class PurchaseArrivalSumRpt DetailAndSumReportTemplateBase IBeforeAssociate 进货单统计表标题 protected override object PageTitle get return GetMultiLanguageText PU ClientTip PurchaseArrivalSumRpt Title 传入查询带入项 protected override void CreateSearchContentHeader IList text text Add PurchaseArrivalDTO voucherdate text Add PurchaseArrivalDTO Vendor Code text Add Inventory code region IBeforeAssociate 成员 此方法在点击联查时触发 此方法主要完成 功 能 权 限 的 判 断 url的 重 定 向 返 回 null 联 查 的 页 签 就 不 会 打 开 66 返 回 的 string数 组 第 一 个 是 url 第 二 个 是 tabText 联 查 路 径 编 号 名 称 public string BeforeAssociate UrlInfo url string strCode string tabText string destUrl string destCode string destTitle string voucherDate url QueryString VoucherDate string fromField url QueryString FromField DateTime openDate GetSystemOption GetOpenDate if string IsNullOrEmpty fromField destCode SYS0923 destTitle HttpContext GetGlobalResourceObject PU ClientTip Common QiChu ToString else destUrl url ToString destCode strCode destTitle tabText return new string destUrl ToString destCode destTitle endregion PageTitle属性 CreateSearchContentHeader方法 BeforeAssociate方 法 在 报表ui p 页 面 应 用 比 较 普 遍 它 们 所 实 现 的 功 能 如 相 关 注 释 所 示 下 面 对 它 们 作 逐 一 说 明 PageTitle 属性 用 来 在 卡 片 上 显 示 相 应 的 菜 单 标 题 其 返 回 的 GetMultiLanguageText 方 法 是 调 用 基 类 的 GetMultiLanguageText string module string name 封 装 页 面 类 得 到 多 语 的 方 法 触发时 机 当 进行 报表 查 询 调 用页 面的 基类 完 成控制 器的 分配 任务 执 行模板 类的 基类 67 TemplateBase 的 初 始 化 主 流 程 方 法 并 用 SetPageTitle 控 制 页 面 的 标 题 的 设 置 同 时 调 用 ReportSearchTemplate 页面 的 PageTitle 重 写属 性 之后再 获取 相关 的报 表数 据 将获 取的 数 据带入 给基 类的 初始 化方 法的相 关参 数 再次 调 用 SetPageTitle 返回 报 表 uip 的 PageTitle 属 性 CreateSearchContentHeader 方法 用于显 示报 表的 表头 要 依据需 求文 档的 过滤 条件 的 带 入 报 表 列 的显 示设 置 其 中的 字段 名 字 具 体 是 取 数 据 库 的 表 eap searchplanitem 的 fieldname 的 名 称 具 体 可 以 查 看 上 述 代 码的 CreateSearchContentHeader 方法 注意 当用 查询 预置 工具 修改了 报表 带入 项字 段名 称的时 候 也必 须同 步修 改相 应 UIP 页面 的 CreateSearchContentHeader 方 法 的 传 入 带 入 项 的 名 称 触发时 机 当 进行 报表 查 询 根 据页 面的 url 请求 类型 找到 相应 的控 制模 板类并 运行 初 始 化 主 流 程 调 用 报 表 模 板 基 类 的 BuildReportHeader 方 法 构 建 报 表 默 认 头 结 构 同 时 调用 C reateSearchContentHeaderFromAssociate IList content 创 建 联 查 报 表 带 入 项 返 回 报 表 uip 的 CreateSearchContentHeader IList text 方 法 BeforeAssociate 方法 主要完 成对 功能 权限 的判 断 url 的重 定向 如 果此 方法返 回 null 联查 的页 签就不 会打 开 非 null 就 返 回 的 string 数 组 所 带 的 参 数 destUrl 是 联 查 的 url destCode 是 菜 单 编 码 destTitle 是 菜 单 标 题 这 几 个 参 数 的 值 是 根 据 报 表 工 具 的 栏 目 设 置 的 联 查 标 题 联 查 提 示 预 置 得 到 的 说 明 当 然 BeforeAssociate方 法 的 根 据 url检 查 权 限 的 功 能 已 经 在 报 表 模 板 基 类 DetailAndSumReportTemplateBase实现 了 如 果联 查的 数 据是期 初单 据的 内容 这 时就需 要加 以 区别 主要 是针 对 string 数组 的参 数取 值 处 理 因 为该数 组参 数值 预置 实现 的只是 非期 初 的 情 况 期 初 的 情 况 不 能 用 预 置 数 据 体 现 出 来 就 需 要 在 相 应 的 UIP页 面 用 代 码 区 别 出 联 查 的 单 据 日 期 是 否 小 于 所 用 帐 套 的 开 账 日 期 从 而 联 查 出 期 初 的 单 据 触发时 机 当 点击 报表 的 联查 需要 得到 联查 的 url 信息 跳 转到 url 指定 的 页面 显示 相 应 的 数 据 内 容 具 体 是 根 据 基 类 的 Redirect string url string code 检 查 是 否 有 相 应 报 表 的查看 权限 并 根据 报表 uip 继承的 IBeforeAssociate 接口 返回 报表 uip 的 BeforeAssociate 方 法 68 4 2 2 5 报表服务 a 报表服务代码主要结构 报 表 服 务 销 售 模 块 的 代 码 目 录 如 下 下 面 是 最 基 本 的 一 个 主 SQL 的 结 构 namespace Ufida T SA Report Service AccountRpt public class CustomerAccountRpt AbstractDetailReport 核 心 SQL 这 是 拼 写 SQL最 主 要 的 地 方 登 陆 用 户 传 过 来 的 查 询 条 件 联 查 的 是 传 过 来 的 url 查 询 类 型 protected override string GetDetailSql object userId string whereSql ReportSearchType reportSearchType 1 主 SQL select 2 from left join 69 3 组 织 WhereSql 这 是 难 点 自 动 生 成 或 者 特 殊 的 需 要 自 己 手 工 组 织 解 释 基 类 提 供 了 GetWhereSqlFromSearchPlan 直 接 调 用 即 可 4 组织数据权限 Sql 5 加 上 排 序 Order by 从 上 面 的 代 码 可 以 看 出 报 表 服 务 的 动 态 sql 主 要 由 5 部 分 组 成 1 select 字段 2 主 表 以 及 根 据 显 示 字 段 动 态 拼 接 得 left join 表 3 where 条件 4 数 据 权 限 控 制 5 order by 排 序 语 句 其 中 关 键 是 两 点 1 根 据 显 示 字 段 动 态 拼 接 left join 表 之前的 做法 是把 所有 的查 询字段 和所 有相 关联 的表 都放到 主 sql 中 这样 造成 很多数 据 冗余 同 时导 致整 个报 表 sql 语 句执 行效 率较 低 因 为大多 数时 候用 户不 会让 全部数 据显 示 基于这 个思 想 现 在 的 sql 语句尽 量做 到动 态拼 接 就 是根据 显示 字段 动态 的拼 接 left join 所 关 联 的 表 2 独 立 获 得 的 Where 语 句 之 前 的 where 由 于 主 sql 把 所 有 关 联 的 表 都 进 行 了 left join inner join 所 以 直 接 返 回 所 有 查 询 条 件 拼 接 的 字 符 串 而 由 于 1 1 中 描 述 对 字 段 和 left join 的 处 理 方 式 所以直 接 返 回所 有的 查询 条件拼 接的 字符 串就 不适 用了 因为 有可 能查 询条 件有的 条件 而 没 有 相 关 联 的 left join 表 现 在 的 处 理 方 式 是 where 不 与 字 段 和 left join 表 相 关 联 独 立 进 行 查 询 b 动 态 sql 实现方法 1 预 置 selectFieldName 由于之前 报表 工具没 有实 现把 字 段设 置 中 选 择字段 导入 到 栏 目预 置 导 致 eap reporttablecol 中 selectFieldName 字 段 为 空 新 报 表 工 具 已 实 现 该 功 能 但 这 里 有 一 个 要 提 醒 大 家 就 是 如 果 大 家 之 前 在 字 段 设 置 中 把 选 择 字 段 和 查 询 字 段 都 预置成 字段 名称 也 就 是这三 个预 置数 据都 是字 段的别 名 现 在用这 个工 具是不 合适 的 因 为 现 在 优 化 方 案 中 动 态 拼 查 询 字 段 而 这 个 字 段 会 用 到 eap reporttablecol 中 70 selectfieldname 拼成 类 似与 se lectfieldname as 别名 如果三 个预置数 据 都 是 一 样 不 符 合 sql 语 法 规 则 会 报 错 2 生 成 字 典 由 于 动 态 拼 sql 所 以 需 要 找 到 表 的 别 名 和 物 理 表 之 间 的 对 应 关 系 这 样 就 需 要 每 个 报 表 针 对 sql 生 成 一 个 对 应 关 系 的 字 典 字 典 是 这 样 设 计 的 tableAliasName 表 的 别 名 这 个 字 典 主 要 用 在 根 据 查 询 字 段 动 态 拼 left join 以 及 动 态 拼 where 语 句 3 基 类 方 法 protected void GetSelectSqlAndLeftJoinSql StringBuilder fieldsSql StringBuilder leftTableSql 该 GetSelectSqlAndLeftJoinSql方法 实现 了根 据查 询字段 动态 拼接 left join 该 方法 有两 个参数 是必 传的 fieldsSql和lef tTableSql 第 一个 返回se lect查询 字段 第 二 个返回 left join语 句 该 方 法 进 行 了 重 载 大 家 可 以 根 据 需 要 调 用 所 需 要 的 方 法 返回 where 语句 protected string GetWhereSqlFromSearchPlan 4 子 类 要 进 行 的 操 作 1 重 写 两 个 属 性 protected override string SearchName 查 询 方 案 名 称 71 protected override string ReportName 报 表 名 称 因 为 在 得 到 主 sql之 前 要 进 行 一 些 初 始 化 操 作 所 以 要 重 写 这 两 个 属 性 2 重 写 两 个 方 法 报 表 服 务 中 报 表 都 继 承 了 基 类 using Ufida T BAP BusinessApplication Report AbstractDetailReport 我 们 主 要 是 重 载 下 面 这 两 函 数 得 到 查 询 报 表 明 细 的 完 整 的 sql 这 个 方 法 主 要 是 拼 主 sql 调 用 上 面 介 绍 的 基 类 中 两 个 方 法 具体 用法 大家可 以参 考 销货 单明 细表 和 销货 单执 行表 protected override string GetDetailSql object userId string whereSql ReportSearchType reportSearchType 数据字典 GetDetailSql 需要根据这个字典来拼写 sql protected override Dictionary string Dictionary GetFieldsAndLeftTablesMapping 提示 由于 left join 是 根 据 查 询 字 段 进 行 动 态 拼 接 的 所 以 查 询 字 段 的 selectFieldName 是 必 须 有 值 的 且 这 个 值 是 必 须 带 的 这 样 我 才 可 以 解 析 前 边 表 的 别 名 找 到 对 应 的 字 典 从 而 进 行 left join 的 拼 接 否 则 我 无 法 找 到 对 应 的 字 典 由于 id 都 是不 可以显 示的 字段 而这 些 字段又 都是 有用 的字 段 我无法 判断 什 么 时 候 加 和 不 加 所 以 我 现 在 的 处 理 方 式 是 统 一 都 加 现在设 计的 主表 只有 一个 也就 是只 有一 个根 节点 这样就 有一 种可 能 就是 显示字 段 只 和 主 表 关 联 这 种 情 况 left join 就 不 会 关 联 到 表 头 信 息 而 数 据 权 限 需 要 用 到 表 头 信 息 这 种 情 况 就 需 要 大 家 在 返 回 的 leftTableSql 进 行 判 断 了 具 体 可 以 参 考 销 货 单 明 细 表 现 对 这 里 用 到 的 一 个 主 要 方 法 参 数 进 行 说 明 一 下 protected void GetSelectSqlAndLeftJoinSql Dictionary specialFields IList needShowFields IList noShowFields StringBuilder fieldsSql 72 StringBuilder leftTablesSql specialFields 特 殊处 理 字段 例如 预置 数据 中 selectFieldName 的值 是 b a 而实 际 sql 中 是 c a 别 名是 a 这 种情 况 就 需要 用 到这 个 参数 了 key 是 进 行 特 殊 处 理 字 段 的 别 名 value 是 别 名 as 前 的 值 needShowFields 还 需要 进行 处 理的 字段 就 是有 些字段 不符 合上 面的 规则 但 有时 可现 实 的字段 我会 统一放 到这 个集 合 里 这 里有一 个特 别需要 大家 会用 到该 参数 的地方 就是 如 果该字 段是 通 过 报表 工具 的输出 表达 式得 到 我会 把所需 要的 所有 字段 都放 在里边 如 果不 是 特 殊 处 理 字 段 例 如 a b c 如 果 b c 不 在 specialFields 里 我 也 会 把 b c 放到 needShowFields 里 noShowFields 不 显 示 字 段 例 如 执 行 表 中 根 据 查 询 条 件 不 同 显 示 字 段 不 同 可 以 通 过 这 个 参 数 进 行 控 制 报 表 在 拼 动 态 的 selectField 时 先 从 特 殊 字 段 中 查 找 如 果 是 特 殊 字 段 则 加 入 到 选 择字段 中 来 如 果不 是特 殊字 段 则根 据栏 目设 置来 拼查询 字段 如 果有 些字 段并不 是某 些物 理 表 的 字 段 而 是 通 过 查 询 多 个 表 的 有 关 字 段 组 装 而 来 的 因 改 在 报 表 服 务 中 重 载 基 类 的 getSpecialAndNoShowFields 这 个 函 数 在 该 函 数 中 写 出 数 据 字 典 c 字典的设计方法与工作原理 以 一 个 简 单 的 sql 语 句 为 例 select SaleOrder voucherdate voucherdate 单据日期 SaleOrderDetailDTO quantity quantity 数量 2 QuantityPrecision 数 量 的 精 度 为 2 from SA SaleOrder b SaleOrderDetailDTO 主表 left join SA SaleOrder SaleOrder on SaleOrderDetailDTO idSaleOrderDTO SaleOrder id 辅 表 根 据 下 面 的 数 据 字 典 设 计 格 式 tableAliasName 表 的 别 名 73 我 们 设 计 了 这 样 的 字 典 protected override Dictionary string Dictionary GetFieldsAndLeftTablesMapping Dictionary string Dictionary groupFieldsInfos new Dictionary string Dictionary groupFieldsInfos SaleOrderDetailDTO ReportSqlBuilder GetLeftTableMapping SA SaleOrder b from True groupFieldsInfos SaleOrder ReportSqlBuilder GetLeftTableMapping SA SaleOrder left join SaleOrderDetailDTO SaleOrderDetailDTO idSaleOrderDTO SaleOrder id False return groupFieldsInfos 但是对 于上 面所 列出 的 sql 中 因 为 2 QuantityPrecision 这个字段 比较 特 殊 但不 是某 个 物 理 表 中 实 际 存 在 的 字 段 我 们 需 要 对 该 字 段 设 计 一 个 特 殊 的 字 典 specialFields QuantityPrecision 2 既 然 字 段 设 计 好 了 那 么 根 据 字 典 拼 写 字 段 和 表 的 过 程 是 怎 样 的 下 面 的 代 码 简 要 解 释 了 字 典 的 工 作 原 理 1 ReportTableColumnInfo df 根 据 预 置 数 据 初 始 化 栏 目 信 息 先 说 明 下 df 的几个属性字段 例 SaleOrder voucherdate voucherdate df FieldName 字段名 别名 voucherdate df SelectFieldName 选择字段名 SaleOrder voucherdate 2 按 照 先 特 殊 字 段 后 普 通 字 段 得 到 选 择 字 段 的 集 合 特殊字段 字 典 specialFields QuantityPrecision 2 算 法 selectFields df FieldName Trim specialFields df FieldName Trim as df FieldName 结 果 selectFields QuantityPrecision 2 as QuantityPrecision 普通字段 selectFields df FieldName Trim df SelectFieldName as df FieldName 结 果 selectFields voucherdate SaleOrder voucherdate as voucherdate 3 得 到 关 联 表 的 集 合 区 分 主 表 和 辅 表 if leftTables ContainsKey aliasTableName if fieldAndTableMapping aliasTableName IsMainTable true leftTables aliasTableName fieldAndTableMapping aliasTableName RelationShip fieldAndTableM
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!