Files
MES_Manage_View_V20/需求分析_自制件与工位汇总表.md

13 KiB
Raw Blame History

需求分析:自制件汇总表 & 工位汇总表

日期: 2026-05-21 状态: 🔍 需求讨论阶段(不动代码) 目标: 理清数据来源、字段映射、缺口和实现方案,产出后续工作计划


一、需求确认清单

# 需求项 确认结果
1 自制件汇总表 — 汇总维度 订单+工序 汇总工时
2 自制件汇总表 — 时间范围 自定义起止日期(用户选择)
3 工位汇总表 — 汇总维度 工位+日期 汇总
4 工位汇总表 — 展示字段 产量统计 + 工时统计
5 使用场景 生产日报/周报(报表导出)

二、自制件汇总表(按订单+工序汇总工时)

2.1 需求理解

每行 = 一个订单的一道自制件工序,展示该工序的 计划工时 vs 实际工时 及差异。

2.2 数据源分析

┌─────────────────────────────────────────────────────────┐
│  自制件汇总表 数据流向                                    │
│                                                        │
│  MES_接口_生产计划 (订单主表)                              │
│  ├── 订单编号, 合同号, 物料编号, 物料描述, 自制件属性      │
│  │   过滤: 自制件属性 = '机加件', 单据状态 IS NULL         │
│  │                                                      │
│  └──→ MES_接口_生产计划_生产任务 (工序明细)               │
│       ├── 订单行号, 工序名称, 顺序编号                    │
│       ├── 指派对象(工位), 指派数量, 完成数量               │
│       │                                                  │
│       ├──→ 车间生产管理工艺_零件生产工艺_工艺库 (标准工时)  │
│       │   └── 标准工时, 准备工时, 工时合计                  │
│       │   JOIN: 工艺库.订单编号 = 生产任务.订单编号        │
│       │         AND 工艺库.工艺顺序 = 生产任务.订单行号     │
│       │                                                  │
│       └──→ YL_加工中心_操作记录表 (实际工时)               │
│           └── SUM(实际工时) WHERE 操作类别='报工'          │
│              GROUP BY TaskAID                             │
└─────────────────────────────────────────────────────────┘

2.3 目标字段清单

序号 字段名 数据来源 说明
1 订单号 MES_接口_生产计划.订单编号
2 合同号 MES_接口_生产计划.合同号
3 物料编号 MES_接口_生产计划.物料编号
4 物料描述 MES_接口_生产计划.物料描述
5 订单行号 MES_接口_生产计划_生产任务.订单行号 工序序号
6 工序名称 MES_接口_生产计划_生产任务.工序名称
7 指派工位 MES_接口_生产计划_生产任务.指派对象
8 计划工时 车间生产管理工艺_零件生产工艺_工艺库.标准工时 分钟单位
9 准备工时 车间生产管理工艺_零件生产工艺_工艺库.准备工时 分钟单位
10 工时合计(计划) 工艺库.工时合计 = 标准工时 + 准备工时
11 实际工时 SUM(YL_加工中心_操作记录表.实际工时) 秒→分钟转换
12 总时长 SUM(YL_加工中心_操作记录表.总时长) 含暂停的总耗时
13 工时差异 实际工时 计划工时合计 正=超时,负=提前
14 操作人 STRING_AGG 或取主要操作人 多操作人用逗号分隔
15 报工日期 MAX(报工日期) 取最后报工日期

2.4 现有可复用的数据

来源 可用字段 缺口
View_生产工时视图 加工工时, 总时长, 报工日期, 订单号, 工序名称 基本够用
View_生产订单_MES 订单号, 合同号, 物料, 工序, 指派对象
车间生产管理工艺_零件生产工艺_工艺库 标准工时, 准备工时, 工时合计 ⚠️ 需确认有哪些订单已录入

2.5 待确认问题

# 问题 建议
Q1 工艺库中标准工时数据覆盖率?很多订单可能没有录入标准工时 需 DBA 查一下 SELECT COUNT(*) FROM 工艺库 WHERE 标准工时 > 0
Q2 同一工序多次报工,取 SUM 还是最后一次? 建议 SUM(累计工时)
Q3 工时单位展示用分钟还是小时? 建议 分钟(与工艺库标准工时单位一致)
Q4 是否区分已校验/未校验工时? 建议加一列:已校验工时 vs 未校验工时
Q5 是否只查"已完成"的?还是包含进行中? 建议默认查 全部,加筛选条件

三、工位汇总表(按工位+日期汇总)

3.1 需求理解

每行 = 一个工位在某一天的生产汇总。展示两个维度:产量统计 + 工时统计

3.2 数据源分析

┌─────────────────────────────────────────────────────────┐
│  工位汇总表 数据流向                                      │
│                                                        │
│  MES_资源主数据 (工位基础数据)                             │
│  ├── VisCode(工位编号), Name(工位名称), Type              │
│  │   过滤: Type='rtMachine', Active='tYES'               │
│  │                                                      │
│  ├──→ 当日产量统计                                       │
│  │   ├── 计划数量: SUM(生产任务.指派数量)                  │
│  │   │   WHERE 指派对象编号=X AND 计划开始时间=@日期      │
│  │   ├── 完成数量: SUM(操作记录.操作数值)                  │
│  │   │   WHERE 工位编号=X AND 操作类别='报工'            │
│  │   │         AND CAST(开始时间 AS DATE)=@日期          │
│  │   ├── 合格数: SUM(质检记录.合格数)                     │
│  │   │   WHERE 工位关联 AND CAST(检测时间 AS DATE)=@日期  │
│  │   └── 不合格数: SUM(质检记录.不合格数)                 │
│  │                                                      │
│  └──→ 当日工时统计                                       │
│      ├── 设备运行工时: SUM(操作记录.实际工时)              │
│      ├── 人员工时: SUM(操作记录.总时长) 或 SUM(报工.工时)  │
│      └── 闲置时间: 24h - 运行时间(分钟)                   │
│          数据源: 历史_工位设备状态每分钟记录               │
│          WHERE 工位号=X AND CAST(创建时间 AS DATE)=@日期  │
│          SUM(CASE WHEN 设备状态 IN(-1,0,3) THEN 1 END)   │
│          → 每分钟一条,直接计数即为分钟数                  │
└─────────────────────────────────────────────────────────┘

3.3 目标字段清单

序号 字段名 数据来源 说明
1 工位编号 MES_资源主数据.VisCode
2 工位名称 MES_资源主数据.Name
3 统计日期 用户选择的日期 DATE 类型
4 计划数量 SUM(生产任务.指派数量) 当天计划开工的任务指派数
5 完成数量 SUM(操作记录.操作数值) 当天报工的完成数
6 合格数 SUM(质检记录.合格数) 当天收检的合格数
7 不合格数 SUM(质检记录.不合格数) 当天收检的不合格数
8 设备运行工时 SUM(操作记录.实际工时) / 60 转换为分钟
9 人员工时 SUM(操作记录.总时长) / 60 含暂停的总耗时
10 闲置时间 COUNT(状态记录 WHERE 状态 IN(-1,0,3)) 每分钟一条=分钟数
11 设备利用率 运行工时 / (运行+闲置) × 100% 可选指标

3.4 现有可复用的数据

来源 可用字段 缺口
View_生产工时视图 工位编号, 工位名称, 开始时间, 加工工时, 总时长
View_生产订单_MES 指派对象编号, 指派数量
历史_工位设备状态每分钟记录 工位号, 设备状态, 创建时间 ⚠️ 需确认数据采集是否覆盖所有工位

3.5 待确认问题

# 问题 建议
Q1 "日期"以哪个时间为准?报工日期还是操作日期? 建议用 报工日期 (CAST(操作记录.开始时间 AS DATE))
Q2 闲置时间——所有工位都有设备状态记录吗? 需DBA确认 历史_工位设备状态每分钟记录 的覆盖率
Q3 如果没有状态记录表数据,闲置时间怎么算? 备选方案:24×60 SUM(实际工时÷60) 粗略估算
Q4 跨天任务怎么算比如夜班从22:00做到次日02:00 建议按 开始时间归属日期22:00→当天
Q5 是否需要展示班次维度(白班/夜班分开)? 当前需求未要求,可后期迭代

四、实现方案对比

方案 方式 优点 缺点
A. 新建视图 创建 View_自制件工时汇总View_工位日汇总 两个VIEW 性能好、前端直接查 不够灵活
B. 新建存储过程 创建带参数的 SP 如 报表_自制件工时汇总(@开始日期,@结束日期) 灵活、支持参数筛选和分页 需前后端联调
C. 改造已有SP View_生产工时视图 基础上增加聚合查询 SP 复用现有逻辑 可能影响现有功能
推荐方案 方案B新建2个存储过程 + 前端新建2个报表页面 最佳实践

五、后续工作计划

第一阶段数据验证1天

步骤 内容 执行人
1 查询工艺库标准工时覆盖率 DBA
2 查询设备状态每分钟记录覆盖率(按工位) DBA
3 抽样验证取1个订单手动计算工时对比 SP 结果 DBA
4 确认工时单位统一(秒→分钟 or 小时) 全体

第二阶段存储过程开发2天

步骤 内容 执行人
1 创建 报表_自制件工时汇总 SP DBA
2 创建 报表_工位日汇总 SP DBA
3 编写测试SQL验证结果准确性 DBA
4 Review 两个 SP 技术负责人

第三阶段前端报表页面2天

步骤 内容 执行人
1 新建"自制件工时汇总"页面(搜索条件+表格+导出) 前端
2 新建"工位日汇总"页面(搜索条件+表格+导出) 前端
3 在菜单表中配置页面路由 前端/DBA
4 联调测试 全体

第四阶段上线验证0.5天)

步骤 内容 执行人
1 用真实数据跑一次日报 用户
2 与人工统计对比验证 用户
3 修复问题、调整格式 开发

六、需要DBA协助验证的SQL

-- 1. 工艺库标准工时覆盖率
SELECT 
    COUNT(*) AS 总工艺记录数,
    SUM(CASE WHEN ISNULL(标准工时,0) > 0 THEN 1 ELSE 0 END) AS 有标准工时,
    SUM(CASE WHEN ISNULL(标准工时,0) = 0 THEN 1 ELSE 0 END) AS 无标准工时
FROM 车间生产管理工艺_零件生产工艺_工艺库
WHERE 启用 = 1

-- 2. 设备状态记录覆盖率最近7天按工位
SELECT 
    工位号,
    COUNT(*) AS 记录数,
    MIN(创建时间) AS 最早,
    MAX(创建时间) AS 最晚
FROM 历史_工位设备状态每分钟记录
WHERE 创建时间 >= DATEADD(DAY, -7, GETDATE())
GROUP BY 工位号
ORDER BY 记录数 DESC

-- 3. 抽查一个订单的实际工时
SELECT 
    TaskAID,
    工序名称,
    操作类别,
    SUM(ISNULL(实际工时,0)) AS 实际工时合计_秒,
    SUM(ISNULL(总时长,0)) AS 总时长合计_秒,
    COUNT(*) AS 报工次数
FROM YL_加工中心_操作记录表
WHERE 订单编号 = '10001'  -- 替换为实际订单号
  AND 操作类别 = '报工'
GROUP BY TaskAID, 工序名称, 操作类别

📅 文档日期: 2026-05-21 🔍 状态: 需求讨论阶段待DBA数据验证后进入开发