最近在整理技术仓库时,翻出一个基于Django框架开发的生产执行管理系统项目。这个系统最初是为某制造企业定制开发的车间管理解决方案,经过脱敏处理后决定开源分享。作为使用Python+Django栈开发过多个工业级系统的老鸟,我认为这个项目特别适合中小型制造企业进行二次开发,也适合Django学习者研究真实生产环境下的编码实践。
这个系统完整实现了从工单下发、工序流转到质量检验的全流程数字化管理,包含12个核心模块。最值得关注的是其任务分配算法和实时看板设计,这两个模块在真实生产环境中经过3年验证,能提升车间调度效率约40%。下面我会结合源码,重点解析系统架构设计和几个关键技术的实现方案。
选择Django作为核心框架主要基于以下考量:
前端采用Vue.js + ElementUI的组合,这种前后端分离架构在v2.0版本重构时引入。实测表明,在工单量超过5000条/天时,前端渲染性能比原jQuery方案提升60%以上。
系统主要包含以下功能模块:
数据库设计上特别采用了分表策略:
using参数实现多数据库路由在production/tasks.py中实现的智能派工算法是系统核心,其逻辑流程为:
关键代码片段:
python复制def allocate_task(process):
devices = Device.objects.filter(
capability__contains=process.required_capability,
status='IDLE'
).annotate(
load_score=Count('current_tasks')
).order_by('load_score')
# 技能匹配度计算
qualified_workers = Worker.objects.filter(
skills__overlap=process.required_skills
).annotate(
workload=Count('assigned_tasks')
)
# 综合评分算法
best_match = min(
[(d, w) for d in devices for w in qualified_workers],
key=lambda x: x[0].load_score * 0.6 + x[1].workload * 0.4
)
return best_match
看板数据更新采用WebSocket+Redis的混合方案:
这种设计在300+终端同时在线时,服务器负载比传统轮询方案降低75%。核心配置如下:
python复制# settings.py
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [("redis://:password@127.0.0.1:6379/0")],
"symmetric_encryption_keys": [SECRET_KEY],
},
}
}
推荐使用Docker Compose部署,关键服务包括:
实测配置(日处理2万工单量):
yaml复制# docker-compose.prod.yml
services:
web:
image: myapp:prod
deploy:
resources:
limits:
cpus: '2'
memory: 2G
environment:
- GUNICORN_WORKERS=4
- CELERY_WORKERS=3
针对工单查询的优化措施:
python复制class WorkOrder(models.Model):
class Meta:
indexes = [
models.Index(fields=['status', '-priority']),
models.Index(fields=['deadline']),
]
select_related和prefetch_related减少查询次数ARCHIVED标记自动归档若需要修改工艺审批流程,可按以下步骤操作:
ProductionFlowMixin基类get_approval_chain方法示例代码:
python复制class CustomFlow(ProductionFlowMixin):
def get_approval_chain(self):
return [
{'role': 'line_leader', 'required': True},
{'role': 'quality_check', 'threshold': 1000}, # 金额大于1000需要质检审批
{'role': 'production_manager', 'condition': lambda x: x.priority == 'URGENT'}
]
问题1:工单状态不同步
问题2:报表生成缓慢
CREATE MATERIALIZED VIEW@cache_page装饰器项目采用标准Django项目结构,关键目录说明:
code复制/project
/apps
/production # 核心生产模块
/quality # 质量管理模块
/reporting # 报表引擎
/static
/dist # 前端构建输出
/templates # 后端渲染模板
/docs
/api # API文档
/deploy # 部署指南
特别推荐研究的几个文件:
production/signals.py - 业务逻辑事件处理reporting/query_builder.py - 动态报表查询构造器utils/exporters.py - 多格式数据导出工具类这个系统最值得借鉴的是其异常处理机制,在core/exceptions.py中定义了完整的业务异常体系,配合Django的中间件实现了统一的错误处理流程。比如当设备超负荷时,会抛出特定的DeviceOverloadException,前端会自动显示对应的处理建议。
对于想要学习Django实战开发的同学,建议重点研究任务队列的实现(tasks.py)和权限控制系统(permissions.py)。这两个模块展示了如何在不修改Django核心的情况下,通过组合模式扩展出适合生产环境的功能。