项目名称:基于交期倒推的工序工时自动分配与逆向排程功能
所属系统:方天企业管理系统 (T-ONE)
文档版本:V1.0
日期:2026-03-25
密级:内部公开
本文档旨在明确“基于交期倒推的工序工时自动分配”功能的二次开发需求。该功能旨在解决车间排产中“已知零件预定完工时间,但缺乏各工序标准工时数据,导致无法自动计算计划起止时间”的痛点。通过本开发专案,系统将实现根据【完工需求日】和【工序时间比例】自动反算标准工时,并生成精准的工艺卡计划。
本需求适用于方天软件生产管理系统中的工艺管理模块及生产排程模块。主要涉及工艺卡主表、工艺卡子表(工序明细)、零件进度表及相关排程算法逻辑的定制开发。
排定时间:指工艺卡主表中确定的最终计划完工时间点。
完工需求日:指零件表子表中客户或计划部门指定的最晚完工日期。
准备时间:本专案新增的功能按钮及对应的计算逻辑,用于触发工时反算。
空闲工时:总可用时间与已占用计划工时的差值,作为待分配的工时池。
工序例外:指在工艺路线中标记为不参与常规排程计算的特殊工序。
输入缺失:排产人员仅掌握零件的【预定完工时间】及各工序的大致时间分配比例,无法提供精确的机器/人工标准工时。
系统局限:现有系统逻辑为“正向排程”,强制要求先录入标准工时才能计算计划时间。若无标准工时,系统无法运行排程,导致急单、新品无法及时下达计划。
人工低效:目前依靠人工估算工时填入系统,误差大、效率低,且容易造成计划与实际脱节。
用户在零件表中录入【完工需求日】。
用户在工艺卡中维护工序结构及大致的时间比例(或通过现有机器/人工工时字段作为比例基数)。
用户点击新增的【准备时间】按钮。
系统自动读取完工需求日,计算总可用时间,扣除已占用的基准时间,得出空闲工时。
系统按工序比例将空闲工时分配至各工序,自动更新【标准工时】字段。
系统根据更新后的工时,自动倒推并填写各工序的【计划开始时间】和【计划完成时间】。
字段:【排定时间】(Plan Finish Time)
逻辑变更:
系统需增加判断逻辑:优先读取关联的零件表子表中的 【完工需求日】 字段。
规则:
IF 零件表子表.完工需求日 IS NOT NULL THEN 工艺卡主表.排定时间 = 零件表子表.完工需求日
ELSE 工艺卡主表.排定时间 = 保持原有算法逻辑(如手动录入或默认值)。
位置:
工艺卡建立 界面底部工具栏。
零件进度预排程 界面底部工具栏。
名称:【准备时间】(或自定义为“智能排程计算”)。
触发方式:单选或多选记录后点击按钮,触发后台计算存储过程/脚本。
反馈:计算完成后,弹出提示框显示“计算成功,已更新 X 条记录的工时与计划时间”,若有错误(如时间为负)需给出具体警告。
点击【准备时间】按钮后,系统需对选中记录执行以下计算步骤:
公式: Ttotal_raw=(排定时间−当前系统时间)/24 (单位:天)
Ttotal_raw=(排定时间−当前系统时间)/24
取整规则:
设 D=Ttotal_raw
D=Ttotal_raw
设 I=Floor(D) (整数部分)
I=Floor(D)
设 F=D−I (小数部分)
F=D−I
判断:
若 F<0.5 :则 Ttotal=I×24 (小时)
F<0.5
Ttotal=I×24
若 F≥0.5 :则 Ttotal=D×24 (小时,保留原值)
F≥0.5
Ttotal=D×24
示例:
时间差 75 小时 → 75/24=3.125 天。0.125<0.5 ,取整为 3 天。结果 3×24=72 小时。
→
75/24=3.125
0.125<0.5
3×24=72
时间差 80 小时 → 80/24=3.33 天。0.33<0.5 ,取整为 3 天。结果 72 小时。
→
80/24=3.33
0.33<0.5
时间差 90 小时 → 90/24=3.75 天。0.75≥0.5 ,取原值。结果 90 小时。
→
90/24=3.75
0.75≥0.5
数据来源:
计划总工时 = ∑(工艺卡子表.机器工时+工艺卡子表.人工工时)
∑(工艺卡子表.机器工时+工艺卡子表.人工工时)
过滤条件:仅统计子表中状态为“启用”且非“工序例外”的记录。
单位统一换算为小时。
公式:
Hidle=Ttotal−Hplan_totalHidle=Ttotal−Hplan_total
约束:若 Hidle<0 ,则强制设定 Hidle=0 。
Hidle<0
Hidle=0
目标:更新工艺卡子表中各有效工序的【标准工时】(或机器/人工工时字段,视具体配置而定),并据此推算计划时间。
单工序计算公式:
本工序分配工时=本工序(机器工时+人工工时)计划总工时×Hidle本工序分配工时=计划总工时本工序(机器工时+人工工时)×Hidle
文本
编辑
* *注:此处分子中的工时作为“权重比例”使用。若原工时为0或空,需定义默认权重或跳过。*执行动作:
遍历工艺卡子表。
跳过状态为“停用”或标记为“工序例外”的行。
将计算出的 本工序分配工时 累加到该工序原有的基础工时上(或直接覆盖,需确认业务规则,建议逻辑:原工时作为比例基数,计算出的结果为该工序最终的标准工时)。
重算计划时间:基于更新后的各工序标准工时,从【排定时间】开始倒序推导(或正序,视排程方向配置),自动填充每道工序的【计划开始时间】和【计划完成时间】。
空值处理:若【排定时间】为空且【完工需求日】为空,按钮点击后应提示“缺少排程基准时间,无法计算”,并终止操作。
除零保护:若 计划总工时 为 0,避免除以零错误,应提示“未检测到有效工序工时比例,无法分配”。
事务控制:整个计算过程必须在数据库事务中执行,确保要么全部更新成功,要么全部回滚,防止出现工时已改但计划时间未生成的数据不一致情况。
性能要求:单次计算(针对单个工艺卡或批次不超过50张)响应时间应小于 3 秒。
兼容性:新功能不得影响现有的正向排程逻辑及其他模块的正常运作。
权限控制:【准备时间】按钮仅对拥有“生产计划员”或“工艺工程师”角色的用户可见/可操作。
日志记录:系统需在后台日志表中记录每次计算的触发人、时间、涉及的单据号及计算前后的关键数值快照,以便追溯。
场景测试:
创建一个零件,设定【完工需求日】为未来 3 天 2 小时后。
建立工艺卡,包含 3 道工序,分别设定不同的机器/人工工时作为比例参考。
点击【准备时间】。
验证点:
【排定时间】是否正确取自【完工需求日】。
【总工时】是否符合“半天取整”规则(3天2小时 -> 3天 -> 72小时)。
各工序更新后的工时之和是否等于(或接近)总可用时间(考虑原有基础工时逻辑)。
各工序的计划开始/完成时间是否连续且最终结束时间等于【排定时间】。
边界测试:
测试时间不足(总工时 < 计划总工时)的情况,验证【空闲工时】是否为 0,且程序不报错。
测试包含“停用”工序的工艺卡,验证停用工序是否未被修改。
回归测试:
验证未设置【完工需求日】的旧单据,点击按钮是否按原逻辑处理或给出友好提示,不影响其他功能。
涉及数据表:T_MO_Main (工艺卡主表), T_MO_Detail (工艺卡子表), T_Part_Schedule (零件进度表)。
参考字段名:FinishReqDate, PlanStartTime, PlanEndTime, StdMachineTime, StdLaborTime, StatusFlag.
批准人:__________________ 日期:__________________
开发负责人:__________________ 日期:__________________