Qcadoo MES 设计文档
1. 仓库分析
1.1 项目概述
Qcadoo MES是一个面向中小型企业的生产管理系统,它结合了大型ERP系统的功能,适应中小型企业的特定需求。项目采用开源模式,同时提供商业版本。

1.2 目录结构
项目采用模块化结构,主要包含以下部分:
- mes-master :主项目目录,包含应用程序核心和各种功能插件
- mes-application:应用程序核心,包含配置文件和Web应用结构
- mes-plugins:功能插件集合,每个插件实现特定的业务功能
- qcadoo-master:基础框架,提供核心功能支持
- qcadoo-maven-plugin-master:Maven插件,用于构建和部署
- qcadoo-super-pom-open-master:父POM文件,定义项目依赖和构建配置
1.3 技术栈
- Java 8:主要开发语言
- Spring Framework:依赖注入、AOP、MVC等核心功能
- Maven:项目构建和依赖管理
- AspectJ:面向切面编程
- 插件架构:模块化设计,功能通过插件实现
- Web技术:JSP、Servlet、HTML、JSON
- 数据库:支持多种数据库(通过SQL脚本可以看出)
1.4 核心功能模块
通过分析插件目录,可以识别出以下核心功能模块:
- 基础功能(mes-plugins-basic):系统基础功能
- 技术管理(mes-plugins-technologies):生产技术管理
- 订单管理(mes-plugins-orders):生产订单管理
- 生产计数(mes-plugins-production-counting):生产数据统计
- 仓库管理(mes-plugins-warehouse-minimal-state):仓库状态管理
- 成本计算(mes-plugins-cost-calculation):成本核算
- 生产调度(mes-plugins-production-scheduling):生产计划调度
- 物料流(mes-plugins-material-flow):物料流转管理
- 设备维护(mes-plugins-cmms-machine-parts):设备维护管理
- 报表生成 :基于qcadoo-report模块

2. 系统架构设计
2.1 架构风格
Qcadoo MES采用插件化的多层架构,具体如下:
- 表现层:基于Spring MVC,处理HTTP请求和响应
- 业务逻辑层:通过插件实现各种业务功能
- 数据访问层:基于qcadoo-model模块,提供数据持久化
- 基础框架层:qcadoo-core提供核心功能支持
2.2 核心流程图
数据库 模型层 插件层 Web层 客户端 数据库 模型层 插件层 Web层 客户端 HTTP请求 调用插件功能 数据操作 SQL操作 返回数据 处理结果 业务处理结果 HTTP响应
2.3 模块划分
| 模块 | 主要职责 | 文件位置 | 引用 |
|---|---|---|---|
| 应用核心 | 系统配置和Web应用结构 | mes-application | mes-master/mes-application |
| 基础插件 | 系统基础功能 | mes-plugins-basic | mes-master/mes-plugins/mes-plugins-basic |
| 技术管理 | 生产技术管理 | mes-plugins-technologies | mes-master/mes-plugins/mes-plugins-technologies |
| 订单管理 | 生产订单管理 | mes-plugins-orders | mes-master/mes-plugins/mes-plugins-orders |
| 生产计数 | 生产数据统计 | mes-plugins-production-counting | mes-master/mes-plugins/mes-plugins-production-counting |
| 仓库管理 | 仓库状态管理 | mes-plugins-warehouse-minimal-state | mes-master/mes-plugins/mes-plugins-warehouse-minimal-state |
| 成本计算 | 成本核算 | mes-plugins-cost-calculation | mes-master/mes-plugins/mes-plugins-cost-calculation |
| 生产调度 | 生产计划调度 | mes-plugins-production-scheduling | mes-master/mes-plugins/mes-plugins-production-scheduling |
| 物料流 | 物料流转管理 | mes-plugins-material-flow | mes-master/mes-plugins/mes-plugins-material-flow |
| 设备维护 | 设备维护管理 | mes-plugins-cmms-machine-parts | mes-master/mes-plugins/mes-plugins-cmms-machine-parts |
3. 核心功能设计
3.1 功能模块
3.1.1 基础功能模块
功能描述:提供系统的基础功能,包括用户管理、权限控制、字典管理等。
实现方式:基于qcadoo-plugins-user-management和qcadoo-plugins-dictionary-management模块。
关键流程:
- 用户登录认证
- 权限验证
- 字典数据管理
3.1.2 技术管理模块
功能描述:管理生产技术相关数据,包括工艺路线、操作步骤、技术参数等。
实现方式:通过mes-plugins-technologies插件实现。
关键流程:
- 工艺路线定义
- 操作步骤配置
- 技术参数设置
3.1.3 订单管理模块
功能描述:管理生产订单,包括订单创建、跟踪、状态管理等。
实现方式:通过mes-plugins-orders插件实现。
关键流程:
- 订单创建
- 订单状态更新
- 订单跟踪
3.1.4 生产计数模块
功能描述:统计生产数据,包括产量、效率、质量等指标。
实现方式:通过mes-plugins-production-counting插件实现。
关键流程:
- 生产数据采集
- 数据统计分析
- 报表生成
3.1.5 仓库管理模块
功能描述:管理仓库状态,包括库存水平、物料移动、最小库存预警等。
实现方式:通过mes-plugins-warehouse-minimal-state插件实现。
关键流程:
- 库存水平监控
- 物料移动记录
- 最小库存预警
3.2 页面详情
| 页面名称 | 模块 | 功能描述 | 调用API | 参数说明 | 变更状态 |
|---|---|---|---|---|---|
| 登录页面 | 基础功能 | 用户认证 | /j_spring_security_check | username, password | 未变更 |
| 主页面 | 基础功能 | 系统主界面 | /main.html | - | 未变更 |
| 订单管理页面 | 订单管理 | 订单列表和详情 | /orders.html | - | 未变更 |
| 技术管理页面 | 技术管理 | 工艺路线管理 | /technologies.html | - | 未变更 |
| 生产计数页面 | 生产计数 | 生产数据统计 | /production-counting.html | - | 未变更 |
| 仓库管理页面 | 仓库管理 | 库存状态管理 | /warehouse.html | - | 未变更 |
| 成本计算页面 | 成本计算 | 成本核算 | /cost-calculation.html | - | 未变更 |
| 生产调度页面 | 生产调度 | 生产计划调度 | /production-scheduling.html | - | 未变更 |
4. 核心 API/类/函数
4.1 核心类和函数
| 类/函数名 | 描述 | 参数(类型/含义) | 成功返回结构/类型 | 失败返回结构/类型 | 所属文件/模块 | 引用 |
|---|---|---|---|---|---|---|
FilesystemResourcesFilter |
处理文件系统资源的过滤器 | sourceBasePath: String 资源基础路径 | - | - | qcadoo-view | mes-master/mes-application/src/main/webapp/WEB-INF/web.xml |
ContextLoaderListener |
Spring上下文加载监听器 | - | - | - | spring-web | mes-master/mes-application/src/main/webapp/WEB-INF/web.xml |
DispatcherServlet |
Spring MVC核心Servlet | contextConfigLocation: String 上下文配置位置 | - | - | spring-webmvc | mes-master/mes-application/src/main/webapp/WEB-INF/web.xml |
4.2 配置文件
| 配置文件 | 描述 | 路径 | 引用 |
|---|---|---|---|
| web.xml | Web应用配置文件 | mes-application/src/main/webapp/WEB-INF/web.xml | mes-master/mes-application/src/main/webapp/WEB-INF/web.xml |
| app.properties | 应用配置文件 | mes-application/conf/*/app.properties | mes-master/mes-application/conf |
| db.properties | 数据库配置文件 | mes-application/conf/*/db.properties | mes-master/mes-application/conf |
| log4j.xml | 日志配置文件 | mes-application/conf/*/log4j.xml | mes-master/mes-application/conf |
5. 技术栈与依赖
| 技术/依赖 | 版本 | 用途 | 来源 |
|---|---|---|---|
| Java | 1.8 | 开发语言 | pom.xml |
| Spring Framework | - | 依赖注入、AOP、MVC | pom.xml |
| AspectJ | - | 面向切面编程 | pom.xml |
| Maven | - | 项目构建和依赖管理 | pom.xml |
| OpenCSV | 4.0 | CSV文件处理 | mes-plugins-basic/pom.xml |
| qcadoo-plugin | 1.5 | 插件框架 | pom.xml |
| qcadoo-localization | 1.5 | 本地化支持 | pom.xml |
| qcadoo-security | 1.5 | 安全管理 | pom.xml |
| qcadoo-view | 1.5 | 视图管理 | pom.xml |
| qcadoo-report | 1.5 | 报表生成 | pom.xml |
6. 关键模块与典型用例
6.1 订单管理模块
功能说明:管理生产订单的全生命周期,包括创建、跟踪、状态更新等。
配置与依赖:
- 依赖:qcadoo-plugin、qcadoo-view
- 配置:通过插件XML文件定义
使用示例:
java
// 创建订单
OrderService orderService = getBean(OrderService.class);
Order order = orderService.createOrder(product, quantity, dueDate);
// 更新订单状态
orderService.updateOrderStatus(order.getId(), OrderStatus.IN_PROGRESS);
// 获取订单列表
List<Order> orders = orderService.getOrdersByStatus(OrderStatus.PENDING);
6.2 生产计数模块
功能说明:统计生产数据,包括产量、效率、质量等指标。
配置与依赖:
- 依赖:qcadoo-plugin、qcadoo-report
- 配置:通过插件XML文件定义
使用示例:
java
// 记录生产数据
ProductionCountingService countingService = getBean(ProductionCountingService.class);
countingService.recordProductionData(orderId, operationId, quantity, scrapQuantity);
// 生成生产报表
ReportService reportService = getBean(ReportService.class);
reportService.generateProductionReport(startDate, endDate);
7. 配置、部署与开发
7.1 配置管理
Qcadoo MES使用分层配置管理,主要配置文件位于:
- 环境配置:mes-application/conf/ 目录下,按环境(dev、prod、tomcat等)分类
- 数据库配置:db.properties 文件,配置数据库连接信息
- 应用配置:app.properties 文件,配置应用特定参数
- 日志配置:log4j.xml 文件,配置日志输出
7.2 部署方式
-
从源码构建:
- 克隆代码库
- 执行
mvn clean install构建项目 - 部署生成的WAR文件到Tomcat
-
使用预构建版本:
- 从GitHub Releases下载最新稳定版
- 部署WAR文件到Tomcat
7.3 开发流程
-
创建插件:
- 使用qcadoo-plugin-archetype创建新插件
- 实现业务逻辑
- 定义模型和视图
-
集成插件:
- 在mes-plugins/pom.xml中添加插件模块
- 构建并部署项目
-
测试:
- 运行单元测试
- 进行集成测试
- 验证功能正确性
8. 监控与维护
8.1 日志管理
Qcadoo MES使用Log4j进行日志管理,配置文件位于:
- mes-application/conf/*/log4j.xml
日志级别可根据需要调整,默认包括:
- ERROR:错误信息
- WARN:警告信息
- INFO:一般信息
- DEBUG:调试信息
8.2 常见问题与解决方案
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 数据库连接失败 | 数据库配置错误 | 检查db.properties中的连接信息 |
| 插件加载失败 | 插件依赖缺失 | 检查插件的pom.xml文件 |
| 权限错误 | 用户权限不足 | 检查用户角色和权限配置 |
| 性能问题 | 数据库查询效率低 | 优化数据库查询,添加索引 |
9. 总结与亮点回顾
Qcadoo MES是一个功能强大的生产管理系统,具有以下亮点:
- 插件架构:采用模块化的插件架构,便于功能扩展和定制
- 多语言支持:内置本地化支持,可适应不同国家和地区的需求
- 完整的生产管理功能:涵盖订单管理、技术管理、生产计数、仓库管理等核心功能
- 灵活的配置:支持不同环境的配置管理,适应不同部署场景
- 开源模式:采用GNU AGPLv3许可证,允许自由使用和修改
Qcadoo MES通过提供一套完整的生产管理解决方案,帮助中小型企业提高生产效率,降低运营成本,实现数字化转型。其插件架构和模块化设计使得系统具有高度的可扩展性和定制性,能够适应不同行业和企业的特定需求。
同时,Qcadoo Limited还提供商业版本,增加了更多高级功能和服务,如REST API集成、SaaS部署、与其他系统的集成模块等,为企业提供更全面的解决方案。