feat: 增加LG/TCS-AGV接口并完善物料校验与Function逻辑
This commit is contained in:
711
DatabaseScripts/XD_TCS_AGV插拔任务.sql
Normal file
711
DatabaseScripts/XD_TCS_AGV插拔任务.sql
Normal file
@@ -0,0 +1,711 @@
|
||||
SET NOCOUNT ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.XD_TCS_AGV_配置', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.XD_TCS_AGV_配置
|
||||
(
|
||||
配置键 nvarchar(50) NOT NULL CONSTRAINT PK_XD_TCS_AGV_配置 PRIMARY KEY,
|
||||
配置值 nvarchar(500) NOT NULL,
|
||||
配置说明 nvarchar(200) NULL,
|
||||
是否启用 bit NOT NULL CONSTRAINT DF_XD_TCS_AGV_配置_是否启用 DEFAULT(1),
|
||||
操作时间 datetime NOT NULL CONSTRAINT DF_XD_TCS_AGV_配置_操作时间 DEFAULT(GETDATE())
|
||||
)
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.XD_TCS_AGV_点位配置', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.XD_TCS_AGV_点位配置
|
||||
(
|
||||
ID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_XD_TCS_AGV_点位配置 PRIMARY KEY,
|
||||
产线代码 nvarchar(20) NOT NULL,
|
||||
MES工位号 nvarchar(50) NOT NULL,
|
||||
现场位置 nvarchar(50) NOT NULL,
|
||||
WorkStation nvarchar(50) NOT NULL,
|
||||
插XSDProgramName nvarchar(100) NOT NULL,
|
||||
插XSEProgramName nvarchar(100) NOT NULL,
|
||||
拔XSDProgramName nvarchar(100) NOT NULL,
|
||||
拔XSEProgramName nvarchar(100) NOT NULL,
|
||||
排序 int NOT NULL,
|
||||
是否启用 bit NOT NULL CONSTRAINT DF_XD_TCS_AGV_点位配置_是否启用 DEFAULT(1),
|
||||
操作时间 datetime NOT NULL CONSTRAINT DF_XD_TCS_AGV_点位配置_操作时间 DEFAULT(GETDATE()),
|
||||
CONSTRAINT UK_XD_TCS_AGV_点位配置_MES工位号 UNIQUE(MES工位号),
|
||||
CONSTRAINT UK_XD_TCS_AGV_点位配置_WorkStation UNIQUE(WorkStation)
|
||||
)
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.XD_TCS_AGV_型号动作映射', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.XD_TCS_AGV_型号动作映射
|
||||
(
|
||||
ID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_XD_TCS_AGV_型号动作映射 PRIMARY KEY,
|
||||
产线代码 nvarchar(20) NOT NULL,
|
||||
产品型号 nvarchar(100) NOT NULL,
|
||||
任务动作 nvarchar(10) NOT NULL,
|
||||
执行XSD bit NOT NULL,
|
||||
执行XSE bit NOT NULL,
|
||||
是否启用 bit NOT NULL CONSTRAINT DF_XD_TCS_AGV_型号动作映射_是否启用 DEFAULT(1),
|
||||
操作时间 datetime NOT NULL CONSTRAINT DF_XD_TCS_AGV_型号动作映射_操作时间 DEFAULT(GETDATE()),
|
||||
CONSTRAINT UK_XD_TCS_AGV_型号动作映射 UNIQUE(产线代码,产品型号,任务动作),
|
||||
CONSTRAINT CK_XD_TCS_AGV_型号动作映射_动作 CHECK(任务动作 IN(N'插',N'拔')),
|
||||
CONSTRAINT CK_XD_TCS_AGV_型号动作映射_组合 CHECK(执行XSD=1 OR 执行XSE=1)
|
||||
)
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.XD_TCS_AGV_任务', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.XD_TCS_AGV_任务
|
||||
(
|
||||
ID bigint IDENTITY(1,1) NOT NULL CONSTRAINT PK_XD_TCS_AGV_任务 PRIMARY KEY,
|
||||
外部任务编号 nvarchar(100) NOT NULL,
|
||||
原任务编号 nvarchar(100) NULL,
|
||||
MES工位号 nvarchar(50) NOT NULL,
|
||||
现场位置 nvarchar(50) NULL,
|
||||
TCS站点 nvarchar(50) NULL,
|
||||
任务动作 nvarchar(20) NOT NULL,
|
||||
产品型号 nvarchar(100) NULL,
|
||||
动作组合 nvarchar(20) NULL,
|
||||
ProgramName nvarchar(100) NULL,
|
||||
任务类型 nvarchar(50) NOT NULL,
|
||||
参数 nvarchar(max) NOT NULL,
|
||||
优先级 int NOT NULL,
|
||||
机器人组 nvarchar(50) NULL,
|
||||
机器人IP nvarchar(50) NULL,
|
||||
来源 nvarchar(20) NOT NULL,
|
||||
操作人 nvarchar(50) NULL,
|
||||
任务状态 int NOT NULL CONSTRAINT DF_XD_TCS_AGV_任务_任务状态 DEFAULT(0),
|
||||
状态说明 nvarchar(50) NOT NULL CONSTRAINT DF_XD_TCS_AGV_任务_状态说明 DEFAULT(N'未开始'),
|
||||
开始时间 nvarchar(50) NULL,
|
||||
结束时间 nvarchar(50) NULL,
|
||||
TCS备注 nvarchar(1000) NULL,
|
||||
请求报文 nvarchar(max) NULL,
|
||||
响应报文 nvarchar(max) NULL,
|
||||
错误信息 nvarchar(2000) NULL,
|
||||
是否通知PLC bit NOT NULL CONSTRAINT DF_XD_TCS_AGV_任务_是否通知PLC DEFAULT(0),
|
||||
PLC已通知 bit NOT NULL CONSTRAINT DF_XD_TCS_AGV_任务_PLC已通知 DEFAULT(0),
|
||||
处理状态 int NOT NULL CONSTRAINT DF_XD_TCS_AGV_任务_处理状态 DEFAULT(0),
|
||||
已复位 bit NOT NULL CONSTRAINT DF_XD_TCS_AGV_任务_已复位 DEFAULT(0),
|
||||
处理人 nvarchar(50) NULL,
|
||||
处理时间 datetime NULL,
|
||||
处理说明 nvarchar(1000) NULL,
|
||||
创建时间 datetime NOT NULL CONSTRAINT DF_XD_TCS_AGV_任务_创建时间 DEFAULT(GETDATE()),
|
||||
更新时间 datetime NOT NULL CONSTRAINT DF_XD_TCS_AGV_任务_更新时间 DEFAULT(GETDATE()),
|
||||
CONSTRAINT UK_XD_TCS_AGV_任务_外部任务编号 UNIQUE(外部任务编号),
|
||||
CONSTRAINT CK_XD_TCS_AGV_任务_状态 CHECK(任务状态 IN (0,1,2,3,4,5))
|
||||
)
|
||||
|
||||
CREATE INDEX IX_XD_TCS_AGV_任务_状态时间
|
||||
ON dbo.XD_TCS_AGV_任务(任务状态, 创建时间 DESC)
|
||||
CREATE INDEX IX_XD_TCS_AGV_任务_工位时间
|
||||
ON dbo.XD_TCS_AGV_任务(MES工位号, 创建时间 DESC)
|
||||
END
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.XD_TCS_AGV_任务', N'产品型号') IS NULL
|
||||
ALTER TABLE dbo.XD_TCS_AGV_任务 ADD 产品型号 nvarchar(100) NULL
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.XD_TCS_AGV_任务', N'动作组合') IS NULL
|
||||
ALTER TABLE dbo.XD_TCS_AGV_任务 ADD 动作组合 nvarchar(20) NULL
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.XD_TCS_AGV_任务', N'已复位') IS NULL
|
||||
BEGIN
|
||||
ALTER TABLE dbo.XD_TCS_AGV_任务 ADD 已复位 bit NOT NULL
|
||||
CONSTRAINT DF_XD_TCS_AGV_任务_已复位 DEFAULT(0)
|
||||
END
|
||||
GO
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.check_constraints
|
||||
WHERE parent_object_id=OBJECT_ID(N'dbo.XD_TCS_AGV_任务')
|
||||
AND name=N'CK_XD_TCS_AGV_任务_状态'
|
||||
)
|
||||
ALTER TABLE dbo.XD_TCS_AGV_任务 DROP CONSTRAINT CK_XD_TCS_AGV_任务_状态
|
||||
GO
|
||||
|
||||
ALTER TABLE dbo.XD_TCS_AGV_任务 ADD CONSTRAINT CK_XD_TCS_AGV_任务_状态
|
||||
CHECK(任务状态 IN (0,1,2,3,4,5))
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.XD_TCS_AGV_位置状态', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.XD_TCS_AGV_位置状态
|
||||
(
|
||||
ID int NOT NULL CONSTRAINT PK_XD_TCS_AGV_位置状态 PRIMARY KEY,
|
||||
机器人IP nvarchar(50) NULL,
|
||||
当前站点 nvarchar(100) NULL,
|
||||
目标站点 nvarchar(100) NULL,
|
||||
原始报文 nvarchar(max) NULL,
|
||||
更新时间 datetime NOT NULL CONSTRAINT DF_XD_TCS_AGV_位置状态_更新时间 DEFAULT(GETDATE()),
|
||||
CONSTRAINT CK_XD_TCS_AGV_位置状态_单车 CHECK(ID = 1)
|
||||
)
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.XD_TCS_AGV_操作记录', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.XD_TCS_AGV_操作记录
|
||||
(
|
||||
ID bigint IDENTITY(1,1) NOT NULL CONSTRAINT PK_XD_TCS_AGV_操作记录 PRIMARY KEY,
|
||||
外部任务编号 nvarchar(100) NULL,
|
||||
MES工位号 nvarchar(50) NULL,
|
||||
操作类型 nvarchar(50) NOT NULL,
|
||||
操作人 nvarchar(50) NULL,
|
||||
请求报文 nvarchar(max) NULL,
|
||||
响应报文 nvarchar(max) NULL,
|
||||
是否成功 bit NOT NULL,
|
||||
操作结果 nvarchar(1000) NULL,
|
||||
操作时间 datetime NOT NULL CONSTRAINT DF_XD_TCS_AGV_操作记录_操作时间 DEFAULT(GETDATE())
|
||||
)
|
||||
|
||||
CREATE INDEX IX_XD_TCS_AGV_操作记录_时间
|
||||
ON dbo.XD_TCS_AGV_操作记录(操作时间 DESC)
|
||||
END
|
||||
GO
|
||||
|
||||
DECLARE @默认配置 TABLE
|
||||
(
|
||||
配置键 nvarchar(50),
|
||||
配置值 nvarchar(500),
|
||||
配置说明 nvarchar(200)
|
||||
)
|
||||
|
||||
INSERT INTO @默认配置 VALUES
|
||||
(N'TCS_BaseUrl', N'http://10.112.111.21:11008', N'TCS调度服务地址,客户已确认'),
|
||||
(N'TCS_Enabled', N'0', N'1启用真实下发,0仅允许查询配置'),
|
||||
(N'McrGroup', N'G001', N'机器人组'),
|
||||
(N'McrIp', N'10.146.79.9', N'客户确认的单台AGV IP'),
|
||||
(N'TCS_OperatorUserId', N'BZS001', N'TCS任务状态定向推送标识'),
|
||||
(N'DefaultPriority', N'1', N'默认任务优先级'),
|
||||
(N'HttpTimeoutSeconds', N'15', N'TCS HTTP超时秒数')
|
||||
|
||||
MERGE dbo.XD_TCS_AGV_配置 AS T
|
||||
USING @默认配置 AS S ON T.配置键 = S.配置键
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT(配置键,配置值,配置说明) VALUES(S.配置键,S.配置值,S.配置说明);
|
||||
GO
|
||||
|
||||
DECLARE @产线代码 nvarchar(20)
|
||||
SELECT TOP 1 @产线代码 = 值 FROM dbo.基本配置 WHERE 参数名称 = N'产线名称'
|
||||
|
||||
DECLARE @点位 TABLE
|
||||
(
|
||||
产线代码 nvarchar(20), MES工位号 nvarchar(50), 现场位置 nvarchar(50), WorkStation nvarchar(50),
|
||||
插XSD nvarchar(100), 插XSE nvarchar(100), 拔XSD nvarchar(100), 拔XSE nvarchar(100), 排序 int
|
||||
)
|
||||
|
||||
IF @产线代码 = N'GLKG'
|
||||
BEGIN
|
||||
INSERT INTO @点位 VALUES
|
||||
(N'GLKG',N'AC0909-01',N'GIS1',N'S000214',N'214GIS1插XSD',N'214GIS1插XSE',N'214GIS1拔XSD',N'214GIS1拔XSE',1),
|
||||
(N'GLKG',N'AC0909-02',N'GIS2',N'S000215',N'215GIS2插XSD',N'215GIS2插XSE',N'215GIS2拔XSD',N'215GIS2拔XSE',2),
|
||||
(N'GLKG',N'AC0909-03',N'GIS3',N'S000217',N'217GIS3插XSD',N'217GIS3插XSE',N'217GIS3拔XSD',N'217GIS3拔XSE',3),
|
||||
(N'GLKG',N'AC0909-04',N'GIS4',N'S000218',N'218GIS4插XSD',N'218GIS4插XSE',N'218GIS4拔XSD',N'218GIS4拔XSE',4),
|
||||
(N'GLKG',N'AC0909-05',N'GIS5',N'S000219',N'219GIS5插XSD',N'219GIS5插XSE',N'219GIS5拔XSD',N'219GIS5拔XSE',5),
|
||||
(N'GLKG',N'AC0909-06',N'GIS6',N'S000220',N'220GIS6插XSD',N'220GIS6插XSE',N'220GIS6拔XSD',N'220GIS6拔XSE',6),
|
||||
(N'GLKG',N'AC0909-07',N'GIS7',N'S000221',N'221GIS7插XSD',N'221GIS7插XSE',N'221GIS7拔XSD',N'221GIS7拔XSE',7),
|
||||
(N'GLKG',N'AC0909-08',N'GIS8',N'S000222',N'222GIS8插XSD',N'222GIS8插XSE',N'222GIS8拔XSD',N'222GIS8拔XSE',8),
|
||||
(N'GLKG',N'AC0909-09',N'GIS9',N'S000201',N'201GIS9插XSD',N'201GIS9插XSE',N'201GIS9拔XSD',N'201GIS9拔XSE',9),
|
||||
(N'GLKG',N'AC0909-10',N'GIS10',N'S000202',N'202GIS10插XSD',N'202GIS10插XSE',N'202GIS10拔XSD',N'202GIS10拔XSE',10)
|
||||
END
|
||||
ELSE IF @产线代码 = N'DLQ'
|
||||
BEGIN
|
||||
INSERT INTO @点位 VALUES
|
||||
(N'DLQ',N'AC0605-01',N'GCB1',N'S000225',N'225GCB1插XSD',N'225GCB1插XSE',N'225GCB1拔XSD',N'225GCB1拔XSE',1),
|
||||
(N'DLQ',N'AC0605-02',N'GCB2',N'S000226',N'226GCB2插XSD',N'226GCB2插XSE',N'226GCB2拔XSD',N'226GCB2拔XSE',2),
|
||||
(N'DLQ',N'AC0605-03',N'GCB3',N'S000227',N'227GCB3插XSD',N'227GCB3插XSE',N'227GCB3拔XSD',N'227GCB3拔XSE',3),
|
||||
(N'DLQ',N'AC0605-04',N'GCB4',N'S000228',N'228GCB4插XSD',N'228GCB4插XSE',N'228GCB4拔XSD',N'228GCB4拔XSE',4)
|
||||
END
|
||||
|
||||
MERGE dbo.XD_TCS_AGV_点位配置 AS T
|
||||
USING @点位 AS S ON T.MES工位号 = S.MES工位号
|
||||
WHEN MATCHED THEN UPDATE SET
|
||||
T.产线代码=S.产线代码,T.现场位置=S.现场位置,T.WorkStation=S.WorkStation,
|
||||
T.插XSDProgramName=S.插XSD,T.插XSEProgramName=S.插XSE,
|
||||
T.拔XSDProgramName=S.拔XSD,T.拔XSEProgramName=S.拔XSE,
|
||||
T.排序=S.排序,T.是否启用=1,T.操作时间=GETDATE()
|
||||
WHEN NOT MATCHED THEN INSERT
|
||||
(产线代码,MES工位号,现场位置,WorkStation,插XSDProgramName,插XSEProgramName,拔XSDProgramName,拔XSEProgramName,排序)
|
||||
VALUES(S.产线代码,S.MES工位号,S.现场位置,S.WorkStation,S.插XSD,S.插XSE,S.拔XSD,S.拔XSE,S.排序);
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_配置_获取
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT
|
||||
TCS_BaseUrl = MAX(CASE WHEN 配置键=N'TCS_BaseUrl' THEN 配置值 END),
|
||||
TCS_Enabled = MAX(CASE WHEN 配置键=N'TCS_Enabled' THEN 配置值 END),
|
||||
McrGroup = MAX(CASE WHEN 配置键=N'McrGroup' THEN 配置值 END),
|
||||
McrIp = MAX(CASE WHEN 配置键=N'McrIp' THEN 配置值 END),
|
||||
TCS_OperatorUserId = MAX(CASE WHEN 配置键=N'TCS_OperatorUserId' THEN 配置值 END),
|
||||
DefaultPriority = MAX(CASE WHEN 配置键=N'DefaultPriority' THEN 配置值 END),
|
||||
HttpTimeoutSeconds = MAX(CASE WHEN 配置键=N'HttpTimeoutSeconds' THEN 配置值 END)
|
||||
FROM dbo.XD_TCS_AGV_配置 WHERE 是否启用=1
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_点位配置_查询
|
||||
@MES工位号 nvarchar(50) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT * FROM dbo.XD_TCS_AGV_点位配置
|
||||
WHERE 是否启用=1 AND (@MES工位号=N'' OR MES工位号=@MES工位号)
|
||||
ORDER BY 排序
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_型号动作映射_查询
|
||||
@产线代码 nvarchar(20),
|
||||
@产品型号 nvarchar(100),
|
||||
@任务动作 nvarchar(10)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT TOP 1 ID,产线代码,产品型号,任务动作,执行XSD,执行XSE,
|
||||
CASE WHEN 执行XSD=1 AND 执行XSE=1 THEN N'XSD+XSE'
|
||||
WHEN 执行XSD=1 THEN N'XSD' ELSE N'XSE' END 动作组合
|
||||
FROM dbo.XD_TCS_AGV_型号动作映射
|
||||
WHERE 产线代码=@产线代码 AND 产品型号=@产品型号
|
||||
AND 任务动作=@任务动作 AND 是否启用=1
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_库位产品_查询
|
||||
@MES工位号 nvarchar(50)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT TOP 1 产品编号,产品型号
|
||||
FROM dbo.XD_磨合_状态
|
||||
WHERE 库位号=@MES工位号
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_创建
|
||||
@外部任务编号 nvarchar(100),
|
||||
@原任务编号 nvarchar(100)=N'',
|
||||
@MES工位号 nvarchar(50),
|
||||
@任务动作 nvarchar(20),
|
||||
@产品型号 nvarchar(100)=N'',
|
||||
@动作组合 nvarchar(20)=N'',
|
||||
@ProgramName nvarchar(100)=N'',
|
||||
@任务类型 nvarchar(50),
|
||||
@参数 nvarchar(max),
|
||||
@优先级 int,
|
||||
@机器人组 nvarchar(50)=N'',
|
||||
@机器人IP nvarchar(50)=N'',
|
||||
@来源 nvarchar(20),
|
||||
@操作人 nvarchar(50)=N'',
|
||||
@是否通知PLC bit=0
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SET XACT_ABORT ON
|
||||
BEGIN TRAN
|
||||
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_点位配置 WHERE MES工位号=@MES工位号 AND 是否启用=1)
|
||||
BEGIN
|
||||
ROLLBACK
|
||||
SELECT 2 result,N'工位未配置TCS点位' msg
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号)
|
||||
BEGIN
|
||||
ROLLBACK
|
||||
SELECT 2 result,N'外部任务编号已存在' msg
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF ISNULL(@原任务编号,N'')<>N''
|
||||
BEGIN
|
||||
DECLARE @原任务工位 nvarchar(50),@原任务状态 int,@原处理状态 int,@原任务已复位 bit
|
||||
SELECT @原任务工位=MES工位号,@原任务状态=任务状态,
|
||||
@原处理状态=处理状态,@原任务已复位=已复位
|
||||
FROM dbo.XD_TCS_AGV_任务 WITH(UPDLOCK,HOLDLOCK)
|
||||
WHERE 外部任务编号=@原任务编号
|
||||
|
||||
IF @原任务工位 IS NULL
|
||||
BEGIN
|
||||
ROLLBACK
|
||||
SELECT 2 result,N'原失败任务不存在' msg
|
||||
RETURN
|
||||
END
|
||||
IF @原任务状态 NOT IN(4,5) OR ISNULL(@原处理状态,0)<>0
|
||||
BEGIN
|
||||
ROLLBACK
|
||||
SELECT 2 result,N'原任务不是待处理的失败任务' msg
|
||||
RETURN
|
||||
END
|
||||
IF ISNULL(@原任务已复位,0)<>1
|
||||
BEGIN
|
||||
ROLLBACK
|
||||
SELECT 2 result,N'请先复位原失败任务对应的移动机器人' msg
|
||||
RETURN
|
||||
END
|
||||
IF @原任务工位<>@MES工位号
|
||||
BEGIN
|
||||
ROLLBACK
|
||||
SELECT 2 result,N'恢复任务工位必须与原失败任务一致' msg
|
||||
RETURN
|
||||
END
|
||||
END
|
||||
|
||||
-- MES允许各工位独立下发任务,排队与执行顺序由TCS调度。
|
||||
|
||||
DECLARE @现场位置 nvarchar(50),@TCS站点 nvarchar(50)
|
||||
SELECT @现场位置=现场位置,@TCS站点=WorkStation
|
||||
FROM dbo.XD_TCS_AGV_点位配置 WHERE MES工位号=@MES工位号 AND 是否启用=1
|
||||
|
||||
INSERT INTO dbo.XD_TCS_AGV_任务
|
||||
(外部任务编号,原任务编号,MES工位号,现场位置,TCS站点,任务动作,产品型号,动作组合,ProgramName,任务类型,参数,
|
||||
优先级,机器人组,机器人IP,来源,操作人,是否通知PLC)
|
||||
VALUES
|
||||
(@外部任务编号,NULLIF(@原任务编号,N''),@MES工位号,@现场位置,@TCS站点,@任务动作,NULLIF(@产品型号,N''),NULLIF(@动作组合,N''),NULLIF(@ProgramName,N''),
|
||||
@任务类型,@参数,@优先级,@机器人组,@机器人IP,@来源,@操作人,@是否通知PLC)
|
||||
|
||||
DECLARE @ID bigint=SCOPE_IDENTITY()
|
||||
COMMIT
|
||||
SELECT 1 result,N'任务已创建' msg,@ID ID,@外部任务编号 外部任务编号
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_下发结果更新
|
||||
@外部任务编号 nvarchar(100),
|
||||
@请求报文 nvarchar(max)=N'',
|
||||
@响应报文 nvarchar(max)=N'',
|
||||
@是否成功 bit,
|
||||
@错误信息 nvarchar(2000)=N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
UPDATE dbo.XD_TCS_AGV_任务 SET
|
||||
请求报文=@请求报文,响应报文=@响应报文,
|
||||
任务状态=CASE WHEN @是否成功=1 THEN 0 ELSE 4 END,
|
||||
状态说明=CASE WHEN @是否成功=1 THEN N'未开始' ELSE N'任务错误' END,
|
||||
错误信息=NULLIF(@错误信息,N''),更新时间=GETDATE()
|
||||
WHERE 外部任务编号=@外部任务编号
|
||||
|
||||
SELECT CASE WHEN @@ROWCOUNT=1 THEN 1 ELSE 2 END result
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_状态更新
|
||||
@外部任务编号 nvarchar(100),
|
||||
@任务状态 int,
|
||||
@机器人IP nvarchar(50)=N'',
|
||||
@任务类型 nvarchar(50)=N'',
|
||||
@开始时间 nvarchar(50)=N'',
|
||||
@结束时间 nvarchar(50)=N'',
|
||||
@备注 nvarchar(1000)=N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
IF @任务状态 NOT IN(0,1,2,3,4,5)
|
||||
BEGIN
|
||||
SELECT 2 result,N'任务状态不正确' msg
|
||||
RETURN
|
||||
END
|
||||
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号)
|
||||
BEGIN
|
||||
SELECT 2 result,N'外部任务编号不存在' msg
|
||||
RETURN
|
||||
END
|
||||
|
||||
DECLARE @原状态 int
|
||||
SELECT @原状态=任务状态 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号
|
||||
|
||||
IF (@原状态 IN(2,3,5) AND @任务状态<>@原状态)
|
||||
OR (@原状态=4 AND @任务状态 NOT IN(4,5))
|
||||
BEGIN
|
||||
SELECT 1 result,N'已忽略结束状态变更' msg,MES工位号,任务动作,是否通知PLC,PLC已通知
|
||||
FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号
|
||||
RETURN
|
||||
END
|
||||
|
||||
UPDATE dbo.XD_TCS_AGV_任务 SET
|
||||
任务状态=@任务状态,
|
||||
状态说明=CASE @任务状态 WHEN 0 THEN N'未开始' WHEN 1 THEN N'进行中' WHEN 2 THEN N'已完成' WHEN 3 THEN N'已取消' WHEN 4 THEN N'任务错误' ELSE N'任务错误(已处理)' END,
|
||||
机器人IP=CASE WHEN @机器人IP=N'' THEN 机器人IP ELSE @机器人IP END,
|
||||
任务类型=CASE WHEN @任务类型=N'' THEN 任务类型 ELSE @任务类型 END,
|
||||
开始时间=CASE WHEN @开始时间=N'' THEN 开始时间 ELSE @开始时间 END,
|
||||
结束时间=CASE WHEN @结束时间=N'' THEN 结束时间 ELSE @结束时间 END,
|
||||
TCS备注=NULLIF(@备注,N''),
|
||||
错误信息=CASE WHEN @任务状态=4 THEN NULLIF(@备注,N'') ELSE 错误信息 END,
|
||||
已复位=CASE WHEN @任务状态=5 THEN 1 ELSE 已复位 END,
|
||||
更新时间=GETDATE()
|
||||
WHERE 外部任务编号=@外部任务编号
|
||||
|
||||
SELECT 1 result,N'状态已更新' msg,MES工位号,任务动作,是否通知PLC,PLC已通知
|
||||
FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_PLC通知完成
|
||||
@外部任务编号 nvarchar(100)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
UPDATE dbo.XD_TCS_AGV_任务 SET PLC已通知=1,更新时间=GETDATE()
|
||||
WHERE 外部任务编号=@外部任务编号 AND 任务状态=2
|
||||
SELECT CASE WHEN @@ROWCOUNT=1 THEN 1 ELSE 2 END result
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_获取
|
||||
@外部任务编号 nvarchar(100)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT * FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_人工处理
|
||||
@外部任务编号 nvarchar(100),
|
||||
@处理人 nvarchar(50)=N'',
|
||||
@处理说明 nvarchar(1000)=N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号 AND 任务状态 IN(4,5))
|
||||
BEGIN
|
||||
SELECT 2 result,N'仅任务错误状态可以标记人工处理' msg
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号 AND 已复位=1)
|
||||
BEGIN
|
||||
SELECT 2 result,N'请先复位移动机器人再完成人工处理' msg
|
||||
RETURN
|
||||
END
|
||||
|
||||
UPDATE dbo.XD_TCS_AGV_任务 SET 处理状态=1,处理人=@处理人,处理时间=GETDATE(),处理说明=@处理说明,更新时间=GETDATE()
|
||||
WHERE 外部任务编号=@外部任务编号
|
||||
SELECT 1 result,N'已标记人工处理' msg
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_复位标记
|
||||
@外部任务编号 nvarchar(100)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
UPDATE dbo.XD_TCS_AGV_任务 SET 已复位=1,更新时间=GETDATE()
|
||||
WHERE 外部任务编号=@外部任务编号 AND 任务状态 IN(4,5)
|
||||
SELECT CASE WHEN @@ROWCOUNT=1 THEN 1 ELSE 2 END result,
|
||||
CASE WHEN @@ROWCOUNT=1 THEN N'复位状态已记录' ELSE N'未找到对应失败任务' END msg
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_本地状态设置
|
||||
@外部任务编号 nvarchar(100),
|
||||
@任务状态 int,
|
||||
@状态说明 nvarchar(50),
|
||||
@错误信息 nvarchar(2000)=N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
UPDATE dbo.XD_TCS_AGV_任务 SET 任务状态=@任务状态,状态说明=@状态说明,
|
||||
错误信息=NULLIF(@错误信息,N''),更新时间=GETDATE()
|
||||
WHERE 外部任务编号=@外部任务编号
|
||||
SELECT CASE WHEN @@ROWCOUNT=1 THEN 1 ELSE 2 END result
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_分页查询
|
||||
@开始时间 nvarchar(50)=N'',
|
||||
@结束时间 nvarchar(50)=N'',
|
||||
@MES工位号 nvarchar(50)=N'',
|
||||
@外部任务编号 nvarchar(100)=N'',
|
||||
@任务动作 nvarchar(20)=N'',
|
||||
@任务状态 nvarchar(10)=N'',
|
||||
@来源 nvarchar(20)=N'',
|
||||
@PageCurrent int=1,
|
||||
@PageSize int=20,
|
||||
@PageCount int output,
|
||||
@ItemCount int output
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
DECLARE @where nvarchar(2000)=N'1=1'
|
||||
IF @开始时间<>N'' SET @where+=N' AND 创建时间>='''+REPLACE(@开始时间,'''','''''')+N''''
|
||||
IF @结束时间<>N'' SET @where+=N' AND 创建时间<='''+REPLACE(@结束时间,'''','''''')+N''''
|
||||
IF @MES工位号<>N'' SET @where+=N' AND MES工位号='''+REPLACE(@MES工位号,'''','''''')+N''''
|
||||
IF @外部任务编号<>N'' SET @where+=N' AND 外部任务编号 LIKE ''%'+REPLACE(@外部任务编号,'''','''''')+N'%'''
|
||||
IF @任务动作<>N'' SET @where+=N' AND 任务动作='''+REPLACE(@任务动作,'''','''''')+N''''
|
||||
IF @任务状态<>N'' SET @where+=N' AND 任务状态='+CONVERT(nvarchar(10),CONVERT(int,@任务状态))
|
||||
IF @来源<>N'' SET @where+=N' AND 来源='''+REPLACE(@来源,'''','''''')+N''''
|
||||
|
||||
EXEC sp_xt_pagesplit N'XD_TCS_AGV_任务',N'ID',@where,
|
||||
N'ID,外部任务编号,原任务编号,MES工位号,现场位置,TCS站点,任务动作,产品型号,动作组合,ProgramName,任务类型,优先级,机器人组,机器人IP,来源,操作人,任务状态,状态说明,开始时间,结束时间,TCS备注,错误信息,是否通知PLC,PLC已通知,处理状态,已复位,处理人,处理时间,处理说明,创建时间,更新时间',
|
||||
N'ID DESC',@PageCurrent,@PageSize,@PageCount output,@ItemCount output
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_详情查询
|
||||
@外部任务编号 nvarchar(100)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT * FROM dbo.XD_TCS_AGV_任务 WHERE 外部任务编号=@外部任务编号
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_当前查询
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT TOP 1 * FROM dbo.XD_TCS_AGV_任务
|
||||
WHERE 任务状态=1
|
||||
ORDER BY 更新时间 DESC,ID DESC
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_任务_概览查询
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT
|
||||
ISNULL(SUM(CASE WHEN 任务状态=0 THEN 1 ELSE 0 END),0) 待执行数量,
|
||||
ISNULL(SUM(CASE WHEN 任务状态=1 THEN 1 ELSE 0 END),0) 进行中数量,
|
||||
ISNULL(SUM(CASE WHEN 任务状态 IN(4,5) AND 处理状态=0 THEN 1 ELSE 0 END),0) 失败待处理数量
|
||||
FROM dbo.XD_TCS_AGV_任务
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_工位日志_分页查询
|
||||
@MES工位号 nvarchar(50)=N'',
|
||||
@日志类型 nvarchar(50)=N'',
|
||||
@日志文本 nvarchar(200)=N'',
|
||||
@开始时间 nvarchar(50)=N'',
|
||||
@结束时间 nvarchar(50)=N'',
|
||||
@PageCurrent int=1,
|
||||
@PageSize int=20,
|
||||
@PageCount int OUTPUT,
|
||||
@ItemCount int OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1
|
||||
IF ISNULL(@PageSize,0)<1 SET @PageSize=20
|
||||
|
||||
DECLARE @开始 datetime=TRY_CONVERT(datetime,NULLIF(@开始时间,N''))
|
||||
DECLARE @结束 datetime=TRY_CONVERT(datetime,NULLIF(@结束时间,N''))
|
||||
|
||||
SELECT @ItemCount=COUNT(1)
|
||||
FROM dbo.MES_系统日志 L
|
||||
WHERE EXISTS
|
||||
(
|
||||
SELECT 1 FROM dbo.XD_TCS_AGV_点位配置 P
|
||||
WHERE P.MES工位号=L.工位号 AND P.是否启用=1
|
||||
)
|
||||
AND (@MES工位号=N'' OR L.工位号=@MES工位号)
|
||||
AND (@日志类型=N'' OR L.日志类型=@日志类型)
|
||||
AND (@日志文本=N'' OR L.日志文本 LIKE N'%'+@日志文本+N'%')
|
||||
AND (@开始 IS NULL OR L.操作时间>=@开始)
|
||||
AND (@结束 IS NULL OR L.操作时间<=@结束)
|
||||
|
||||
SET @PageCount=CASE WHEN @ItemCount=0 THEN 0 ELSE CEILING(@ItemCount*1.0/@PageSize) END
|
||||
|
||||
SELECT L.ID,L.工位号,L.日志类型,L.日志文本,L.操作时间
|
||||
FROM dbo.MES_系统日志 L
|
||||
WHERE EXISTS
|
||||
(
|
||||
SELECT 1 FROM dbo.XD_TCS_AGV_点位配置 P
|
||||
WHERE P.MES工位号=L.工位号 AND P.是否启用=1
|
||||
)
|
||||
AND (@MES工位号=N'' OR L.工位号=@MES工位号)
|
||||
AND (@日志类型=N'' OR L.日志类型=@日志类型)
|
||||
AND (@日志文本=N'' OR L.日志文本 LIKE N'%'+@日志文本+N'%')
|
||||
AND (@开始 IS NULL OR L.操作时间>=@开始)
|
||||
AND (@结束 IS NULL OR L.操作时间<=@结束)
|
||||
ORDER BY L.操作时间 DESC,L.ID DESC
|
||||
OFFSET (@PageCurrent-1)*@PageSize ROWS FETCH NEXT @PageSize ROWS ONLY
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_位置_更新
|
||||
@机器人IP nvarchar(50)=N'',
|
||||
@当前站点 nvarchar(100)=N'',
|
||||
@目标站点 nvarchar(100)=N'',
|
||||
@原始报文 nvarchar(max)=N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
IF EXISTS(SELECT 1 FROM dbo.XD_TCS_AGV_位置状态 WHERE ID=1)
|
||||
UPDATE dbo.XD_TCS_AGV_位置状态 SET 机器人IP=@机器人IP,当前站点=@当前站点,目标站点=@目标站点,原始报文=@原始报文,更新时间=GETDATE() WHERE ID=1
|
||||
ELSE
|
||||
INSERT INTO dbo.XD_TCS_AGV_位置状态(ID,机器人IP,当前站点,目标站点,原始报文) VALUES(1,@机器人IP,@当前站点,@目标站点,@原始报文)
|
||||
SELECT 1 result
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_位置_查询
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT * FROM dbo.XD_TCS_AGV_位置状态 WHERE ID=1
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_操作记录_增加
|
||||
@外部任务编号 nvarchar(100)=N'',
|
||||
@MES工位号 nvarchar(50)=N'',
|
||||
@操作类型 nvarchar(50),
|
||||
@操作人 nvarchar(50)=N'',
|
||||
@请求报文 nvarchar(max)=N'',
|
||||
@响应报文 nvarchar(max)=N'',
|
||||
@是否成功 bit,
|
||||
@操作结果 nvarchar(1000)=N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
INSERT INTO dbo.XD_TCS_AGV_操作记录(外部任务编号,MES工位号,操作类型,操作人,请求报文,响应报文,是否成功,操作结果)
|
||||
VALUES(NULLIF(@外部任务编号,N''),NULLIF(@MES工位号,N''),@操作类型,@操作人,@请求报文,@响应报文,@是否成功,@操作结果)
|
||||
SELECT 1 result
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_操作记录_分页查询
|
||||
@开始时间 nvarchar(50)=N'',
|
||||
@结束时间 nvarchar(50)=N'',
|
||||
@操作类型 nvarchar(50)=N'',
|
||||
@PageCurrent int=1,
|
||||
@PageSize int=20,
|
||||
@PageCount int output,
|
||||
@ItemCount int output
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
DECLARE @where nvarchar(1000)=N'1=1'
|
||||
IF @开始时间<>N'' SET @where+=N' AND 操作时间>='''+REPLACE(@开始时间,'''','''''')+N''''
|
||||
IF @结束时间<>N'' SET @where+=N' AND 操作时间<='''+REPLACE(@结束时间,'''','''''')+N''''
|
||||
IF @操作类型<>N'' SET @where+=N' AND 操作类型='''+REPLACE(@操作类型,'''','''''')+N''''
|
||||
EXEC sp_xt_pagesplit N'XD_TCS_AGV_操作记录',N'ID',@where,
|
||||
N'ID,外部任务编号,MES工位号,操作类型,操作人,是否成功,操作结果,操作时间',
|
||||
N'ID DESC',@PageCurrent,@PageSize,@PageCount output,@ItemCount output
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.XD_TCS_AGV_操作记录_任务查询
|
||||
@外部任务编号 nvarchar(100)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
SELECT ID,外部任务编号,MES工位号,操作类型,操作人,是否成功,操作结果,操作时间
|
||||
FROM dbo.XD_TCS_AGV_操作记录
|
||||
WHERE 外部任务编号=@外部任务编号
|
||||
ORDER BY ID DESC
|
||||
END
|
||||
GO
|
||||
Reference in New Issue
Block a user