news 2026/9/18 20:47:33

模具厂管理信息化落地:模具号、BOM、报工与成本交期

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模具厂管理信息化落地:模具号、BOM、报工与成本交期

简介:这份PPT围绕模具制造行业的管理信息化建设展开,面向模具、注塑、五金、压铸类企业的管理者、信息化负责人及ERP实施人员,也适合希望了解制造业信息系统选型与落地思路的学习者。内容以i-M3模具企业管理系统为主线,梳理了管理信息化的必要性、系统主要流程、实施流程以及信息系统实施不理想的原因与成功标志,并给出与客户沟通、知识共享、模具技术沟通模板等具体做法。资源为单个pptx演示文稿,压缩包约1.33MB,共1个文件,属于可直接用于宣讲、培训或内部研讨的成套演示资料,模块划分清晰,便于按章节查阅。已有93人浏览学习。读者可从中获得模具行业ERP的功能框架,包括市场业务、计划与进程、BOM、生产与车间作业、采购、库存、成本、品质及人力资源等模块的组合逻辑,也能通过报价单、合同、进度报告与设计变更沟通等失败案例,理解管理纰漏造成的延期与返工代价,为系统选型和流程梳理提供参照。

1. 一份叫《某模具企业管理信息化解决方案.pptx》的文件,为什么十个厂九个落不了地

模具企业管理信息化的演示文稿通常长一个样:设计—加工—试模—交付全流程打通、设备联网、无纸化车间、老板手机上看进度。老板看完很兴奋,IT 负责人回到车间一算账就凉了半截——三十台机床,四个版本的 CAM 软件混着用,图纸在共享盘里叫「最终版2_修改后_真的最终」,老师傅的工时记在烟盒背面。方案逻辑没问题,问题是模具厂的生产逻辑跟批量制造不是一回事。

批量制造的主键是物料号,一套 BOM 对着几万件产量;模具厂的主键是模具号,一套模具就是一个项目,T0 试模那天之前谁也不敢打包票能过。把 MRP 那套「按预测备料、按库存扣减」照搬过来,最常见的后果是钢材堆满一仓库,该延期的模具照样延期。模具行业真正需要的是按模具号串起来的项目视图:BOM、工艺路线、工时、外协、试模记录、单套成本,全部挂在同一根主键上。

这套做法适合年产值三千万到五亿、每年两三百到三千套模具、以注塑模压铸模冲压模为主的厂,尤其是接单杂、套数多、交期紧、靠老师傅经验顶的那一类。往下走四步:先搭数据底座,再做车间报工,然后算成本与交期,最后才是上线验证。

2. 模具管理信息化的数据底座:模具号、BOM 与工艺路线怎么建模

数据底座没建好,后面的报工、排产、成本全是沙上建塔。这一章讲清楚四件事:主键怎么定、BOM 怎么分层、工艺路线怎么标准化、图纸和变更怎么落库。每一步都给可执行的建表语句和参数口径。

2.1 模具号编码规则决定后面三年的运维成本

常见做法是「客户简称 + 下单日期」,头三个月能用,半年后一定会撞号:同一个客户一天下三套模,日期精确到天就重复了。可检索、可扩展的规则是分段定长编码,例如MJ2408-A0137-01

段位长度取值来源生成后是否可改
模具类型码2MJ 注塑模 / MO 压铸模 / MC 冲压模 / MF 其他
年月4下单年月
客户代码1+4客户主数据里的短码
流水号4全厂统一自增,不按客户分段
结构版本2同一套模重大改版时递增可增版,不可改写历史

三条铁律:模具号全厂唯一且报废后不重用,否则三年的工时数据会被污染;流水号必须全厂统一自增,不要按客户或按年份清零;版本号只允许新增,不允许覆盖,新版本是新的模具号后缀而不是改老号。模具下面的零件编号用模具号-零件序号-件号,例如MJ2408-A0137-01-P012-01,模仁、滑块、斜顶、镶件都走这个规则,方便后面按零件报工和追料。

2.2 模具 BOM 拆两层:模架标准件走库存,非标件走采购

模具 BOM 一定要分两层看。第一层是模具装配结构:上模、下模、模架、滑块、斜顶、热流道系统、冷却水路,这一层回答「这套模由什么组成」。第二层是零件到毛坯的展开:模仁对应哪块钢板、哪个规格、哪家钢厂的料,这一层回答「要买什么、买多少」。两层混成一层,采购看不懂,车间也看不懂。

分层的直接收益是采购策略能分开:顶针、弹簧、导柱导套、螺丝、水路接头这类标准件走仓库安全库存,按周补货;模架、模仁料、镶件、热流道这类非标件必须按模具号挂采购订单,绝不能进通用库存。非标件一旦进了通用库存,财务上就是呆滞,车间里就是「明明买过却找不到」。

-- 模具主数据 CREATE TABLE mold_master ( mold_no VARCHAR(32) NOT NULL COMMENT '模具号,全厂唯一,报废不重用', mold_type VARCHAR(8) NOT NULL COMMENT 'MJ/MO/MC/MF', customer_code VARCHAR(8) NOT NULL COMMENT '客户短码', order_date DATE NOT NULL COMMENT '接单日期', plan_t0_date DATE NULL COMMENT '计划T0试模日期', cavity_count SMALLINT NOT NULL DEFAULT 1 COMMENT '型腔数', steel_grade VARCHAR(32) NULL COMMENT '模仁钢材牌号,如 718H/NAK80/S136', status VARCHAR(16) NOT NULL DEFAULT 'DESIGN' COMMENT 'DESIGN/MACHINING/TRIAL/DELIVERED/CLOSED', PRIMARY KEY (mold_no), KEY idx_status_t0 (status, plan_t0_date) -- 交期预警走这个索引 ) COMMENT='模具主数据'; -- 模具BOM(两层共用,用 level 区分) CREATE TABLE mold_bom ( id BIGINT NOT NULL AUTO_INCREMENT, mold_no VARCHAR(32) NOT NULL, part_no VARCHAR(48) NOT NULL COMMENT '零件号,如 MJ2408-A0137-01-P012-01', parent_part VARCHAR(48) NULL COMMENT '上层装配件,NULL 表示第一层', bom_level TINYINT NOT NULL COMMENT '1=装配层 2=零件毛坯层', item_code VARCHAR(32) NOT NULL COMMENT '物料编码,标准件指向库存物料', item_class VARCHAR(8) NOT NULL COMMENT 'STD标准件/STOCK库存件/NONSTD非标件', qty DECIMAL(12,3) NOT NULL DEFAULT 1, unit VARCHAR(8) NOT NULL DEFAULT 'PCS', PRIMARY KEY (id), UNIQUE KEY uk_bom (mold_no, part_no, item_code), KEY idx_item (item_code) ) COMMENT='模具BOM';

item_class这个字段是整个采购逻辑的分水岭:值为NONSTD的行,采购下单时必须带mold_no,收货时也只能入到这套模具的专属料位;值为STD的行才允许按安全库存自动补货。bom_level不要用递归查询去推,直接落库,因为模具的装配层结构基本稳定,落库比递归快一个数量级,报表也好写。

2.3 工艺路线与工序字典:把「飞模、配模」这类口语工序标准化

车间口语里的工序名是最难治理的一块。同一道活儿,A 师傅叫「飞模」,B 师傅叫「配模」,C 师傅写「合模」,报表一跑出来三个工序,工时统计直接崩。做法是先建一张工序字典表,把全厂工序冻结成有限集合,再去挂设备组和标准工时。

工序编码工序名称设备组是否外协典型工时占比
CNC-RCNC 粗加工龙门/加工中心12%
CNC-FCNC 精加工高速机18%
GRD平面磨/大水磨磨床组否(大水磨常外协)8%
EDM-R放电粗公火花机10%
EDM-F放电精公精密火花机7%
WEDM线切割(快/慢)线切割组慢走丝常外协6%
DRL钻孔/攻牙钻床4%
HT热处理2%
NIT氮化/渗碳2%
POL抛光/省模钳工组否(蚀纹外协)12%
FIT配模/飞模钳工组9%
ASM总装钳工组5%
TRIAL试模注塑机3%
REP修模钳工组2%

外协标记is_outsource必须落在工序字典上,而不是落在工单上。原因很实际:热处理、氮化、蚀纹、慢走丝这几道外协工序是成本漏点,只要字典上标了外协,报工时系统就强制要求填外协单号,漏一个都提交不了。

CREATE TABLE process_dict ( proc_code VARCHAR(16) NOT NULL COMMENT '工序编码', proc_name VARCHAR(32) NOT NULL COMMENT '标准工序名', equip_group VARCHAR(16) NULL COMMENT '设备组,外协为空', is_outsource TINYINT NOT NULL DEFAULT 0, hourly_rate DECIMAL(10,2) NULL COMMENT '设备小时费率,元/小时', PRIMARY KEY (proc_code) ) COMMENT='工序字典'; CREATE TABLE routing ( id BIGINT NOT NULL AUTO_INCREMENT, mold_no VARCHAR(32) NOT NULL, part_no VARCHAR(48) NOT NULL, seq SMALLINT NOT NULL COMMENT '工序顺序号,10/20/30 递增,方便插工序', proc_code VARCHAR(16) NOT NULL, equip_group VARCHAR(16) NULL, std_hours DECIMAL(8,2) NOT NULL DEFAULT 0 COMMENT '标准工时(小时)', allow_overlap TINYINT NOT NULL DEFAULT 0 COMMENT '是否允许与上道工序重叠开工', PRIMARY KEY (id), UNIQUE KEY uk_routing (mold_no, part_no, seq), KEY idx_part (mold_no, part_no, seq) ) COMMENT='零件工艺路线';

seq用 10、20、30 递增而不是 1、2、3,是为了中途插工序不用重排全表——模具改版加一道精修工序是常事。allow_overlap是给排产用的:热处理和外协这类工序可以和下道准备工序重叠,不设这个开关,排产结果会平白多出好几天。

2.4 图纸版本与 ECN 变更:别让「最终版2」进数据库

图纸管理的核心不是存文件,是保证同一时刻只有一份受控版本。做法是文件表加状态机,用唯一索引把「受控」状态卡死。

CREATE TABLE mold_doc ( id BIGINT NOT NULL AUTO_INCREMENT, mold_no VARCHAR(32) NOT NULL, part_no VARCHAR(48) NULL, doc_type VARCHAR(16) NOT NULL COMMENT '3D/2D/电极图/工艺卡', version VARCHAR(16) NOT NULL COMMENT 'A/B/C 或 1.0/2.0', file_path VARCHAR(255) NOT NULL, file_md5 CHAR(32) NOT NULL COMMENT '内容指纹,防同名不同内容', status VARCHAR(16) NOT NULL COMMENT 'DRAFT/RELEASED/OBSOLETE', uploader VARCHAR(32) NOT NULL, upload_at DATETIME NOT NULL, PRIMARY KEY (id), KEY idx_mold_part (mold_no, part_no, doc_type, status) ) COMMENT='模具图纸与工艺文件';

MySQL 没有部分唯一索引,可以用一个冗余列实现:controlled_key,受控时填mold_no+part_no+doc_type,非受控填 NULL,然后在controlled_key上建唯一索引。PostgreSQL 直接写CREATE UNIQUE INDEX ... WHERE status='RELEASED'更干净。file_md5的作用是防止有人把同一份图改个文件名重新上传当新版本,文件名可以骗人,MD5 骗不了。

ECN 变更表要记录三个要素:变更点、影响范围、生效工序。生效工序很关键——如果 ECN 下达时零件已经加工到第 40 道工序,那么前 30 道工序的工时要归到变更前,后面的归到变更后,成本才能算清增补了多少。

3. 车间报工与 MES:把模具加工进度做成实时可查

数据底座的下一层是现场。这一章解决三个问题:采集路线选哪一种、报工接口怎么写、试模修模怎么闭环。模具车间的数据采集和流水线完全不是一套思路,流水线追求节拍和产量,模具车间追求的是「这道工序在谁手上、还剩多少小时」。

3.1 采集路线怎么选:扫码、机床信号还是手工填报

路线精度单点成本维护难度适用对象
扫码报工分钟级,靠人低(几十到几百元)全部工序,起步必做
机床信号采集秒级,客观高(单台数千元起)高,协议杂乱瓶颈设备:CNC、精密火花机、慢走丝
手工纸质填报天级极低数据不可用只作为断网降级方案

我一般建议先全厂铺扫码,跑三个月把工序字典和标准工时磨准,再挑三到五台瓶颈设备做信号采集。一上来就全厂联网,八成会卡在协议上:不同年份的机床,接口从串口、现场总线到以太网协议各不相同,数据点表还得一台台对。信号采集的价值在于拿到主轴运转时间,用来校正人工填报的水分——模具厂报工最大的问题是「一个人同时开三台火花机,三台都报满工时」。

3.2 派工与扫码报工的最小可用实现

报工接口的字段设计比实现重要。模具是单件生产,数量字段用不上「产量」,要用「完成百分比」和「是否完工」。

# work_report.py —— 扫码报工接口(Flask 示例) from flask import Flask, request, jsonify from datetime import datetime app = Flask(__name__) @app.post("/api/work_report") def work_report(): d = request.get_json() # 幂等键:工单+工序+设备+班次,防止车间网络抖动导致重复提交 idem = f"{d['wo_no']}|{d['proc_code']}|{d['equip_code']}|{d['shift']}" if cache.exists(idem): return jsonify(code=200, msg="duplicate ignored"), 200 cache.setex(idem, 86400, 1) # 起始/结束时间由扫码动作生成,员工只填完成百分比 start = datetime.fromisoformat(d["start_at"]) end = datetime.fromisoformat(d["end_at"]) actual_hours = round((end - start).total_seconds() / 3600, 2) if actual_hours > 24: return jsonify(code=400, msg="单次报工超过24小时,请检查时间"), 400 # 外协工序强制校验外协单号 proc = db.query_one("SELECT is_outsource FROM process_dict WHERE proc_code=%s", (d["proc_code"],)) if proc["is_outsource"] and not d.get("outsource_no"): return jsonify(code=400, msg="外协工序必须填写外协单号"), 400 db.execute(""" INSERT INTO work_log (wo_no, mold_no, part_no, proc_code, equip_code, operator, shift, start_at, end_at, actual_hours, finish_pct, qty_ok, qty_ng, ng_reason, outsource_no) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) """, (d["wo_no"], d["mold_no"], d["part_no"], d["proc_code"], d["equip_code"], d["operator"], d["shift"], start, end, actual_hours, d["finish_pct"], d.get("qty_ok", 0), d.get("qty_ng", 0), d.get("ng_reason"), d.get("outsource_no"))) return jsonify(code=200, actual_hours=actual_hours)

调用方式(车间扫码枪走这条):

curl -X POST http://mes.local/api/work_report \ -H "Content-Type: application/json" \ -d '{"wo_no":"WO2408-0231","mold_no":"MJ2408-A0137-01", "part_no":"MJ2408-A0137-01-P012-01","proc_code":"CNC-F", "equip_code":"CNC-05","operator":"E1023","shift":"D", "start_at":"2024-08-13T08:12:00","end_at":"2024-08-13T13:41:00", "finish_pct":100,"qty_ok":1}'

逻辑上有三个点要注意。第一,时间戳由扫码动作生成,员工只填完成百分比和不良数——让员工手填起止时间,报出来的工时永远漂亮得不像话。第二,actual_hours做了 24 小时上限校验,防止有人早上忘了扫完工晚上才补,把跨夜时长算进来。第三,幂等键覆盖到班次粒度,模具车间一天两班或三班,同一工序跨班报工是正常的,不能简单按工序去重。

finish_pct这个字段容易设计错。不要做成 0 到 100 的自由输入,做成 0/50/100 三档,或者干脆用「是否完工」布尔值加「剩余工时」估数。自由百分比输入两个月后就会失真,师傅们懒得算。

3.3 工时参数:标准工时、准备工时、宽放系数怎么定

标准工时不是拿来考核的,是拿来排产和报价的,口径必须写死。

参数推荐取值作用失真信号
宽放系数12%–18%覆盖生理、疲劳、等待实际工时系统性超标准 30% 以上
准备工时占比CNC 15%、火花机 25%换刀、换电极、找正小件单件报工远超标准
工时精度0.25 小时报工最小刻度出现 0.01 小时这类记录
标准工时复核周期季度工艺改进后更新同一工序标准三年未动

宽放系数新手最容易拍脑袋填 30%,结果排产全部超期。合理做法是先按实动工时统计一个月,把「等待吊装、等待电极、等待上道工序」的时间单独归一类,再决定宽放给多少。等待时间大于实动时间,说明问题在排产不在工时,调宽放系数只会掩盖它。

单件生产没法算 OEE,因为模具车间没有「节拍」概念。可替代的指标是两个:设备稼动率(主轴/放电有效时间 ÷ 计划开机时间)和计划达成率(按期完工工序数 ÷ 计划完工工序数)。前者用信号采集拿,后者用报工数据算,两个指标一起看才不会被单一数据骗。

3.4 试模与修模闭环:T0、T1 次数怎么落表

试模是模具行业最特殊的环节,也是信息化价值最高的环节。T0 指第一次试模,T1、T2 依次类推,行业里 T0 一次通过率能到 40% 就算不错。

CREATE TABLE trial_record ( id BIGINT NOT NULL AUTO_INCREMENT, mold_no VARCHAR(32) NOT NULL, trial_seq TINYINT NOT NULL COMMENT '0=T0, 1=T1 ...', trial_date DATE NOT NULL, machine_code VARCHAR(16) NOT NULL COMMENT '试模机台', mat_material VARCHAR(32) NULL COMMENT '试模用料,如 PP/ABS/PC', defect_class VARCHAR(32) NULL COMMENT '问题分类:尺寸/外观/装配/成型/水路', defect_desc VARCHAR(255) NULL, fix_content VARCHAR(255) NULL COMMENT '修模内容', fix_hours DECIMAL(8,2) NULL COMMENT '修模工时', next_plan DATE NULL COMMENT '下次试模计划日', PRIMARY KEY (id), UNIQUE KEY uk_trial (mold_no, trial_seq), KEY idx_defect (defect_class, trial_date) ) COMMENT='试模与修模记录';

defect_class的分类项要跟工艺组一起定,不能由 IT 拍。常见分类是尺寸、外观、装配、成型、水路、顶出六类,统计出来哪一类占前三,下一批模具的设计检查表就往哪三类加检查项。fix_hoursrouting里的修模工序工时要对得上,对不上说明修模没走报工。

T0 一次通过率的 SQL 很简单,但很多厂跑不出来,因为试模记录是纸质表格:

SELECT COUNT(*) AS mold_total, SUM(CASE WHEN t.trial_seq = 0 AND NOT EXISTS ( SELECT 1 FROM trial_record t2 WHERE t2.mold_no = t.mold_no AND t2.trial_seq > 0) THEN 1 ELSE 0 END) AS t0_pass, ROUND(100.0 * SUM(CASE WHEN t.trial_seq = 0 AND NOT EXISTS ( SELECT 1 FROM trial_record t2 WHERE t2.mold_no = t.mold_no AND t2.trial_seq > 0) THEN 1 ELSE 0 END) / COUNT(*), 1) AS t0_pass_rate FROM trial_record t WHERE t.trial_seq = 0 AND t.trial_date BETWEEN '2024-01-01' AND '2024-12-31';

4. 单套模具成本与交期:核算模型和有限产能排产的参数

前两章把料和工都记录下来了,这一章把记录变成钱和日期。模具行业算成本的最小单位是「一套模具」,不是「一个批次」,也不是「一个车间」。

4.1 料工费三块怎么归集到一套模具

料的部分有三个漏点:钢材毛坯的利用率、标准件的分摊、外协件。钢材按整板买、按套用,利用率 60%–75% 是常态,余料要么退库要么留用,留用的部分如果不在系统里做转移,下一套模具的成本就会虚高。标准件建议按套分摊,不要按实际领用——领料单在模具车间几乎不可能百分百准确。外协件必须走外协单,包含单价、数量、回厂日期。

工的部分按routing的标准工时乘设备费率,再按work_log的实际工时做差异分析。差异率超过 20% 的工序要单独看,不是改标准工时,就是查报工有没有水分。

费的部分是制造费用分摊,两种口径:按工时分摊(适合人工密集的钳工段)或按模具套数均摊(适合折旧为主的设备段)。口径一旦定了,报表里必须写清楚,否则采购和车间会因为「为什么这套模成本这么高」吵半年。

4.2 成本核算的计算逻辑与代码

def mold_cost(mold_no, cost_ver="V1"): """单套模具成本核算:料 + 工 + 外协 + 制造费用""" # 1) 材料费:非标件按实际采购,标准件按分摊系数 mat = db.query_one(""" SELECT SUM(CASE WHEN item_class='NONSTD' THEN qty * std_price ELSE 0 END) AS nonstd_amt, SUM(CASE WHEN item_class='STD' THEN qty * std_price ELSE 0 END) AS std_amt FROM mold_bom b JOIN item_price p ON p.item_code = b.item_code WHERE b.mold_no = %s """, (mold_no,)) # 2) 加工费:优先用实际工时,无实际工时则回落到标准工时 labor = db.query_one(""" SELECT SUM(COALESCE(w.actual_hours, r.std_hours) * d.hourly_rate) AS labor_amt, SUM(CASE WHEN w.id IS NULL THEN 1 ELSE 0 END) AS no_report_cnt FROM routing r JOIN process_dict d ON d.proc_code = r.proc_code LEFT JOIN work_log w ON w.mold_no = r.mold_no AND w.part_no = r.part_no AND w.proc_code = r.proc_code WHERE r.mold_no = %s AND d.is_outsource = 0 """, (mold_no,)) # 3) 外协费 out = db.query_one( "SELECT COALESCE(SUM(amount),0) AS out_amt FROM outsource_order WHERE mold_no=%s", (mold_no,)) # 4) 制造费用:按加工工时占比分摊当月制造费用池 overhead_rate = cfg.get("overhead_per_hour", 0) # 元/小时,财务月度刷新 overhead = labor["labor_amt"] / avg_rate * overhead_rate total = mat["nonstd_amt"] + mat["std_amt"] + labor["labor_amt"] + out["out_amt"] + overhead return { "mold_no": mold_no, "material": round(mat["nonstd_amt"] + mat["std_amt"], 2), "labor": round(labor["labor_amt"], 2), "outsource": round(out["out_amt"], 2), "overhead": round(overhead, 2), "total": round(total, 2), "unreported_proc": labor["no_report_cnt"], # 未报工工序数,>0 说明成本被低估 }

这段代码里最关键的不是加总,是unreported_proc。只要还有工序没报工,COALESCE就会回落到标准工时,成本必然偏离实际。核算前先把未报工工序清干净,报表才有意义。overhead_per_hour这个参数我一般要求财务每月刷新一次,写死在代码里是自欺欺人。

4.3 有限产能排产的关键参数与瓶颈识别

模具排产和批量排产最大的区别是瓶颈漂移:一套模具在 CNC 阶段瓶颈可能是龙门,到了放电阶段瓶颈变成精密火花机,到了装配阶段瓶颈变成钳工工时。所以排产不能一套参数走到底,要按设备组分别设。

参数说明常见坑
设备组日产能按小时,非按件用件数排产,模具是单件,无意义
换型时间CNC 换刀 0.5–2h,火花机换电极 0.3–1h忽略换型,排出来永远比实际快
优先级规则交期紧 → 试模在即 → 客户等级只按交期,试模在即的模具会被压死
排产方向瓶颈前用倒排,瓶颈后顺排全流程倒排,前道工序会挤成一团
重叠工序热处理、外协允许重叠不允许重叠,交期凭空多两三天

瓶颈识别不用复杂算法,跑一周的工序排队数据就能看出来:同一设备组内等待工时最长的那个组就是瓶颈。识别出来之后,把信号采集优先装到瓶颈设备上,收益最大。

4.4 交期里程碑与预警阈值

一套模具的里程碑固定为七段:设计完成、钢材到位、粗加工完成、精加工完成、装配完成、T0 试模、交付。每段落一个计划日期和一个实际日期,差值就是预警依据。

预警等级触发条件动作
T0 前 10 天精加工未开工工艺组复核工时,必要时加班或外协
T0 前 3 天精加工未完成生产经理介入,重排优先级
超过计划 T0 日期项目经理通知客户,重定交期
SELECT m.mold_no, m.plan_t0_date, DATEDIFF(m.plan_t0_date, CURDATE()) AS days_left, MAX(CASE WHEN r.proc_code IN ('CNC-F','EDM-F','WEDM') THEN w.end_at END) AS last_finish, CASE WHEN CURDATE() > m.plan_t0_date THEN 'RED' WHEN DATEDIFF(m.plan_t0_date, CURDATE()) <= 3 AND COUNT(CASE WHEN r.proc_code IN ('CNC-F','EDM-F') AND w.end_at IS NOT NULL THEN 1 END) = 0 THEN 'ORANGE' WHEN DATEDIFF(m.plan_t0_date, CURDATE()) <= 10 AND COUNT(CASE WHEN r.proc_code = 'CNC-R' AND w.end_at IS NOT NULL THEN 1 END) = 0 THEN 'YELLOW' ELSE 'GREEN' END AS warn_level FROM mold_master m LEFT JOIN routing r ON r.mold_no = m.mold_no LEFT JOIN work_log w ON w.mold_no = r.mold_no AND w.part_no = r.part_no AND w.proc_code = r.proc_code WHERE m.status NOT IN ('DELIVERED','CLOSED') GROUP BY m.mold_no, m.plan_t0_date ORDER BY FIELD(warn_level,'RED','ORANGE','YELLOW','GREEN'), days_left;

5. 上线验证与几个能省下返工的具体技巧

方案落地的最后一段路最难走,因为前面所有建模的隐患都会在这一段集中暴露。这一章给三个能直接抄的东西:数据体检 SQL、并行试跑方法、看板取舍。

5.1 基础数据体检:几条 SQL 先跑一遍

上线前必跑的四条,跑不过就别开系统:

-- 1) 有 BOM 但标准件没有物料主数据的行 SELECT b.mold_no, b.item_code FROM mold_bom b LEFT JOIN item_master i ON i.item_code = b.item_code WHERE i.item_code IS NULL AND b.item_class IN ('STD','STOCK'); -- 2) 有 BOM 但没有工艺路线的零件 SELECT DISTINCT b.mold_no, b.part_no FROM mold_bom b LEFT JOIN routing r ON r.mold_no = b.mold_no AND r.part_no = b.part_no WHERE b.bom_level = 2 AND r.id IS NULL; -- 3) 标准工时为 0 或缺失的工序 SELECT mold_no, part_no, proc_code FROM routing WHERE std_hours IS NULL OR std_hours = 0; -- 4) 工序字典里外协工序但设备组不为空(口径冲突) SELECT proc_code, proc_name FROM process_dict WHERE is_outsource = 1 AND equip_group IS NOT NULL;

第一条查出来的是采购漏填,第二条是工艺漏排,第三条会让排产和成本全线失真,第四条是口径自相矛盾。这四条 SQL 我一般做成上线前的检查清单,每条必须为 0 行才放行。

5.2 新旧并行试跑与差异对账

不要一次性切换。选十到二十套新接的模具,新旧两套口径同时记,周期覆盖完整的四个阶段——设计、粗加工、精加工、装配。对账只对两个数:单套模具工时、单套模具材料费。

差异超过 20% 的工序逐个做根因分析,通常落在三个地方:新旧口径对准备工时的包含范围不一致(含/不含换刀)、材料费含税不含税没对齐、外协工时被重复计入。这三个问题在并行期发现,成本是可控的;切换后再发现,就得回头重算历史数据,那才是真的麻烦。

并行期还有一个副产品:师傅们的报工习惯会在这一段时间成型。这时候表格字段该简化的简化,扫码页面该放大按钮的放大按钮,等系统正式上线再改,阻力大一倍。

5.3 权限与看板:车间屏上只放三个数

车间大屏最容易做成「数据大杂烩」,一张屏塞十几个图表,没人看。模具车间的看板只放三个数就够了:今日待开工工序数、超期工序数、最近三套待 T0 模具的倒计时天数。前两个是给班长派工用的,第三个是给全车间看交期压力的。

权限上有一条硬规则:routing.std_hoursprocess_dict.hourly_rate的写权限必须收到工艺组和财务手里,车间只读。标准工时谁都能改,报工数据三个月内必然失效——手填的人会主动去找那个「让考核好看」的数值。同理,overhead_per_hour只能由财务月度刷新,不进日常权限体系。

报表口径也要固化。同一张报表里,「工时」要么全含准备工时要么全不含,「材料费」要么全含税要么全不含,写在报表页脚,不接受口头解释。口径固化之后第一件事,是把工序标准工时的修改权限收口,其他角色一律只读——这是模具厂数据可信度的下限。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 20:47:12

4G云广播系统开发实战:APP控制端与主板量产全复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 20:41:23

三菱PLC在柔性制造系统单元控制与组网调试中的应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 20:40:36

WeWe RSS 快速上手指南:5分钟把公众号变成 RSS 源

WeWe RSS 快速上手指南&#xff1a;5分钟把公众号变成 RSS 源 【免费下载链接】wewe-rss &#x1f917;更优雅的微信公众号订阅方式&#xff0c;支持私有化部署、微信公众号RSS生成&#xff08;基于微信读书&#xff09; 项目地址: https://gitcode.com/GitHub_Trending/we/w…

作者头像 李华
网站建设 2026/9/18 20:40:33

MCU是嵌入式开发的底层基石与能力起点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 20:40:18

Simulink工程化入门:信号流、时间步与内存契约

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华