| | |
| | | ## LB_MesClient |
| | | # LanBMes MES Client (G-MES V2.0) |
| | | |
| | | 蓝宝PC前端 |
| | | <div align="center"> |
| | | |
| | | **蓝宝制造执行系统 (MES) Windows 客户端** |
| | | |
| | | [](https://dotnet.microsoft.com/download/dotnet-framework/net48) |
| | | [](https://www.devexpress.com/) |
| | | []() |
| | | |
| | | *为制造车间提供全面的生产执行、仓储管理、质量控制和报表分析能力* |
| | | |
| | | [功能特性](#功能特性) • [快速开始](#快速开始) • [项目结构](#项目结构) • [文档](#文档) • [技术栈](#技术栈) |
| | | |
| | | </div> |
| | | |
| | | --- |
| | | |
| | | ## 📋 目录 |
| | | |
| | | - [项目简介](#项目简介) |
| | | - [功能特性](#功能特性) |
| | | - [快速开始](#快速开始) |
| | | - [项目结构](#项目结构) |
| | | - [核心模块](#核心模块) |
| | | - [技术栈](#技术栈) |
| | | - [开发指南](#开发指南) |
| | | - [部署说明](#部署说明) |
| | | - [文档](#文档) |
| | | - [常见问题](#常见问题) |
| | | |
| | | --- |
| | | |
| | | ## 🎯 项目简介 |
| | | |
| | | **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 <repository_url> |
| | | cd LB_MesClient/DevApp |
| | | ``` |
| | | |
| | | ### 还原依赖 |
| | | |
| | | ```bash |
| | | # 使用 NuGet 还原包 |
| | | nuget restore GsDevSolution.sln |
| | | |
| | | # 或在 Visual Studio 中: |
| | | # 右键解决方案 → 还原 NuGet 程序包 |
| | | ``` |
| | | |
| | | ### 配置后端 API |
| | | |
| | | 编辑 `Gs.DevApp\App.config`,修改后端 API 地址: |
| | | |
| | | ```xml |
| | | <add key="WebApiUrl" value="http://your-api-server:port/" /> |
| | | ``` |
| | | |
| | | ### 构建与运行 |
| | | |
| | | ```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 |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <update> |
| | | <version>0.2.0.0</version> |
| | | <url>http://your-server/updates/Gs.DevApp_v0.2.0.0.zip</url> |
| | | <changelog><![CDATA[<h3>更新内容</h3>...]]></changelog> |
| | | <mandatory>false</mandatory> |
| | | </update> |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## 📖 文档 |
| | | |
| | | ### 完整文档 |
| | | |
| | | - 📘 **[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/<your_feed_key>/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 |
| | | - **开发周期**: 持续迭代中 |
| | | |
| | | --- |
| | | |
| | | <div align="center"> |
| | | |
| | | **G-MES V2.0** - 智能制造,数字未来 |
| | | |
| | | *最后更新: 2025-10-16* |
| | | |
| | | </div> |