LanBMes MES Client 是一款基于 .NET Framework 4.8 和 DevExpress WinForms 构建的企业级制造执行系统(MES)桌面应用程序。该系统为制造车间提供完整的数字化解决方案,涵盖生产计划、工单管理、生产执行、质量控制、仓储物流等核心业务流程。
确保您的开发环境满足以下要求:
git clone <repository_url>
cd LB_MesClient/DevApp
# 使用 NuGet 还原包
nuget restore GsDevSolution.sln
# 或在 Visual Studio 中:
# 右键解决方案 → 还原 NuGet 程序包
编辑 Gs.DevApp\App.config,修改后端 API 地址:
<add key="WebApiUrl" value="http://your-api-server:port/" />
# 命令行构建
msbuild GsDevSolution.sln /p:Configuration=Debug /p:Platform="Any CPU"
# 运行程序
Gs.DevApp\bin\Debug\Gs.DevApp.exe
或者在 Visual Studio 中:
GsDevSolution.slnGs.DevApp 为启动项目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 个业务领域模块
维护系统运行所需的主数据,包括客户、供应商、物料、产线、员工、部门等核心基础数据。
关键窗体: Frm_Customer, Frm_Supplier, Frm_MesItems, Frm_MesWorkshopLine
支持工序开工、数据采集、流程卡管理、返工维修等生产现场作业。支持 Modbus 设备实时数据采集。
关键窗体: Frm_WorkStart, Frm_WorkProcesses, Frm_Work01~09, Frm_Repair
提供多级质量检验体系,包括制程检验 (IPQC)、成品终检 (FQC)、来料质检 (IQC/RkQC),支持 AQL 抽样方案与缺陷追踪。
关键窗体: Frm_ShouJian, Frm_XunJian, Frm_Fqc, Frm_Cqfa
覆盖出入库全流程,支持生产领料、补料、到货入库、退库、调拨、盘点等操作,集成条码管理。
关键窗体: Frm_MesInvItemOut_SCLL, Frm_MesInvItemArn, Frm_MesDbck, Frm_ArrivalBarcode
生产任务下达、工单排产、进度追踪、工单状态管理。
支持 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) │ ← 数据持久化层
└─────────────────────────────────────┘
所有 API 调用统一使用 UtilityHelper.HttpPost():
string result = UtilityHelper.HttpPost(
"BasicData/Customer/GetListPage", // API路径
"GetListPage", // 方法名
jsonParam, // JSON参数
true // 显示加载框
);
dynamic dy = UtilityHelper.ReturnToDynamic(result);
if (dy.code == 200) {
// 处理数据
}
通过反射实现菜单驱动的窗体动态加载:
Form form = (Form)Assembly.GetExecutingAssembly()
.CreateInstance("Gs.DevApp.DevFrm.BasicData.Frm_Customer");
优势: 菜单结构完全由后端控制,无需修改代码即可调整菜单。
项目提供 150+ 可复用控件,新功能开发应优先使用:
// 使用标准 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 |
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);
}
// 关键操作前后记录日志
LogHelper.WriteLog($"开始保存客户数据: {customerId}", LogHelper.LogType.Info);
// 日志位置: logs/{yyyy-MM-dd}.log
DevFrm/ 下创建新目录XtraForm)UtilityHelper.HttpPost() 调用 APIUserControl/ 中的控件# 清理并重新构建
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 和 AutoUpdaterXmlx86/ 和 x64/ 目录完整 (CefSharp 依赖)Gs.Setup\Gs.Setup.vdprojGs.Setup\Release\Gs.Setup.msi编辑 AutoUpdater.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>
A: 确保已安装 DevExpress v22.2 并配置 NuGet 源:
工具 → NuGet 包管理器 → 程序包管理器设置 → 程序包源
添加: https://nuget.devexpress.com/<your_feed_key>/api
A: 确保输出目录包含 x86/ 和 x64/ 子目录及其内容。
A: 检查 App.config 中的 WebApiUrl 配置,确保后端 API 服务正常运行。
A: 在 Program.cs 中注释单实例检查代码:
// Process[] MyProcesses = Process.GetProcessesByName("Gs.DevApp");
// if (MyProcesses.Length > 1) { MyProcesses[0].Kill(); }
A: 日志位置: logs/{yyyy-MM-dd}.log (应用程序目录下)
本项目为专有软件,未经授权不得复制、分发或修改。
如需技术支持或报告问题,请联系开发团队。