USE [YL_MESDB]
GO

IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'公司编码') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [公司编码] nvarchar(100) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'设备信息') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [设备信息] nvarchar(500) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'使用部门') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [使用部门] nvarchar(100) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'入账日期') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [入账日期] date NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'单位') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [单位] nvarchar(50) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'数量') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [数量] decimal(18, 4) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'状态') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [状态] nvarchar(50) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'维修记录') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [维修记录] nvarchar(1000) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'维保记录') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [维保记录] nvarchar(1000) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'工位绑定') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [工位绑定] nvarchar(1000) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'主要设备') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [主要设备] nvarchar(10) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'设备标准开机工时') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [设备标准开机工时] decimal(18, 4) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'特种设备') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [特种设备] nvarchar(10) NULL
GO
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'证书有效期至') IS NULL
  ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [证书有效期至] date NULL
GO

ALTER PROCEDURE [dbo].[设备管理_设备信息_查询]
  @设备名称_check bit = NULL,
  @设备名称 nvarchar(50) = NULL,
  @设备类型_check bit = NULL,
  @设备类型 int = NULL
AS
BEGIN
  SET NOCOUNT ON;

  SELECT
    a.*,
    d.[词条名称] AS [设备类型名称]
  FROM [dbo].[基础数据_设备工位点检表] a
  LEFT JOIN [dbo].[YL_基础表_数据字典] d ON a.[设备类型] = d.[AID]
  WHERE (@设备名称_check IS NULL OR @设备名称_check = 0 OR a.[设备名称] LIKE N'%' + ISNULL(@设备名称, N'') + N'%')
    AND (@设备类型_check IS NULL OR @设备类型_check = 0 OR a.[设备类型] = CONVERT(nvarchar(50), @设备类型))
  ORDER BY
    CASE
      WHEN a.[证书有效期至] IS NOT NULL AND a.[证书有效期至] < CONVERT(date, GETDATE()) THEN 0
      WHEN a.[证书有效期至] IS NOT NULL AND a.[证书有效期至] <= DATEADD(day, 30, CONVERT(date, GETDATE())) THEN 1
      ELSE 2
    END,
    a.[证书有效期至],
    a.[设备流水号] DESC;
END
GO

ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
  @公司编码 nvarchar(100) = NULL,
  @设备名称 nvarchar(50) = NULL,
  @设备型号 nvarchar(50) = NULL,
  @设备类型 nvarchar(50) = NULL,
  @设备信息 nvarchar(500) = NULL,
  @使用部门 nvarchar(100) = NULL,
  @入账日期 date = NULL,
  @单位 nvarchar(50) = NULL,
  @数量 decimal(18, 4) = NULL,
  @状态 nvarchar(50) = NULL,
  @维修记录 nvarchar(1000) = NULL,
  @维保记录 nvarchar(1000) = NULL,
  @工位绑定 nvarchar(1000) = NULL,
  @主要设备 nvarchar(10) = NULL,
  @设备标准开机工时 decimal(18, 4) = NULL,
  @特种设备 nvarchar(10) = NULL,
  @证书有效期至 date = NULL
AS
BEGIN
  SET NOCOUNT ON;

  IF ISNULL(@公司编码, N'') = N''
  BEGIN
    SELECT '0' AS result, N'公司编码不能为空' AS message;
    RETURN;
  END

  INSERT INTO [dbo].[基础数据_设备工位点检表] (
    [公司编码],
    [设备名称],
    [设备型号],
    [设备类型],
    [设备信息],
    [使用部门],
    [入账日期],
    [单位],
    [数量],
    [状态],
    [维修记录],
    [维保记录],
    [工位绑定],
    [主要设备],
    [设备标准开机工时],
    [特种设备],
    [证书有效期至]
  )
  VALUES (
    @公司编码,
    @设备名称,
    @设备型号,
    @设备类型,
    @设备信息,
    @使用部门,
    @入账日期,
    @单位,
    @数量,
    @状态,
    @维修记录,
    @维保记录,
    @工位绑定,
    @主要设备,
    @设备标准开机工时,
    @特种设备,
    @证书有效期至
  );

  SELECT '1' AS result;
END
GO

ALTER PROCEDURE [dbo].[设备管理_设备信息_编辑]
  @设备流水号 int = NULL,
  @公司编码 nvarchar(100) = NULL,
  @设备名称 nvarchar(50) = NULL,
  @设备型号 nvarchar(50) = NULL,
  @设备类型 nvarchar(50) = NULL,
  @设备信息 nvarchar(500) = NULL,
  @使用部门 nvarchar(100) = NULL,
  @入账日期 date = NULL,
  @单位 nvarchar(50) = NULL,
  @数量 decimal(18, 4) = NULL,
  @状态 nvarchar(50) = NULL,
  @维修记录 nvarchar(1000) = NULL,
  @维保记录 nvarchar(1000) = NULL,
  @工位绑定 nvarchar(1000) = NULL,
  @主要设备 nvarchar(10) = NULL,
  @设备标准开机工时 decimal(18, 4) = NULL,
  @特种设备 nvarchar(10) = NULL,
  @证书有效期至 date = NULL
AS
BEGIN
  SET NOCOUNT ON;

  UPDATE [dbo].[基础数据_设备工位点检表]
  SET
    [设备名称] = @设备名称,
    [设备型号] = @设备型号,
    [设备类型] = @设备类型,
    [设备信息] = @设备信息,
    [使用部门] = @使用部门,
    [入账日期] = @入账日期,
    [单位] = @单位,
    [数量] = @数量,
    [状态] = @状态,
    [维修记录] = @维修记录,
    [维保记录] = @维保记录,
    [工位绑定] = @工位绑定,
    [主要设备] = @主要设备,
    [设备标准开机工时] = @设备标准开机工时,
    [特种设备] = @特种设备,
    [证书有效期至] = @证书有效期至
  WHERE [设备流水号] = @设备流水号;

  SELECT '1' AS result;
END
GO
