feat: update MES pages and tracking docs

This commit is contained in:
2026-06-29 18:27:00 +08:00
parent ebee02d103
commit e0e1b5d2bb
59 changed files with 8405 additions and 1398 deletions

View File

@@ -0,0 +1,61 @@
# 01-项目功能内容
## 页面
- 页面路径:`src/views/DeviceManagement/DeviceInformation/index.vue`
- 菜单/模块:设备管理 / 设备信息维护
- 原始文档:`doc/修改设备信息维护.docx`
## 本轮功能范围
1. 设备信息维护列表新增字段展示:
- 设备名称:来自 Excel `名称`,数据库字段 `名称`
- 公司编码(财务)
- 生产用名:复用原 `设备名称`
- 规格/型号:复用原 `设备型号`
- 设备信息
- 使用部门
- 入账日期
- 单位
- 数量
- 状态
- 维修记录
- 维保记录
- 工位绑定
- 主要设备
- 设备标准开机工时(小时)
- 特种设备
- 证书有效期至
2. 设备新增/编辑弹窗新增对应维护字段。
3. 公司编码(财务):
- 新增时必填。
- 编辑时前端置灰不可修改。
- 后端编辑过程不更新公司编码,避免绕过前端改动。
4. 工位绑定:
- 使用多选下拉。
- 选项来源:`MES_登录_工位与名称_查询`,即工位管理数据。
- 数据库存储为逗号分隔的工位号。
5. 主要设备、特种设备:
- 下拉选项为“是/否”。
6. 证书有效期至:
- 日期选择。
- 已过期:表格行红色背景并置顶。
- 30 天内到期:表格行黄色背景并靠前。
- 其他数据正常排序在后。
## 数据库对象
- 表:`dbo.基础数据_设备工位点检表`
- 查询过程:`dbo.设备管理_设备信息_查询`
- 新增过程:`dbo.设备管理_设备信息_增加`
- 编辑过程:`dbo.设备管理_设备信息_编辑`
- 删除过程:`dbo.设备管理_设备信息_删除`,本轮未改。
- 增量脚本:`db_backups/update_device_information_maintenance_20260629.sql`
- 设备名称字段与 Excel 导入脚本:`db_backups/add_device_name_and_import_excel_20260629.sql`
- Excel 日期修正脚本:`db_backups/fix_device_excel_import_dates_20260629.sql`
- 新增过程提示文本修正脚本:`db_backups/fix_device_add_company_code_message_20260629.sql`

View File

@@ -0,0 +1,58 @@
# 02-项目程序开发详细步骤
## 1. 需求解析
1.`doc/修改设备信息维护.docx` 提取文字需求。
2. 确认目标页面为 `src/views/DeviceManagement/DeviceInformation/index.vue`
3. 确认工位数据来源为 `MES_登录_工位与名称_查询`,与系统工位管理保持一致。
## 2. 数据库开发
1. 连接目标库 `192.168.2.92 / YL_MESDB`
2. 查询 `dbo.基础数据_设备工位点检表`,确认原表仅有旧字段。
3. 新增增量脚本 `db_backups/update_device_information_maintenance_20260629.sql`
4. 脚本内容:
- 使用 `COL_LENGTH` 判断字段是否存在,保证可重复执行。
- 新增设备档案字段:公司编码、设备信息、使用部门、入账日期、单位、数量、状态、维修记录、维保记录、工位绑定、主要设备、设备标准开机工时、特种设备、证书有效期至。
- 更新 `设备管理_设备信息_查询`,返回新字段并按证书有效期预警排序。
- 更新 `设备管理_设备信息_增加`,写入新增字段,并校验公司编码不能为空。
- 更新 `设备管理_设备信息_编辑`,更新新增字段,但不更新公司编码。
5. 使用 `sqlcmd -f 65001` 执行脚本,避免中文脚本编码问题。
## 3. 前端开发
1. 重写设备信息维护页面表格列,字段名与数据库返回保持一致。
2. 扩展新增/编辑表单字段。
3. 新增 `stationOptions`,通过 `MES_登录_工位与名称_查询` 加载工位管理数据。
4. 工位绑定使用 `el-select multiple collapse-tags`
5. 新增 `emptyForm`,统一新增和重置表单默认值。
6. 新增 `buildSubmitParams`,统一组装新增/编辑参数。
7. 新增 `getCertificateLevel``tableRowClassName``sortedTableData`
- 过期为 0置顶并红色。
- 30 天内为 1靠前并黄色。
- 其他为 2。
8. 表格使用横向宽度自动撑开,并固定操作列,适配新增多列。
## 4. 验证
1. 数据库字段验证:查询 `sys.columns`
2. 存储过程参数验证:查询 `sys.parameters`
3. 查询过程验证:执行 `EXEC dbo.[设备管理_设备信息_查询]`
4. 前端构建验证:执行 `npm run build`
5. 工作文档归档:复制原始 docx 到 `work/DeviceManagement/DeviceInformation` 并补齐 README 与 01-06 文档。
## 5. 设备信息 Excel 导入
1. 读取 `doc/设备信息.xlsx`,确认 Sheet1 共 89 行数据。
2. 新增数据库字段 `名称`,用于保存 Excel `名称` 列;原字段 `设备名称` 继续保存 Excel `生产用名`
3. 更新设备信息维护页面:
- 列表新增“设备名称”列,对应数据库字段 `名称`
- 新增/编辑弹窗新增“设备名称”输入框。
- 提交参数增加 `名称`
4. 新增脚本 `db_backups/add_device_name_and_import_excel_20260629.sql`
- `COL_LENGTH` 判断并新增 `名称` 字段。
- 更新新增/编辑存储过程参数和写入逻辑。
- 使用 `MERGE``公司编码` 导入或更新 89 行 Excel 数据,避免重复导入。
5. 首次导入后发现 Excel 日期对象受时区影响,部分入账日期早一天;新增 `db_backups/fix_device_excel_import_dates_20260629.sql`,按 Excel 单元格显示值修正入账日期。
6. 新增 `db_backups/fix_device_add_company_code_message_20260629.sql`,只重新发布新增过程,修正“公司编码不能为空”提示文本,避免重新执行整份导入脚本覆盖已修正日期。
7. 使用 `sqlcmd -f 65001` 执行数据库脚本,验证总数、样例数据和存储过程文本。

View File

@@ -0,0 +1,185 @@
# 03-推进台账
## 2026-06-29 第 1 轮:设备信息维护页面和数据库扩展
### 做了什么
- 解析 `doc/修改设备信息维护.docx`
- 确认目标页面 `src/views/DeviceManagement/DeviceInformation/index.vue`
- 确认工位绑定选项来源为 `MES_登录_工位与名称_查询`
- 连接目标数据库并确认旧表结构缺少需求字段。
- 新增数据库增量脚本并同步到 `YL_MESDB`
- 修改设备信息维护前端页面。
- 创建 `work/DeviceManagement/DeviceInformation` 工作目录并复制需求文档。
- 新增 README、功能内容、开发步骤、推进台账、任务矩阵、验收证据、决策记录。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `db_backups/update_device_information_maintenance_20260629.sql`
- `work/DeviceManagement/DeviceInformation/修改设备信息维护.docx`
- `work/DeviceManagement/DeviceInformation/README.md`
- `work/DeviceManagement/DeviceInformation/01-项目功能内容.md`
- `work/DeviceManagement/DeviceInformation/02-项目程序开发详细步骤.md`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `work/DeviceManagement/DeviceInformation/06-决策记录.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- `sqlcmd` 连接目标库成功。
- 新增字段已存在于 `dbo.基础数据_设备工位点检表`
- `设备管理_设备信息_查询/增加/编辑` 参数已更新。
- 查询过程可执行。
- `npm run build` 通过,仅有既有体积和 Browserslist 过期警告。
### 下一步
- 进入真实系统页面做新增、编辑、证书有效期颜色排序的人工验收。
- 如果现场要求“公司编码”历史数据也必填,需要补历史数据清洗或唯一性规则。
## 2026-06-29 第 2 轮:取消设备类型必填
### 做了什么
- 根据用户反馈,去掉设备信息维护新增/编辑表单中“设备类型”的必填校验。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 代码层确认 `rules` 中已移除 `设备类型` 必填规则。
### 下一步
- 如需严格验证,可再次执行 `npm run build` 或进入页面直接新增无设备类型的设备记录。
## 2026-06-29 第 3 轮:修复入账日期和证书有效期编辑报错
### 做了什么
- 修复设备编辑时 `入账日期``证书有效期至` 无法修改的问题。
- 前端提交日期时改为传 `yyyy-MM-dd` 字符串或空字符串。
- 数据库新增修复脚本,将新增/编辑过程的两个日期入参改为 `nvarchar(50)`,在过程内使用 `TRY_CONVERT(date, NULLIF(..., ''))` 转换。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `db_backups/fix_device_information_date_edit_20260629.sql`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 执行修复 SQL 到 `192.168.2.92 / YL_MESDB` 成功。
- 验证 `设备管理_设备信息_增加/编辑``@入账日期``@证书有效期至` 参数已变更为 `nvarchar`
- 直接执行 `设备管理_设备信息_编辑`,传入正常日期 `2026-07-01``2026-07-31`,返回 `result=1` 且数据库日期更新成功。
- 直接执行 `设备管理_设备信息_编辑`,传入空字符串日期,返回 `result=1` 且数据库日期保存为 `NULL`
### 下一步
- 到真实页面再执行一次编辑日期和清空日期的人工验收。
## 2026-06-29 第 4 轮:修复日期控件点击报错
### 做了什么
- 针对页面点击日期时报 `date.getHours is not a function` 的问题,修正前端日期控件绑定方式。
- 去掉 `el-date-picker``value-format="yyyy-MM-dd"`,让 Element UI 日期控件内部绑定 `Date` 对象。
- 编辑回填时使用 `parseDateValue` 将数据库日期转换为本地 `Date` 对象。
- 提交时继续通过 `dateParam` 格式化为 `yyyy-MM-dd` 字符串,兼容已修复的数据库过程。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 代码层确认两个 `el-date-picker` 已移除 `value-format`
- 代码层确认编辑回填日期使用 `parseDateValue` 返回 `Date` 对象。
- 执行 `npm run build` 通过,仅有既有资源体积和 Browserslist 过期警告。
### 下一步
- 在真实页面点击日期面板并选择新日期,确认不再出现 `date.getHours is not a function`
## 2026-06-29 第 5 轮:修复编辑弹窗日期不回填
### 做了什么
- 确认数据库和列表数据有值;同时恢复测试记录 `设备流水号=1` 的日期为 `2026-07-01``2026-07-31`
- 增强 `formatDate``parseDateValue`,兼容 `yyyy-MM-dd``yyyy-MM-dd HH:mm:ss``yyyy/MM/dd``/Date(...)``Date` 对象等返回格式。
- 将新增表单日期默认值从空字符串改为 `null`,符合 Element UI 日期控件空值约定。
- 编辑回填时不再整体替换 `form` 对象,改为逐字段 `$set`,并在 `$nextTick` 后再次设置两个日期字段,避免被 `resetFields` 或弹窗初始化覆盖。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 数据库记录 `设备流水号=1``入账日期=2026-07-01``证书有效期至=2026-07-31`
- 本地 Node 脚本验证多种日期格式可解析为有效 `Date`
- 执行 `npm run build` 通过,仅有既有资源体积和 Browserslist 过期警告。
- 本地 dev server 监听 `https://127.0.0.1:1997/`,命令行访问因自签名证书被拦截,需浏览器允许证书后测试页面。
### 下一步
- 在浏览器打开 `https://127.0.0.1:1997/`,登录后进入设备信息维护页面,点击编辑验证两个日期是否回填。
## 2026-06-29 第 6 轮:新增设备名称字段并导入设备信息 Excel
### 做了什么
- 根据用户要求新增“设备名称”字段,页面列表和新增/编辑弹窗均增加该字段。
- 读取 `doc/设备信息.xlsx`,确认 Sheet1 共 89 行数据,并复制到 `work/DeviceManagement/DeviceInformation/设备信息.xlsx` 归档。
- 明确字段映射Excel `名称` 保存到新增数据库字段 `名称`Excel `生产用名` 继续保存到原字段 `设备名称`
- 新增并执行 Excel 导入脚本,按 `公司编码` 使用 `MERGE` 导入,防止重复执行造成重复数据。
- 发现 Excel 日期导入存在时区早一天问题后,新增日期修正脚本,按 Excel 显示日期修正 `入账日期`
- 修正新增存储过程里“公司编码不能为空”提示文本,避免脚本生成时遗留问号文本。
### 改了哪些文件
- `src/views/DeviceManagement/DeviceInformation/index.vue`
- `db_backups/add_device_name_and_import_excel_20260629.sql`
- `db_backups/fix_device_excel_import_dates_20260629.sql`
- `db_backups/fix_device_add_company_code_message_20260629.sql`
- `work/DeviceManagement/DeviceInformation/README.md`
- `work/DeviceManagement/DeviceInformation/01-项目功能内容.md`
- `work/DeviceManagement/DeviceInformation/02-项目程序开发详细步骤.md`
- `work/DeviceManagement/DeviceInformation/03-推进台账.md`
- `work/DeviceManagement/DeviceInformation/04-任务矩阵.md`
- `work/DeviceManagement/DeviceInformation/05-验收证据.md`
- `work/DeviceManagement/DeviceInformation/06-决策记录.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 数据库表 `dbo.基础数据_设备工位点检表` 已新增 `名称` 字段。
- `doc/设备信息.xlsx` 89 行已导入数据库,导入后设备信息总数为 89。
- 样例数据验证:
- `REALLY-11`:设备名称 `气泵(空压机)`,生产用名 `气泵`,入账日期 `2007-01-01`
- `REALLY-6`:设备名称 `数控加工中心`,生产用名 `加1`,入账日期 `2008-12-24`
- `REALLY-1`:设备名称 `普通车床`,生产用名 `普1`,入账日期 `2011-01-01`
- 执行 `npm run build` 通过,仅有既有资源体积和 Browserslist 过期警告。
### 下一步
- 在浏览器打开 `https://127.0.0.1:1997/`,进入设备信息维护页面检查新增字段显示、编辑回填和保存。

View File

@@ -0,0 +1,25 @@
# 04-任务矩阵
| 任务编号 | 任务 | 状态 | 验收标准 |
| --- | --- | --- | --- |
| DI-001 | 解析需求文档 | 已完成 | 已从 `doc/修改设备信息维护.docx` 提取字段和交互要求 |
| DI-002 | 定位目标页面 | 已完成 | 确认页面为 `src/views/DeviceManagement/DeviceInformation/index.vue` |
| DI-003 | 扩展数据库字段 | 已完成 | `dbo.基础数据_设备工位点检表` 已包含 14 个新增字段 |
| DI-004 | 更新查询过程 | 已完成 | 查询过程返回新增字段,并按证书有效期预警排序 |
| DI-005 | 更新新增过程 | 已完成 | 新增过程接收新增字段,公司编码为空时返回失败 |
| DI-006 | 更新编辑过程 | 已完成 | 编辑过程更新新增字段但不更新公司编码 |
| DI-007 | 修改列表列展示 | 已完成 | 前端表格展示需求字段,操作列固定在右侧 |
| DI-008 | 修改新增/编辑表单 | 已完成 | 表单包含需求字段,主要设备/特种设备为是/否下拉 |
| DI-008A | 取消设备类型必填 | 已完成 | `rules` 中不再包含设备类型必填校验,新增/编辑允许设备类型为空 |
| DI-009 | 工位绑定多选 | 已完成 | 工位绑定为多选下拉,选项来源于工位管理查询 |
| DI-010 | 证书有效期预警 | 已完成 | 已过期红色置顶30 天内黄色靠前 |
| DI-011 | 构建验证 | 已完成 | `npm run build` 通过 |
| DI-011A | 修复日期编辑报错 | 已完成 | 入账日期、证书有效期至可传正常日期或空字符串,存储过程返回成功 |
| DI-011B | 修复日期控件点击报错 | 已完成 | 日期控件绑定 `Date` 对象,点击日期面板不再触发 `date.getHours is not a function` |
| DI-011C | 修复编辑弹窗日期不回填 | 已完成 | 日期回填兼容多种后端返回格式,并在弹窗渲染后再次写入日期字段 |
| DI-014 | 新增设备名称字段 | 已完成 | 数据库新增 `名称` 字段,页面列表和编辑弹窗显示“设备名称” |
| DI-015 | 导入设备信息 Excel | 已完成 | `doc/设备信息.xlsx` 89 行导入数据库,按公司编码 MERGE 防重复 |
| DI-016 | 修正 Excel 入账日期 | 已完成 | 采用 Excel 显示日期修正导入结果,避免时区早一天 |
| DI-017 | 修正新增过程提示文本 | 已完成 | 新增过程公司编码为空时返回“公司编码不能为空”,不再返回问号乱码 |
| DI-012 | 真实页面人工验收 | 待办 | 登录系统确认页面显示、新增、编辑、预警颜色和排序符合需求 |
| DI-013 | 历史数据治理 | 观察 | 如历史设备缺公司编码影响业务,再补清洗脚本和规则 |

View File

@@ -0,0 +1,288 @@
# 05-验收证据
## 文档解析
- 原始文档:`doc/修改设备信息维护.docx`
- 工作副本:`work/DeviceManagement/DeviceInformation/修改设备信息维护.docx`
- 提取结果:字段包括公司编码、生产用名、规格/型号、设备信息、使用部门、入账日期、单位、数量、状态、维修记录、维保记录、工位绑定、主要设备、设备标准开机工时、特种设备、证书有效期至。
## 数据库连接
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -Q "SET NOCOUNT ON; SELECT TOP 1 name FROM sys.databases WHERE name=N'YL_MESDB';"
```
结果:
- 返回 `YL_MESDB`
## 字段验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -Q "SET NOCOUNT ON; SELECT c.name, t.name AS type_name, c.max_length, c.is_nullable FROM sys.columns c JOIN sys.types t ON c.user_type_id=t.user_type_id WHERE c.object_id=OBJECT_ID(N'dbo.基础数据_设备工位点检表') AND c.name IN (N'公司编码',N'设备信息',N'使用部门',N'入账日期',N'单位',N'数量',N'状态',N'维修记录',N'维保记录',N'工位绑定',N'主要设备',N'设备标准开机工时',N'特种设备',N'证书有效期至') ORDER BY c.column_id;"
```
结果:
- 已返回 14 个新增字段。
- 日期字段为 `date`
- 数量、设备标准开机工时为 `decimal`
- 文本字段为 `nvarchar`
## 存储过程参数验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -Q "SET NOCOUNT ON; SELECT p.name AS proc_name, pa.name AS param_name, TYPE_NAME(pa.user_type_id) AS type_name FROM sys.procedures p JOIN sys.parameters pa ON p.object_id=pa.object_id WHERE p.name IN (N'设备管理_设备信息_查询',N'设备管理_设备信息_增加',N'设备管理_设备信息_编辑') ORDER BY p.name, pa.parameter_id;"
```
结果:
- `设备管理_设备信息_增加` 已包含新增字段参数。
- `设备管理_设备信息_编辑` 已包含新增字段参数和 `@设备流水号`
- `设备管理_设备信息_查询` 参数保持兼容。
## 查询过程验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -Q "SET NOCOUNT ON; EXEC dbo.[设备管理_设备信息_查询] @设备名称_check=0, @设备名称=N'', @设备类型_check=0, @设备类型=NULL;" -h -1 -W
```
结果:
- 命令执行成功。
- 当前无输出行或未显示样本数据,但过程无执行错误。
## 前端构建
命令:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。
## 产物证据
- 前端页面:`src/views/DeviceManagement/DeviceInformation/index.vue`
- 数据库脚本:`db_backups/update_device_information_maintenance_20260629.sql`
- 日期编辑修复脚本:`db_backups/fix_device_information_date_edit_20260629.sql`
- 工作目录:`work/DeviceManagement/DeviceInformation`
- 日志:`gptlog-process/gpdlog.md`
## 日期编辑修复验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\fix_device_information_date_edit_20260629.sql
```
结果:
- 脚本执行成功。
- `设备管理_设备信息_增加/编辑``@入账日期``@证书有效期至` 已调整为 `nvarchar` 参数。
正常日期验证:
```powershell
EXEC dbo.[设备管理_设备信息_编辑]
@入账日期=N'2026-07-01',
@证书有效期至=N'2026-07-31',
...
```
结果:
- 返回 `result = 1`
- 数据库保存为 `2026-07-01``2026-07-31`
清空日期验证:
```powershell
EXEC dbo.[设备管理_设备信息_编辑]
@入账日期=N'',
@证书有效期至=N'',
...
```
结果:
- 返回 `result = 1`
- 数据库对应日期字段保存为 `NULL`
前端构建复验:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。
## 设备名称字段和 Excel 导入验收
Excel 数据来源:
- `doc/设备信息.xlsx`
- 工作副本:`work/DeviceManagement/DeviceInformation/设备信息.xlsx`
- Sheet1 数据行数89 行。
导入脚本:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\add_device_name_and_import_excel_20260629.sql
```
结果:
- `dbo.基础数据_设备工位点检表` 已新增字段 `名称`
- `设备管理_设备信息_增加` 已增加 `@名称` 参数并写入 `[名称]`
- `设备管理_设备信息_编辑` 已增加 `@名称` 参数并更新 `[名称]`
- Excel 89 行按 `公司编码` 导入或更新。
日期修正脚本:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\fix_device_excel_import_dates_20260629.sql
```
结果:
- 使用 Excel 单元格显示值修正 `入账日期`
- 修正后设备信息总数为 89。
提示文本修正脚本:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\fix_device_add_company_code_message_20260629.sql
```
结果:
- 新增过程公司编码为空时返回 `公司编码不能为空`
- 未重新执行导入脚本,避免覆盖已修正的入账日期。
数据库抽样验证:
```powershell
SELECT COUNT(*) AS cnt
FROM dbo.[基础数据_设备工位点检表];
SELECT TOP 10
[设备流水号],
[名称],
[公司编码],
[设备名称] AS [生产用名],
[设备型号],
[入账日期]
FROM dbo.[基础数据_设备工位点检表]
ORDER BY [设备流水号];
```
结果:
- 总数89。
- `REALLY-11``名称=气泵(空压机)``生产用名=气泵``入账日期=2007-01-01`
- `REALLY-6``名称=数控加工中心``生产用名=加1``入账日期=2008-12-24`
- `REALLY-1``名称=普通车床``生产用名=普1``入账日期=2011-01-01`
前端构建验证:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。
## 编辑弹窗日期不回填修复验证
数据库测试数据:
```powershell
UPDATE dbo.[基础数据_设备工位点检表]
SET [入账日期]='2026-07-01',
[证书有效期至]='2026-07-31'
WHERE [设备流水号]=1;
```
结果:
- `设备流水号=1``入账日期``2026-07-01`
- `设备流水号=1``证书有效期至``2026-07-31`
本地日期解析验证:
```powershell
node -e "<日期解析测试脚本>"
```
结果:
- `2026-07-01`
- `2026-07-01 00:00:00`
- `2026/07/01 00:00:00`
- `/Date(1782864000000)/`
- `Date` 对象
以上格式均可解析为有效 `Date`
构建验证:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。
页面测试地址:
- `https://127.0.0.1:1997/`
- 本地 dev server 使用自签名 HTTPS浏览器需要允许证书后进入页面测试。
## 日期控件点击报错修复验证
问题:
- 页面点击 `入账日期``证书有效期至` 日期面板时报错:`TypeError: date.getHours is not a function`
修复:
- 移除两个 `el-date-picker``value-format="yyyy-MM-dd"`
- 编辑回填时用 `parseDateValue` 将数据库日期转换为 `Date` 对象。
- 提交时用 `dateParam` 再格式化为 `yyyy-MM-dd` 字符串。
验证命令:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大、Browserslist/caniuse-lite 数据过期。

View File

@@ -0,0 +1,49 @@
# 06-决策记录
## DR-001 公司编码编辑只读并由后端保护
- 决策:新增时公司编码必填;编辑时前端禁用;编辑存储过程不更新公司编码。
- 原因:需求明确“公司编码为必填且不可被修改”。仅前端禁用不足以防止接口绕过。
- 影响:历史数据若公司编码为空,编辑时不会强制补齐;如后续要求历史数据也完整,需要专项清洗。
## DR-002 生产用名和规格/型号复用旧字段
- 决策:生产用名使用 `设备名称`,规格/型号使用 `设备型号`
- 原因:需求明确“复用设备名称”“复用设备型号”,保持与既有存储过程和其他页面兼容。
- 影响:其他依赖 `设备管理_设备信息_查询` 的页面仍能使用旧字段。
## DR-003 工位绑定存储为逗号分隔工位号
- 决策:前端多选展示工位名称,提交时保存工位号逗号字符串到 `工位绑定`
- 原因:当前系统通用参数传递和旧表结构以简单字段为主,本轮避免新建关系表扩大影响面。
- 影响:后续如需要按单工位统计或约束唯一性,应迁移为设备-工位绑定明细表。
## DR-004 证书有效期排序前后端都处理
- 决策:数据库查询过程增加预警排序;前端 `sortedTableData` 再按同样规则排序并控制行背景色。
- 原因:后端保证分页查询顺序,前端保证当前页显示稳定和颜色一致。
- 影响:分页总数据的全局置顶依赖数据库排序;前端只处理当前页。
## DR-005 SQL 脚本使用可重复执行字段判断
- 决策:新增字段使用 `COL_LENGTH` 判断存在后再 `ALTER TABLE ADD`
- 原因:避免脚本重复执行时报“列已存在”。
- 影响:字段类型若后续要调整,需另起变更脚本,不能靠本脚本自动修改类型。
## DR-006 Excel 名称与生产用名分开保存
- 决策Excel `名称` 保存到新增数据库字段 `名称`页面显示为“设备名称”Excel `生产用名` 继续保存到原字段 `设备名称`,页面显示为“生产用名”。
- 原因:原系统多处依赖 `设备名称` 字段作为生产用名/设备简称,直接改语义会影响其他页面。
- 影响:后续涉及“设备名称”时应先确认是新字段 `名称` 还是旧字段 `设备名称`
## DR-007 Excel 导入按公司编码 MERGE
- 决策:设备信息 Excel 导入按 `公司编码``MERGE`,匹配则更新,不匹配则新增。
- 原因:用户要求把 Excel 数据插入数据库,但导入脚本可能被重复执行;使用 `MERGE` 可以降低重复数据风险。
- 影响Excel 中公司编码不是全局唯一的行会被视为同一设备;后续如要支持一编码多设备,需要新增更稳定的唯一键规则。
## DR-008 Excel 日期按显示值修正
- 决策:首次导入发现日期早一天后,单独使用 Excel 单元格显示值生成修正脚本,不重新执行整份导入脚本。
- 原因Node 读取 Excel 日期对象时受时区影响,显示值更贴近业务人员在表格中看到的日期。
- 影响:后续导入 Excel 日期时,应优先使用单元格显示文本或显式本地日期解析。

View File

@@ -0,0 +1,18 @@
# 修改设备信息维护 README
## 索引
| 文件 | 用途 |
| --- | --- |
| `修改设备信息维护.docx` | 原始需求文档副本 |
| `设备信息.xlsx` | 设备信息初始化导入数据副本 |
| `01-项目功能内容.md` | 本轮设备信息维护页面功能范围 |
| `02-项目程序开发详细步骤.md` | 前端、数据库和验证开发步骤 |
| `03-推进台账.md` | 每轮做了什么、改了哪些文件、验证了什么、下一步是什么 |
| `04-任务矩阵.md` | 任务编号、状态、验收标准 |
| `05-验收证据.md` | 命令、数据库、页面、构建等验收证据 |
| `06-决策记录.md` | 关键实现决策与原因 |
## 后续推进方式
后续继续该任务时,优先查看 `04-任务矩阵.md` 中状态为“待办”或“观察”的任务,再按 `03-推进台账.md` 追加新轮次记录。涉及数据库变更时,先补充 `db_backups` 增量脚本,再同步更新 `05-验收证据.md`

View File

@@ -0,0 +1,34 @@
# 01-项目功能内容
## 页面
- 页面路径:`src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
- 菜单标题:及时齐套跟踪结果
- 菜单模块:计划排产
- 原始文档:`doc/新增及时齐套跟踪结果.docx`
## 功能范围
1. 新增“及时齐套跟踪结果”页面。
2. 一级数据字段和过滤条件按“计划用表”页面对齐。
3. 主表展示销售订单、计划号、生产订单、产品编码、产品名称、计划数量、入库数量、要求完工日、要求发货日、预计齐套时间、齐套、拣配状态、发料状态、装配开工、送检数量、终检、工艺、缺件项。
4. 展开行展示文档要求的绿色二级数据:
- 物料编码:`SAP.SBO_YL.dbo.VIEW_Jijiankukc.ItemCode`
- 物料名称:`SAP.SBO_YL.dbo.VIEW_Jijiankukc.U_Name`
- 缺件数量:`SAP.SBO_YL.dbo.VIEW_Jijiankukc.未发货数量`
- 属性:`SAP.SBO_YL.dbo.VIEW_Jijiankukc.属性`,属性为空时显示为外购
- 生产订单号:机加件按 SAP 物料编码匹配 MES 生产计划;装配按 SAP 物料编码 + 销售订单匹配 MES 生产计划;外购取 SAP `在制采购`
- 进度:属性不为空时参考生产计划跟踪当前序;外购为空
- 工艺路线:属性不为空时参考生产计划跟踪工艺路线;外购拼接采购员、采购未清数量、到货草稿、质检状态
- 预计完成时间:属性不为空时取 MES 任务最大计划完成时间;外购取 SAP 采购预计交货时间
## 数据库对象
- 查询过程:`dbo.生产管理_及时齐套跟踪结果_查询`
- SAP 视图:`[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc]`
- MES 视图:`dbo.View_生产订单_MES`
- 质检记录:`dbo.YL_质量检验_质检记录`
- 菜单表:`dbo.登录基础数据_二级菜单`
- 增量脚本:
- `db_backups/create_timely_kit_tracking_result_20260629.sql`
- `db_backups/add_timely_kit_tracking_result_menu_20260629.sql`

View File

@@ -0,0 +1,45 @@
# 02-项目程序开发详细步骤
## 1. 需求解析
1. 解包并读取 `doc/新增及时齐套跟踪结果.docx`
2. 确认需求:新增页面“及时齐套跟踪结果”,一级字段和过滤条件按“计划用表”一致,重点新增绿色二级缺件跟踪数据。
3. 确认 SAP 数据源为四段名:`[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc]`
## 2. 数据库开发
1. 新增 `db_backups/create_timely_kit_tracking_result_20260629.sql`
2. 创建或更新存储过程 `dbo.生产管理_及时齐套跟踪结果_查询`
3. 查询过程输入参数沿用“计划用表”:
- 订单号、物料类型、合同号、产品编码、产品名称、工序名称、计划开始、计划完成、排产状态、指派对象、计划号、发货状态、齐套、检验状态、发料状态、自制件属性。
4. 使用 `[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc]` 读取缺件明细。
5. 使用 `View_生产订单_MES` 匹配 MES 计划、任务状态、工艺路线和预计完成时间。
6. 使用 `YL_质量检验_质检记录` 判断终检和外购到货草稿对应的来料检验状态。
7. 脚本补充 `SET ANSI_NULLS ON``SET QUOTED_IDENTIFIER ON`,避免 XML `.value()` 和索引视图相关 SET 选项错误。
## 3. 菜单开发
1. 新增 `db_backups/add_timely_kit_tracking_result_menu_20260629.sql`
2. 以“计划用表”菜单为权限来源,复制已有角色的菜单授权。
3. 新菜单:
- `path = TimelyKitTrackingResult/index`
- `componet = /PlanManagement/TimelyKitTrackingResult/index`
- `name = TimelyKitTrackingResult`
- `title = 及时齐套跟踪结果`
## 4. 前端开发
1. 新增页面 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
2. 主表过滤区参考 `src/views/PlanManagement/PlanShell/index.vue`
3. 主表一级字段按计划用表展示。
4. 使用 `el-table-column type="expand"` 展示缺件二级明细。
5. 二级行使用浅绿色背景,贴合原文档“绿色部分二级数据”的表达。
6. 状态字段使用与既有页面一致的绿色/橙色标签样式。
## 5. 验证
1. 执行查询脚本到 `YL_MESDB`
2. 执行菜单脚本,确认菜单写入 `登录基础数据_二级菜单`
3. 直接执行 `dbo.生产管理_及时齐套跟踪结果_查询`,确认 SAP linked server 可访问并返回数据。
4. 执行 `npm run build`,确认前端构建通过。
5. 复制原始 docx 到 `work/PlanManagement/TimelyKitTrackingResult` 并补齐 README、01-06 文档。

View File

@@ -0,0 +1,105 @@
# 03-推进台账
## 2026-06-29 第 1 轮:新增及时齐套跟踪结果页面
### 做了什么
- 解析 `doc/新增及时齐套跟踪结果.docx`,确认页面名称、字段来源和数据口径。
- 查找现有“计划用表”和“生产计划跟踪”页面,复用过滤条件、一级字段和当前序/工艺路线表达。
- 确认 SAP 缺件视图为 `[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc]`,并读取字段列表。
- 新增查询过程 `dbo.生产管理_及时齐套跟踪结果_查询`
- 新增菜单脚本,把“及时齐套跟踪结果”挂到计划排产模块,并复制“计划用表”的角色授权。
- 新增 Vue 页面 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
- 创建 `work/PlanManagement/TimelyKitTrackingResult`,复制原始需求文档并补齐 README、01-06 文档。
- 将完整执行过程追加到 `/gptlog-process/gpdlog.md`
### 改了哪些文件
- `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
- `db_backups/create_timely_kit_tracking_result_20260629.sql`
- `db_backups/add_timely_kit_tracking_result_menu_20260629.sql`
- `work/PlanManagement/TimelyKitTrackingResult/新增及时齐套跟踪结果.docx`
- `work/PlanManagement/TimelyKitTrackingResult/README.md`
- `work/PlanManagement/TimelyKitTrackingResult/01-项目功能内容.md`
- `work/PlanManagement/TimelyKitTrackingResult/02-项目程序开发详细步骤.md`
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- SQL 查询过程脚本执行成功。
- 菜单脚本执行成功,生成 4 条角色菜单记录。
- 直接执行 `dbo.生产管理_及时齐套跟踪结果_查询` 可返回 SAP 缺件和 MES 计划组合数据。
- 执行 `npm run build` 通过,仅有项目既有资源体积和 Browserslist/caniuse-lite 过期警告。
### 下一步
- 登录系统,在计划排产模块打开“及时齐套跟踪结果”,确认菜单可见、页面可查、展开行字段符合业务预期。
## 2026-06-29 第 2 轮:修正工艺路线、重复明细和外购一级数据
### 做了什么
- 根据反馈修正二级工艺路线展示,增加日期行、工序行、合格行和颜色。
- 查询过程新增 `工艺路线明细` JSON返回每道工序的计划日期、工序名称、指派对象、进度、完成数量、收检合格数和加工状态。
- 前端将自制件二级“工艺路线/采购状态”列从纯文本改为三行彩色工艺路线;外购仍显示采购状态文本。
- SQL 增加两层去重:
- SAP 原始缺件按 `DocEntry + Project + ItemCode + 属性` 取一条。
- 最终结果按 `订单号 + 缺件生产订单号` 取一条,避免同一生产订单号重复出现在二级数据。
- 修正外购一级数据口径:属性为空时使用 `SAP.DocEntry` 作为订单编号去匹配计划用表/MES 计划数据,而不是使用 `在制采购`
### 改了哪些文件
- `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
- `db_backups/create_timely_kit_tracking_result_20260629.sql`
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 重新发布 `dbo.生产管理_及时齐套跟踪结果_查询` 成功。
- 查询 `@订单号=7134` 时,同一生产订单号二级明细只返回 1 条。
- 查询 `@订单号=7335` 时,外购件已按 `SAP.DocEntry=7335` 匹配出计划用表一级数据。
- 执行 `npm run build` 通过,仅有项目既有资源体积和 Browserslist/caniuse-lite 过期警告。
### 下一步
- 登录页面人工检查展开行的三行工艺路线显示效果,确认颜色和计划用表页面一致。
## 2026-06-29 第 3 轮:修正外购质检状态和主数据匹配
### 做了什么
- 根据反馈重新拆分一级主数据和二级缺件数据的匹配职责。
- 一级主数据只按 `SAP.DocEntry = View_生产订单_MES.订单编号` 读取计划用表主订单,不再允许 SAP 缺件数据兜底生成主数据。
- 自制缺件单独通过缺件物料编码和合同号匹配二级生产订单,用于工艺路线、进度和缺件生产订单号。
- 外购缺件不再把主生产订单号作为缺件生产订单号;有到货草稿时显示到货草稿对应的采购入库检生产订单。
- 外购质检状态改为按采购入库检页面口径读取:根据 `SAP.到货草稿` 匹配 `质量检验_质检任务_SAP.订单编号`,再用入库数量和来料检验记录判断未完成/已完成。
- 非外购缺件的质检状态保持为空,避免误显示采购入库检状态。
### 改了哪些文件
- `db_backups/create_timely_kit_tracking_result_20260629.sql`
- `work/PlanManagement/TimelyKitTrackingResult/03-推进台账.md`
- `work/PlanManagement/TimelyKitTrackingResult/04-任务矩阵.md`
- `work/PlanManagement/TimelyKitTrackingResult/05-验收证据.md`
- `work/PlanManagement/TimelyKitTrackingResult/06-决策记录.md`
- `gptlog-process/gpdlog.md`
### 验证了什么
- 重新发布 `dbo.生产管理_及时齐套跟踪结果_查询` 成功。
- 查询 `@订单号=2007`,一级主数据字段完整,外购缺件生产订单号不再显示为主订单号 `2007`
- 查询 `@订单号=7321`,外购缺件根据 `到货草稿=11209` 显示二级生产订单号 `11209`,质检状态为采购入库检口径的未完成。
- 默认查询统计:总行数 198产品编码/产品名称为空行数 0缺件生产订单号等于主订单号行数 0非外购质检状态非空行数 0。
- 执行 `npm run build` 通过,仅有项目既有资源体积和 Browserslist/caniuse-lite 过期警告。
### 下一步
- 在页面刷新后检查前 1-10 行和第 32 行 `2007`,确认主数据、二级缺件、外购采购状态展示符合业务预期。

View File

@@ -0,0 +1,20 @@
# 04-任务矩阵
| 任务编号 | 任务 | 状态 | 验收标准 |
| --- | --- | --- | --- |
| TKR-001 | 解析需求文档 | 已完成 | 已从 `doc/新增及时齐套跟踪结果.docx` 提取字段和数据来源 |
| TKR-002 | 定位参考页面 | 已完成 | 确认一级字段和过滤条件参考 `PlanShell/index.vue` |
| TKR-003 | 确认 SAP 数据源 | 已完成 | `[SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc]` 可查询并返回字段 |
| TKR-004 | 新增查询过程 | 已完成 | `dbo.生产管理_及时齐套跟踪结果_查询` 已创建并可返回数据 |
| TKR-005 | 新增菜单 | 已完成 | `登录基础数据_二级菜单` 已新增“及时齐套跟踪结果”菜单 |
| TKR-006 | 新增前端页面 | 已完成 | 页面文件已新增,主表和展开明细可渲染 |
| TKR-007 | 构建验证 | 已完成 | `npm run build` 通过 |
| TKR-008 | 工作文档归档 | 已完成 | README、01-06 文档和总日志已补齐 |
| TKR-011 | 工艺路线三行展示 | 已完成 | 二级工艺路线包含日期行、工序行、合格行,并按状态着色 |
| TKR-012 | 二级重复数据去重 | 已完成 | 同一一级数据下相同生产订单号只保留一条二级明细 |
| TKR-013 | 外购一级数据修正 | 已完成 | 属性为空时按 `SAP.DocEntry` 匹配计划用表一级数据 |
| TKR-014 | 一级主数据禁止 SAP 兜底 | 已完成 | 默认查询中产品编码/产品名称为空行数为 0不出现只有 SAP 缺件字段的假主数据 |
| TKR-015 | 外购二级生产订单号修正 | 已完成 | 外购缺件不再显示主生产订单号,有到货草稿时显示采购入库检生产订单 |
| TKR-016 | 外购质检状态按采购入库检口径 | 已完成 | 外购按 `到货草稿 -> 质量检验_质检任务_SAP -> YL_质量检验_质检记录` 判断未完成/已完成 |
| TKR-009 | 页面人工验收 | 待办 | 登录系统确认菜单可见、查询成功、展开行字段与业务一致 |
| TKR-010 | 采购质检匹配口径复核 | 观察 | 如业务确认到货草稿不是 `YL_质量检验_质检记录.计划号`,需调整质检状态匹配规则 |

View File

@@ -0,0 +1,200 @@
# 05-验收证据
## 文档解析
来源:
- `doc/新增及时齐套跟踪结果.docx`
解析结果:
- 页面名称:及时齐套跟踪结果。
- 一级数据字段根据计划用表页面一致。
- 过滤条件和计划用表页面一致。
- 二级数据来源:`SAP.SBO_YL.dbo.VIEW_Jijiankukc`
## SAP 视图验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -Q "SELECT TOP 3 * FROM [SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc];"
```
结果:
- SAP linked server 可访问。
- 返回字段包括 `ItemCode``U_Name``属性``未发货数量``在制采购``采购员``采购预计交货日期``采购未清数量``到货草稿`
## 查询过程验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\create_timely_kit_tracking_result_20260629.sql
```
结果:
- 脚本执行成功。
- 初次取样时因 `QUOTED_IDENTIFIER` SET 选项不足报错,已在脚本中补充 `SET ANSI_NULLS ON``SET QUOTED_IDENTIFIER ON` 后重新发布。
取样命令:
```powershell
EXEC dbo.[生产管理_及时齐套跟踪结果_查询]
@订单号=0,
@物料类型=N'自制件',
@合同号=N'',
@产品编码=N'',
@产品名称=N'',
@工序名称=N'',
@计划开始=N'',
@计划完成=N'',
@排产状态=N'全部',
@指派对象=N'全部',
@计划号=N'',
@发货状态=N'全部',
@齐套=N'全部',
@检验状态=N'',
@发料状态=N'全部',
@自制件属性=N'全部';
```
结果:
- 查询可返回数据。
- 样例包含生产订单、产品编码、缺件物料编码、缺件数量、缺件属性、进度、工艺路线、预计完成时间、质检状态等字段。
## 菜单验证
命令:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\add_timely_kit_tracking_result_menu_20260629.sql
```
结果:
- 新增 4 条“及时齐套跟踪结果”菜单记录。
- 菜单路径:`TimelyKitTrackingResult/index`
- 组件路径:`/PlanManagement/TimelyKitTrackingResult/index`
## 前端构建验证
命令:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告为项目既有资源体积过大和 Browserslist/caniuse-lite 数据过期。
## 产物证据
- 页面:`src/views/PlanManagement/TimelyKitTrackingResult/index.vue`
- 查询脚本:`db_backups/create_timely_kit_tracking_result_20260629.sql`
- 菜单脚本:`db_backups/add_timely_kit_tracking_result_menu_20260629.sql`
- 工作目录:`work/PlanManagement/TimelyKitTrackingResult`
- 总日志:`gptlog-process/gpdlog.md`
## 第 2 轮修正验证
重新发布查询过程:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\create_timely_kit_tracking_result_20260629.sql
```
结果:
- 执行成功。
- 查询过程新增最终去重层,按 `订单号 + 缺件生产订单号` 保留一条二级明细。
- 查询过程新增 `工艺路线明细` JSON供页面渲染日期行、工序行、合格行。
重复数据验证:
```powershell
EXEC dbo.[生产管理_及时齐套跟踪结果_查询] @订单号=7134, ...
```
结果:
- 返回同一生产订单号 `7134` 的二级明细 1 条。
- 不再出现同一生产订单号多条重复数据。
外购一级数据验证:
```powershell
EXEC dbo.[生产管理_及时齐套跟踪结果_查询] @订单号=7335, ...
```
结果:
- 返回 `SAP单据=7335`
- 一级数据已按 `SAP.DocEntry=7335` 匹配到计划用表/MES 计划数据。
构建验证:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告仍为项目既有资源体积过大和 Browserslist/caniuse-lite 数据过期。
## 第 3 轮修正验证
重新发布查询过程:
```powershell
sqlcmd -S 192.168.2.92 -d YL_MESDB -U sa -P ****** -f 65001 -i db_backups\create_timely_kit_tracking_result_20260629.sql
```
结果:
- 执行成功。
样例 `2007` 验证:
```powershell
EXEC dbo.[生产管理_及时齐套跟踪结果_查询] @订单号=2007;
```
结果:
- 一级主数据返回 `订单号=2007``产品编码=214-YGSA200001``产品名称=过滤器组件`
- 外购缺件为 `24112-011-HY-WF50L`
- 缺件生产订单号不再显示为主订单号 `2007`
- 外购采购状态显示采购员、采购未清数量、到货草稿、质检状态。
样例 `7321` 验证:
```powershell
EXEC dbo.[生产管理_及时齐套跟踪结果_查询] @订单号=7321;
```
结果:
- 外购缺件 `XX-YG01013990` 的到货草稿为 `11209`
- 缺件生产订单号显示 `11209`
- 质检状态按采购入库检口径显示 `未完成`
默认查询统计:
```text
总行数198
产品编码/产品名称为空行数0
缺件生产订单号等于主订单号行数0
非外购质检状态非空行数0
```
前端构建:
```powershell
npm run build
```
结果:
- 构建通过。
- webpack compiled with 2 warnings。
- 警告为项目既有资源体积过大和 Browserslist/caniuse-lite 数据过期。

View File

@@ -0,0 +1,73 @@
# 06-决策记录
## DR-001 页面放在计划排产模块
- 决策:页面路径使用 `src/views/PlanManagement/TimelyKitTrackingResult/index.vue`,菜单挂在“计划排产”模块下。
- 原因:需求明确一级字段和过滤条件按“计划用表”一致,而“计划用表”属于 `PlanManagement`
- 影响:菜单权限按“计划用表”复制,避免误开放给没有计划排产权限的角色。
## DR-002 查询过程整合 SAP 缺件和 MES 计划
- 决策:新增独立过程 `dbo.生产管理_及时齐套跟踪结果_查询`,不直接改“计划用表”原过程。
- 原因:新页面有大量二级缺件追踪字段,直接改 `计划排产_查询计划信息` 会影响既有页面。
- 影响:后续口径调整集中在新过程,不影响计划用表。
## DR-003 外购件属性为空时按采购状态展示
- 决策SAP `属性` 为空时显示为“外购”,生产订单号取 SAP `在制采购`,工艺路线列拼接采购员、采购未清数量、到货草稿、质检状态。
- 原因:需求明确“属性为空时取值 SAP 视图.在制采购”,并要求外购显示采购相关字段。
- 影响:外购件不会显示当前序;如果业务后续要求外购也关联 MES 订单,需要新增匹配规则。
## DR-004 自制件按属性区分匹配规则
- 决策:机加件用 SAP `ItemCode` 匹配 MES `物料编号`;装配件用 SAP `ItemCode + Project` 匹配 MES `物料编号 + 合同号`
- 原因:需求原文明确机加和装配的匹配条件不同。
- 影响SAP `Project` 与 MES 合同号不一致时,装配件可能匹配不到 MES 计划。
## DR-005 二级数据用展开表承载
- 决策:主表按订单/产品汇总,缺件明细放到 `el-table-column type="expand"` 的二级表中。
- 原因:需求区分一级数据和绿色二级数据,展开表能避免主表过宽,同时保留所有缺件明细。
- 影响:导出或打印如果需要平铺明细,后续需要另加导出功能。
## DR-006 QUOTED_IDENTIFIER 显式设置
- 决策:查询过程脚本显式设置 `SET ANSI_NULLS ON``SET QUOTED_IDENTIFIER ON`
- 原因:过程使用 XML `.value()` 处理工艺路线拼接SQL Server 对相关 SET 选项有要求。
- 影响:后续重建该过程必须保留这些 SET 选项。
## DR-007 外购一级数据按 SAP DocEntry 匹配
- 决策SAP `属性` 为空时,使用 `SAP.DocEntry` 作为订单编号匹配计划用表/MES 计划数据。
- 原因:用户明确指出外购一级数据不应取 `在制采购`,应取 SAP 视图 `DocEntry`
- 影响:外购件的一级字段会尽量从对应 MES 计划订单读取;`在制采购` 不再作为一级匹配订单号。
## DR-008 二级同生产订单号去重
- 决策:最终查询结果按 `订单号 + 缺件生产订单号` 做去重,只保留缺件数量最大的一条。
- 原因:业务要求二级数据里不应出现生产订单号一样的数据。
- 影响:如果同一生产订单号下确实有多个不同 SAP 行,页面只展示汇总代表行;后续若要展示多 SAP 行,需要改为汇总数量而不是逐行显示。
## DR-009 工艺路线由结构化 JSON 驱动
- 决策:查询过程新增 `工艺路线明细` JSON前端据此渲染日期行、工序行、合格行和颜色。
- 原因:纯文本工艺路线无法满足计划用表式的日期、合格数和颜色展示。
- 影响:前端展示依赖 SQL Server `FOR JSON PATH` 输出;旧字段 `工艺路线` 保留作为无明细时的降级文本。
## DR-010 一级主数据必须来自计划用表
- 决策:及时齐套跟踪结果的一级主数据必须匹配 `View_生产订单_MES`,不允许用 SAP 缺件字段兜底生成主数据。
- 原因页面主表代表计划用表主订单SAP 缺件只能作为缺件明细来源;兜底会产生产品编码、计划数量、日期等字段缺失的假主数据。
- 影响:默认查询不再出现产品字段为空的主数据行。
## DR-011 外购缺件生产订单号不使用主订单号
- 决策:外购属性为空时,二级缺件生产订单号使用采购入库检侧的到货草稿;没有到货草稿时留空。
- 原因:主订单号表示一级产品订单,不能同时作为外购缺件订单号,否则会出现“主数据缺件是主数据自身”的误解。
- 影响:`2007` 这类外购缺件不再显示缺件生产订单号等于主订单号。
## DR-012 外购质检状态按采购入库检任务判断
- 决策:外购质检状态按 `SAP.到货草稿 -> 质量检验_质检任务_SAP.订单编号 -> YL_质量检验_质检记录` 判断。
- 原因:采购入库检页面的生产订单字段来自 `质量检验_质检任务_SAP.订单编号`,状态由入库数量与来料检验数量决定。
- 影响:有到货草稿的外购缺件能展示采购入库检口径的未完成/已完成;非外购不显示采购质检状态。

View File

@@ -0,0 +1,17 @@
# 新增及时齐套跟踪结果 README
## 索引
| 文件 | 用途 |
| --- | --- |
| `新增及时齐套跟踪结果.docx` | 原始需求文档副本 |
| `01-项目功能内容.md` | 页面功能范围、字段来源和数据口径 |
| `02-项目程序开发详细步骤.md` | 前端、数据库、菜单和验证步骤 |
| `03-推进台账.md` | 每轮做了什么、改了哪些文件、验证了什么、下一步是什么 |
| `04-任务矩阵.md` | 任务编号、状态、验收标准 |
| `05-验收证据.md` | 命令、页面、SQL、构建等证据 |
| `06-决策记录.md` | 关键实现决策与原因 |
## 后续推进方式
后续继续该任务时,先看 `04-任务矩阵.md` 中状态为“待办”或“观察”的任务,再按 `03-推进台账.md` 追加新轮次。涉及数据库口径调整时,新增 `db_backups` 增量脚本,不直接覆盖历史脚本。