99 lines
5.2 KiB
Transact-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'%'
|