编程与数学 03-008 《看潮企业管理软件》项目开发 14 单据审批 6-5
- 四、窗体功能代码说明
-
- (一)系统概述
-
- [1.1 功能定位](#1.1 功能定位)
- [1.2 主要功能特点](#1.2 主要功能特点)
- (二)系统架构
-
- [2.1 技术架构](#2.1 技术架构)
- [2.2 核心数据结构](#2.2 核心数据结构)
-
- [2.2.1 主要数据表](#2.2.1 主要数据表)
- [2.2.2 关键字段说明](#2.2.2 关键字段说明)
- (三)核心业务流程
-
- [3.1 单据审批流程](#3.1 单据审批流程)
- [3.2 状态流转图](#3.2 状态流转图)
- (四)主要功能模块详解
-
- [4.1 数据载入模块](#4.1 数据载入模块)
-
- [4.1.1 载入条件管理](#4.1.1 载入条件管理)
- [4.1.2 数据加载流程](#4.1.2 数据加载流程)
- [4.2 单据显示模块](#4.2 单据显示模块)
-
- [4.2.1 单据头显示](#4.2.1 单据头显示)
- [4.2.2 单据体显示](#4.2.2 单据体显示)
- [4.3 编辑处理模块](#4.3 编辑处理模块)
-
- [4.3.1 编辑状态管理](#4.3.1 编辑状态管理)
- [4.3.2 数据验证机制](#4.3.2 数据验证机制)
- [4.3.3 公式计算引擎](#4.3.3 公式计算引擎)
- [4.4 审批流程模块](#4.4 审批流程模块)
-
- [4.4.1 审核处理](#4.4.1 审核处理)
- [4.4.2 登记处理](#4.4.2 登记处理)
- [4.4.3 流程管理](#4.4.3 流程管理)
- [4.5 批量操作模块](#4.5 批量操作模块)
-
- [4.5.1 范围选择](#4.5.1 范围选择)
- [4.5.2 批量处理逻辑](#4.5.2 批量处理逻辑)
- [4.6 文件处理模块](#4.6 文件处理模块)
-
- [4.6.1 文件操作类型](#4.6.1 文件操作类型)
- [4.6.2 文件管理机制](#4.6.2 文件管理机制)
- [4.7 打印输出模块](#4.7 打印输出模块)
-
- [4.7.1 打印模板管理](#4.7.1 打印模板管理)
- [4.7.2 打印类型](#4.7.2 打印类型)
- [4.8 关联信息模块](#4.8 关联信息模块)
-
- [4.8.1 关联类型](#4.8.1 关联类型)
- [4.8.2 信息获取](#4.8.2 信息获取)
- (五)权限控制系统
-
- [5.1 权限维度](#5.1 权限维度)
- [5.2 权限实现](#5.2 权限实现)
- (六)异常处理机制
-
- [6.1 错误类型分类](#6.1 错误类型分类)
- [6.2 错误处理策略](#6.2 错误处理策略)
- (七)性能优化策略
-
- [7.1 数据加载优化](#7.1 数据加载优化)
- [7.2 界面响应优化](#7.2 界面响应优化)
- (八)配置管理系统
-
- [8.1 用户配置](#8.1 用户配置)
- [8.2 系统配置](#8.2 系统配置)
- (九)扩展性设计
-
- [9.1 插件机制](#9.1 插件机制)
- [9.2 配置驱动](#9.2 配置驱动)
- (十)使用指南
-
- [11.1 基本操作流程](#11.1 基本操作流程)
- [11.2 快捷键说明](#11.2 快捷键说明)
- (十一)常见问题解决
-
- [12.1 数据载入失败](#12.1 数据载入失败)
- [12.2 操作无法执行](#12.2 操作无法执行)
- [12.3 打印问题](#12.3 打印问题)
摘要:本文档详细阐述了《看潮企业管理软件》中单据审批功能模型的设计与实现。该模块基于C# WinForms和DevExpress控件库开发,采用三层架构设计,实现了单据的审批、登记、流转、回退等核心业务流程。系统支持多标签页单据头展示、网格化明细数据管理、公式自动计算、权限精细控制及批量操作处理。通过状态机管理单据生命周期,实现了制单、审核、登账的严格分离,确保业务数据的完整性和审计追踪。文档涵盖界面设计、业务逻辑代码及模型应用价值,为企业ERP系统提供了标准化、可配置的业务流程管理解决方案。
关键词:单据审批、ERP系统、WinForms、DevExpress、工作流引擎、权限控制、业务建模、状态管理
人工智能助手:DeepSeek、Kimi
四、窗体功能代码说明
单据审批功能模型 (Uf06Djsp) 详细说明。
(一)系统概述
1.1 功能定位
单据审批功能模型是ERP系统中的核心业务处理模块,专门用于处理各种业务单据的审批、登记、流转等流程化操作。该模块实现了完整的单据审批工作流,支持多步骤、多角色的业务审批流程。
1.2 主要功能特点
- 完整的审批流程:支持单据的审核、登记、回退、流转等完整流程
- 灵活的权限控制:基于角色和功能的细粒度权限管理
- 强大的数据处理:支持公式计算、数据验证、批量操作等
- 友好的用户界面:采用DevExpress控件库,提供现代化操作体验
- 完善的打印支持:支持多种打印模板和报表输出
(二)系统架构
2.1 技术架构
应用层:WinForms + DevExpress控件库
业务层:C# .NET业务逻辑处理
数据层:ADO.NET + 存储过程
数据库:SQL Server
2.2 核心数据结构
2.2.1 主要数据表
- 单据头表(ft1):存储单据基本信息
- 单据体表(ft2):存储单据明细信息
- 任务流程表(x9_bprw):存储审批流程任务
- 公式表(x9_gn_0jsgs):存储业务计算公式
- 字段定义表(x9_sjzd):存储字段元数据
2.2.2 关键字段说明
csharp
// 单据头核心字段
ft1oid:单据唯一标识
ft1tz:制单人
ft1qj:业务期间
ft1sprzd:审批人
ft1djrzd:登账人
ft1lzbjzd:流转标记
// 单据体核心字段
ft2oid:关联单据头ID
ft2mid:明细行ID
ft2czbjzd:操作标记
ft2djbjzd:登账标记
(三)核心业务流程
3.1 单据审批流程
数据载入 → 单据浏览 → 编辑修改 → 提交保存 → 审批处理 → 登账确认 → 流程流转
3.2 状态流转图
未审批 → 已审批 → 已登账
↓ ↓ ↓
回退 回退 反登账
↓ ↓ ↓
未审批 ← 未审批 ← 未登账
(四)主要功能模块详解
4.1 数据载入模块
4.1.1 载入条件管理
- 条件配置:支持日期、文本、数值等多种条件类型
- 条件保存:用户个性化条件配置保存
- 条件验证:载入前的条件合法性检查
4.1.2 数据加载流程
csharp
// 主要步骤:
1. 读取用户载入条件
2. 构建查询SQL语句
3. 执行数据查询
4. 加载到内存数据表
5. 初始化界面控件
4.2 单据显示模块
4.2.1 单据头显示
- 分组显示:按功能分组显示单据头字段
- 动态布局:根据字段类型自动生成编辑控件
- 权限控制:根据用户权限设置字段只读/可编辑
4.2.2 单据体显示
- 网格视图:使用DevExpress GridControl显示明细数据
- 列配置:支持列宽、可见性、排序等配置
- 公式计算:实时计算相关字段值
4.3 编辑处理模块
4.3.1 编辑状态管理
csharp
sfzj = 0; // 正常查看状态
sfzj = 2; // 编辑状态
sfzj = 3; // 修改状态
4.3.2 数据验证机制
- 必填验证:标记*号的字段必须填写
- 数据类型验证:根据字段类型验证输入格式
- 业务规则验证:调用存储过程进行业务规则验证
4.3.3 公式计算引擎
csharp
// 公式计算流程:
1. 检测字段值变化
2. 查找相关计算公式
3. 替换变量和字段值
4. 执行SQL计算
5. 更新计算结果
4.4 审批流程模块
4.4.1 审核处理
- 单张审核:审核当前显示的单据
- 全部审核:批量审核所有符合条件的单据
- 部分审核:审核指定范围内的单据
- 取消审核:撤销已完成的审核操作
4.4.2 登记处理
- 条件检查:检查登记条件是否满足
- 登记执行:调用存储过程执行登记操作
- 反登记:撤销已完成的登记操作
4.4.3 流程管理
- 流转操作:将单据转到下一步骤
- 回退操作:将单据退回上一步骤
- 任务更新:更新任务流程表状态
4.5 批量操作模块
4.5.1 范围选择
csharp
// 提供灵活的批量操作范围选择:
FmDJFW fmfw = new FmDJFW();
fmfw.T1.Text = "1"; // 开始位置
fmfw.T2.Text = "10"; // 结束位置
fmfw.ShowDialog(this);
4.5.2 批量处理逻辑
- 遍历选择范围内的单据
- 检查每张单据的处理条件
- 逐张执行处理操作
- 记录处理结果和数量
4.6 文件处理模块
4.6.1 文件操作类型
- 导入:从本地文件导入附件
- 拍照:使用摄像头拍照并保存
- 打开:打开已附加的文件
- 删除:删除已附加的文件
4.6.2 文件管理机制
- 文件存储:文件保存到服务器指定目录
- 路径管理:在数据库中存储文件路径
- 权限控制:根据状态控制文件操作权限
4.7 打印输出模块
4.7.1 打印模板管理
- 模板加载:从数据库加载打印模板定义
- 模板选择:用户可选择不同的打印模板
- 数据绑定:将单据数据绑定到报表模板
4.7.2 打印类型
- 直接打印:直接发送到打印机
- 预览打印:先预览再打印
- 标签打印:特殊的标签格式打印
4.8 关联信息模块
4.8.1 关联类型
- 单据关联:关联其他相关单据信息
- 基础资料:关联基础资料信息
- 统计信息:关联统计汇总信息
4.8.2 信息获取
csharp
// 关联信息查询
string tjstr = Getglozd(lc.Root, gr[0]["glozd"].ToString(), tjstr);
string ckjson = KcDb.DBString("select x9_glxx(...)");
DataTable xxdt = KcDb.DtRead(ckjson);
(五)权限控制系统
5.1 权限维度
xzbj:更新权限(编辑单据)
xzdy:打印权限(打印单据)
xzck:查看权限(查看关联信息)
xzwj:文件权限(操作文件附件)
xzdc:导出权限(导出数据)
5.2 权限实现
- 界面控制:根据权限启用/禁用功能按钮
- 数据控制:根据权限过滤可访问的数据
- 操作控制:根据权限限制具体操作
(六)异常处理机制
6.1 错误类型分类
- 数据库错误:连接失败、SQL执行错误
- 业务逻辑错误:条件不满足、状态冲突
- 用户操作错误:输入错误、权限不足
- 系统错误:内存不足、文件访问错误
6.2 错误处理策略
csharp
try
{
// 业务操作代码
}
catch (Exception ex)
{
// 统一错误处理
MsgExShow("操作描述", ex.Message, ex.Source, ex.StackTrace);
}
(七)性能优化策略
7.1 数据加载优化
- 分页加载:大量数据时采用分页机制
- 延迟加载:关联信息按需加载
- 缓存机制:常用数据缓存到内存
7.2 界面响应优化
- 异步操作:耗时操作使用后台线程
- 批量更新:减少界面刷新次数
- 事件优化:合理使用事件委托
(八)配置管理系统
8.1 用户配置
- 窗口设置:位置、大小、状态保存
- 列配置:列宽、可见性、顺序保存
- 条件配置:载入条件个性化保存
8.2 系统配置
- 公式配置:业务计算公式定义
- 权限配置:功能权限分配
- 模板配置:打印模板管理
(九)扩展性设计
9.1 插件机制
- 计算公式插件:可扩展的业务计算规则
- 验证规则插件:可扩展的数据验证规则
- 打印模板插件:可扩展的报表模板
9.2 配置驱动
- 字段定义驱动:通过配置定义界面字段
- 流程定义驱动:通过配置定义审批流程
- 权限定义驱动:通过配置定义访问权限
(十)使用指南
11.1 基本操作流程
- 登录系统:使用分配的用户账号登录
- 选择功能:在功能菜单中选择单据审批
- 设置条件:设置数据载入条件
- 浏览单据:使用导航按钮浏览单据
- 执行操作:根据权限执行相应操作
- 保存结果:确认操作结果并保存
11.2 快捷键说明
F5:重新载入数据
F6:提交修改
F7:编辑单据
F8:保存编辑
F10:打印预览
F11:审核单据
F12:登记单据
Ctrl+G:查找单据
Ctrl+Q:返回上级
Ctrl+数字:锁定列
(十一)常见问题解决
12.1 数据载入失败
- 检查网络连接
- 验证载入条件
- 检查数据库权限
12.2 操作无法执行
- 检查用户权限
- 验证单据状态
- 查看错误提示信息
12.3 打印问题
- 检查打印机连接
- 验证打印模板
- 确认打印权限