feat: update MES tracking and reporting workflows

This commit is contained in:
2026-06-30 17:41:40 +08:00
parent e0e1b5d2bb
commit 1399b9a80a
47 changed files with 4465 additions and 90 deletions

View File

@@ -0,0 +1,27 @@
# 01-项目功能内容
## 页面
- 页面路径:`src/views/ProductionManagement/AGVtask/index.vue`
- 页面模块:生产管理
- 页面功能AGV 任务创建、实时任务查看、历史记录、点位管理。
## 数据来源
- 实时列表:`dbo.生产管理_物料机器人_查询实时数据`
- 实时表:`dbo.AGV_实时数据`
- 历史列表:`dbo.生产管理_物料机器人_查询历史数据`
- 历史表:`dbo.AGV_历史数据`
## 状态口径
- `PENDING`:待执行
- `RUNNING`:执行中
- `FINISHED`:已完成
- `CANCELED`:已取消
## 2026-06-30 处理内容
- 将页面中实时任务状态为 `RUNNING` 的任务全部改为已完成。
- 处理方式不是前端显示替换,而是按现有完成任务口径,将实时任务转入历史表,状态写为 `FINISHED`,并从实时表删除。

View File

@@ -0,0 +1,32 @@
# 02-项目程序开发详细步骤
## 1. 排查页面
1. 读取 `src/views/ProductionManagement/AGVtask/index.vue`
2. 确认实时任务调用 `生产管理_物料机器人_查询实时数据`
3. 确认页面状态映射:`RUNNING` 显示为“执行中”,`FINISHED` 显示为“已完成”。
## 2. 排查数据库
1. 查询 AGV 相关对象。
2. 确认实时表为 `dbo.AGV_实时数据`
3. 确认历史表为 `dbo.AGV_历史数据`
4. 确认完成任务过程 `dbo.生产管理_物料机器人_完成任务` 的逻辑为:
- 插入历史表。
- 从实时表删除。
## 3. 数据处理
1. 查询处理前实时任务状态分布:
- `PENDING`1 条
- `RUNNING`35 条
2. 使用事务将 `RUNNING` 任务写入 `AGV_历史数据`,状态为 `FINISHED`
3.`AGV_实时数据` 删除这些 `RUNNING` 任务。
4. 不处理 `PENDING` 待执行任务。
## 4. 验证
1. 执行 `生产管理_物料机器人_查询实时数据 @状态='RUNNING'`,结果为空。
2. 执行 `生产管理_物料机器人_查询实时数据 @状态=''`,实时表只剩 1 条 `PENDING`
3. 查询最近 5 分钟历史记录,确认新增 `FINISHED` 35 条。

View File

@@ -0,0 +1,44 @@
# 03-推进台账
## 第1轮执行中任务改为已完成
### 用户反馈
- 处理页面 `ProductionManagement/AGVtask/index` 里面任务状态为执行中的数据。
- 都改为已完成。
### 执行过程
1. 读取 `src/views/ProductionManagement/AGVtask/index.vue`
2. 确认实时查询过程为 `dbo.生产管理_物料机器人_查询实时数据`
3. 确认实时表为 `dbo.AGV_实时数据`,历史表为 `dbo.AGV_历史数据`
4. 查询处理前状态分布:`RUNNING` 35 条,`PENDING` 1 条。
5. 使用事务将 `RUNNING` 任务插入 `AGV_历史数据`,状态设为 `FINISHED`
6. 删除实时表中的 `RUNNING` 任务。
7. 验证实时查询 `RUNNING` 为空。
8. 验证实时表仅剩 1 条 `PENDING`
9. 验证历史表最近 5 分钟新增 `FINISHED` 35 条。
### 修改文件
- `work/ProductionManagement/AGVtask/README.md`
- `work/ProductionManagement/AGVtask/01-项目功能内容.md`
- `work/ProductionManagement/AGVtask/02-项目程序开发详细步骤.md`
- `work/ProductionManagement/AGVtask/03-推进台账.md`
- `work/ProductionManagement/AGVtask/04-任务矩阵.md`
- `work/ProductionManagement/AGVtask/05-验收证据.md`
- `work/ProductionManagement/AGVtask/06-决策记录.md`
- `gptlog-process/gpdlog.md`
- `C:\gptlog-process\gpdlog.md`
### 验证结果
- 已转历史数量35。
- `RUNNING` 实时任务0。
- 实时表剩余:`PENDING` 1 条。
- 历史表最近 5 分钟 `FINISHED`35 条。
### 下一步
- 页面刷新实时任务,确认执行中列表为空。

View File

@@ -0,0 +1,11 @@
# 04-任务矩阵
| 任务编号 | 任务名称 | 状态 | 验收标准 |
| --- | --- | --- | --- |
| AGV-001 | 定位页面数据来源 | 已完成 | 确认实时列表使用 `生产管理_物料机器人_查询实时数据` |
| AGV-002 | 定位状态表 | 已完成 | 确认实时表 `AGV_实时数据`、历史表 `AGV_历史数据` |
| AGV-003 | 执行中转已完成 | 已完成 | 35 条 `RUNNING` 任务转为历史 `FINISHED` |
| AGV-004 | 保留待执行 | 已完成 | `PENDING` 任务未处理,实时表仍保留 1 条 |
| AGV-005 | 验证实时列表 | 已完成 | 查询 `RUNNING` 为空 |
| AGV-006 | 文档和日志 | 已完成 | README、01-06 文档和两处 `gpdlog.md` 已更新 |

View File

@@ -0,0 +1,58 @@
# 05-验收证据
## 处理前状态
```sql
SELECT TaskStatus, COUNT(*) AS
FROM dbo.AGV_实时数据
GROUP BY TaskStatus;
```
结果:
```text
PENDING 1
RUNNING 35
```
## 执行处理
处理方式:
```text
将 dbo.AGV_实时数据 中 TaskStatus='RUNNING' 的任务插入 dbo.AGV_历史数据TaskStatus 写为 FINISHED
随后删除实时表中的 RUNNING 任务。
```
结果:
```text
已转历史数量 = 35
```
## 处理后验证
实时查询:
```sql
EXEC dbo.[_物料机器人_查询实时数据] @AGV编号=N'', @=N'RUNNING';
```
结果:
```text
无 RUNNING 数据。
```
实时表剩余:
```text
PENDING 1
```
历史表最近 5 分钟:
```text
FINISHED 35
```

View File

@@ -0,0 +1,14 @@
# 06-决策记录
## DR-001 执行中任务按完成流程转入历史表
- 日期2026-06-30
- 决策:将 `AGV_实时数据.TaskStatus='RUNNING'` 的任务插入 `AGV_历史数据`,状态写为 `FINISHED`,然后从实时表删除。
- 原因:页面已有完成任务过程也是“写历史表 + 删除实时表”的口径,直接把实时表状态改成 `FINISHED` 会让已完成任务继续出现在实时列表中,不符合页面现有设计。
## DR-002 不处理待执行任务
- 日期2026-06-30
- 决策:只处理 `RUNNING`,不处理 `PENDING`
- 原因:用户要求处理“执行中”的数据,待执行任务不属于本次范围。

View File

@@ -0,0 +1,19 @@
# AGV任务 README 索引
## 文档清单
- `01-项目功能内容.md`:记录页面、数据来源和状态口径。
- `02-项目程序开发详细步骤.md`:记录本次数据处理步骤。
- `03-推进台账.md`:记录每轮做了什么、改了哪些文件、验证了什么、下一步是什么。
- `04-任务矩阵.md`:记录任务编号、状态、验收标准。
- `05-验收证据.md`:记录命令、表、过程和结果证据。
- `06-决策记录.md`:记录关键处理口径。
## 当前状态
- 页面路径:`src/views/ProductionManagement/AGVtask/index.vue`
- 实时数据过程:`dbo.生产管理_物料机器人_查询实时数据`
- 实时表:`dbo.AGV_实时数据`
- 历史表:`dbo.AGV_历史数据`
- 本次处理:将实时表中 `TaskStatus='RUNNING'` 的 35 条任务转入历史表,状态改为 `FINISHED`

View File

@@ -0,0 +1,154 @@
# 01-项目功能内容
## 一、模块目标
新增一套独立的设计报工任务模块,用于记录研发/设计类任务、人员报工、工时校验和工时报表。
该模块不参与现有生产报工体系,不上传 SAP不影响现有工时校验、生产计划、装配中心、机加工、作业者工时等既有功能。
## 二、页面范围
### 1. 设计任务页面
功能:
- 查询过滤。
- 新建任务。
- 编辑任务。
- 删除任务。
查询条件:
- 任务ID。
- 项目号。
- 物料编码。
- 图号。
- 关联父件物料编码。
- 预计开始时间。
- 预计结束时间。
- 单据状态。
字段:
- DID唯一序号自增新建时不可见编辑时不可修改。
- 项目号:下拉选择,可搜索;具体 SAP 视图字段后续提供。
- 物料编码:下拉选择,可搜索,参考 `ProcessManagement/PartDrawlook/index.vue` 的物料编码过滤。
- 图号:文本框输入。
- 任务描述:文本框输入。
- 关联父件物料编码:下拉选择,可搜索,参考 `ProcessManagement/PartDrawlook/index.vue` 的物料编码过滤。
- 设计要求:文本框输入。
- 研发立项号:文本框输入。
- 研发目的:文本框输入。
- 指派对象:按二次派工口径支持多人员选择,参考 `PlanManagement/SelfMakePlando/index.vue`落库保存人员ID列表和人员名称列表。
- 预计开始时间:日期选择器。
- 预计结束时间:日期选择器。
- 创建日期:系统创建时间;新建时不可见,编辑时不可修改。
- 单据状态:待开始、执行中、已结束、已完成。
删除约束:
- 如果任务已经存在设计报工记录,不能删除。
- 如果任务没有报工记录,允许删除。
### 2. 设计报工页面
字段显示和设计任务页面基本一致。
过滤条件和设计任务页面基本一致。
页面功能:
- 开始。
- 结束。
- 完成。
业务规则:
- 开始:生成设计报工记录,记录开始时间、操作人和任务状态。
- 结束:补写结束时间,计算本次设计工时。
- 完成:必须已有结束时间;未结束不能完成。
- 完成后代表设计任务完成,任务状态变更为已完成。
- 已完成任务不允许再次开始或结束。
### 3. 设计工时校验页面
参考页面:`ProductionManagement/WorkHoursCheck/index.vue`
业务规则:
- 数据来源只取设计报工记录。
- 校验后只写入设计报工独立表或独立校验记录表。
- 不上传 SAP。
- 不调用现有生产工时校验的 SAP 上传逻辑。
### 4. 设计工时报表页面
参考页面:`ProductionManagement/Workhours/index.vue` 的作业者工时/工序工时展示方式。
业务规则:
- 数据来源只取设计报工记录。
- 可按人员、任务、项目号、物料编码、日期汇总设计工时。
- 不合并到现有作业者工时统计。
## 三、建议数据表
### 1. `MES_设计报工_任务`
用途:存储设计任务主数据。
建议字段:
- DID。
- 项目号。
- 物料编码。
- 图号。
- 任务描述。
- 关联父件物料编码。
- 设计要求。
- 研发立项号。
- 研发目的。
- 指派对象ID。
- 指派对象。
- 预计开始时间。
- 预计结束时间。
- 单据状态。
- 创建日期。
- 创建人。
- 最后编辑人。
- 最后编辑时间。
### 2. `MES_设计报工_记录`
用途:存储设计报工开始、结束和工时数据。
建议字段:
- RID。
- DID。
- 操作人ID。
- 操作人。
- 开始时间。
- 结束时间。
- 工时秒数。
- 报工状态。
- 已校验。
- 校验人。
- 校验时间。
- 创建时间。
- 备注。
### 3. `MES_设计报工_校验记录`
用途:保留校验动作流水,便于审计。
建议字段:
- VID。
- RID。
- DID。
- 校验前开始时间。
- 校验前结束时间。
- 校验后开始时间。
- 校验后结束时间。
- 校验后工时秒数。
- 校验人。
- 校验时间。
- 校验备注。
## 四、独立性要求
- 不写入现有生产报工表。
- 不写入现有生产工时校验表。
- 不上传 SAP。
- 不参与现有生产工时报表。
- 不影响装配中心、机加工、自制件排产、生产订单关闭逻辑。

View File

@@ -0,0 +1,55 @@
# 02-项目程序开发详细步骤
## 一、数据库开发
1. 新建独立数据表:
- `MES_设计报工_任务`
- `MES_设计报工_记录`
- 可选 `MES_设计报工_校验记录`
2. 新建设计任务增删改查存储过程:
- `设计报工_任务_查询`
- `设计报工_任务_新增`
- `设计报工_任务_编辑`
- `设计报工_任务_删除`
3. 删除过程增加约束:
- 存在 `MES_设计报工_记录` 时禁止删除。
4. 新建设计报工过程:
- `设计报工_任务_开始`
- `设计报工_任务_结束`
- `设计报工_任务_完成`
5. 完成过程增加约束:
- 必须存在结束时间。
- 未结束不能完成。
6. 新建设计工时校验过程:
- `设计报工_工时校验_查询`
- `设计报工_工时校验_保存`
- `设计报工_工时校验_批量保存`
7. 新建设计工时报表过程:
- `设计报工_工时报表_作业者工时_查询`
- 可按后续页面需要增加导出过程。
## 二、前端开发
1. 新建设计任务页面。
2. 新建设计报工页面。
3. 新建设计工时校验页面。
4. 新建设计工时报表页面。
5. 按系统菜单权限新增菜单记录。
6. 物料编码、关联父件物料编码下拉查询参考 `ProcessManagement/PartDrawlook/index.vue`
7. 指派对象多人员选择参考 `PlanManagement/SelfMakePlando/index.vue` 的二次派工。
8. 工时校验布局参考 `ProductionManagement/WorkHoursCheck/index.vue`,但移除 SAP 上传相关逻辑。
9. 工时报表布局参考 `ProductionManagement/Workhours/index.vue`,但查询独立设计报工表。
## 三、验证步骤
1. 新建一条设计任务,确认 DID 和创建日期自动生成。
2. 编辑设计任务,确认 DID 和创建日期不可修改。
3. 未报工任务可删除。
4. 已存在报工记录任务不可删除。
5. 点击开始后生成报工记录。
6. 未结束时点击完成,应提示不能完成。
7. 点击结束后生成结束时间和工时秒数。
8. 已结束后点击完成,任务变为已完成。
9. 已完成任务不能再次开始或结束。
10. 校验页面只更新设计报工数据,不触发 SAP 上传。
11. 报表页面只展示设计报工工时,不混入现有生产报工数据。

View File

@@ -0,0 +1,36 @@
# 03-推进台账
## 2026-06-30 方案梳理
### 做了什么
- 读取 `doc/设计报工任务模块.docx`
- 梳理设计任务、设计报工、设计工时校验、设计工时报表四个页面。
- 对照参考页面:
- `ProcessManagement/PartDrawlook/index.vue`
- `PlanManagement/SelfMakePlando/index.vue`
- `ProductionManagement/WorkHoursCheck/index.vue`
- `ProductionManagement/Workhours/index.vue`
### 改了哪些文件
- `doc/设计报工任务模块.docx`
- `work/ProductionManagement/DesignReportTask/README.md`
- `work/ProductionManagement/DesignReportTask/01-项目功能内容.md`
- `work/ProductionManagement/DesignReportTask/02-项目程序开发详细步骤.md`
- `work/ProductionManagement/DesignReportTask/03-推进台账.md`
- `work/ProductionManagement/DesignReportTask/04-任务矩阵.md`
- `work/ProductionManagement/DesignReportTask/05-验收证据.md`
- `work/ProductionManagement/DesignReportTask/06-决策记录.md`
- `gptlog-process/gpdlog.md`
- `C:\gptlog-process\gpdlog.md`
### 验证了什么
- 文档中明确要求新建独立设计报工体系。
- 用户确认:
- 项目号 SAP 视图字段后续提供。
- 完成必须已有结束时间,未结束不能完成。
- 已有报工记录的任务不能删除。
- 不参与之前任何生产/SAP/工时报表流程,完全独立。
### 下一步
- 等待项目号 SAP 视图字段。
- 开始数据库脚本和页面开发。

View File

@@ -0,0 +1,14 @@
# 04-任务矩阵
| 任务编号 | 任务内容 | 状态 | 验收标准 |
| --- | --- | --- | --- |
| DRT-001 | 读取原始 Word 文档 | 已完成 | 已提取字段、页面和业务要求 |
| DRT-002 | 梳理设计任务页面方案 | 已完成 | 字段、查询、新建、编辑、删除规则明确 |
| DRT-003 | 梳理设计报工页面方案 | 已完成 | 开始、结束、完成规则明确 |
| DRT-004 | 梳理设计工时校验方案 | 已完成 | 明确不上传 SAP只校验独立数据 |
| DRT-005 | 梳理设计工时报表方案 | 已完成 | 明确只查询设计报工数据 |
| DRT-006 | 确认完成规则 | 已完成 | 必须已有结束时间,未结束不能完成 |
| DRT-007 | 确认删除规则 | 已完成 | 有报工记录不能删除 |
| DRT-008 | 确认独立性 | 已完成 | 不参与现有任何生产/SAP/工时报表流程 |
| DRT-009 | 确认项目号来源 | 待确认 | 业务提供 SAP 视图和字段 |
| DRT-010 | 数据库和页面开发 | 待开始 | 表、过程、页面、菜单发布并验证 |

View File

@@ -0,0 +1,41 @@
# 05-验收证据
## 文档读取
来源:
```text
doc/设计报工任务模块.docx
```
读取结果摘要:
```text
新增设计任务页面。
新建设计报工界面。
新建设计工时校验。
新建设计工时报表。
新建表存储设计报工信息,和其他报工不产生影响。
```
## 用户确认口径
```text
项目号具体取哪个 SAP 视图字段后续提供。
完成要求已有结束时间,未结束不能完成。
删除任务时,如果已经有报工记录,不能删除。
不参与之前的任何东西,独立的。
```
## 参考页面
```text
src/views/ProcessManagement/PartDrawlook/index.vue
src/views/PlanManagement/SelfMakePlando/index.vue
src/views/ProductionManagement/WorkHoursCheck/index.vue
src/views/ProductionManagement/Workhours/index.vue
```
## 验收结论
当前为方案文档阶段,尚未开发代码和数据库脚本。
方案可进入开发,但需要先补齐项目号 SAP 视图字段来源。

View File

@@ -0,0 +1,54 @@
# 06-决策记录
## DDR-001 独立设计报工体系
决策:设计任务、设计报工记录、设计工时校验、设计工时报表全部使用独立表和独立存储过程。
原因:用户明确要求“和其他报工不产生影响”“不参与之前的任何东西,独立的”。
影响:
- 不写入现有生产报工表。
- 不上传 SAP。
- 不参与现有工时报表。
- 不影响生产订单关闭、装配中心、机加工等既有逻辑。
## DDR-002 完成必须先结束
决策:设计任务点击完成前,必须已有结束时间。
原因:完成代表任务闭环,未结束时无法计算完整工时。
影响:
- 未结束点击完成时,页面提示不能完成。
- 后端过程也必须校验,不能只依赖前端。
## DDR-003 有报工记录不能删除任务
决策:设计任务如果已经有报工记录,禁止删除。
原因:避免删除主任务造成工时记录失去归属。
影响:
- 删除过程需要先检查设计报工记录表。
- 后续如需撤销,只能增加作废状态,不做物理删除。
## DDR-004 项目号来源待业务提供
决策项目号字段暂保留为可搜索下拉SAP 视图和字段来源后续补充。
原因:用户确认项目号具体 SAP 视图字段后续提供。
影响:
- 开发时可先预留过程参数和前端控件。
- 项目号下拉过程需等字段来源明确后实现。
## DDR-005 指派对象按多人派工预留
决策:指派对象按 `PlanManagement/SelfMakePlando/index.vue` 二次派工口径支持多人员选择保存人员ID列表和名称列表。
原因:原文要求参考二次派工,且设计任务常见多人协作。
影响:
- 前端使用多选人员下拉。
- 数据库建议同时保存人员ID列表和人员名称列表。
- 如果后续业务确认只允许单人,可收窄为单选,不影响表结构扩展。

View File

@@ -0,0 +1,17 @@
# 设计报工任务模块 README 索引
## 文档清单
- `01-项目功能内容.md`:记录模块目标、页面范围、字段和业务口径。
- `02-项目程序开发详细步骤.md`:记录后续开发落地步骤。
- `03-推进台账.md`:记录每轮做了什么、改了哪些文件、验证了什么、下一步是什么。
- `04-任务矩阵.md`:记录任务编号、状态和验收标准。
- `05-验收证据.md`:记录文档读取、方案确认和后续开发验证证据。
- `06-决策记录.md`:记录已确认的关键设计决策。
## 当前状态
- 来源文档:`doc/设计报工任务模块.docx`
- 当前阶段:方案梳理与文档修订。
- 核心原则设计报工任务、设计报工记录、设计工时校验、设计工时报表全部独立不参与现有生产报工、SAP 上传、生产工时校验和既有工时报表。
- 待确认项:`项目号` 的 SAP 视图和字段来源由业务后续提供。

View File

@@ -0,0 +1,55 @@
# 01-项目功能内容
## 页面
- 页面名称:产品合格率(工位)
- 页面路径:`src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
- 菜单模块:生产管理
## 数据范围
1. 只统计生产订单已关闭的数据。
2. 已关闭判断来自 SAP 视图 `[SAP].[SBO_YL].[dbo].[UBT_OWOR]``单据状态 IS NOT NULL`
3. 关闭日期取 `[SAP].[SBO_YL].[dbo].[UBT_OWOR].[实际结算日期]`
4. 生产过程质检明细取 `dbo.YL_质量检验_质检记录`
5. 二级明细按生产订单、工序号、工序、工位汇总。
## 一级字段
- 关闭日期
- 生产订单号
- 物料名称
- 物料编码
- 计划数量
- 完成数量:二级完成数量合计
- 不良数量:二级不良数量合计
- 合格率:按截图口径计算为 `(完成数量 - 不良数量) / 完成数量`
## 二级字段
- 工序
- 工序号:`dbo.MES_接口_生产计划_生产任务.订单行号`
- 工位:质检记录 `工位名称`,为空时补 `View_生产订单_MES.指派对象`,仍为空显示 `空白`
- 完成数量:按订单行号、工序、工位汇总 `检验数量`
- 不良数量:按订单行号、工序、工位汇总 `不合格数`
- 合格率:`(完成数量 - 不良数量) / 完成数量`
- 检验说明:同组多条说明用 `` 并列显示
## 查询条件
- 关闭日期范围,页面默认近 30 天
- 生产订单号
- 物料编码
- 物料名称
- 工序
- 工位
- 合格状态:不合格、合格、全部;页面默认不合格
## 2026-06-30 补充口径
1. 页面进入时默认不查询数据,避免打开页面直接加载报表。
2. 查询条件新增“合格状态”。
3. 合格状态默认值为“不合格”。
4. 主数据合格率小于 `100` 判定为“不合格”,大于等于 `100` 判定为“合格”。
5. 关闭日期筛选拆成“关闭日期起”和“关闭日期止”两个独立日期框,降低误操作。
6. 二级工序号固定从 `dbo.MES_接口_生产计划_生产任务.订单行号` 读取,关联关系为 `YL_质量检验_质检记录.TaskAID = MES_接口_生产计划_生产任务.AID`

View File

@@ -0,0 +1,51 @@
# 02-项目程序开发详细步骤
## 1. 需求解析
1. 解包并读取 `doc/新增产品合格率.docx`
2. 确认新增页面为“产品合格率(工位)”,放在生产管理模块下。
3. 确认一级数据只计算已关闭生产订单。
4. 确认二级数据按订单行号、工序、工位汇总完成数量、不良数量和检验说明。
## 2. 数据库开发
1. 新增 `db_backups/create_product_pass_rate_workstation_20260630.sql`
2. 创建或更新查询过程 `dbo.生产管理_产品合格率工位_查询`
3. 参数包括生产订单号、物料编码、物料名称、关闭日期起止、工序、工位。
4. 使用 `OPENQUERY([SAP], ...)` 读取 `SBO_YL.dbo.UBT_OWOR`,将 SAP 已关闭订单先写入本地临时表。
5. 使用 `YL_质量检验_质检记录` 汇总生产过程质检数据。
6. 使用 `View_生产订单_MES` 补齐订单行号、工序和指派对象。
7. 输出一级汇总和 `明细JSON`,前端展开行解析 JSON 展示二级数据。
8. 空条件查询自动限定近 30 天,避免页面默认打开时全量扫描。
9. 2026-06-30 按用户反馈修正工序号来源:改为连接 `dbo.MES_接口_生产计划_生产任务`,通过 `YL_质量检验_质检记录.TaskAID = MES_接口_生产计划_生产任务.AID` 读取 `订单行号`
## 3. 菜单开发
1. 新增 `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`
2. 菜单标题:`产品合格率(工位)`
3. 路由:`ProductPassRateWorkstation/index`
4. 组件:`/ProductionManagement/ProductPassRateWorkstation/index`
5. 权限来源参考已有“生产计划跟踪”,写入生产管理模块下。
## 4. 前端开发
1. 新增页面 `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
2. 查询区提供关闭日期、生产订单、物料编码、物料名称、工序、工位。
3. 主表展示一级汇总字段。
4. 使用展开行展示二级明细。
5. 合格率按 100%、90%-99.99%、低于 90% 显示不同颜色。
6. 默认关闭日期范围为近 30 天。
7. 2026-06-30 页面去掉 `created()` 自动查询,进入页面后先显示空表。
8. 2026-06-30 查询区新增“合格状态”,默认 `不合格`,查询时传入存储过程参数 `合格状态`
9. 2026-06-30 将关闭日期范围控件拆成两个独立日期控件,分别传入 `关闭日期_Start``关闭日期_End`
## 5. 验证
1. 发布查询过程成功。
2. 发布菜单脚本成功,写入 `12` 条角色菜单记录。
3. 验证 `@生产订单号=N'7649'` 能返回一级汇总和二级明细。
4. 验证近 7 天查询返回 `175` 行,耗时约 `0.37` 秒。
5. 验证空条件自动限定近 30 天,返回 `1420` 行,耗时约 `1.17` 秒。
6. 执行 `npm run build`,构建通过,只有项目既有资源体积和 browserslist 警告。
7. 2026-06-30 验证近 30 天 `不合格` 返回 `50` 行,最高合格率 `99.99``合格` 返回 `1370` 行;`全部` 返回 `1420` 行。
8. 2026-06-30 拆分关闭日期控件后执行 `npm run build`,构建通过。

View File

@@ -0,0 +1,176 @@
# 03-推进台账
## 第1轮新增产品合格率(工位)页面
### 用户反馈
- 查看 `doc/新增产品合格率.docx`
- 根据文档新增页面“产品合格率(工位)”。
### 执行过程
1. 解包 `doc/新增产品合格率.docx`,读取文字和截图。
2. 确认页面放在生产管理下面。
3. 确认 SAP 关闭日期来源为 `SBO_YL.dbo.UBT_OWOR.实际结算日期`
4. 查询 `YL_质量检验_质检记录` 字段,确认生产订单号为 `计划号`,订单行号为 `行号`,工位字段为 `工位名称`
5. 新增查询过程脚本 `db_backups/create_product_pass_rate_workstation_20260630.sql`
6. 初版跨库四段名查询较慢,改为 `OPENQUERY([SAP], ...)` 先取 SAP 已关闭订单到本地临时表。
7. 新增菜单脚本 `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`
8. 新增前端页面 `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
9. 发布查询过程和菜单脚本。
10. 执行数据库样例验证和 `npm run build`
### 修改文件
- `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
- `db_backups/create_product_pass_rate_workstation_20260630.sql`
- `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`
- `work/ProductionManagement/ProductPassRateWorkstation/README.md`
- `work/ProductionManagement/ProductPassRateWorkstation/01-项目功能内容.md`
- `work/ProductionManagement/ProductPassRateWorkstation/02-项目程序开发详细步骤.md`
- `work/ProductionManagement/ProductPassRateWorkstation/03-推进台账.md`
- `work/ProductionManagement/ProductPassRateWorkstation/04-任务矩阵.md`
- `work/ProductionManagement/ProductPassRateWorkstation/05-验收证据.md`
- `work/ProductionManagement/ProductPassRateWorkstation/06-决策记录.md`
- `gptlog-process/gpdlog.md`
- `C:\gptlog-process\gpdlog.md`
### 验证结果
- 查询过程发布成功。
- 菜单脚本发布成功,生产管理下新增 `产品合格率(工位)`
- 样例 `7649` 返回一级汇总和二级明细。
- `npm run build` 通过。
### 下一步
- 登录页面确认菜单可见,并检查展开行明细展示是否符合现场习惯。
## 第2轮默认不查询并新增合格状态筛选
### 用户反馈
- 默认进来不查询数据。
- 增加“合格”和“不合格”筛选。
- 主数据合格率小于 `100` 的为不合格。
- 默认不合格。
### 执行过程
1. 修改 `db_backups/create_product_pass_rate_workstation_20260630.sql`,新增参数 `@合格状态`,默认 `不合格`
2. 查询过程最终输出前按主数据合格率筛选:
- `合格`:合格率大于等于 `100`
- `不合格`:合格率小于 `100`
- `全部`:不过滤。
3. 修改 `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
- 删除页面 `created()` 自动查询。
- 查询区新增“合格状态”下拉。
- 默认值设为 `不合格`
- 查询时传入 `合格状态` 参数。
4. 发布查询过程成功。
5. 验证近 30 天 `不合格``合格``全部` 三种筛选。
6. 执行 `npm run build`,构建通过。
### 修改文件
- `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
- `db_backups/create_product_pass_rate_workstation_20260630.sql`
- `work/ProductionManagement/ProductPassRateWorkstation/README.md`
- `work/ProductionManagement/ProductPassRateWorkstation/01-项目功能内容.md`
- `work/ProductionManagement/ProductPassRateWorkstation/02-项目程序开发详细步骤.md`
- `work/ProductionManagement/ProductPassRateWorkstation/03-推进台账.md`
- `work/ProductionManagement/ProductPassRateWorkstation/04-任务矩阵.md`
- `work/ProductionManagement/ProductPassRateWorkstation/05-验收证据.md`
- `work/ProductionManagement/ProductPassRateWorkstation/06-决策记录.md`
- `gptlog-process/gpdlog.md`
- `C:\gptlog-process\gpdlog.md`
### 验证结果
- 近 30 天 `不合格` 返回 `50` 行,合格率范围 `66.67``99.99`
- 近 30 天 `合格` 返回 `1370` 行,合格率均为 `100.00`
- 近 30 天 `全部` 返回 `1420` 行。
- `npm run build` 通过,仅有项目既有 warning。
### 下一步
- 登录页面确认初始为空表,点击查询后按默认不合格返回数据。
## 第3轮关闭日期筛选拆分
### 用户反馈
- 关闭日期筛选拆成两个筛选。
- 客户不习惯一次选两个日期。
### 执行过程
1. 修改 `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
2. 将原 `daterange` 日期范围控件拆成两个 `date` 日期控件。
3. 新增 `searchForm.closeDateStart``searchForm.closeDateEnd`
4. 查询时仍传入原有参数 `关闭日期_Start``关闭日期_End`,数据库过程无需修改。
5. 执行 `npm run build`,构建通过。
### 修改文件
- `src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
- `work/ProductionManagement/ProductPassRateWorkstation/01-项目功能内容.md`
- `work/ProductionManagement/ProductPassRateWorkstation/02-项目程序开发详细步骤.md`
- `work/ProductionManagement/ProductPassRateWorkstation/03-推进台账.md`
- `work/ProductionManagement/ProductPassRateWorkstation/04-任务矩阵.md`
- `work/ProductionManagement/ProductPassRateWorkstation/05-验收证据.md`
- `gptlog-process/gpdlog.md`
- `C:\gptlog-process\gpdlog.md`
### 验证结果
- `npm run build` 通过,仅有项目既有 warning。
- 前端继续使用 `关闭日期_Start``关闭日期_End` 参数,数据库过程无需重新发布。
### 下一步
- 登录页面确认两个日期框更符合客户操作习惯。
## 第4轮修正二级工序号来源
### 用户反馈
- 工序号为什么都是空。
- 工序号应取表 `dbo.MES_接口_生产计划_生产任务.订单行号`
- 该表中订单行号肯定不会为空。
### 执行过程
1. 查询 `dbo.MES_接口_生产计划_生产任务` 字段,确认存在 `AID``订单编号``订单行号``工序名称``指派对象`
2. 查询样例 `7649``7002``7280``7410`,确认 `MES_接口_生产计划_生产任务.订单行号` 有值。
3. 定位原脚本中工序号来源为 `COALESCE(View_生产订单_MES.订单行号, 质检记录.行号)`
4. 确认质检记录的 `TaskAID` 对应生产任务表的 `AID`
5. 修改 `db_backups/create_product_pass_rate_workstation_20260630.sql`
- 将明细补充表从 `View_生产订单_MES` 改为 `MES_接口_生产计划_生产任务`
- 关联条件改为 `q.TaskAID = t.AID`
- 工序号改为 `COALESCE(t.订单行号, q.行号)`
6. 发布查询过程成功。
7. 验证 `7649` 二级工序号为 `1``2``3`
8. 验证近 30 天 `3281` 条二级明细中空工序号为 `0`
### 修改文件
- `db_backups/create_product_pass_rate_workstation_20260630.sql`
- `work/ProductionManagement/ProductPassRateWorkstation/01-项目功能内容.md`
- `work/ProductionManagement/ProductPassRateWorkstation/02-项目程序开发详细步骤.md`
- `work/ProductionManagement/ProductPassRateWorkstation/03-推进台账.md`
- `work/ProductionManagement/ProductPassRateWorkstation/04-任务矩阵.md`
- `work/ProductionManagement/ProductPassRateWorkstation/05-验收证据.md`
- `work/ProductionManagement/ProductPassRateWorkstation/06-决策记录.md`
- `gptlog-process/gpdlog.md`
- `C:\gptlog-process\gpdlog.md`
### 验证结果
- 过程 `dbo.生产管理_产品合格率工位_查询` 发布成功,修改时间 `2026-06-30 15:12:24.840`
- 样例 `7649` 返回:领料 1、数车 2、打磨 3。
- 近 30 天二级明细空工序号行数为 `0`
### 下一步
- 页面展开二级明细确认工序号列不再为空。

View File

@@ -0,0 +1,15 @@
# 04-任务矩阵
| 任务编号 | 任务名称 | 状态 | 验收标准 |
| --- | --- | --- | --- |
| PPRW-001 | 需求文档解析 | 已完成 | 读取 docx 文字和截图,确认字段和数据源 |
| PPRW-002 | 查询过程开发 | 已完成 | `dbo.生产管理_产品合格率工位_查询` 发布成功 |
| PPRW-003 | 查询性能优化 | 已完成 | SAP 数据通过 `OPENQUERY` 下推过滤,近 7 天查询约 `0.37` 秒 |
| PPRW-004 | 菜单脚本开发 | 已完成 | 生产管理下新增 `产品合格率(工位)`,写入 12 条角色菜单记录 |
| PPRW-005 | 前端页面开发 | 已完成 | 页面新增主表、展开二级明细和查询条件 |
| PPRW-006 | 构建验证 | 已完成 | `npm run build` 通过 |
| PPRW-007 | 文档与日志 | 已完成 | README、01-06 文档和两处 `gpdlog.md` 已更新 |
| PPRW-008 | 默认不自动查询 | 已完成 | 页面进入后不调用查询过程,表格初始为空 |
| PPRW-009 | 合格状态筛选 | 已完成 | 默认不合格,合格率小于 `100` 为不合格,大于等于 `100` 为合格 |
| PPRW-010 | 关闭日期拆分 | 已完成 | 页面使用“关闭日期起”和“关闭日期止”两个独立日期框 |
| PPRW-011 | 修正工序号来源 | 已完成 | 二级工序号从 `MES_接口_生产计划_生产任务.订单行号` 读取,近 30 天空工序号为 0 |

View File

@@ -0,0 +1,137 @@
# 05-验收证据
## 数据库发布
```powershell
$env:SQLCMDPASSWORD='******'
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -C -l 30 -b -f 65001 -i 'db_backups\create_product_pass_rate_workstation_20260630.sql'
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -C -l 30 -b -f 65001 -i 'db_backups\add_product_pass_rate_workstation_menu_20260630.sql'
Remove-Item Env:SQLCMDPASSWORD
```
结果:
```text
已将数据库上下文更改为 "YL_MESDB"。
```
## 存储过程验证
```sql
SELECT OBJECT_NAME(object_id) AS procedure_name, modify_date
FROM sys.objects
WHERE object_id=OBJECT_ID(N'dbo.生产管理_产品合格率工位_查询');
```
结果:
```text
生产管理_产品合格率工位_查询 2026-06-30 14:31:00.690
```
## 样例订单
```sql
EXEC dbo.[_产品合格率工位_查询] @=N'7649';
```
结果要点:
| 生产订单号 | 关闭日期 | 物料编码 | 计划数量 | 完成数量 | 不良数量 | 合格率 |
| --- | --- | --- | --- | --- | --- | --- |
| 7649 | 2026-06-30 | 22-100-021-YQZF-20V2.0-8-08 | 10.0000 | 30.0000 | 0.0000 | 100.00 |
二级明细包括:
- 打磨 / 打磨 / 完成数量 10
- 领料 / 空白 / 完成数量 10
- 数车 / 空白 / 完成数量 10
## 性能验证
```text
近 7 天查询175 行ElapsedSeconds=0.37。
空条件查询:自动限定近 30 天1420 行ElapsedSeconds=1.17。
```
## 前端构建
```powershell
npm run build
```
结果:
```text
webpack 5.103.0 compiled with 2 warnings
```
说明warnings 为项目既有资源体积和 browserslist/caniuse-lite 过期提示。
## 工序号来源修正验证
工序号来源:
```text
dbo.YL_质量检验_质检记录.TaskAID = dbo.MES_接口_生产计划_生产任务.AID
工序号 = dbo.MES_接口_生产计划_生产任务.订单行号
```
样例 `7649`
| 生产订单号 | 工序 | 工序号 | 工位 | 完成数量 | 不良数量 | 合格率 |
| --- | --- | --- | --- | --- | --- | --- |
| 7649 | 领料 | 1 | 领料 | 10.0000 | 0.0000 | 100.00 |
| 7649 | 数车 | 2 | 数2 | 10.0000 | 0.0000 | 100.00 |
| 7649 | 打磨 | 3 | 打磨 | 10.0000 | 0.0000 | 100.00 |
近 30 天检查:
```text
明细行数=3281空工序号行数=0。
```
## 合格状态筛选验证
```sql
EXEC dbo.[_产品合格率工位_查询]
@_Start=N'2026-06-01',
@_End=N'2026-06-30',
@=N'不合格';
```
结果要点:
```text
不合格50 行,最低合格率 66.67,最高合格率 99.99。
合格1370 行,最低合格率 100.00,最高合格率 100.00。
全部1420 行,最低合格率 66.67,最高合格率 100.00。
```
页面验证点:
- 页面进入时不自动调用查询,表格初始为空。
- 合格状态下拉默认值为 `不合格`
## 关闭日期拆分验证
页面调整:
```text
关闭日期范围控件已拆成两个独立日期框:开始日期、结束日期。
查询参数仍为 关闭日期_Start 和 关闭日期_End。
```
构建:
```powershell
npm run build
```
结果:
```text
webpack 5.103.0 compiled with 2 warnings
```
说明warnings 为项目既有资源体积和 browserslist/caniuse-lite 过期提示。

View File

@@ -0,0 +1,44 @@
# 06-决策记录
## DR-001 合格率按截图口径计算
- 日期2026-06-30
- 决策:合格率按 `(完成数量 - 不良数量) / 完成数量` 计算。
- 原因:文档文字写“合格率:不良数量/完成数量”,但截图中 `完成数量=6``不良数量=1` 显示 `83.33%`,实际对应 `(6-1)/6`
## DR-002 二级只统计生产过程质检
- 日期2026-06-30
- 决策:二级明细当前统计 `质检类型 = 收检` 的生产过程记录,不混入来料检验和退库检验。
- 原因:同一生产订单号可能存在来料检验记录,例如样例数据中来料检验数量远大于生产计划数量,混入会导致产品工位合格率失真。
## DR-003 使用 OPENQUERY 优化 SAP 视图读取
- 日期2026-06-30
- 决策:查询过程通过 `OPENQUERY([SAP], ...)` 读取 `SBO_YL.dbo.UBT_OWOR`,并将日期、生产订单条件下推到 SAP。
- 原因:直接四段名查询在日期范围内仍然约 44 秒;改为 `OPENQUERY` 后近 7 天约 0.37 秒。
## DR-004 空条件自动限定近 30 天
- 日期2026-06-30
- 决策:当未传关闭日期且未传生产订单号时,存储过程自动查询近 30 天。
- 原因:避免页面默认打开触发历史全量扫描,同时前端也默认近 30 天,前后端口径一致。
## DR-005 页面进入不自动查询
- 日期2026-06-30
- 决策:前端页面删除 `created()` 自动查询,进入页面先显示空表。
- 原因:用户明确要求默认进来不查询数据。
## DR-006 合格状态按主数据合格率判断
- 日期2026-06-30
- 决策:主数据合格率小于 `100` 判定为不合格,大于等于 `100` 判定为合格。
- 原因用户明确要求“主数据合格率小于100的为不合格”默认筛选不合格。
## DR-007 工序号以生产任务表为准
- 日期2026-06-30
- 决策:二级工序号从 `dbo.MES_接口_生产计划_生产任务.订单行号` 读取。
- 关联:`dbo.YL_质量检验_质检记录.TaskAID = dbo.MES_接口_生产计划_生产任务.AID`
- 原因:用户确认生产任务表的 `订单行号` 是明确来源,原逻辑依赖视图和质检记录行号,部分记录会为空。

View File

@@ -0,0 +1,22 @@
# 产品合格率(工位) README 索引
## 文档清单
- `01-项目功能内容.md`:记录页面、字段、数据源和计算口径。
- `02-项目程序开发详细步骤.md`:记录数据库、菜单、前端开发和验证步骤。
- `03-推进台账.md`:记录每轮做了什么、改了哪些文件、验证了什么、下一步是什么。
- `04-任务矩阵.md`:记录任务编号、状态、验收标准。
- `05-验收证据.md`:记录命令、页面、数据库对象和样例输出。
- `06-决策记录.md`:记录关键口径和原因,避免后续重复争论。
## 当前状态
- 页面路径:`src/views/ProductionManagement/ProductPassRateWorkstation/index.vue`
- 菜单标题:`产品合格率(工位)`
- 菜单模块:生产管理
- 查询过程:`dbo.生产管理_产品合格率工位_查询`
- 数据库脚本:
- `db_backups/create_product_pass_rate_workstation_20260630.sql`
- `db_backups/add_product_pass_rate_workstation_menu_20260630.sql`
- 原始需求文档:`doc/新增产品合格率.docx`
- 当前补充口径:页面进入时不自动查询;合格状态默认 `不合格`,主数据合格率小于 `100` 判定为不合格。