本文记录了笔者使用腾讯云代码助手 WorkBuddy,从零开发一套生产管理大屏系统的完整过程。系统涵盖缺件分析、在途跟踪、成品库存等核心模块,数据源对接金蝶 K/3 WISE ERP,部署在内网 Windows 服务器上,大屏实时展示车间生产状态。
我所在公司是山东金大丰机械有限公司,主要生产农业收割机等大型农机设备。生产计划涉及 33 个机型、274 个配置,涵盖割台类型、行距、发动机品牌、驱动方式等多个维度。
管理痛点很直接:
目标:做一个大屏,把生产计划、缺件、库存、在途数据统一展示。
层级 | 技术 | 理由 |
|---|---|---|
后端 | Flask (Python) | 轻量、内网部署简单、团队熟悉 Python |
前端 | HTML + 原生 JS | 大屏场景不需要框架,直接操作 DOM 更快 |
数据源 | 金蝶 K/3 WISE v15.1.0 + Excel | 现有 ERP 系统,不改动原有流程 |
部署 | Win10 内网服务器 | 生产环境物理隔离,无需公网 |
架构非常简单:
K3 SQL Server → core.py (数据导出) → .xlsx 文件
.xlsx 文件 → server.py (Flask API) → bigscreen_v2.0.html (前端大屏)第一步,我告诉 WorkBuddy 需求:
"帮我搭建一个 Flask 项目,需要提供 REST API 读取 Excel 数据,前端是大屏展示页面"
WorkBuddy 直接生成了项目骨架:
server.py:Flask 路由和 API 定义core.py:数据处理和 Excel 读取逻辑bigscreen_v2.0.html:大屏前端页面关键体验:不需要从空文件开始,框架搭建 + 基础代码一次到位。
这是整个项目最复杂的部分。K3 的数据结构比较特殊:
在途数据的定义:收料通知单已审核但未推生成入库单的数据(即到货未入库)。K3 的流程是:
采购订单 → 收料通知单 → 入库单
↑ ↑
已审核 已审核+关闭只有收料通知单已审核、且对应入库单未审核+关闭的,才算在途。
我把这个业务规则告诉 WorkBuddy,它帮我写了 export_zaitai.py,核心 SQL 逻辑:
python
复制
# 查询收料通知单与入库单的差额
# 关键表:ICStockBill(出入库)、t_ICItem(物料规格)
# 关键字段:FModel(物料规格)、ICStockBillEntry.FEntrySelfA0239(大架号/发动机号/配置)关键体验:K3 的表结构很复杂(几百张表),我只需要描述业务逻辑,WorkBuddy 帮我翻译成 SQL。
大屏需要展示多个 Tab:
Tab | 内容 | 数据源 |
|---|---|---|
生产计划 | 33个机型274个配置 | 生产计划表 Excel |
缺件明细 | 缺件数量 + 在途数量 | 缺件表 + 在途明细 |
成品库存 | 大架号、配置、发动机号等 | K3 库存表 |
WorkBuddy 的帮助:
javascript
复制
// 大屏核心:定时刷新数据
setInterval(function() {
fetch('/api/quejian').then(r => r.json()).then(updateTable);
fetch('/api/zaitai').then(r => r.json()).then(updateZaitai);
}, 60000); // 每分钟刷新需求迭代阶段:
这些功能我都是用 WorkBuddy 的 Craft 模式,描述需求后直接生成代码。
在线编辑的核心代码(WorkBuddy 生成):
javascript
复制
// 双击编辑 → 保存到后端
cell.addEventListener('dblclick', function() {
const original = this.textContent;
this.contentEditable = true;
this.focus();
this.addEventListener('blur', function() {
const newValue = this.textContent;
if (newValue !== original) {
fetch('/api/update_field', {
method: 'POST',
body: JSON.stringify({id: rowId, field: fieldName, value: newValue})
});
}
});
});成品库存表当前 13 列:大架号、打印配置、产品编码、产品名称、发动机编号、仓库、切碎机、还田机、轮距、割幅、滚筒、驱动、轮胎。
这个模块的特殊之处在于大架号数据来自 K3 的 ICStockBillEntry.FEntrySelfA0239 字段,里面同时包含大架号、发动机号和配置信息,需要解析拆分。WorkBuddy 帮我写了解析逻辑。
用 Windows 计划任务 + Python 脚本实现:
计划任务:K3_Zaitai_Export
触发器:每 30 分钟运行一次
执行:python export_zaitai.py
输出:在途_明细.xlsx → 大屏自动读取初期问题:数据文件按日期堆积(03.01.xlsx、03.02.xlsx...),管理混乱。
优化方案:改为固定文件名覆盖写入,不做堆积。大屏始终读取最新文件。
系统运行在 172.16.30.104:9876/bigscreen,车间端口 9877。
大屏展示内容:
关键数据流:
K3 ERP (172.16.30.177) ──SQL查询──→ export_zaitai.py (每30分钟)
↓
在途_明细.xlsx
↓
生产计划 Excel ──→ core.py ──→ server.py (Flask) ──→ bigscreen_v2.0.html
K3 库存数据 ──→ core.py ──→ ↑ API
缺件表 Excel ──→ core.py ──→ ↓
车间大屏 (9876/9877)指标 | 纯手工 | WorkBuddy 辅助 |
|---|---|---|
项目骨架搭建 | 半天 | 10 分钟 |
K3 SQL 编写 | 1-2天(查文档+试错) | 2小时(描述业务逻辑即可) |
前端大屏页面 | 1天 | 3小时 |
需求迭代(加列、加功能) | 每次半天 | 每次半小时 |
Bug 修复 | 查文档+调试 | 描述问题,直接给修复方案 |
总体效率提升约 3-4 倍。
K3 的收料通知单 → 入库单不是一对一关系,一个收料通知单可以分多次入库。最初我按一对一计算在途,数据对不上。WorkBuddy 帮我重新梳理了关联逻辑。
TAP 生产计划更新后大屏没同步,排查发现是前端缓存问题。解决:API 响应加 Cache-Control: no-cache,前端用 Ctrl+F5 验证。
早期按日期命名导致大屏读取逻辑复杂。改为固定文件名后,核心代码简化了一半。
WorkBuddy 在这个项目中的核心价值:
如果你也有类似的内部系统开发需求,强烈建议试试 WorkBuddy——特别是需要对接老旧 ERP 系统的场景,AI 帮你处理数据逻辑,你专注于业务本身。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。