# DevFrm 模块详解 本文件梳理 `Gs.DevApp/DevFrm/` 目录下的业务模块、核心窗体以及与后台服务、硬件的交互方式,便于新成员快速了解各子系统职责与扩展点。 ## 目录总览 | 子目录 | 业务范围 | 关键说明 | | --- | --- | --- | | `FrmMain.*` | 主框架 | DevExpress FluentDesign 主窗体,负责导航树、页签、全局事件 | | `FrmLogin.*` | 登录入口 | 自动更新、字体配置、账号记忆、调用 `User/UserLogin` | | `BasicData/` | 基础主数据 | 客户、供应商、物料、组织、工序、班组等 | | `BarCode/` | 条码管理 | 条码定义、打印、箱码/托码生成 | | `Ck/` | 仓库出库 | 补料、材料、其他、委外等出库流程 | | `Rk/` | 仓库入库 | 到货、检验、退库、其他入库 | | `Warehouse/` | 库内作业 | 库存调整、条码初始化、移库、报表 | | `QC/` | 质量通用 | 缺陷代码、检验项目、AQL 标准、质检模型 | | `IPQC/` | 过程检验 | 首件、巡检、过程数据采集(含 H5 版本) | | `FQC/` | 成品检验 | 出厂终检、异常处理、批量判定 | | `RkQC/` | 来料检验 | 抽检方案、检验执行、异常反馈 | | `Work/` | 制程执行 | 工序开工、报工、工站采集、返修 | | `WOM/` | 工单管理 | 生产工单、排程、派工 | | `WW/` | 委外管理 | 委外工单、检验、回传 | | `PDA/` | 手持终端 | PDA 扫码作业(仓储、质检、制程) | | `JJGZ/` | 工装治具 | 夹具台账、点检任务、维修记录 | | `Sales/` | 销售业务 | 销售订单、发货、退货 | | `Rpt/` | 报表平台 | FastReport/DevExpress 报表设计、运行 | | `Sys/` | 系统设置 | 菜单、组织、日志、编号、打印配置 | | `User/` | 权限管理 | 用户、角色、授权、密码 | 下文按模块分组说明关键窗体、功能流程以及依赖。 ## 1. 主框架与基础设施 - **FrmMain** - 基类:`DevExpress.XtraBars.FluentDesignSystem.FluentDesignForm`。 - 功能:加载用户菜单 (`User/GetUserLoginInfo`)、维护 TabPage 缓存、处理右键关闭、组织切换、页签间事件传递 (`UpdateParentEventArgs`)。 - 关键依赖:`UtilityHelper.HttpPost`、`MsgHelper`、`LoginInfoModel`。 - **FrmLogin** - 功能:自动更新 (`AutoUpdater.NET`)、字体记忆 (`Settings.Default.fontSizeName`)、账号记忆、调用 `User/UserLogin`,成功后写入 `LoginInfoModel.CurrentUser`。 - 依赖:`UtilityHelper.HttpPost`、`MsgHelper`、`Settings`。 这些文件位于 `DevFrm` 根目录,是项目入口,其他模块以树状菜单的形式挂载。 ## 2. 基础数据域 ### 2.1 `BasicData/` 维护系统静态主数据,为后续流程提供基础字段。典型窗体: - `Frm_Customer`/`Frm_Supplier`:客户、供应商主数据,支持增删改查、启停用。 - `Frm_MesItems`/`Frm_MesItemsShow`:物料主档与浏览。 - `Frm_MesUnit`、`Frm_MesDepot`、`Frm_MesWorkshopLine`:计量单位、仓库、产线信息。 - `Frm_Staff`、`Frm_Department`:人员、组织架构。 - `Frm_MesItemType` 等分类维护。 这些窗体通常继承自 `XtraForm`,利用 `UtilityHelper.HttpPost` 与 WebApi 通信,使用 `UcToolBarMenu`、`UcPageBar` 等控件完成分页与操作。 ### 2.2 `BarCode/` 关注条码策略: - `Frm_BoxCode`:箱码生成规则设置。 - `SelectBoxItem`/`SelectBoxDaa`:条码与物料关联选择弹窗。 - 相关逻辑依赖 `UserControl` 中的选择控件、条码打印工具。 ### 2.3 `JJGZ/` 工装、治具、点检: - 管理夹具台账、点检计划、异常记录。 - 常与质检、制程模块联合使用,确保设备状态合格。 ## 3. 仓储域 ### 3.1 `Ck/`(出库) 覆盖多种出库流程: - `Frm_MesItemBl`/`Frm_MesItemBlDj`:补料申请与单据。 - `Frm_MesItemCl` 系列:材料出库。 - `Frm_MesItemQt`:其他出库。 - `Frm_MesCgthSq`:采购退货申请。 - `Frm_MesInvItemOut_SCLL`:生产领料出库。 窗体结合 `UcToolBarMenu`、`SelectMesCgthSq`、`UcDictionarySelect` 等组件完成单据编制和审批。 ### 3.2 `Rk/`(入库) - `Frm_MesInvItemArn`:到货入库。 - `Frm_MesInvItemIns`:质检入库。 - `Frm_MesItemTbl`:入库台账。 - `Frm_MesItemQtrk` 系列:其他入库。 与 `Ck/` 类似,通过 WebApi 处理单据流转,支持附件上传、条码生成。 ### 3.3 `Warehouse/` 库内操作,偏向库存调整、条码维护: - `Frm_MesDbck`:调拨出库 / 库存调整。 - `Frm_MesRohIn`:原材入库处理。 - `Frm_ArrivalBarcode`、`Frm_InitialBarcode`:条码初始化、补打。 与 PDA 模块联动,常使用 `UcLookKw`、`UcLookCk` 等控件。 ### 3.4 `PDA/` 针对手持终端的 WinForms 界面,聚焦扫码场景: - 包含入库、出库、盘点、移库等简化窗体。 - 通常提供大按钮、扫码框,调用相同的 WebApi。 ## 4. 质量域 ### 4.1 `QC/`(通用) - `DefectCode*.cs`:缺陷代码维护(按业务场景区分:`Qc`, `Rk`, `Ck` 等)。 - `Frm_MesQaItemsDetect01`、`Frm_MesQaItemsDetect01Input`:检验项目与录入。 - `Frm_MesQmAql1`、`Frm_MesQmAql2`:AQL 抽样配置。 - `Models/`:质检领域实体模型(如 `MesDefectCode`, `MesSysLookups`)。 ### 4.2 `IPQC/`(过程检验) - `Frm_ShouJian` 系列:首件检验。 - `Frm_XunJian` 系列:巡检。 - `Frm_ShouJianDetect01H5`:基于 Web 的检验界面。 通常在工序产线上使用,结合 `Work/` 数据。 ### 4.3 `FQC/`(成品检验) - `Frm_Fqc`:总览。 - `Frm_FqcDetect01`:检验执行。 - `MesFqcExceptional`:异常处理。 - `SelectFqcBox`:选择批次、箱码。 ### 4.4 `RkQC/`(来料检验) - `Frm_Cqfa`、`Frm_CqfaItems`:抽检方案定义。 - `Frm_Cqsq`:抽检申请。 - `Frm_CqDetect01`、`Frm_QtrkDetect01`、`Frm_WwrkDetect01`:来料/委外/完工入库检验。 ### 4.5 `WW/` - 委外加工质量管理,如委外验收、异常回馈。 - 与 `WOM/`、`RkQC/` 协同,形成外协闭环。 ## 5. 制造执行域 ### 5.1 `Work/` 核心工位与报工逻辑: - `Frm_WorkStart`:工序开工、人员设备绑定。 - `Frm_WorkProcesses`:工艺流程、过站控制。 - `Frm_Work01`、`Frm_Work09`:采集 Modbus、SerialPort、SQL Server 数据,调用 `WorkCollect/` API 汇报。 - `Frm_Repair`:返修流程。 - `SelectProcess` 等选择窗体辅助筛选工序、设备。 ### 5.2 `WOM/` - 工单下达、派工、拆分合并、进度追踪。 - 与 `Work/`、`Warehouse/`、`QC/` 共享数据,保证生产闭环。 ### 5.3 `PDA/`(与生产关联) - 为产线提供的简化扫码输入界面(如报工、报废、工位切换),与 `Work/` API 对接。 ## 6. 销售与报表 ### 6.1 `Sales/` - `Frm_SalesOrder`、`Frm_SalesDelivery` 等(具体文件根据版本配置)。 - 管理销售订单、发货、退货,与仓储模块联动。 ### 6.2 `Rpt/` - 报表框架:`EasyRptDesign`, `EasyRptEdt`, `EasyRptEdtShow`。 - 支持 FastReport 与 DevExpress 报表设计器。 - `SysHelp`, `ShowRptWizard` 等提供展示、说明。 ## 7. 系统与权限 ### 7.1 `Sys/` - `SysMenu`:菜单结构维护。 - `Organization`:组织树。 - `DocNoRule`:单据编号规则。 - `SysLog`:系统日志。 - `Frm_Config`:系统配置,可读取/写入 `App.config`。 - `SysHelp`:帮助文档编辑展示。 ### 7.2 `User/` - `User`:用户维护。 - `Role`、`RoleSelectAction`:角色与权限分配。 - `UserSelectRole`、`UserSetPwd`:角色分配、重置密码。 - 使用 `UcDictionarySelect`, `UcTreeList` 等控件呈现权限树。 ## 8. 公共控件与工具 尽管位于 `UserControl/`、`ToolBox/`,但与 DevFrm 模块紧密耦合: - `UcToolBarMenu`, `UcPageBar`, `UcDictionarySelect`, `UcLook*` 控件在大部分窗体中复用。 - `UtilityHelper` 提供 `HttpPost`, JSON 解析, Grid 初始化, 资源访问;`LogHelper` 写日志;`MsgHelper` 统一弹窗。 - `UpdateParentEventArgs` 用于子窗体通知父窗体刷新(如审核后刷新列表)。 ## 9. 依赖与扩展注意事项 1. **API 约定**:绝大多数窗体通过 `UtilityHelper.HttpPost(WebApiUrl, route, json)` 调用后台,需确保 `App.config` 配置正确。新增模块时优先复用该方式。 2. **DevExpress 控件**:窗体设计依赖 DevExpress v22.2,新增界面请使用同版本控件,保持 Look&Feel 一致。 3. **线程与硬件交互**:`Work/Frm_Work01`、`Gs.Weight*` 等模块使用 `NModbus`、`SerialPort`,在 DevFrm 新增类似功能时需注意 UI 线程安全与资源释放。 4. **日志与异常**:使用 `LogHelper.Debug` 按业务模块输出日志,结合 `MsgHelper` 呈现用户提示。 5. **国际化**:现有窗体中文提示较多,若扩展需考虑统一的资源管理。 --- 通过上述梳理,可快速定位 DevFrm 各模块职责与典型窗体,便于开展二次开发与模块维护。建议结合 `HELP.md` 总览与 `ANALYSIS_REPORT.md` 进一步掌握全局架构。***