# LanBMes MES Client (G-MES V2.0)
**蓝宝制造执行系统 (MES) Windows 客户端**
[](https://dotnet.microsoft.com/download/dotnet-framework/net48)
[](https://www.devexpress.com/)
[]()
*为制造车间提供全面的生产执行、仓储管理、质量控制和报表分析能力*
[功能特性](#功能特性) • [快速开始](#快速开始) • [项目结构](#项目结构) • [文档](#文档) • [技术栈](#技术栈)
---
## 📋 目录
- [项目简介](#项目简介)
- [功能特性](#功能特性)
- [快速开始](#快速开始)
- [项目结构](#项目结构)
- [核心模块](#核心模块)
- [技术栈](#技术栈)
- [开发指南](#开发指南)
- [部署说明](#部署说明)
- [文档](#文档)
- [常见问题](#常见问题)
---
## 🎯 项目简介
**LanBMes MES Client** 是一款基于 .NET Framework 4.8 和 DevExpress WinForms 构建的企业级制造执行系统(MES)桌面应用程序。该系统为制造车间提供完整的数字化解决方案,涵盖生产计划、工单管理、生产执行、质量控制、仓储物流等核心业务流程。
### 核心优势
- 🎨 **现代化界面** - 基于 DevExpress FluentDesign 的直观用户体验
- ⚡ **高度集成** - 与后端 REST API 无缝对接,支持 Oracle/SQL Server 双数据库
- 🔧 **灵活扩展** - 150+ 可复用业务控件,快速构建新功能
- 🔐 **权限管理** - 基于角色的细粒度权限控制
- 📱 **多终端支持** - PC 桌面端 + 手持 PDA 端协同作业
- 🏭 **工业集成** - 支持 Modbus TCP/RTU 设备通信
### 适用场景
- ✅ 离散制造业 (电子、机械、汽车零部件等)
- ✅ 需要精细化车间管理的制造企业
- ✅ 多工序流程管理与质量追溯
- ✅ 仓储物流与条码管理
- ✅ 生产数据采集与实时监控
---
## ✨ 功能特性
### 🏭 生产管理
- **工单管理** - 生产任务下达、排产调整、进度追踪
- **生产执行** - 工序开工、数据采集、流程卡管理
- **返工维修** - 不良品返工流程与维修记录
### 📦 仓储物流
- **出库管理** - 生产领料、补料、退货、其他出库
- **入库管理** - 到货入库、退库、杂项入库
- **库存操作** - 调拨、盘点、条码生成与打印
- **PDA 作业** - 手持终端扫码理货与移动作业
### ✅ 质量管理
- **IPQC 制程检验** - 首件检验、巡检作业
- **FQC 成品终检** - 成品质量检验与异常处理
- **IQC 来料质检** - 来料抽检、AQL 抽样方案
- **缺陷追踪** - 缺陷代码、检验项目、质量标准维护
### 📊 基础数据
- **主数据管理** - 客户、供应商、物料、产线、员工、部门
- **工装设备** - 夹具工装台账、计量设备、点检任务
- **条码管理** - 条码批量生成、打印模板设置
### 📈 报表分析
- **报表设计** - FastReport/DevExpress 可视化报表设计器
- **自定义报表** - 灵活的数据源配置与报表引擎
### ⚙️ 系统管理
- **用户权限** - 用户、角色、菜单权限、操作权限
- **系统配置** - 菜单结构、组织架构、单号规则、系统日志
---
## 🚀 快速开始
### 前置要求
确保您的开发环境满足以下要求:
- ✅ **操作系统**: Windows 10/11 或 Windows Server 2016+
- ✅ **开发工具**: Visual Studio 2022 (推荐) 或 Visual Studio 2019
- ✅ **.NET Framework**: 4.8 SDK
- ✅ **DevExpress**: v22.2+ 许可证
- ✅ **版本控制**: Git
### 克隆仓库
```bash
git clone
cd LB_MesClient/DevApp
```
### 还原依赖
```bash
# 使用 NuGet 还原包
nuget restore GsDevSolution.sln
# 或在 Visual Studio 中:
# 右键解决方案 → 还原 NuGet 程序包
```
### 配置后端 API
编辑 `Gs.DevApp\App.config`,修改后端 API 地址:
```xml
```
### 构建与运行
```bash
# 命令行构建
msbuild GsDevSolution.sln /p:Configuration=Debug /p:Platform="Any CPU"
# 运行程序
Gs.DevApp\bin\Debug\Gs.DevApp.exe
```
**或者在 Visual Studio 中**:
1. 打开 `GsDevSolution.sln`
2. 设置 `Gs.DevApp` 为启动项目
3. 按 `F5` 开始调试
---
## 📁 项目结构
```
GsDevSolution/
│
├── Gs.DevApp/ # 主客户端应用程序
│ ├── DevFrm/ # 业务窗体 (18个领域模块)
│ │ ├── BasicData/ # 基础数据 (客户/供应商/物料/产线)
│ │ ├── Work/ # 生产执行 (开工/数据采集/返工)
│ │ ├── WOM/ # 工单管理 (任务下达/排产)
│ │ ├── QC/ # 质量管理通用模块
│ │ ├── IPQC/ # 制程检验 (首件/巡检)
│ │ ├── FQC/ # 成品终检
│ │ ├── RkQC/ # 来料质检
│ │ ├── Ck/ # 出库管理
│ │ ├── Rk/ # 入库管理
│ │ ├── Warehouse/ # 仓库操作
│ │ ├── Sales/ # 销售订单
│ │ ├── WW/ # 委外管理
│ │ ├── Rpt/ # 报表设计
│ │ ├── Sys/ # 系统设置
│ │ ├── User/ # 用户权限
│ │ ├── JJGZ/ # 夹具工装
│ │ ├── BarCode/ # 条码管理
│ │ └── PDA/ # 手持终端
│ ├── Entity/ # 数据传输对象 (DTO)
│ ├── ToolBox/ # 公共工具类库
│ │ ├── UtilityHelper.cs # HTTP请求、JSON解析、Grid初始化
│ │ ├── LogHelper.cs # 日志记录
│ │ ├── MsgHelper.cs # 消息提示
│ │ └── ModbusHelper.cs # Modbus通信
│ ├── UserControl/ # 可复用控件库 (150+)
│ │ ├── UcToolBarMenu.cs # CRUD工具栏
│ │ ├── UcPageBar.cs # 分页控件
│ │ ├── UcLook*.cs # 60+ 数据查找控件
│ │ └── Toast.cs # Toast提示
│ ├── Resources/ # 资源文件
│ ├── App.config # 应用配置
│ └── Program.cs # 应用入口
│
├── Gs.WeightIqc/ # IQC 来料称重客户端
├── Gs.WeightLine/ # 产线称重客户端
├── Gs.Setup/ # 安装程序项目 (.vdproj)
└── packages/ # NuGet 包缓存
总计:
- 150+ 业务窗体
- 150+ 可复用控件
- 18 个业务领域模块
```
---
## 🧩 核心模块
### 1️⃣ 基础数据管理 (BasicData)
维护系统运行所需的主数据,包括客户、供应商、物料、产线、员工、部门等核心基础数据。
**关键窗体**: `Frm_Customer`, `Frm_Supplier`, `Frm_MesItems`, `Frm_MesWorkshopLine`
### 2️⃣ 生产执行 (Work)
支持工序开工、数据采集、流程卡管理、返工维修等生产现场作业。支持 Modbus 设备实时数据采集。
**关键窗体**: `Frm_WorkStart`, `Frm_WorkProcesses`, `Frm_Work01~09`, `Frm_Repair`
### 3️⃣ 质量管理 (QC/IPQC/FQC/RkQC)
提供多级质量检验体系,包括制程检验 (IPQC)、成品终检 (FQC)、来料质检 (IQC/RkQC),支持 AQL 抽样方案与缺陷追踪。
**关键窗体**: `Frm_ShouJian`, `Frm_XunJian`, `Frm_Fqc`, `Frm_Cqfa`
### 4️⃣ 仓储管理 (Ck/Rk/Warehouse)
覆盖出入库全流程,支持生产领料、补料、到货入库、退库、调拨、盘点等操作,集成条码管理。
**关键窗体**: `Frm_MesInvItemOut_SCLL`, `Frm_MesInvItemArn`, `Frm_MesDbck`, `Frm_ArrivalBarcode`
### 5️⃣ 工单管理 (WOM)
生产任务下达、工单排产、进度追踪、工单状态管理。
### 6️⃣ 报表中心 (Rpt)
支持 FastReport 和 DevExpress 报表,提供可视化报表设计器与自定义报表引擎。
**关键窗体**: `EasyRptDesign`, `EasyRptEdt`
---
## 🔧 技术栈
### 核心框架与库
| 技术 | 版本 | 用途 |
|------|------|------|
| **.NET Framework** | 4.8 | 应用基础框架 |
| **C# WinForms** | - | 桌面应用开发 |
| **DevExpress** | v22.2.3 | UI组件库 (FluentDesign, XtraGrid, XtraTab, XtraBars) |
### 第三方组件
| 组件 | 版本 | 用途 |
|------|------|------|
| **CefSharp** | 109.1.110 | 嵌入式 Chromium 浏览器 |
| **AutoUpdater.NET** | 1.9.2 | 自动软件更新 |
| **NModbus** | 3.0.81 | 工业设备通信 (Modbus TCP/RTU) |
| **Newtonsoft.Json** | 13.0.3 | JSON 序列化 |
| **System.Text.Json** | 8.0.4 | 现代 JSON 支持 |
| **Oracle.ManagedDataAccess** | 最新 | Oracle 数据库访问 |
| **System.Data.SqlClient** | 最新 | SQL Server 数据库访问 |
### 架构模式
```
┌─────────────────────────────────────┐
│ UI Layer (DevExpress WinForms) │ ← 用户交互层
├─────────────────────────────────────┤
│ Business Logic (ToolBox + Forms) │ ← 业务逻辑层
├─────────────────────────────────────┤
│ REST API (HTTP/JSON) │ ← 通信层
├─────────────────────────────────────┤
│ Backend API Server │ ← 服务端 (别处项目)
├─────────────────────────────────────┤
│ Data Layer (Oracle/SQL Server) │ ← 数据持久化层
└─────────────────────────────────────┘
```
---
## 📚 开发指南
### 核心设计模式
#### 1. HTTP 请求集中化
所有 API 调用统一使用 `UtilityHelper.HttpPost()`:
```csharp
string result = UtilityHelper.HttpPost(
"BasicData/Customer/GetListPage", // API路径
"GetListPage", // 方法名
jsonParam, // JSON参数
true // 显示加载框
);
dynamic dy = UtilityHelper.ReturnToDynamic(result);
if (dy.code == 200) {
// 处理数据
}
```
#### 2. 动态窗体加载 (反射)
通过反射实现菜单驱动的窗体动态加载:
```csharp
Form form = (Form)Assembly.GetExecutingAssembly()
.CreateInstance("Gs.DevApp.DevFrm.BasicData.Frm_Customer");
```
**优势**: 菜单结构完全由后端控制,无需修改代码即可调整菜单。
#### 3. 可复用控件优先
项目提供 150+ 可复用控件,新功能开发应优先使用:
```csharp
// 使用标准 CRUD 工具栏
UcToolBarMenu toolBar = new UcToolBarMenu();
toolBar.AddClick += BtnAdd_Click;
// 使用分页控件
UcPageBar pageBar = new UcPageBar();
pageBar.PageChanged += LoadData;
// 使用数据查找控件
UcLookCustomer lookCustomer = new UcLookCustomer();
lookCustomer.ShowDialog();
```
### 开发规范
#### 命名规范
| 类型 | 规则 | 示例 |
|------|------|------|
| 主窗体 | `Frm_{业务名}` | `Frm_Customer.cs` |
| 编辑窗体 | `Frm_{业务名}Edit` | `Frm_CustomerEdit.cs` |
| 对话框 | `Dlg_{业务名}` | `Dlg_SelectCustomer.cs` |
| 用户控件 | `Uc{功能名}` | `UcToolBarMenu.cs` |
#### 异常处理规范
```csharp
try {
string result = UtilityHelper.HttpPost(...);
dynamic dy = UtilityHelper.ReturnToDynamic(result);
if (dy.code == 200) {
// 成功处理
} else {
MsgHelper.ShowError(dy.msg.ToString());
LogHelper.WriteLog($"API Error: {dy.msg}", LogHelper.LogType.Error);
}
} catch (Exception ex) {
MsgHelper.ShowError($"操作失败: {ex.Message}");
LogHelper.WriteLog($"Exception: {ex}", LogHelper.LogType.Error);
}
```
#### 日志记录规范
```csharp
// 关键操作前后记录日志
LogHelper.WriteLog($"开始保存客户数据: {customerId}", LogHelper.LogType.Info);
// 日志位置: logs/{yyyy-MM-dd}.log
```
### 添加新模块
1. 在 `DevFrm/` 下创建新目录
2. 创建主窗体 (继承 `XtraForm`)
3. 使用 `UtilityHelper.HttpPost()` 调用 API
4. 复用 `UserControl/` 中的控件
5. 在后端添加对应菜单项
---
## 🚢 部署说明
### 构建 Release 版本
```bash
# 清理并重新构建
msbuild Gs.DevApp\Gs.DevApp.csproj /t:Clean
msbuild Gs.DevApp\Gs.DevApp.csproj /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU"
```
### 配置清单
部署前需修改 `Gs.DevApp.exe.config`:
- ✅ 修改 `WebApiUrl` 为生产环境 API 地址
- ✅ 配置 `IsAutoUpdater` 和 `AutoUpdaterXml`
- ✅ 确保 `x86/` 和 `x64/` 目录完整 (CefSharp 依赖)
### 使用安装程序
1. 打开 `Gs.Setup\Gs.Setup.vdproj`
2. 配置版本号和产品信息
3. 生成 MSI 安装包
4. 输出: `Gs.Setup\Release\Gs.Setup.msi`
### 自动更新
编辑 `AutoUpdater.xml`:
```xml
0.2.0.0
http://your-server/updates/Gs.DevApp_v0.2.0.0.zip
更新内容...]]>
false
```
---
## 📖 文档
### 完整文档
- 📘 **[HELP.md](HELP.md)** - 完整的项目帮助指南 (中文,1400+ 行)
- 📗 **[CLAUDE.md](CLAUDE.md)** - Claude Code AI 辅助开发指南
- 📙 **[DEVFRM_GUIDE.md](DEVFRM_GUIDE.md)** - DevFrm 模块详细指南 (如存在)
- 📕 **[ANALYSIS_REPORT.md](ANALYSIS_REPORT.md)** - 架构分析报告 (如存在)
### 快速链接
- [项目概览](HELP.md#1-项目概览)
- [构建与运行](HELP.md#5-构建与运行)
- [功能模块详解](HELP.md#6-devfrm-功能模块详解)
- [架构与设计模式](HELP.md#7-架构与设计模式)
- [配置说明](HELP.md#9-配置说明)
- [开发规范](HELP.md#11-开发规范与最佳实践)
- [常见问题](HELP.md#12-常见问题与故障排查)
---
## ❓ 常见问题
### Q: DevExpress 组件找不到?
**A**: 确保已安装 DevExpress v22.2 并配置 NuGet 源:
```
工具 → NuGet 包管理器 → 程序包管理器设置 → 程序包源
添加: https://nuget.devexpress.com//api
```
### Q: CefSharp 加载失败?
**A**: 确保输出目录包含 `x86/` 和 `x64/` 子目录及其内容。
### Q: 无法连接到 API 服务器?
**A**: 检查 `App.config` 中的 `WebApiUrl` 配置,确保后端 API 服务正常运行。
### Q: 如何调试多个实例?
**A**: 在 `Program.cs` 中注释单实例检查代码:
```csharp
// Process[] MyProcesses = Process.GetProcessesByName("Gs.DevApp");
// if (MyProcesses.Length > 1) { MyProcesses[0].Kill(); }
```
### Q: 日志文件在哪里?
**A**: 日志位置: `logs/{yyyy-MM-dd}.log` (应用程序目录下)
---
## 📜 许可证
本项目为专有软件,未经授权不得复制、分发或修改。
---
## 🤝 贡献与支持
如需技术支持或报告问题,请联系开发团队。
---
## 📊 项目统计
- **总代码行数**: 约 100,000+ 行
- **业务窗体**: 150+ 个
- **可复用控件**: 150+ 个
- **业务领域**: 18 个模块
- **支持数据库**: Oracle + SQL Server
- **开发周期**: 持续迭代中
---
**G-MES V2.0** - 智能制造,数字未来
*最后更新: 2025-10-16*