Files
MES/yawei-mes/.tasks/2026-03-03_v2.0.003_报工单升级优化.md
2026-04-02 10:39:03 +08:00

32 KiB
Raw Permalink Blame History

报工单升级优化分析文档

版本: v2.0.003 日期: 2026-03-03 负责人: 周启威


一、现有 API 数据摸底

{
  "workOrderId": 3555, "workOrderNumber": "20260308054",
  "workOrderEntryId": 3923, "workOrderName": "普罗酪蛋白酸钠",
  "materialId": 28, "materialName": "普罗酪蛋白酸钠",
  "batchNumber": "XS20260308009", "quantity": 189.000,
  "planFinishDate": "2026-03-08",
  "processName": "碘酸", "processId": 6,
  "routeName": "酪蛋白酸钠工序路线",
  "workshopId": 1, "workshopName": "酪蛋白酸钠车间",
  "stationId": 1, "stationName": "配料工位",
  "customerName": null
}

重要发现:

  • processName/processId 虽在 Report.java 标注 @TableField(exist=false),但 Mapper XML 已 JOIN 返回真实值
  • customerName 字段已有 JOIN 逻辑;当前示例返回为 null说明在某些数据下仍可能为空。按业务约束“无销售订单就无工单”时该字段应有值若线上仍出现 null需后端在查询时补齐或明确业务允许为空
  • materialNamebatchNumberquantity 均已返回,可在新增时直接回显

与你本次确认的补充:

  • 工单表 pro_workorder 已存在字段 process_start_time(实体字段 processStartTime),本次 plan_start_time 以此字段作为来源,避免自创字段名
  • 工序时长来源为工单工序明细 pro_workorder_entry.duration(实体字段 WorkOrderEntry.duration,单位:秒)

二、字段说明(含冗余字段处理)

2.1 已移除字段(见 SQL 注释)

字段 原说明 现阶段处理
report_count 报工数 report_quantity 语义完全相同,已从 SQL 中移除,直接用 report_quantity
quality_check_status 质检合格(合格/不合格) 与现有 quality_statusB=待检验/C=已通过/D=有异常)重叠,已从 SQL 中移除

2.2 字段修改(现有字段调整)

字段 原说明 现阶段调整
is_settle 是否结算工资(只读) 改为可编辑,前端去掉 :disabled="true"
wages 结算工资(只读) 改为可编辑,前端去掉 :disabled="true"

三、新增字段完整说明

3.1 新增时自动回显字段(进入页面即自动填充,用户可见)

区别于"保存时赋值"——这些字段在打开新增报工单表单时就已经显示出来,用户无需输入。

新增字段 数据来源 来源字段已在API响应中
customer_name / customer_id 工单关联销售订单客户 customerName(当前示例可能为 nullcustomer_id 需要后端同步返回(或在保存时从工单关联关系写入)
workpiece 工件/成品名称 = materialName
product_batch 产品批次 = batchNumber
process_name / process_id 工序 = processName / processId(已 JOIN
plan_start_time 计划开始时间 = 工单 process_start_time(实体字段 processStartTime
plan_end_time 计划完工时间 = process_start_time + 工单工序明细 durationWorkOrderEntry.duration,单位秒)(注意:不是 planFinishDate
plan_count 计划数 = 工单排产数量 quantity

3.2 默认值字段(手动填写,但有明确默认值)

新增字段 默认值 说明
report_type NORMAL(正常报工) 字典 production_report_type,用户可修改
actual_start_time = plan_start_time 用户可修改为实际时间
actual_end_time = plan_end_time 用户可修改为实际时间
performance_wages 0 手动填写
energy_consumption 0 手动填写
material_consumption 0 手动填写
other_costs 0 手动填写
value_added 0 手动填写
downtime_minutes 0 已有字段默认0
yield_rate 自动计算 = qualifiedQuantity / reportQuantity × 100 前端实时更新
station_oee 自动计算(公式待完善,暂可手动编辑) 前端计算
current_benefit 自动计算 = value_added - energy_consumption - material_consumption - other_costs 前端计算

3.3 纯手动填写字段无默认值SQL 新增列)

新增字段 说明
execution_standard 执行标准,手动输入,默认空
team_name / team_id 班组,字典 production_team 下拉选择,默认空
theoretical_cycle_time 理论节拍(分钟/件),用于 OEE 参考,默认空
station_exception 工位异常情况,文本域,默认空
rectification_suggestion 整改建议,文本域,默认空

3.4 已有字段——本次仅扩展 UI 支持(不在 SQL 中重复 ADD

以下字段在 2025-11-11_02_周启威_连续制造业改进.sql 中已添加到 pro_reportReport.java 中无 @TableField(exist=false) 标注(已持久化), 本次 SQL 不得重复添加,否则报错。仅需前端 UI 向离散制造也开放该字段。

字段 DB 现状 本次动作
shift_name(班次) 已存在,已持久化 离散制造前端新增选择控件
downtime_reason(停机原因) 已存在,已持久化 离散制造前端新增输入控件
downtime_minutes(停机时间) 已存在,已持久化,默认 0 离散制造前端新增输入控件

3.5 后端自动写入字段(不暴露到前端)

字段 写入时机
report_submit_time 保存时 new Date()

四、字段适用范围(离散 vs 连续制造)

原来部分字段仅限"连续制造",现统一:离散和连续制造均需支持以下字段

字段 离散制造formA.vue 连续制造form.vue
班次 shift_name 需要 需要
班组 team_name 需要 需要
实际开始时间 actual_start_time 需要(默认=计划开始时间) 需要(默认=reportPeriodStart
实际完工时间 actual_end_time 需要(默认=计划完工时间) 需要(默认=reportPeriodEnd
停机时间 downtime_minutes 需要默认0 需要已有默认0
停机原因 downtime_reason 需要 需要(已有)

五、前端计算字段说明

5.1 良品率(yield_rate

良品率 = qualifiedQuantity / reportQuantity × 100%
触发时机reportQuantity 或 qualifiedQuantity 任意变化时实时重算
颜色规则:>= 95% → 绿色90%-95% → 橙色;< 90% → 红色

5.2 本次效益(current_benefit

本次效益 = value_added - (energy_consumption + material_consumption + other_costs)
触发时机:相关数字字段变化时实时重算
颜色规则:正值 → 绿色;负值 → 红色0 → 灰色

5.3 工位OEEstation_oee

现阶段字段可编辑用户可手动填写百分比值0-100
后续待定:当有完整数据后补充自动计算逻辑(可能需要 theoretical_cycle_time

六、快捷字典编辑按钮需求

6.1 需求说明

报工单表单中,凡是字典下拉字段,旁边增加 ⚙️ 小按钮。 点击后在新 Tab 打开该字典的数据维护页,无需导航系统菜单。

6.2 涉及字典字段

字段 字典类型 分组 需要按钮
报工类型 production_report_type A-基础信息
班次 sys_shift_type A-基础信息
班组 production_team A-基础信息
是否结算工资 sys_yes_no D-成本效益 系统字典不建议编辑

6.3 技术方案

// 引入
import { listType } from '@/api/system/dict/type'

// 方法
openDictEdit(dictType, dictName) {
  listType({ dictType, pageSize: 10 }).then(response => {
    if (response.rows && response.rows.length > 0) {
      const dictId = response.rows[0].dictId
      this.$tab.openPage('字典数据-' + dictName, `/system/dict/data/${dictId}`)
    } else {
      this.$modal.msgWarning('未找到字典:' + dictName)
    }
  })
}
<!-- 按钮布局 -->
<div style="display:flex;align-items:center;gap:4px">
  <el-select v-model="..." style="flex:1">...</el-select>
  <el-tooltip content="快速编辑字典" placement="top">
    <el-button type="text" icon="el-icon-setting"
      @click.stop="openDictEdit('production_report_type','报工类型')"
      v-hasPermi="['system:dict:edit']" />
  </el-tooltip>
</div>

七、页面布局优化方案

7.1 整体布局结构

[工单信息只读区 - el-descriptions]
[+ 添加记录] [- 删除] [保存]
[报工记录 #1 - el-collapse 卡片]
  ▶ A. 基础信息(默认展开)
  ▶ B. 数量信息(默认展开)
  ▶ C. 时间节拍(默认折叠)
  ▶ D. 成本效益(默认折叠)
  ▶ E. 异常记录(默认折叠,有内容时标题标红)
[报工记录 #2 ...]

7.2 工单信息只读区(扩展现有 el-descriptions

现有字段保持,新增第三行:

| 客户名称 | 工件/成品名称 | 产品批次 | 执行标准(只读占位) | 工序路线 |

7.3 A. 基础信息(默认展开)

字段 控件 默认值 必填 字典按钮
报工人 el-select 当前登录用户
报工时间 el-date-picker datetime 当前时间
报工类型 el-selectproduction_report_type NORMAL
班次 el-selectsys_shift_type
班组 el-selectproduction_team
执行标准 el-input
车间 el-select 用户工位绑定
工位 el-select 用户工位绑定

7.4 B. 数量信息(默认展开)

字段 控件 默认值 说明
计划数(只读) 文本展示 = workOrder.quantity 自动回显
报工数量 el-input-number 必填
合格数量 el-input-number = 报工数量 质检后修改
不合格数量 el-input-number 0 自动 = 报工数 - 合格数
良品率(只读) 百分比 + 颜色 自动计算 >=95%绿/90-95%橙/<90%红

7.5 C. 时间节拍(默认折叠)

字段 控件 默认值 说明
计划开始时间(只读) 文本展示 = processStartTime工单 process_start_time 自动回显
计划完工时间(只读) 文本展示 = processStartTime + duration工单工序明细 WorkOrderEntry.duration 自动回显
实际开始时间 el-date-picker datetime = plan_start_time 离散/连续均有
实际完工时间 el-date-picker datetime = plan_end_time 离散/连续均有
理论节拍(分钟/件) el-input-number 手动OEE参考
停机时间(分钟) el-input-number 0 离散/连续均有
停机原因 el-input 停机时间>0时高亮提示填写

7.6 D. 成本效益(默认折叠)

字段 控件 默认值 说明
绩效工资 el-input-number 0 手动
能耗 el-input-number 0 手动
工耗 el-input-number 0 手动
其他成本 el-input-number 0 手动
增值 el-input-number 0 手动
工位OEE el-input-number暂可编辑 前端计算,公式待完善
本次效益(自动) 数字展示 + 颜色 自动计算 = 增值-能耗-工耗-其他
是否结算工资 el-selectsys_yes_no N 可编辑(原只读改为可编辑)
结算工资 el-input-number 0 可编辑(原只读改为可编辑)

7.7 E. 异常记录(默认折叠,有内容标题变红)

字段 控件 默认值
工位异常情况 el-input textarea
整改建议 el-input textarea
备注 el-input textarea 空(已有字段移至此处)

八、移动端适配要求(重要)

移动端适配为本次升级的重点之一,与 PC 端同等优先级。

8.1 折叠面板

  • 移动端(isMobile === true)所有分组默认全部展开
  • 折叠/展开控制隐藏(移动端无折叠手势)

8.2 布局

  • 所有字段单列排布(el-col :xs="24"
  • PC 端双列(el-col :sm="12"

8.3 控件适配

  • el-date-picker 使用 type="datetime",移动端保持原生表现
  • el-input-number 设置 controls-position="right" 避免移动端误触
  • 字典编辑按钮在移动端隐藏(v-if="!isMobile"),按你确认项 #4 执行

8.4 工单信息只读区

  • 移动端改为竖向列表(el-descriptions direction="vertical"
  • 每项占满整行

8.5 按钮区

  • 底部操作按钮固定(position: sticky; bottom: 0
  • 保存按钮宽度 100%

九、SQL 变更清单

见文件 .sql/2026-03-03_v2.0.003_周启威_报工单升级优化.sql

操作 说明
ALTER TABLE pro_report ADD COLUMN... 新增 27 个字段shift_name/downtime_minutes/downtime_reason 已有,不在本 SQL 中
移除 report_count 与 report_quantity 重复,已从 SQL 删除,附注释说明
移除 quality_check_status 与 quality_status 重复,已从 SQL 删除,附注释说明
is_settle / wages 改为可编辑 数据库字段不变,仅前端去掉 disabledSQL 注释说明
新增字典 production_report_type 4个枚举值
新增字典 production_team 甲/乙/丙班(字典管理中可维护)
新增索引 idx_customer_id 等 4个索引

必填项核对(以你项目现状为准,不做“强行 NOT NULL 创新”):

  • pro_report 现有核心字段为强制必填(数据库 NOT NULL
    • work_order_entry_idreport_user_idreport_user_namereport_channelstatuscreate_bycreate_timereport_timereport_quantityis_settlewages
  • 本次新增字段在 SQL 中均为 DEFAULT NULL 或有默认值(如成本类默认 0、report_type 默认 NORMAL。原因
    • 兼容历史数据/已存在报工单记录
    • 避免上线时因存量数据缺字段导致迁移失败
    • 业务必填更多应由前端校验/后端保存校验保证

⚠️ SQL 执行后后端必须同步Report.java 三处 @TableField(exist=false) 需删除

// 删除以下三行注解,让 MyBatis-Plus 把新列作为正常 DB 字段写入
// processName
@TableField(exist = false)  // ← 删除此行
private String processName;

// processId
@TableField(exist = false)  // ← 删除此行
private Long processId;

// customerName
@TableField(exist = false)  // ← 删除此行
private String customerName;

⚠️ 前端 form.vue dicts 数组需补充两个新字典类型

// 现有line 233
dicts: ['currency','production_status','report_channel','sys_yes_no','qc_type','sys_shift_type']
// 修改后(新增 production_report_type 和 production_team
dicts: ['currency','production_status','report_channel','sys_yes_no','qc_type','sys_shift_type','production_report_type','production_team']

⚠️ processStartTime 为空时的 fallback 策略

pro_workorder.process_start_time 在未排产/未开工时可能为 null。 前端回显逻辑(优先级依次降低):

  1. 优先使用 form.processStartTime
  2. 若为空fallback 用 form.beginProDate(工单开始生产日期)
  3. 若仍为空,plan_start_time 显示为空,用户手动填写

十、工作量评估

图例:XS <2hS 半天|M 1天L 2天

模块 内容 工作量
SQL 执行 已写好,执行即可 XS
后端实体 Report.java 新增 27 字段;删除 processName/processId/customerName 的 @TableField(exist=false) S
后端 Mapper XML 增删字段映射INSERT/SELECT S
后端 Service insertReport 时将已有字段赋值到新列(直接复制,无额外查询) S
前端工单信息区 el-descriptions 扩展新只读字段 XS
前端字典按钮 openDictEdit 方法 + 3处按钮 XS
前端表单重构PC form.vue + formA.vue 折叠分组布局 L
前端表单重构(移动端) 响应式布局、全展开、按钮固定 M
前端计算逻辑 良品率/本次效益实时计算OEE 暂编辑框 S
联调测试 自动回显验证、计算验证、移动端真机测试 S
合计 约 4 个工作日

十一、实施顺序建议

顺序 任务 依赖
1 执行 SQL 脚本
2 后端实体 + Mapper + Service SQL 完成后
3 前端工单信息区扩展(快速见效) 后端完成后
4 前端折叠表单重构PC
5 前端移动端适配 步骤4基础上
6 字典编辑按钮
7 联调测试 + 修复 全部完成后

十二、待确认事项(你确认后再进入代码实现)

序号 待确认点 当前文档建议 影响范围
1 customer_name/customer_id 是否必须存在 按业务应必有;若线上仍出现 null需明确是否允许为空并决定 customer_id 获取方式(查询返回 or 保存时回填) 后端查询/保存逻辑、前端只读展示
2 plan_start_time 的准确来源字段 已按你确认:使用工单 process_start_timeprocessStartTime 后端赋值、前端只读展示
3 plan_end_time 的工序时长 duration 来源 已按你确认:使用工单工序明细 WorkOrderEntry.duration 后端赋值、前端只读展示
4 移动端是否需要“字典快捷按钮” 已按你确认:移动端隐藏 前端交互设计

十三、项目内可复用点(能复用就不创新)

13.1 字段与表结构复用(避免新造字段名)

目标 复用项 位置
计划开始时间来源 pro_workorder.process_start_time / WorkOrder.processStartTime WorkOrder.java + WorkOrderMapper.xml 已映射
工序时长来源 pro_workorder_entry.duration / WorkOrderEntry.duration(秒) WorkOrderEntry.java 已存在
工单-工序明细联动 工单查询已 left join pro_workorder_entry 并返回 workOrderEntryList WorkOrderMapper.xmlselectWorkOrderVo

13.2 时间计算逻辑复用(不自写新公式)

项目内已有工具类:cn.sourceplan.production.util.RouteTimeCalculator

  • 连续制造:使用等待开始时间 waitStartTime + duration
  • 离散制造:顺序推进 + 转运时间 transferTime + duration

本次仅需“单工序的 plan_start_time/plan_end_time”时优先直接用

  • plan_start_time = workOrder.processStartTime
  • plan_end_time = plan_start_time + workOrderEntry.duration

若后续需要“整条路线的各工序时间”再复用 RouteTimeCalculator.calculateProcessTimes(...),不在本次强行扩展。

13.3 前端打开字典维护页复用

项目内已有页签能力:this.$tab.openPage(title, path)(见 mes-ui/src/plugins/tab.js

本次字典快捷按钮仅在 PC 显示:

  • 复用 @/api/system/dict/typelistType 查询 dictId
  • 再用 $tab.openPage 打开 /system/dict/data/{dictId}

13.4 报工现有字段复用(不新增重复字段)

报工表 pro_report 现有已具备(尤其连续制造已在使用):

  • shift_namereport_period_startreport_period_end
  • downtime_minutesdowntime_reason

本次升级仅做“离散/连续统一支持 + UI 分组优化 + 新增成本/效益字段持久化”,不重复造相同语义字段。


十四、字段来源全景说明(项目模块 + 行业参考)

本节结合本系统实际模块关系,以及 SAP PP / Oracle MES / 用友U9C / 金蝶云星空等行业主流 MES 系统的报工单设计,说明每个字段在实际生产场景中的来源和意义。

14.1 A 区 — 基础信息字段

字段 本系统来源模块 本系统来源表/字段 行业做法参考
report_user_id / report_user_name 系统用户模块 sys_user.user_id / nick_name,前端当前登录用户 SAP PPOperator ID,由 HR 工号绑定OracleResource Person 来自员工主数据
report_time 前端自动 当前时间 new Date(),用户可修改(补报场景) 通用做法默认系统时间允许补报修改SAP PP 称 Confirmation Date
report_type 字典模块 sys_dict_data(字典类型 production_report_type,本次新增) SAP PPConfirmation Type(正式/取消/返工用友U9C报工类型正常/返工/补报);金蝶:报工性质
shift_name 字典模块 sys_dict_data(字典类型 sys_shift_type,原有字典) 全行业标配SAP PP 称 Shift从工厂日历继承Oracle MES 称 Shift Code
team_name / team_id 字典模块 sys_dict_data(字典类型 production_team,本次新增);team_id 存字典 remark 字段 SAP PPWork Center Group金蝶云星空生产班组独立主数据用友U9C班组来自 HR 班组台账
execution_standard 手动录入 无系统来源,用户自填(如 GB/T 标准号) ISO 9001 要求SAP PPControl Key 间接关联作业标准;食品/化工行业强制要求
workshop_id / workshop_name 车间工位模块 pro_workshop.id / namegetWorkshops() API 加载 全行业标配SAP PPPlant + Work Center 两级;本系统:车间→工位两级结构
station_id / station_name 车间工位模块 pro_station.id / name,级联车间下拉 SAP PPWork CenterOracle MESResource / Machine;金蝶:工作中心

14.2 B 区 — 数量信息字段

字段 本系统来源模块 本系统来源表/字段 行业做法参考
plan_count 生产工单模块 pro_workorder.quantity(工单排产总数),insertReport 时自动填入 SAP PPOrder QuantityOracle MESJob Quantity;全行业报工必带,用于进度对比
report_quantity 手动录入(必填) 用户输入本次完成数量 SAP PPYield QuantityOracleTransaction Quantity;金蝶:完工数量
qualified_quantity 手动录入 / 质检回填 用户输入或质检单确认后回填;触发良品率实时计算 SAP PPConfirmed Yield用友U9C合格数量来自质检单金蝶合格入库数量
unqualified_quantity 前端计算 = report_quantity - qualified_quantity,前端实时计算后保存持久化 SAP PPScrap QuantityOracleRejected Quantity;全行业通常自动推算
yield_rate 前端计算 = qualified_quantity / report_quantity × 100,前端实时计算 SAP PP由 QM 模块统计Oracle MESYield %;化工/食品行业生产 KPI 核心指标

14.3 C 区 — 时间节拍字段

字段 本系统来源模块 本系统来源表/字段 行业做法参考
plan_start_time 生产工单模块 pro_workorder.process_start_timeinsertReport 时自动填入 SAP PPScheduled Start Date,来自 MRP/APS 排程结果;本系统暂由工单手工维护
plan_end_time 工单模块 + 工序明细 = process_start_time + pro_workorder_entry.duration(秒);前端 fillDefaultPlanEndTime 计算默认值,可手动修改 SAP PPScheduled Finish Date,由 Work Center 标准工时自动推算OracleScheduled End Date
actual_start_time 手动录入(默认=计划开始) 默认 = plan_start_time,用户调整为实际打卡/扫码时间 SAP PPActual Start DateOracle MESActual Start,常由 WIP 事务自动记录;金蝶:实际开工时间
actual_end_time 手动录入(默认=计划完工) 默认 = plan_end_time,用户调整为实际完成时间 SAP PPActual Finish Date;是工时统计和效率分析的核心数据
theoretical_cycle_time 手动录入 来自 IE 工业工程部门的标准工时,单位:分钟/件,系统无自动来源 SAP PPStandard Work(每件标准工时)来自 Routing 工艺路线主数据;本系统暂无 IE 模块,手工录入
downtime_minutes 手动录入(已有字段) pro_report.downtime_minutes,原连续制造已用,本次离散开放 SAP PMBreakdown DurationOracle MESDowntime 来自 EAM 设备维护模块;金蝶:停机时长
downtime_reason 手动录入(已有字段) pro_report.downtime_reason,原连续制造已用 SAP PMNotification Type;行业做法建议结合停机原因字典;本系统暂为自由文本
report_submit_time 后端自动写入 new Date()insertReport 保存时写入,不暴露前端 全行业通用审计时间戳SAP 称 Posting Date;用于识别补报行为

14.4 D 区 — 成本效益字段

字段 本系统来源模块 本系统来源表/字段 行业做法参考
performance_wages 手动录入 / 薪资模块(待接) 用户填写;未来可由薪资结算模块推送计件工资 SAP HRLabor Cost,工时×工资率由 CO 成本中心自动计算;本系统暂无薪资模块
energy_consumption 手动录入 / 设备模块(待接) 用户填写能耗数值(如 kWh未来可对接设备能耗传感器自动采集 行业称 Utility CostSAP PP 通过活动类型 Activity Type=Power 自动计算;化工/食品行业必填
material_consumption 手动录入 / 领料模块(待接) 用户填写工耗;系统已有领料单 pro_pick,暂未自动关联金额 SAP PPGoods Movement 261 领料冲减BOM 消耗量自动计算;本系统有领料流程但报工暂不自动带入
other_costs 手动录入 用户填写其他杂项成本 SAP COOverhead Cost(制造费用分摊);本系统暂无分摊机制
value_added 手动录入 用户填写本道工序产生的增值(如加工费、工序增值) SAP PP+COValue Added = Confirmed Activity × Price;金蝶云星空:工序增值来自 BOM 标准成本;本系统暂手工
station_oee 手动录入(暂)/ 设备模块(待接) 用户手填百分比0-100OEE = 可用率 × 性能率 × 质量率 全行业 KPI 标配SAP MII / Oracle MES 由设备数据自动计算;本系统已有 pro_equipment,后续可自动化
current_benefit 前端计算 = value_added - energy_consumption - material_consumption - other_costs,前端实时计算 SAP COContribution Margin(贡献毛利);金蝶:毛利;精益生产看板核心指标
is_settle 薪资结算模块 pro_report.is_settleY/N本次改为可编辑薪资结算完成后更新 SAP HR工资确认标志金蝶 HR计件结算状态报工→薪资结算两步确认标准流程
wages 薪资结算模块 pro_report.wages,实际结算工资金额,本次改为可编辑 SAP HRPiece Rate Pay计件工资用友U9C报工工资由薪资引擎批量计算后写回

14.5 E 区 — 异常记录字段

字段 本系统来源模块 本系统来源表/字段 行业做法参考
station_exception 手动录入 pro_report.station_exception,用户描述工位发生的异常 SAP QMQuality Notification质量通知单Oracle MESNCRNon-Conformance Report金蝶生产异常记录行业通常为独立异常模块本系统暂为报工附属字段
rectification_suggestion 手动录入 pro_report.rectification_suggestion,班长/用户填写整改建议 来自精益生产 PDCA 循环的 Act 环节SAP QMCorrective ActionISO 9001 纠正措施记录
remark 手动录入(已有字段) BaseEntity.remark,通用备注 全行业通用自由文本字段

14.6 自动回显字段来源追溯

字段 来源路径(从销售到报工单) 行业做法参考
customer_name / customer_id sal_order(销售模块)→ pro_workorder.customer_name(工单 JOIN 查询)→ pro_report.customer_name(报工时自动填入) SAP PP客户信息通过 Sales Order → Production Order 链路从 SD 模块传递;食品行业定制生产必须追溯到客户
workpiece pro_workorder.material_name(工单模块)→ pro_report.workpiece(报工时自动填入) SAP PPMaterial DescriptionOracle MESItem Description;直观展示生产对象名称
product_batch pro_workorder.batch_number(工单/批次管理模块)→ pro_report.product_batch SAPBatch Number,食品/制药全程追溯Oracle MESLot Number;本系统工单创建时手工维护批次
process_name / process_id pro_route_process(工艺路线模块)→ pro_workorder_entry(工单工序明细)→ pro_report.process_name / process_id SAP PPOperation(工序)来自 Routing工艺路线主数据Oracle MESOperation Code
plan_start_time pro_workorder.process_start_time(工单排程时间)→ pro_report.plan_start_time SAP PP来自 MRP/APS 排程;本系统暂工单手工维护
plan_end_time pro_workorder.process_start_time + pro_workorder_entry.duration(秒)→ 前端计算 → pro_report.plan_end_time SAP PP由 Work Center 标准工时自动推算;本系统用 RouteTimeCalculator 可扩展
plan_count pro_workorder.quantity(工单排产数量)→ pro_report.plan_count SAP PPOrder Quantity 直接传递

14.7 系统能力评估(与行业对标)

维度 本系统升级后 SAP PP 标准 差距与后续规划
基础信息 报工人、时间、类型、班次、班组、工位 同等,另有 HR 工号强绑定 班组可升级为独立主数据模块
数量追踪 计划数、报工数、合格数、不合格数、良品率 同等,另有废品原因代码字段 可增加废品原因字典字段
时间管理 计划/实际开始完工、节拍、停机时间 同等,另有 Setup Time(换线准备时间) 可增加 setup_time 字段
成本核算 绩效工资、能耗、工耗、其他成本、增值、效益 (手工录入) SAP CO 基于 BOM + 活动类型自动计算 后续对接领料单/能耗传感器实现自动化
质量管理 良品率、工位异常、整改建议 (基础) 独立 QM 质量通知单,流程完整 本系统已有质检单模块,异常字段为补充
设备效率 OEE 暂手工、理论节拍 ⚠️ SAP MII 自动采集设备数据计算 OEE 本系统已有 pro_equipment,后续可自动计算
追溯链路 客户→工单→工序→报工单 销售订单→生产订单→工序→确认单,完整 本系统已完整,通过 sourceInfo JSON 关联销售订单