8.4 KiB
8.4 KiB
零件改制入库链路测试报告
1. 测试目的
验证零件改制任务在完成生产后,是否能够进入现有“自制件入库”流程,并判断是否存在入库数据风险。
2. 测试方式
本次采用只读查询和事务内回滚模拟方式测试。
- 未保留任何业务数据改动。
- 未真实新增库存。
- 未真实执行入库提交。
- 使用事务临时修改完成数量,调用现有自制件入库查询过程后立即回滚。
3. 涉及对象
3.1 前端页面
src/views/WarehouseManagement/PurchasePartsStorage/index.vue
自制件入库页签使用接口:
仓储管理_自制件入库_查询
仓储管理_自制件入库_循环执行
物料入库_自制件入库_零件图号_查询数据
3.2 数据库对象
技术中心_改制订单记录
车间生产管理_零件工艺计划_视图
车间生产管理工艺_零件工艺计划
仓储管理_自制件入库_查询
仓储管理_自制件入库_循环执行
库存管理_物料与货位对照表
库存管理_外购件累计库存
库存管理_自制件_入库记录
4. 当前改制任务状态检查
执行 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 在事务中临时将一条改制任务的 完成数量 设置为 批次数量,调用现有自制件入库查询后立即回滚。
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. 入库执行逻辑分析
现有自制件入库提交过程:
仓储管理_自制件入库_循环执行
关键逻辑:
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 能否正常进入入库流程
可以。
完成生产后,只要满足:
完成数量 > 入库数量
改制任务可以被 仓储管理_自制件入库_查询 查出,并进入现有自制件入库页面。
8.2 能否直接认为入库完全正确
不能。
当前链路存在关键风险:
显示字段使用改制零件信息
库存入库仍使用原物料流水号
因此只能说“流程可进入入库”,但不能确认“库存入到正确改制物料”。
9. 修复方案执行情况
9.1 已执行方案
已在 技术中心_改制订单记录 中增加改制目标物料流水号:
ALTER TABLE dbo.技术中心_改制订单记录
ADD 改制物料流水号 int NULL;
已修改 技术中心_改制订单_发起改制:
SELECT TOP 1
@改制物料流水号 = 物料流水号
FROM dbo.库存管理_物料主文件_基本
WHERE LTRIM(RTRIM(名称)) = LTRIM(RTRIM(@改制零件名称))
AND LTRIM(RTRIM(代号)) = LTRIM(RTRIM(@改制零件图号))
AND ISNULL(是否禁用, 0) = 0;
查不到新物料时禁止发起:
SELECT '0' AS result, '未找到改制零件对应的新物料,请先维护物料信息' AS msg;
已修改 车间生产管理_零件工艺计划_视图,让以下字段优先使用改制物料:
物料流水号
物料编码
代号
货位流水号
货位名称
单位
同时保留改制订单编号、改制零件名称、改制零件图号的优先显示。
9.2 当前验证结果
结构验证:
| 检查项 | 结果 |
|---|---|
| 改制物料字段存在 | 1 |
| 发起过程已包含改制物料 | 1 |
| 生产任务视图已关联改制物料 | 1 |
历史数据:
| 未删除改制记录数 | 未维护改制物料数 | 已维护改制物料数 |
|---|---|---|
| 11 | 11 | 0 |
说明:
- 历史改制记录没有匹配到新物料流水号。
- 原因是物料主文件中没有与历史记录的“改制零件名称 + 改制零件图号”完全匹配的可用物料。
- 新流程已阻止继续产生该问题。
10. 后续验收项
| 验收项 | 状态 | 标准 |
|---|---|---|
| 改制任务完成后可进入自制件入库查询 | 通过 | 事务回滚模拟已验证 |
| 改制任务入库后库存写入正确物料 | 待新数据验证 | 新流程已支持改制物料流水号,需用新发起改制订单验证 |
| 入库后工艺计划入库数量增加 | 待真实流程验证 | 入库数量应增加 |
| 入库完成后考核状态变为 4 | 待真实流程验证 | 完成数量全部入库后状态为入库 |
| 入库记录显示改制订单编号 | 待联调 | 入库记录查询需关联改制记录 |