feat: 同步全部系统改动与文档

This commit is contained in:
2026-07-28 10:29:56 +08:00
parent 62f7632fc6
commit 1fa1ece06d
487 changed files with 267645 additions and 144 deletions

View File

@@ -0,0 +1,101 @@
# 系统类与阀类装配任务查询性能优化
## 变更信息
- 变更日期2026-07-25
- 变更环境:正式环境 `YL_MESDB`
- 变更范围:系统类装配任务查询、阀类装配任务查询
- 业务数据变更:无
- 前端文件变更:系统类、阀类页面首屏分页和单元格按需编辑
- IIS 文件变更:正式前端尚未部署,已生成待发布静态包
## 问题定位
原查询的主要耗时来自以下部分:
1. `View_生产工时视图` 在同一次查询中被重复扫描和分组四次。
2. 流程告警、装配在岗人员、质检在岗人员使用逐行相关子查询,结果行数增加时重复访问基础表。
3. SAP 关联数据在筛选候选任务前进行聚合,扩大了查询工作量。
4. 多个高频连接字段缺少适合当前访问方式的非聚集索引。
正式环境优化前缓存统计:
| 查询 | 平均耗时 | 平均逻辑读 |
| --- | ---: | ---: |
| 系统类装配任务 | 约 4.16 秒 | 约 142.7 万页 |
| 阀类装配任务 | 约 4.47 秒 | 约 154.7 万页 |
## 优化内容
1. 新增共享核心过程 `dbo.计划排产_装配任务查询_核心`,两个原过程保留原名称和参数,仅作为分类入口。
2. 先将符合条件的任务写入临时表,再对工时、流程、在岗人员、质检和 SAP 数据进行候选集范围内的汇总。
3.`View_生产工时视图` 的四次扫描合并为一次,任务工时和合同工时在一次聚合中计算。
4. 保留合同工时修复,合同维度继续使用 `订单合同号`
5. 将动态拼接条件改为参数化筛选,降低重复编译和字符串条件风险。
6. 新增 5 个辅助索引:
- `物料基础数据_零件图纸.IX_零件图纸_num`
- `车间生产管理工艺_零件生产工艺_工艺库.IX_工艺库_订单_顺序`
- `YL_质量检验_质检记录.IX_质检记录_质检类型_计划号`
- `登录基础数据_人员信息.IX_人员信息_姓名_班组`
- `流程表.IX_流程表_关联计划_流程`
## 验证结果
完整结果集逐列哈希比对结果一致:
| 查询 | 优化前 | 优化后 | 结果行数 | 数据一致性 |
| --- | ---: | ---: | ---: | --- |
| 系统类默认查询 | 3500 ms | 681 ms | 55 | 一致 |
| 阀类默认查询 | 6415 ms | 1316 ms | 283 | 一致 |
筛选条件回归均通过,包括指定订单、指定合同和未完成状态;其中阀类未完成查询由 `23431 ms` 降至 `623 ms`
正式接口按前端实际分页参数回归:
| 接口查询 | HTTP 状态 | 返回数据 | 接口耗时 |
| --- | ---: | ---: | ---: |
| 系统类 | 200 | 20/55 行 | 1201 ms |
| 阀类 | 200 | 20/283 行 | 940 ms |
部署后累计调用统计在 2026-07-25 最终核验时为:
| 查询 | 调用次数 | 平均耗时 | 平均逻辑读 |
| --- | ---: | ---: | ---: |
| 系统类装配任务 | 13 | 775.02 ms | 397782 页 |
| 阀类装配任务 | 13 | 1104.29 ms | 412203 页 |
合同工时非零数据复核:系统类合同装配工时 34 行、合同质检工时 20 行;阀类合同装配工时 97 行、合同质检工时 34 行。
## 部署与回滚
- 过程部署脚本:`db_backups/optimize_install_task_queries_20260725.sql`
- 过程回滚脚本:`db_backups/rollback_install_task_queries_20260725.sql`
- 索引部署脚本:`db_backups/optimize_install_task_query_indexes_20260725.sql`
- 索引回滚脚本:`db_backups/rollback_install_task_query_indexes_20260725.sql`
- 线上精确备份过程:
- `dbo.计划排产_系统类任务查询_优化前_20260725`
- `dbo.计划排产_阀类任务查询_优化前_20260725`
建议观察一个业务周期后再决定是否删除两个优化前备份过程。导出过程不在本次变更范围内。
## 首屏渲染二次优化
用户反馈数据库优化后页面体感仍需数秒。按正式接口连续测量,系统类通常为 `0.70-0.99` 秒,阀类通常为 `0.88-1.14` 秒;剩余等待主要发生在浏览器渲染阶段。原页面默认请求 100 行,并为每一行同时创建日期选择器、多选下拉框和预算数字输入框。
本次前端调整如下:
1. 默认分页由 100 行改为 20 行,可选 20、50、100 行。
2. 修复分页控件使用 `donepageSize/donepageCurrent`、请求却使用 `pageSize/pageCurrent` 的状态错配。
3. 日期、二次派工和预算字段默认使用文本显示,点击对应单元格后才创建编辑控件。
4. 保留原保存过程、日期修改过程、二次派工过程和预算计算公式,不改变业务数据口径。
正式接口 20 行回归结果:
| 查询 | 接口耗时范围 | 返回行数 | 响应字符数 |
| --- | ---: | ---: | ---: |
| 系统类 | 696-987 ms | 20/55 | 19670 |
| 阀类 | 876-1143 ms | 20/260 | 18672 |
相较原 100 行响应,系统类响应体由约 52825 字符降至 19670 字符,阀类由约 93429 字符降至 18672 字符;同时首屏不再批量创建各行编辑控件。
曾在正式库事务内验证“预展开合同订单后连接工时视图”和 3 个筛选索引。完整结果哈希一致,但系统类接口由约 0.82 秒增加到约 1.09 秒,阀类约 1.04 秒无明显收益,因此已完整回滚并清理临时过程和索引,未纳入正式方案。