MES 物料流转时间报表及超时预警

文章目录

    依旧是内部 MES 系统的二次开发,这次要添加的是一个 MES 物料流转时间报表及超时预警功能。

    即,两个站点之间的流转时间统计分析。客户对工艺流程的两个指定站点的流转时间有要求。需要拉报表出来。支持导出 Excel。这个不是一个简单的报表,而是包含了设置管理功能,例如,指定某个产品的某两个站点之间的流转时间不能超过多少小时。其次才是不同设置规则对应的统计表格功能。

    预警消息

    可以考虑用企业微信机器人消息的方式进行预警。
    同时,在 MES 系统里也可以有一个预警消息的展示界面,显示所有当前处于预警状态的批次信息,方便生产人员查看和跟进处理。

    群消息推送功能参考:
    https://open.work.weixin.qq.com/help2/pc/14931

    已添加的 Webhook 地址示例:
    https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx

    推送企业微信消息的功能,最好封装成函数,同时增加一个无需登录就能调用的测试 API,方便判断推送功能是否正常。

    短期内推送过多企业微信消息,会触发企业微信接口的报错:{“errcode”:45009,“errmsg”:“api freq out of limit, hint: [xxx], from ip: xxx, more info at https://open.work.weixin.qq.com/devtool/query?e=45009”} 需要规避。

    收集预警信息与发送微信预警消息逻辑分离

    一个长假期回来,岂不是所有的批次都会报预警?如果有消息收敛机制,就不需要考虑这个问题了。
    前提是,需要把收集预警信息与发送微信预警消息逻辑分离,做成两个独立的定时任务。如果不分离,就不方便做推送消息汇总。

    • 收集预警信息定时任务,每小时执行一次
    • 发送企业微信预警消息,每 15 分钟执行一次。未来也方便支持其他的功能的预警消息

    消息收敛机制,新建一个定时任务,判断预警历史中没有处理的预警记录。每次生成一条企业微信推送消息汇总,将所有未处理的预警记录的批次号和预警类型进行汇总,生成一条企业微信消息进行推送。处理完成后,把对应的预警历史状态标记为推送成功。

    数据库分离

    由于是二次开发,而且拿不到原 MES 的代码,所以原 Oracle 的数据库我只开了一个只读的账号,不进行任何的写入和修改操作。新功能的数据都是放到新建的 MySQL 数据库中。这样,预警规则,及预警历史记录都存储到 MySQL 数据库中;流转时间报表则是通过同时查询 Oracle 和 MySQL 实现。

    GPT 5.4 很强

    实现这个功能大部分时间是在梳理需求,和调整交互体验。用 GPT 5.4 实现的第一版近乎完美,只是有一些逻辑上的缺陷。但是,参考王建硕大佬视频里的说法,未来将不是软件 bug,而是需求梳理的问题,就是没有跟 AI 交代清楚细节,导致 AI 没有完全理解你的需求和意图。确实是这样。

    但是,要把一个需求事无巨细的交代清楚,也是一件需要耐心的事情,或者是能积累好日常的规范,不至于重复的细节还需要再说明一遍。例如:

    • 使用 golang sync/atomic 规避上一个计划任务没执行完,又开始执行下一个
    • 消息推送要考虑频率过高,造成的消息打扰,及三方推送接口频率限制
    • 生成的代码需要加注释,及单元测试
    • 界面需要考虑小屏幕笔记本的使用体验

    不过以后 github copilot 换成 AI credit 计费之后,怕是不能这样奢侈地使用 GPT 5.4 了,何况是提掏腰包买会员。

    一些感想

    不知不觉这个总耗时不超过 3 周的 MES 系统,从完全不了解 300 多张数据表功能,到已经二次开发上线了 10 多项功能。我感觉已经很效率了。但是从日志看,每天的使用者也就是两个相关人员。

    虽然交互上我觉得很满意了,但是因为用的人少,我又收获不到什么成就感。加之,开发这样的内部系统总归会被算作是成本,费力不讨好。领导毕竟都是冷血的动物(听闻嵌入式开发同事被生产部门推到其他部门,因为成本 hold 不住),这无可厚非,得多考虑能形成营收的功能,而不是满足于忙碌的状态。

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式