300 lines
8.4 KiB
Markdown
300 lines
8.4 KiB
Markdown
# 零件改制入库链路测试报告
|
||
|
||
## 1. 测试目的
|
||
|
||
验证零件改制任务在完成生产后,是否能够进入现有“自制件入库”流程,并判断是否存在入库数据风险。
|
||
|
||
## 2. 测试方式
|
||
|
||
本次采用只读查询和事务内回滚模拟方式测试。
|
||
|
||
- 未保留任何业务数据改动。
|
||
- 未真实新增库存。
|
||
- 未真实执行入库提交。
|
||
- 使用事务临时修改完成数量,调用现有自制件入库查询过程后立即回滚。
|
||
|
||
## 3. 涉及对象
|
||
|
||
### 3.1 前端页面
|
||
|
||
```text
|
||
src/views/WarehouseManagement/PurchasePartsStorage/index.vue
|
||
```
|
||
|
||
自制件入库页签使用接口:
|
||
|
||
```text
|
||
仓储管理_自制件入库_查询
|
||
仓储管理_自制件入库_循环执行
|
||
物料入库_自制件入库_零件图号_查询数据
|
||
```
|
||
|
||
### 3.2 数据库对象
|
||
|
||
```text
|
||
技术中心_改制订单记录
|
||
车间生产管理_零件工艺计划_视图
|
||
车间生产管理工艺_零件工艺计划
|
||
仓储管理_自制件入库_查询
|
||
仓储管理_自制件入库_循环执行
|
||
库存管理_物料与货位对照表
|
||
库存管理_外购件累计库存
|
||
库存管理_自制件_入库记录
|
||
```
|
||
|
||
## 4. 当前改制任务状态检查
|
||
|
||
执行 SQL:
|
||
|
||
```sql
|
||
SELECT
|
||
COUNT(*) AS 改制任务数,
|
||
SUM(CASE WHEN ISNULL(V.完成数量,0) > ISNULL(V.入库数量,0) THEN 1 ELSE 0 END) AS 当前可入库数,
|
||
SUM(CASE WHEN ISNULL(V.完成数量,0) >= ISNULL(V.批次数量,0) AND ISNULL(V.批次数量,0) > 0 THEN 1 ELSE 0 END) AS 已完成生产数,
|
||
SUM(CASE WHEN V.工艺计划流水号 IS NULL THEN 1 ELSE 0 END) AS 未关联生产任务数
|
||
FROM dbo.技术中心_改制订单记录 GZ
|
||
LEFT JOIN dbo.车间生产管理_零件工艺计划_视图 V
|
||
ON GZ.工艺计划流水号 = V.工艺计划流水号
|
||
WHERE ISNULL(GZ.是否删除,0)=0;
|
||
```
|
||
|
||
结果:
|
||
|
||
| 改制任务数 | 当前可入库数 | 已完成生产数 | 未关联生产任务数 |
|
||
| --- | --- | --- | --- |
|
||
| 11 | 0 | 0 | 3 |
|
||
|
||
结论:
|
||
|
||
- 当前没有已经完成生产并可入库的改制任务。
|
||
- 有 3 条历史改制记录未关联到生产任务,原因是未回写 `工艺计划流水号`。
|
||
|
||
## 5. 入库查询模拟测试
|
||
|
||
### 5.1 测试 SQL
|
||
|
||
以下 SQL 在事务中临时将一条改制任务的 `完成数量` 设置为 `批次数量`,调用现有自制件入库查询后立即回滚。
|
||
|
||
```sql
|
||
BEGIN TRAN;
|
||
|
||
DECLARE @工艺计划流水号 int;
|
||
DECLARE @订单流水号 int;
|
||
DECLARE @批次数量 int;
|
||
DECLARE @图号 nvarchar(50);
|
||
|
||
SELECT TOP 1
|
||
@工艺计划流水号 = V.工艺计划流水号,
|
||
@订单流水号 = V.订单流水号,
|
||
@批次数量 = V.批次数量,
|
||
@图号 = V.零件图号
|
||
FROM dbo.技术中心_改制订单记录 GZ
|
||
INNER JOIN dbo.车间生产管理_零件工艺计划_视图 V
|
||
ON GZ.工艺计划流水号 = V.工艺计划流水号
|
||
WHERE ISNULL(GZ.是否删除,0)=0
|
||
AND V.工艺计划流水号 IS NOT NULL
|
||
ORDER BY GZ.改制订单流水号 DESC;
|
||
|
||
UPDATE dbo.车间生产管理工艺_零件工艺计划
|
||
SET 完成数量 = @批次数量
|
||
WHERE 工艺计划流水号 = @工艺计划流水号;
|
||
|
||
EXEC dbo.仓储管理_自制件入库_查询
|
||
@排序名称 = 0,
|
||
@排序方式 = 0,
|
||
@订单号_check = 1,
|
||
@订单号 = @订单流水号,
|
||
@零件图号_check = 1,
|
||
@零件图号 = @图号;
|
||
|
||
ROLLBACK TRAN;
|
||
```
|
||
|
||
### 5.2 查询结果
|
||
|
||
| 工艺计划流水号 | 订单号 | 零件名称 | 零件图号 | 物料流水号 | 批次数量 | 完成数量 | 入库数量 | 本次入库 | 类型 |
|
||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||
| 6591 | BHGZ-202607010011 | 300封油板 | URS3042Z-07-01 | 741 | 1 | 1 | 0 | 1 | 自制件 |
|
||
|
||
结论:
|
||
|
||
- 改制任务在完成生产后,可以进入现有 `仓储管理_自制件入库_查询` 查询结果。
|
||
- 页面层面具备被选择并执行自制件入库的条件。
|
||
|
||
## 6. 入库执行逻辑分析
|
||
|
||
现有自制件入库提交过程:
|
||
|
||
```text
|
||
仓储管理_自制件入库_循环执行
|
||
```
|
||
|
||
关键逻辑:
|
||
|
||
```sql
|
||
INSERT INTO 库存管理_物料与货位对照表
|
||
(
|
||
物料流水号,
|
||
货位流水号,
|
||
货位存量,
|
||
操作日期,
|
||
工艺计划流水号
|
||
)
|
||
VALUES
|
||
(
|
||
@物料流水号,
|
||
@货位流水号,
|
||
@实际到货数量,
|
||
GETDATE(),
|
||
@工艺计划流水号
|
||
);
|
||
|
||
INSERT INTO 库存管理_自制件_入库记录
|
||
(
|
||
工艺计划流水号,
|
||
实际到货数量,
|
||
入库人员流水号,
|
||
入库时间,
|
||
货位流水号
|
||
)
|
||
VALUES
|
||
(
|
||
@工艺计划流水号,
|
||
@实际到货数量,
|
||
@入库人员流水号,
|
||
GETDATE(),
|
||
@货位流水号
|
||
);
|
||
|
||
UPDATE 车间生产管理工艺_零件工艺计划
|
||
SET 入库数量 = ISNULL(入库数量,0) + @实际到货数量
|
||
WHERE 工艺计划流水号 = @工艺计划流水号;
|
||
```
|
||
|
||
该过程会:
|
||
|
||
- 增加货位库存。
|
||
- 增加累计库存。
|
||
- 写入自制件入库记录。
|
||
- 回写工艺计划入库数量。
|
||
- 入库数量达到生产数量减报废数量时,将工艺计划状态更新为入库完成。
|
||
|
||
## 7. 风险发现
|
||
|
||
### 7.1 入库可执行,但可能入到原物料流水号
|
||
|
||
当前改制任务查询结果中,虽然视图显示了改制后的零件名称和零件图号,但 `物料流水号` 仍来自原基本件关联的物料。
|
||
|
||
抽样结果:
|
||
|
||
| 改制订单编号 | 改制零件图号 | 工艺计划流水号 | 物料流水号 | 当前物料代号 | 结论 |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| BHGZ-202607010011 | URS3042Z-07-01 | 6591 | 741 | URS2267Z-04 | 不一致 |
|
||
| BHGZ-202606270010 | XT40-2-BT40-14.09-G | 6590 | 1716 | XT40-MF-05.08 | 不一致 |
|
||
| BHGZ-202606260009 | XT20-02-G | 6589 | 1251 | XT20-09 | 不一致 |
|
||
|
||
影响:
|
||
|
||
- 如果直接使用现有入库流程,库存可能增加到原基本件物料,而不是改制后的目标零件物料。
|
||
- 页面显示看起来是改制零件,但库存台账实际使用的是原 `物料流水号`。
|
||
|
||
## 8. 测试结论
|
||
|
||
### 8.1 能否正常进入入库流程
|
||
|
||
可以。
|
||
|
||
完成生产后,只要满足:
|
||
|
||
```sql
|
||
完成数量 > 入库数量
|
||
```
|
||
|
||
改制任务可以被 `仓储管理_自制件入库_查询` 查出,并进入现有自制件入库页面。
|
||
|
||
### 8.2 能否直接认为入库完全正确
|
||
|
||
不能。
|
||
|
||
当前链路存在关键风险:
|
||
|
||
```text
|
||
显示字段使用改制零件信息
|
||
库存入库仍使用原物料流水号
|
||
```
|
||
|
||
因此只能说“流程可进入入库”,但不能确认“库存入到正确改制物料”。
|
||
|
||
## 9. 修复方案执行情况
|
||
|
||
### 9.1 已执行方案
|
||
|
||
已在 `技术中心_改制订单记录` 中增加改制目标物料流水号:
|
||
|
||
```sql
|
||
ALTER TABLE dbo.技术中心_改制订单记录
|
||
ADD 改制物料流水号 int NULL;
|
||
```
|
||
|
||
已修改 `技术中心_改制订单_发起改制`:
|
||
|
||
```sql
|
||
SELECT TOP 1
|
||
@改制物料流水号 = 物料流水号
|
||
FROM dbo.库存管理_物料主文件_基本
|
||
WHERE LTRIM(RTRIM(名称)) = LTRIM(RTRIM(@改制零件名称))
|
||
AND LTRIM(RTRIM(代号)) = LTRIM(RTRIM(@改制零件图号))
|
||
AND ISNULL(是否禁用, 0) = 0;
|
||
```
|
||
|
||
查不到新物料时禁止发起:
|
||
|
||
```sql
|
||
SELECT '0' AS result, '未找到改制零件对应的新物料,请先维护物料信息' AS msg;
|
||
```
|
||
|
||
已修改 `车间生产管理_零件工艺计划_视图`,让以下字段优先使用改制物料:
|
||
|
||
```text
|
||
物料流水号
|
||
物料编码
|
||
代号
|
||
货位流水号
|
||
货位名称
|
||
单位
|
||
```
|
||
|
||
同时保留改制订单编号、改制零件名称、改制零件图号的优先显示。
|
||
|
||
### 9.2 当前验证结果
|
||
|
||
结构验证:
|
||
|
||
| 检查项 | 结果 |
|
||
| --- | --- |
|
||
| 改制物料字段存在 | 1 |
|
||
| 发起过程已包含改制物料 | 1 |
|
||
| 生产任务视图已关联改制物料 | 1 |
|
||
|
||
历史数据:
|
||
|
||
| 未删除改制记录数 | 未维护改制物料数 | 已维护改制物料数 |
|
||
| --- | --- | --- |
|
||
| 11 | 11 | 0 |
|
||
|
||
说明:
|
||
|
||
- 历史改制记录没有匹配到新物料流水号。
|
||
- 原因是物料主文件中没有与历史记录的“改制零件名称 + 改制零件图号”完全匹配的可用物料。
|
||
- 新流程已阻止继续产生该问题。
|
||
|
||
## 10. 后续验收项
|
||
|
||
| 验收项 | 状态 | 标准 |
|
||
| --- | --- | --- |
|
||
| 改制任务完成后可进入自制件入库查询 | 通过 | 事务回滚模拟已验证 |
|
||
| 改制任务入库后库存写入正确物料 | 待新数据验证 | 新流程已支持改制物料流水号,需用新发起改制订单验证 |
|
||
| 入库后工艺计划入库数量增加 | 待真实流程验证 | 入库数量应增加 |
|
||
| 入库完成后考核状态变为 4 | 待真实流程验证 | 完成数量全部入库后状态为入库 |
|
||
| 入库记录显示改制订单编号 | 待联调 | 入库记录查询需关联改制记录 |
|