Files
16-Xikai-MesProjectNew/DatabaseScripts/XD_TCS_AGV状态机测试.sql

99 lines
5.2 KiB
Transact-SQL

SET NOCOUNT ON
DECLARE @前缀 nvarchar(50)=N'UT_AGV_STATE_'
DECLARE @首任务 nvarchar(100)=@前缀+N'BASE'
DECLARE @并发任务 nvarchar(100)=@前缀+N'SECOND'
DECLARE @未复位恢复 nvarchar(100)=@前缀+N'NORESET'
DECLARE @跨工位恢复 nvarchar(100)=@前缀+N'WRONG_STATION'
DECLARE @正确恢复 nvarchar(100)=@前缀+N'RECOVERY'
DECLARE @失败未处理阻断 nvarchar(100)=@前缀+N'BLOCKED'
DECLARE @处理后任务 nvarchar(100)=@前缀+N'AFTER_HANDLE'
DECLARE @失败断言数 int=0
DELETE FROM dbo.XD_TCS_AGV_操作记录 WHERE 外部任务编号 LIKE @前缀+N'%'
DELETE FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号 LIKE @前缀+N'%'
PRINT N'[1] 创建首个任务'
EXEC dbo.XD_TCS_AGV_任务_创建
@首任务,N'',N'AC0909-01',N'',N'',N'nav_action_program',
N'[{"workStation":"S000214"},{"programName":"214GIS1插XSD"},{"programName":"214GIS1插XSE"}]',
1,N'G001',N'10.146.79.9',N'UNIT_TEST',N'状态机测试',0
IF NOT EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@首任务)
SET @失败断言数+=1
PRINT N'[2] 单车活动任务拦截'
EXEC dbo.XD_TCS_AGV_任务_创建
@并发任务,N'',N'AC0909-02',N'',N'',N'nav_action_program',N'[{"workStation":"S000215"}]',
1,N'G001',N'10.146.79.9',N'UNIT_TEST',N'状态机测试',0
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@并发任务)
SET @失败断言数+=1
EXEC dbo.XD_TCS_AGV_任务_本地状态设置 @首任务,4,N'任务错误',N'单元测试失败'
PRINT N'[3] 未复位恢复任务拦截'
EXEC dbo.XD_TCS_AGV_任务_创建
@未复位恢复,@首任务,N'AC0909-01',N'插-单步',N'214GIS1插XSD',N'program',
N'[{"programName":"214GIS1插XSD"}]',1,N'G001',N'10.146.79.9',N'UNIT_TEST',N'状态机测试',0
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@未复位恢复)
SET @失败断言数+=1
PRINT N'[4] 复位标记与跨工位恢复拦截'
EXEC dbo.XD_TCS_AGV_任务_复位标记 @首任务
EXEC dbo.XD_TCS_AGV_任务_状态更新
@首任务,5,N'10.146.79.9',N'nav_action_program',N'',N'',N'任务错误已处理'
IF NOT EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@首任务 AND 任务状态=5 AND 已复位=1)
SET @失败断言数+=1
EXEC dbo.XD_TCS_AGV_任务_创建
@跨工位恢复,@首任务,N'AC0909-02',N'插-单步',N'215GIS2插XSD',N'program',
N'[{"programName":"215GIS2插XSD"}]',1,N'G001',N'10.146.79.9',N'UNIT_TEST',N'状态机测试',0
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@跨工位恢复)
SET @失败断言数+=1
PRINT N'[5] 复位后同工位恢复放行'
EXEC dbo.XD_TCS_AGV_任务_创建
@正确恢复,@首任务,N'AC0909-01',N'插-单步',N'214GIS1插XSD',N'program',
N'[{"programName":"214GIS1插XSD"}]',1,N'G001',N'10.146.79.9',N'UNIT_TEST',N'状态机测试',0
IF NOT EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@正确恢复)
SET @失败断言数+=1
EXEC dbo.XD_TCS_AGV_任务_状态更新
@正确恢复,2,N'10.146.79.9',N'program',N'2026-07-13 10:00:00',N'2026-07-13 10:01:00',N''
PRINT N'[6] 原失败任务未处理时继续阻断'
EXEC dbo.XD_TCS_AGV_任务_创建
@失败未处理阻断,N'',N'AC0909-02',N'',N'',N'nav_action_program',N'[{"workStation":"S000215"}]',
1,N'G001',N'10.146.79.9',N'UNIT_TEST',N'状态机测试',0
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@失败未处理阻断)
SET @失败断言数+=1
PRINT N'[7] 人工处理后新任务放行'
EXEC dbo.XD_TCS_AGV_任务_人工处理 @首任务,N'状态机测试',N'恢复任务已完成'
EXEC dbo.XD_TCS_AGV_任务_状态更新 @首任务,2,N'',N'',N'',N'',N'迟到完成'
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@首任务 AND 任务状态<>5)
SET @失败断言数+=1
EXEC dbo.XD_TCS_AGV_任务_创建
@处理后任务,N'',N'AC0909-02',N'',N'',N'nav_action_program',N'[{"workStation":"S000215"}]',
1,N'G001',N'10.146.79.9',N'UNIT_TEST',N'状态机测试',0
IF NOT EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@处理后任务)
SET @失败断言数+=1
PRINT N'[8] 未复位失败任务不能人工处理,终态不能改写'
EXEC dbo.XD_TCS_AGV_任务_本地状态设置 @处理后任务,4,N'任务错误',N'终态测试'
EXEC dbo.XD_TCS_AGV_任务_人工处理 @处理后任务,N'状态机测试',N'不应成功'
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@处理后任务 AND 处理状态=1)
SET @失败断言数+=1
EXEC dbo.XD_TCS_AGV_任务_状态更新 @处理后任务,2,N'',N'',N'',N'',N'迟到完成'
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@处理后任务 AND 任务状态<>4)
SET @失败断言数+=1
SELECT @失败断言数 AS 失败断言数,
(SELECT COUNT(*) FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号 LIKE @前缀+N'%') AS 测试任务数
DELETE FROM dbo.XD_TCS_AGV_操作记录 WHERE 外部任务编号 LIKE @前缀+N'%'
DELETE FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号 LIKE @前缀+N'%'
IF @失败断言数<>0
RAISERROR(N'AGV数据库状态机测试失败',16,1)
SELECT COUNT(*) AS 清理后测试任务数
FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号 LIKE @前缀+N'%'