258 lines
6.3 KiB
Transact-SQL
258 lines
6.3 KiB
Transact-SQL
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
drop table TempiCicloRilevati
|
|
go
|
|
|
|
create table TempiCicloRilevati(
|
|
IdxMacchina nvarchar(50) not null,
|
|
CodArticolo nvarchar(50) not null,
|
|
DataOraRif datetime not null,
|
|
TCMedio decimal(18,8) not null constraint DF_TempiCicloRilevati_TempoMedio default (1),
|
|
PzProd int not null constraint DF_TempiCicloRilevati_PzProd default (1),
|
|
|
|
constraint PK_TempiCicloRilevati primary key(IdxMacchina,CodArticolo,DataOraRif)
|
|
)
|
|
go
|
|
|
|
alter table TempiCicloRilevati add
|
|
constraint FK_TempiCicloRilevati_Macchine foreign key(IdxMacchina) references Macchine(IdxMacchina) on update cascade
|
|
go
|
|
|
|
drop table TempiCicloTeorici
|
|
go
|
|
|
|
create table TempiCicloTeorici(
|
|
IdxMacchina nvarchar(50) not null,
|
|
CodArticolo nvarchar(50) not null,
|
|
DataOraFrom datetime not null,
|
|
DataOraTo datetime,
|
|
TCAssegnato decimal(18,8) not null constraint DF_TempiCicloTeorici_TempoMedio default (1),
|
|
|
|
constraint PK_TempiCicloTeorici primary key(IdxMacchina,CodArticolo,DataOraFrom)
|
|
)
|
|
go
|
|
|
|
alter table TempiCicloTeorici add
|
|
constraint FK_TempiCicloTeorici_Macchine foreign key(IdxMacchina) references Macchine(IdxMacchina) on update cascade
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
INSERT INTO dbo.AnagraficaEventi
|
|
VALUES (20, N'Contapezzi')
|
|
go
|
|
|
|
commit transaction
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
alter table Kanban add
|
|
CodArticolo nvarchar(50)
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
alter table AnagraficaEventi add
|
|
TabAzione nvarchar(50) constraint DF_AnagraficaEventi_TabAzione default (''),
|
|
Azione nvarchar(50) constraint DF_AnagraficaEventi_Azione default ('')
|
|
go
|
|
|
|
update AnagraficaEventi set TabAzione='',Azione=''
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
create TRIGGER trg_doActions
|
|
ON EventList
|
|
FOR INSERT
|
|
AS
|
|
|
|
/* dichiarazione variabili */
|
|
DECLARE @IdxTipo INT
|
|
DECLARE @TabAzione NVARCHAR(50)
|
|
DECLARE @Azione NVARCHAR(50)
|
|
DECLARE @IdxMacchina NVARCHAR(50)
|
|
DECLARE @MatricolaKanban NVARCHAR(50)
|
|
DECLARE @CodArticolo NVARCHAR(50)
|
|
DECLARE @TCMedio DECIMAL(18,8)
|
|
DECLARE @DataOra DATETIME
|
|
DECLARE @DataOraPrec DATETIME
|
|
|
|
|
|
/* recupero valori dell'INSERT */
|
|
SET @IdxTipo = ( SELECT i.IdxTipo FROM inserted i )
|
|
SET @IdxMacchina = ( SELECT i.IdxMacchina FROM inserted i )
|
|
/* recupero altri valori */
|
|
SET @TabAzione = ( SELECT ISNULL(TabAzione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
|
|
SET @Azione = ( SELECT ISNULL(Azione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
|
|
/* controllo se l'evento richieda azioni successive */
|
|
IF(@TabAzione <> '' AND @Azione <> '')
|
|
BEGIN
|
|
/* azioni richieste: seconda dei casi eseguo... */
|
|
IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Insert')
|
|
BEGIN
|
|
/* calcolo valori */
|
|
SET @DataOra = ( SELECT i.InizioStato FROM inserted i )
|
|
SET @MatricolaKanban = ( SELECT i.MatricolaKanban FROM inserted i )
|
|
SET @CodArticolo = ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanban )
|
|
/* calcolo tempo tra gli ultimi 2 eventi "contapezzi" */
|
|
SET @DataOraPrec = ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
|
|
/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
|
|
SET @TCMedio = ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
|
|
/* inserisco riga di tempo ciclo */
|
|
INSERT INTO TempiCicloRilevati
|
|
VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, 1)
|
|
END
|
|
END
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
UPDATE dbo.AnagraficaEventi SET
|
|
TabAzione=N'TempiCicloRilevati', Azione=N'Insert'
|
|
WHERE IdxTipo=20
|
|
go
|
|
|
|
commit transaction
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
alter TRIGGER trg_doActions
|
|
ON EventList
|
|
FOR INSERT
|
|
AS
|
|
|
|
/* dichiarazione variabili */
|
|
DECLARE @IdxTipo INT
|
|
DECLARE @TabAzione NVARCHAR(50)
|
|
DECLARE @Azione NVARCHAR(50)
|
|
DECLARE @IdxMacchina NVARCHAR(50)
|
|
DECLARE @MatricolaKanban NVARCHAR(50)
|
|
DECLARE @CodArticolo NVARCHAR(50)
|
|
DECLARE @TCMedio DECIMAL(18,8)
|
|
DECLARE @DataOra DATETIME
|
|
DECLARE @DataOraPrec DATETIME
|
|
DECLARE @NumPz INT
|
|
|
|
|
|
/* recupero valori dell'INSERT */
|
|
SET @IdxTipo = ( SELECT i.IdxTipo FROM inserted i )
|
|
SET @IdxMacchina = ( SELECT i.IdxMacchina FROM inserted i )
|
|
/* recupero altri valori */
|
|
SET @TabAzione = ( SELECT ISNULL(TabAzione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
|
|
SET @Azione = ( SELECT ISNULL(Azione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
|
|
/* controllo se l'evento richieda azioni successive */
|
|
IF(@TabAzione <> '' AND @Azione <> '')
|
|
BEGIN
|
|
/* azioni richieste: seconda dei casi eseguo... */
|
|
IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Insert')
|
|
BEGIN
|
|
/* calcolo valori */
|
|
SET @DataOra = ( SELECT i.InizioStato FROM inserted i )
|
|
SET @MatricolaKanban = ( SELECT i.MatricolaKanban FROM inserted i )
|
|
SET @NumPz = ( SELECT CASE WHEN (ISNUMERIC(value)=1) THEN value ELSE 1 END FROM inserted i )
|
|
SET @CodArticolo = ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanban )
|
|
/* calcolo tempo tra gli ultimi 2 eventi "contapezzi" */
|
|
SET @DataOraPrec = ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
|
|
/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
|
|
SET @TCMedio = ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
|
|
/* inserisco riga di tempo ciclo */
|
|
INSERT INTO TempiCicloRilevati
|
|
VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, @NumPz)
|
|
END
|
|
END
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/*************************************
|
|
* STORED PROCEDURE stp_TC_getByMacchinaPeriodo
|
|
* recupera tempi ciclo x machcian e periodo
|
|
*
|
|
* modif.: S.E.L. - 2010.12.15
|
|
**************************************/
|
|
create PROCEDURE stp_TC_getByMacchinaPeriodo
|
|
(
|
|
@IdxMacchina NVARCHAR(50),
|
|
@Inizio DATETIME,
|
|
@Fine DATETIME
|
|
)
|
|
AS
|
|
|
|
SELECT * FROM TempiCicloRilevati
|
|
WHERE IdxMacchina = @IdxMacchina AND
|
|
(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine)
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- registro versione...
|
|
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(25, GETDATE())
|
|
GO |