CSFrameworkV6开发框架打造塑木地板新材料行业ERP系统

作者:jonny  发布日期:2026/10/02 22:22:43

广东邦英新材料有限公司ERP系统(Bongywood ERP)是一套面向新材料行业的 Windows 桌面企业管理软件,基于 CSFrameworkV6.1 旗舰版快速开发框架构建,覆盖销售、采购、库存、生产、财务、人力资源、报表中心与系统管理八大业务域。本文从技术栈与功能模块两个维度,介绍这套系统的实现方案。

 

一、项目背景

新材料行业的生产组织方式介于化工与离散制造之间:既有挤出、造粒等连续工艺环节,又需要按客户订单进行批号、交期与成本核算管理。邦英 ERP 围绕这一业务特征,以「材料 / 产品双口径」为主线组织库存与单据体系,销售发货、采购入库、材料出库、生产计划、挤出登记等单据均围绕物料编码(ProductCode)贯通,最终形成从接单到出库、从对账到收付款的完整闭环。

系统采用 MDI 多文档界面,主窗体按业务模块组织导航,各模块以独立项目程序集承载,便于按客户授权范围裁剪与增量升级。

 

二、技术栈

1、开发框架与运行环境

层次 选型 说明
开发框架 CSFrameworkV6.1 旗舰版 提供窗体基类、Bridge 数据通道、ORM 映射、权限、多语言、报表等基础设施
运行平台 .NET 8(net8.0-windows) Windows 桌面应用,WinExe 输出
界面技术 WinForms + DevExpress 22.1 GridControl / XtraEditors 等控件,皮肤样式可由用户配置
数据访问 Entity Framework Core 8.0.6 + CSFramework.EF 封装 支持 SQL Server(主)、Oracle、MySQL 多数据库提供程序
报表组件 FastReport.Net 40 余张业务报表与单据打印模板,支持用户自定义报表
部署形态 ADO 直连 / WebApi 双通道 启动时由 BridgeFactory 决定通道,业务代码无感知
工程规模 21 个项目,约 1,258 个 .cs 文件 解决方案 XQ-Bongywood-NET8.sln

 

2、分层架构与解决方案结构

系统沿用框架标准的接口层—业务层—数据层—模型层四层划分,业务模块各自独立成程序集:

CSFrameworkV6.Main              ★ 入口 EXE (WinExe)
CSFrameworkV6.Models            实体模型层(约 399 个文件)
CSFrameworkV6.Business          业务逻辑层(BLL)
CSFrameworkV6.DataAccess        数据访问层(DAL)
CSFrameworkV6.Interfaces        接口/契约层(Bridge)
CSFrameworkV6.Common            公共工具类
CSFrameworkV6.Library           共享 UI 框架库(frmBase 等)
CSFrameworkV6.Language          多语言支持
CSFrameworkV6.WebApiClient      Web API 客户端(HTTP 通道)
CSFrameworkV6.DataDictionary    数据字典/基础资料
CSFrameworkV6.SalesModule       销售模块
CSFrameworkV6.PurchaseModule    采购模块
CSFrameworkV6.InventoryModule   库存模块(最大的业务模块)
CSFrameworkV6.ProductionModule  生产模块
CSFrameworkV6.FinancelModule    财务模块
CSFrameworkV6.HumanResource     人力资源
CSFrameworkV6.ReportModule      报表模块
CSFrameworkV6.SystemModule      系统管理
CSFrameworkV6.Home              首页仪表盘
CSFrameworkV6.UserCustom        用户自定义扩展

窗体侧统一继承框架基类:frmBaseBusinessForm(业务单据:汇总 Grid + 明细 Grid + 编辑 Panel + 工具条)与 frmBaseDataDictionary(基础资料单表编辑),新增单据时只需继承并配置数据容器即可,界面交互与工具栏按钮由基类统一接管。

 

3、双通道数据访问(Bridge 模式)

框架在启动时通过 BridgeFactory.InitializeBridge() 确定数据通道,ADO Direct 模式下 DAL 类直连数据库,WebApi 模式下由 WebApiClient 通过 HTTP 调用后端服务;两种模式实现相同的 IBridge_* 接口,切换对业务代码完全透明。

配合 DalFactory.RegistAssembly() 反射扫描带 ORM 映射特性的 DAL 类,建立「ORM 类型 → DAL 类型」映射表:

[DefaultORM_UpdateMode(typeof(tb_SO), true)]
public class dal_SO_Product : dalBaseBusiness { ... }

同时由 DatabaseProvider 区分「系统数据库」(共享元数据)与「账套数据库」(公司业务数据),以 Loginer.CurrentUser.DBID 定位当前操作库,天然支持多公司、多账套。

 

4、主从单据与数据字典基类

业务单据统一走 BusinessData<TMaster, TDetail> 主从数据容器,经 bllBaseBusiness<TM,TD> → dalBaseBusiness 落地;基础资料则走 bllBaseDataDict<T> / dalBaseDataDict<T> 单表泛型基类。所有实体统一使用 isid(Snowflake 主键)、CreatedBy / CreationDate、LastUpdatedBy / LastUpdateDate、FlagApp(审批状态)、FlagPeriod(期末结账锁定)等公共字段,审计与月结控制由基类统一处理。

以「禁用物料检测」这类跨单据业务规则为例,只需要在基类提供一个方法,各单据在保存与审核两个入口各自调用一次即可完成全库覆盖:

// 保存时:拦截录入已禁用物料(含修改模式下新增的明细行)
if (isAdd)
{
    AssertStopProducts(data.Details.Select(s => s.ProductCode).Distinct().ToList());
}
if (listAdded.Count > 0)
{
    AssertStopProducts(listAdded.Select(s => s.ProductCode).Distinct().ToList());
}

// 审核时:拦截「录入时未禁用、之后被停用」的单据
if (input.Type == ApprovalType.Approval)
{
    AssertStopProducts(q_INs.Select(s => s.ProductCode).Distinct().ToList());
}

 

三、主要功能模块

1、模块功能一览

模块 主要窗体 / 单据 功能描述
销售管理 frmSO 销售订单、frmDO 发货单、frmSR 销售退货 销售订单录入与审核、发货出库、销售退货处理,支持订单交期跟踪、金额与数量汇总,订单执行状态可穿透查询至出入库流水
采购管理 frmPR 请购单、frmPO 采购订单 请购申请转采购订单、供应商价格策略与比价、交期回复(供应商交期 / 回复 PMC 交期)、采购入库进度追踪
库存管理 frm_IN_Product / frm_IN_Material 入库单、frm_IO_Material 出库单、frm_IA_Product / frm_IA_Material 调整单、frm_IC_Product / frm_IC_Material 盘点单、frm_Inventory_* 库存余额、frm_InventoryLog_* 流水追溯、frm_Inventory_InOutFIFO、frm_Location 库位 材料与产品双口径库存管理;入库、出库、调整、盘点四类单据覆盖全部库存变动场景;FIFO 先进先出核算与出库成本追溯;库位管理与批号跟踪;盘点盈亏自动生成调整数据;库存流水可按单据号反向追溯
生产管理 frm_PFPlan 生产计划、frmPFSummary 生产汇总、frmProcess 工序、frm_ExtrusionReg 挤出登记 生产计划下达与明细展开、按计划维度汇总产出与进度、工序与工艺路线定义;挤出登记贴合新材料行业挤出工艺,记录机台、班次、工艺参数与产出明细
财务管理 frmAR 应收账款、frmAP 应付账款、frm_VF 预付款核销、frm_IV_Customer 客户对账单、frm_IV_Supplier 供应商对账单、frmAccountItem 会计科目、frmQueryOutstandingDlg 未结款项查询 应收应付登记与核销、预付款按单据核销、客户 / 供应商对账单生成与确认、往来余额与未结款项查询、账龄与收付款计划跟踪
基础资料 frmCustomer 客户、frmSupplier 供应商、frmProduct 产品 / 物料、frmProductCategory 分类、frmProductCustomer 客户物料对照、frmUnit 单位、frm_Currency 币种、frm_Car 车辆、frmCommonDataDict 通用数据字典、Excel 批量导入 客户、供应商、产品主数据维护,物料停用(IsStopUse)标记与价格策略;单位、币种、车辆等辅助资料;通用数据字典支撑下拉项自定义;支持 Excel 批量导入客户、产品、供应商
人力资源 frm_Employee 员工档案、frm_EmployeeContract 劳动合同、frm_EmployeEvaluation 绩效考核、frm_EmployeRewards 奖惩记录、frm_EmployeTraining 培训记录、frm_EmployeSalaryAdjustment 调薪、frm_EmployePositionAdjustment 岗位异动 员工档案与合同管理,全任职周期的考核、奖惩、培训、调薪、异动记录留痕,形成完整人事档案链
报表中心 ReportSO / PO / PR / DO / IN / IO / SR / PFPlan / ET 等 40 余张报表窗体,frmPreview 预览、frmBasePrint 打印、frmUserCustomReport 自定义报表 基于 FastReport.Net 的单据打印与业务报表;覆盖订单明细汇总、出入库明细、订单交期与出入库追溯、应收应付汇总与账龄、客户利润分析等;支持用户自定义报表与打印格式配置
系统管理 frmUser / frmRole 用户与角色权限、frmOrganization 组织架构、frmSystemSettings 系统参数、frmDocNoRule 单据编号规则、frmDocType 单据类型、frmLogViewer 日志查看、frmLanguageData 多语言、frmDatabaseBackup 数据备份、frmDatasetManager 账套管理、frmReportManager 报表配置、frmMessageBroadcast 消息广播 功能权限与数据权限控制、系统参数集中配置、单据编号规则自定义、操作日志审计、中英文多语言切换、数据库备份与账套管理、报表模板在线配置、系统消息广播
首页看板 frmModuleMain(首页仪表盘) 登录后进入的经营数据概览与待办事项汇总,按角色聚合待审核单据、交期预警与关键经营指标

 

2、单据与实体命名规范

为让 21 个项目的协作保持统一,系统沿用框架的实体命名约定,从名称即可判断对象性质:

前缀 含义 示例
dt_ 数据字典 / 基础资料(单表) dt_Customer、dt_Supplier、dt_Product
tb_ 业务单据表(主从结构) tb_SO / tb_SOs、tb_PO / tb_POs
sys_ 系统表 sys_CompanyInfo、sys_Language、sys_Log
req_ / res_ 查询请求 / 响应模型 req_SO、res_Inventory

 

四、框架能力复用小结

回顾本项目的落地过程,CSFrameworkV6 快速开发框架带来的收益集中在四点:

1. 单据开发模板化。继承 frmBaseBusinessForm + BusinessData<TM,TD> 后,新增一张主从单据的工作量收敛为「建实体 → 写 DAL → 配窗体」,界面与工具条由基类接管。

2. 数据通道可切换。ADO Direct 与 WebApi 双通道共用同一套 IBridge_* 接口,从局域网直连迁移到集中式部署时,业务层无需改动。

3. 基础能力开箱即用。权限、多语言、日志、单据编号规则、系统参数、账套切换、自动升级、报表管理均由框架提供,项目只需要关注业务规则本身。

4. 公共字段与审计统一。isid / FlagApp / FlagPeriod 等公共字段与审批、月结控制内建在基类中,跨单据的业务规则(如禁用物料检测)可在基类一处实现、各单据按需调用。

 

了解更多 CSFrameworkV6 快速开发框架,请访问 C/S框架网。