aggiunto progetto MapoDb...
This commit is contained in:
@@ -0,0 +1,616 @@
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
set ANSI_NULLS on;
|
||||
go
|
||||
|
||||
/*************************************
|
||||
* STORED PROCEDURE stp_ODL_updateChild
|
||||
* aggiorna le tabelle che dipendono dai dati dell'ODL
|
||||
*
|
||||
* modif.: S.E.L.
|
||||
* il: 2013.03.15
|
||||
**************************************/
|
||||
create PROCEDURE stp_ODL_updateChild
|
||||
(
|
||||
@IdxMacchina NVARCHAR(50),
|
||||
@IdxODL INT,
|
||||
@CodArticoloOld NVARCHAR(50),
|
||||
@DataInizioOld DATETIME,
|
||||
@DataFineOld DATETIME,
|
||||
@CodArticoloNew NVARCHAR(50),
|
||||
@DataInizioNew DATETIME,
|
||||
@DataFineNew DATETIME
|
||||
)
|
||||
AS
|
||||
|
||||
BEGIN TRAN
|
||||
|
||||
/*****************************************************************************************************
|
||||
* AGGIORNO TUTTO!
|
||||
* - DatiConfermati
|
||||
* - DatiMacchine
|
||||
* - DatiProduzione
|
||||
* - DiarioDiBordo
|
||||
* - EventList
|
||||
* - StatoMacchine
|
||||
* - TempiCicloRilevati
|
||||
*****************************************************************************************************/
|
||||
|
||||
-- DatiConfermati
|
||||
UPDATE DatiConfermati
|
||||
SET CodArticolo = @CodArticoloNew
|
||||
WHERE CodArticolo = @CodArticoloOld
|
||||
AND ( DataRif >= @DataInizioNew AND DataRif <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
|
||||
-- DatiMacchine
|
||||
UPDATE DatiMacchine
|
||||
SET kanban_A = CASE WHEN kanban_A = 'KA'+ @CodArticoloOLD THEN 'KA'+ @CodArticoloNew ELSE kanban_A END
|
||||
,kanban_B = CASE WHEN kanban_B = 'KA'+ @CodArticoloOLD THEN 'KA'+ @CodArticoloNew ELSE kanban_B END
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
|
||||
-- DatiProduzione
|
||||
UPDATE DatiProduzione
|
||||
SET CodArticolo = @CodArticoloNew
|
||||
,IdxODL = @IdxODL
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( DataRif >= @DataInizioNew AND DataRif <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
|
||||
-- DiarioDiBordo
|
||||
UPDATE DiarioDiBordo
|
||||
SET KanbanCode = @CodArticoloNew
|
||||
,MatricolaKanban = 'KA'+@CodArticoloNew
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
AND KanbanCode = @CodArticoloOld
|
||||
|
||||
-- EventList
|
||||
UPDATE EventList
|
||||
SET MatricolaKanban = 'KA'+@CodArticoloNew
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
AND MatricolaKanban = 'KA'+@CodArticoloOld
|
||||
|
||||
-- StatoMacchine
|
||||
UPDATE StatoMacchine
|
||||
SET KanbanCode = @CodArticoloNew
|
||||
,MatricolaKanban = 'KA'+@CodArticoloNew
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
AND KanbanCode = @CodArticoloOld
|
||||
|
||||
-- TempiCicloRilevati
|
||||
UPDATE TempiCicloRilevati
|
||||
SET CodArticolo = @CodArticoloNew
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( DataOraRif >= @DataInizioNew AND DataOraRif <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
AND CodArticolo = @CodArticoloOld
|
||||
|
||||
COMMIT TRAN
|
||||
|
||||
|
||||
RETURN
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
set ANSI_NULLS on;
|
||||
go
|
||||
|
||||
/***************************************************
|
||||
* Trigger trg_ODL_updateMSE
|
||||
*
|
||||
* fa un refresh completo della MSE ad ogni intervento sull'ODL
|
||||
*
|
||||
* modificato: S.E.L.
|
||||
* 2013.03.14
|
||||
*
|
||||
***************************************************/
|
||||
create TRIGGER trg_ODL_updateAllChild
|
||||
ON ODL
|
||||
FOR UPDATE
|
||||
AS
|
||||
|
||||
-- dichiarazione variabili
|
||||
DECLARE @IdxMacchina NVARCHAR(50)
|
||||
DECLARE @IdxODL INT
|
||||
DECLARE @CodArtOld NVARCHAR(50)
|
||||
DECLARE @CodArtNew NVARCHAR(50)
|
||||
DECLARE @DataInizioOld DATETIME
|
||||
DECLARE @DataInizioNew DATETIME
|
||||
DECLARE @DataFineOld DATETIME
|
||||
DECLARE @DataFineNew DATETIME
|
||||
|
||||
-- calcolo valori articolo, date validità...
|
||||
SELECT @CodArtOld=CodArticolo, @DataInizioOld=DataInizio, @DataFineOld=DataFine FROM deleted
|
||||
SELECT @IdxODL=IdxODL, @IdxMacchina=IdxMacchina, @CodArtNew=CodArticolo, @DataInizioNew=DataInizio, @DataFineNew=DataFine FROM inserted
|
||||
|
||||
-- PRIMA REGOLA: proseguo SOLO SE la data inizio è NOT NULL
|
||||
IF(NOT (@DataInizioNew IS NULL))
|
||||
BEGIN
|
||||
|
||||
/***************************************************************
|
||||
* Eseguo SOLO SE:
|
||||
* - faccio un update del kanban e se il mio ODL ha un periodo di validità (inizio non nullo)
|
||||
* - cambia inizio periodo validità
|
||||
* - cambia fine validità (MA NON ERA NULL!!!)
|
||||
***************************************************************/
|
||||
IF( ( UPDATE(CodArticolo) AND @CodArtOld<>@CodArtNew ) OR ( UPDATE(DataInizio) AND @DataInizioOld<>@DataInizioNew ) OR ( UPDATE(DataFine) AND @DataFineOld<>@DataFineNew AND NOT (@DataFineOld IS NULL) ) )
|
||||
BEGIN
|
||||
exec stp_ODL_updateChild @IdxMacchina, @IdxODL, @CodArtOld, @DataInizioOld, @DataFineOld, @CodArtNew, @DataInizioNew, @DataFineNew
|
||||
END
|
||||
|
||||
END
|
||||
-- eseguo RICALCOLO tabella stato expl
|
||||
EXEC stp_MSE_getData 0
|
||||
go
|
||||
|
||||
/***************************************************
|
||||
* Trigger trg_ODL_updateMSE
|
||||
*
|
||||
* fa un refresh completo della MSE ad ogni insert di ODL
|
||||
*
|
||||
* modificato: S.E.L.
|
||||
* 2013.03.14
|
||||
*
|
||||
***************************************************/
|
||||
alter TRIGGER trg_ODL_updateMSE
|
||||
ON ODL
|
||||
FOR INSERT
|
||||
AS
|
||||
|
||||
-- eseguo RICALCOLO tabella stato expl
|
||||
EXEC stp_MSE_getData 0
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
set ANSI_NULLS on;
|
||||
go
|
||||
|
||||
/*************************************
|
||||
* STORED PROCEDURE stp_ODL_updateChild
|
||||
* aggiorna le tabelle che dipendono dai dati dell'ODL
|
||||
*
|
||||
* modif.: S.E.L.
|
||||
* il: 2013.03.15
|
||||
**************************************/
|
||||
alter PROCEDURE stp_ODL_updateChild
|
||||
(
|
||||
@IdxMacchina NVARCHAR(50),
|
||||
@IdxODL INT,
|
||||
@CodArticoloOld NVARCHAR(50),
|
||||
@DataInizioOld DATETIME,
|
||||
@DataFineOld DATETIME,
|
||||
@CodArticoloNew NVARCHAR(50),
|
||||
@DataInizioNew DATETIME,
|
||||
@DataFineNew DATETIME
|
||||
)
|
||||
AS
|
||||
|
||||
BEGIN TRAN
|
||||
|
||||
/*****************************************************************************************************
|
||||
* AGGIORNO TUTTO!
|
||||
* - DatiConfermati
|
||||
* - DatiMacchine
|
||||
* - DatiProduzione
|
||||
* - DiarioDiBordo
|
||||
* - EventList
|
||||
* - StatoMacchine
|
||||
* - TempiCicloRilevati
|
||||
*****************************************************************************************************/
|
||||
|
||||
-- DatiConfermati
|
||||
UPDATE DatiConfermati
|
||||
SET CodArticolo = @CodArticoloNew
|
||||
WHERE CodArticolo = @CodArticoloOld
|
||||
AND ( DataRif >= @DataInizioNew AND DataRif <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
|
||||
-- DatiMacchine, SOLO SE è ODL corrente
|
||||
IF(@DataFineNew IS NULL)
|
||||
BEGIN
|
||||
UPDATE DatiMacchine
|
||||
SET kanban_A = CASE WHEN kanban_A = 'KA'+ @CodArticoloOLD THEN 'KA'+ @CodArticoloNew ELSE kanban_A END
|
||||
,kanban_B = CASE WHEN kanban_B = 'KA'+ @CodArticoloOLD THEN 'KA'+ @CodArticoloNew ELSE kanban_B END
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
END
|
||||
|
||||
-- DatiProduzione
|
||||
UPDATE DatiProduzione
|
||||
SET CodArticolo = @CodArticoloNew
|
||||
,IdxODL = @IdxODL
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( DataRif >= @DataInizioNew AND DataRif <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
|
||||
-- DiarioDiBordo
|
||||
UPDATE DiarioDiBordo
|
||||
SET KanbanCode = @CodArticoloNew
|
||||
,MatricolaKanban = 'KA'+@CodArticoloNew
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
AND KanbanCode = @CodArticoloOld
|
||||
|
||||
-- EventList
|
||||
UPDATE EventList
|
||||
SET MatricolaKanban = 'KA'+@CodArticoloNew
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
AND MatricolaKanban = 'KA'+@CodArticoloOld
|
||||
|
||||
-- StatoMacchine
|
||||
UPDATE StatoMacchine
|
||||
SET KanbanCode = @CodArticoloNew
|
||||
,MatricolaKanban = 'KA'+@CodArticoloNew
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( InizioStato >= @DataInizioNew AND InizioStato <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
AND KanbanCode = @CodArticoloOld
|
||||
|
||||
-- TempiCicloRilevati
|
||||
UPDATE TempiCicloRilevati
|
||||
SET CodArticolo = @CodArticoloNew
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
AND ( DataOraRif >= @DataInizioNew AND DataOraRif <= ISNULL(@DataFineNew, GETDATE()) )
|
||||
AND CodArticolo = @CodArticoloOld
|
||||
|
||||
COMMIT TRAN
|
||||
|
||||
|
||||
RETURN
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
drop trigger trg_ODL_updateMSE;
|
||||
go
|
||||
|
||||
set xact_abort on;
|
||||
go
|
||||
|
||||
begin transaction;
|
||||
go
|
||||
|
||||
set ANSI_NULLS on;
|
||||
go
|
||||
|
||||
/*************************************
|
||||
* STORED PROCEDURE stp_MSE_getData
|
||||
* tabella stato attuale macchine (da mostrare)
|
||||
*
|
||||
* modif.: S.E.L. - 2013.02.28
|
||||
**************************************/
|
||||
alter PROCEDURE stp_MSE_getData
|
||||
(
|
||||
@maxAgeSec INT -- soglia di "vecchiaia" del dato massima accettabile dopo cui parte ricalcolo, in millisec, se < 1000 ignoro!
|
||||
)
|
||||
AS
|
||||
|
||||
-- cerco dato + recente
|
||||
DECLARE @adesso DATETIME = GETDATE()
|
||||
DECLARE @lastUpdate DATETIME
|
||||
|
||||
SELECT TOP 1 @lastUpdate=ISNULL(lastUpdate, '2000/01/01') FROM MappaStatoExpl ORDER BY lastUpdate DESC
|
||||
SELECT @lastUpdate= ISNULL(@lastUpdate, '2000/01/01')
|
||||
|
||||
-- solo se sup ai 1000 ms! oppure zero...
|
||||
IF(@maxAgeSec > 1000 OR @maxAgeSec=0)
|
||||
BEGIN
|
||||
-- dato vecchio! aggiorno!
|
||||
IF(DATEDIFF(s,@lastUpdate,@adesso)*1000 > @maxAgeSec)
|
||||
BEGIN
|
||||
-- truncate table precedente
|
||||
TRUNCATE TABLE MappaStatoExpl
|
||||
|
||||
;WITH cteODL AS
|
||||
(
|
||||
SELECT TOP 1 * FROM ODL
|
||||
WHERE IdxODL IN
|
||||
(
|
||||
SELECT IdxODL
|
||||
FROM ODL
|
||||
WHERE DataFine IS NULL
|
||||
|
||||
UNION
|
||||
|
||||
SELECT MAX(IdxODL)
|
||||
FROM ODL
|
||||
GROUP BY IdxMacchina
|
||||
)
|
||||
)
|
||||
-- inserisco di nuovo i dati
|
||||
INSERT INTO MappaStatoExpl(lastUpdate, IdxMacchina, CodMacchina, Nome, url, IdxODL, CodArticolo, NumPezzi, TCAssegnato, DataInizioODL)
|
||||
SELECT @adesso, ma.IdxMacchina, ma.CodMacchina, ma.Nome, url, ISNULL(o.IdxODL,0), ISNULL(o.CodArticolo,'-'), ISNULL(o.NumPezzi,0), ISNULL(o.TCAssegnato,0), ISNULL(o.DataInizio,'2000/01/01')
|
||||
FROM Macchine ma LEFT OUTER JOIN cteODL o ON ma.IdxMacchina=o.IdxMacchina
|
||||
WHERE NOT (locazione IS NULL)
|
||||
--AND ( (ISNULL(o.IdxODL,0) = 0) OR ((o.DataFine IS NULL) AND NOT (o.DataInizio IS NULL)) )
|
||||
ORDER BY ma.locazione
|
||||
|
||||
-- dichiaro le 2 table variables che userò x caricare i dati di stato
|
||||
DECLARE @tvStato TABLE (
|
||||
IdxMacchina INT NULL,
|
||||
idxStato INT NULL,
|
||||
DescrizioneStato NVARCHAR(50),
|
||||
Semaforo NVARCHAR(50),
|
||||
Minuti INT NULL
|
||||
)
|
||||
DECLARE @tvODL TABLE (
|
||||
IdxODL INT NULL,
|
||||
CodArticolo NVARCHAR(50),
|
||||
DescArticolo NVARCHAR(50),
|
||||
IdxMacchina INT NULL,
|
||||
CodMacchina NVARCHAR(50),
|
||||
Nome NVARCHAR(50),
|
||||
NumPezzi INT NULL,
|
||||
TCAssegnato DECIMAL(18,8),
|
||||
DataInizio DATETIME,
|
||||
DataFine DATETIME
|
||||
)
|
||||
DECLARE @tvProd TABLE (
|
||||
IdxMacchina INT NULL,
|
||||
CodArticolo NVARCHAR(50),
|
||||
PezziLanciati INT NULL,
|
||||
PezziProd INT NULL,
|
||||
PezziConf INT NULL,
|
||||
TCAssegnato DECIMAL(18,8),
|
||||
CodOperatore INT NULL,
|
||||
TempoOn DECIMAL(18,8),
|
||||
TempoAuto DECIMAL(18,8),
|
||||
TempoRun DECIMAL(18,8),
|
||||
TCMedio DECIMAL(18,8),
|
||||
TCLav DECIMAL(18,8),
|
||||
TCEff DECIMAL(18,8),
|
||||
TCMedioRT DECIMAL(18,8),
|
||||
TCLavRT DECIMAL(18,8),
|
||||
TCEffRT DECIMAL(18,8)
|
||||
)
|
||||
|
||||
DECLARE @numRows INT = 0
|
||||
DECLARE @currRow INT = 1
|
||||
DECLARE @IdxMacchina INT = 0
|
||||
|
||||
SET @numRows = ISNULL((SELECT COUNT(*) FROM MappaStatoExpl),0)
|
||||
|
||||
-- carico altri dati con ciclo while
|
||||
WHILE (@currRow <= @numRows)
|
||||
BEGIN
|
||||
-- macchina corrente!
|
||||
SELECT @IdxMacchina = IdxMacchina FROM MappaStatoExpl WHERE RowNum = @currRow
|
||||
|
||||
-- popolo tab stati
|
||||
INSERT @tvStato(idxStato, Minuti)
|
||||
EXEC stp_repDonati_getLastStatoDurataMacchina @IdxMacchina, 0.1
|
||||
-- fix dati mancanti
|
||||
UPDATE tvs
|
||||
SET tvs.IdxMacchina = @IdxMacchina
|
||||
,tvs.Semaforo = s.Semaforo
|
||||
,tvs.DescrizioneStato = s.Descrizione
|
||||
FROM @tvStato tvs INNER JOIN AnagraficaStati s ON tvs.idxStato=s.IdxStato
|
||||
WHERE tvs.IdxMacchina IS NULL
|
||||
|
||||
-- popolo tab ODL
|
||||
INSERT @tvODL
|
||||
EXEC stp_ODL_getByMacchina @IdxMacchina
|
||||
|
||||
-- popolo tab pezzi/tempi
|
||||
INSERT @tvProd(CodArticolo,PezziLanciati,PezziProd,PezziConf,TCAssegnato,CodOperatore,TempoOn,TempoAuto,TempoRun,TCMedio,TCLav,TCEff,TCMedioRT,TCLavRT,TCEffRT )
|
||||
EXEC stp_repDonati_getDatiProdMacchina @IdxMacchina
|
||||
-- fix dati mancanti
|
||||
UPDATE tvp
|
||||
SET tvp.IdxMacchina = @IdxMacchina
|
||||
FROM @tvProd tvp
|
||||
WHERE tvp.IdxMacchina IS NULL
|
||||
|
||||
-- aggiorno contatore
|
||||
SET @currRow = @currRow + 1
|
||||
END
|
||||
-- aggiorno in blocco i valori x stato e pezzi prodotti
|
||||
UPDATE mse
|
||||
SET mse.idxStato = ISNULL(tvs.idxStato,0)
|
||||
,mse.durata = ISNULL(tvs.Minuti,0)
|
||||
,mse.Semaforo = ISNULL(tvs.Semaforo,'')
|
||||
,mse.DescrizioneStato = ISNULL(tvs.DescrizioneStato,'')
|
||||
FROM MappaStatoExpl mse INNER JOIN @tvStato tvs ON mse.IdxMacchina=tvs.IdxMacchina
|
||||
|
||||
-- aggiorno in blocco i valori x ODL
|
||||
UPDATE mse
|
||||
SET mse.TCAssegnato = ISNULL(tvo.TCAssegnato,0)
|
||||
,mse.NumPezzi = ISNULL(tvo.NumPezzi,0)
|
||||
,mse.DataInizioODL = ISNULL(tvo.DataInizio,'2000/01/01')
|
||||
FROM MappaStatoExpl mse INNER JOIN @tvODL tvo ON mse.IdxMacchina=tvo.IdxMacchina
|
||||
|
||||
-- aggiorno in blocco i valori x produzione
|
||||
UPDATE mse
|
||||
SET mse.PezziProd = ISNULL(tvp.PezziProd,0)
|
||||
,mse.PezziConf = ISNULL(tvp.PezziConf,0)
|
||||
,mse.TempoOn = ISNULL(tvp.TempoOn,0)
|
||||
,mse.TempoAuto = ISNULL(tvp.TempoAuto,0)
|
||||
,mse.TempoRun = ISNULL(tvp.TempoRun,0)
|
||||
,mse.TCMedio = ISNULL(tvp.TCMedio,0)
|
||||
,mse.TCLav = ISNULL(tvp.TCLav,0)
|
||||
,mse.TCEff = ISNULL(tvp.TCEff,0)
|
||||
,mse.TCMedioRT = ISNULL(tvp.TCMedioRT,0)
|
||||
,mse.TCLavRT = ISNULL(tvp.TCLavRT,0)
|
||||
,mse.TCEffRT = ISNULL(tvp.TCEffRT,0)
|
||||
FROM MappaStatoExpl mse INNER JOIN @tvProd tvp ON mse.IdxMacchina=tvp.IdxMacchina
|
||||
|
||||
END
|
||||
END
|
||||
-- restituisco la tabella finale
|
||||
SELECT *
|
||||
FROM MappaStatoExpl
|
||||
|
||||
RETURN
|
||||
go
|
||||
|
||||
/*************************************
|
||||
* STORED PROCEDURE stp_MSE_refresh
|
||||
* AGGIORNA tabella stato attuale macchine x macchina indicata
|
||||
*
|
||||
* modif.: S.E.L. - 2013.02.28
|
||||
**************************************/
|
||||
alter PROCEDURE stp_MSE_refresh
|
||||
(
|
||||
@IdxMacchina NVARCHAR(50) -- macchina da aggiornare
|
||||
)
|
||||
AS
|
||||
|
||||
--init variabili!
|
||||
DECLARE @adesso DATETIME = GETDATE()
|
||||
DECLARE @trovate INT = 0
|
||||
DECLARE @tvStato TABLE (
|
||||
idxStato INT NULL,
|
||||
DescrizioneStato NVARCHAR(50),
|
||||
Semaforo NVARCHAR(50),
|
||||
Minuti INT NULL
|
||||
)
|
||||
DECLARE @tvODL TABLE (
|
||||
IdxODL INT NULL,
|
||||
CodArticolo NVARCHAR(50),
|
||||
DescArticolo NVARCHAR(50),
|
||||
IdxMacchina INT NULL,
|
||||
CodMacchina NVARCHAR(50),
|
||||
Nome NVARCHAR(50),
|
||||
NumPezzi INT NULL,
|
||||
TCAssegnato DECIMAL(18,8),
|
||||
DataInizio DATETIME,
|
||||
DataFine DATETIME
|
||||
)
|
||||
DECLARE @tvProd TABLE (
|
||||
CodArticolo NVARCHAR(50),
|
||||
PezziLanciati INT NULL,
|
||||
PezziProd INT NULL,
|
||||
PezziConf INT NULL,
|
||||
TCAssegnato DECIMAL(18,8),
|
||||
CodOperatore INT NULL,
|
||||
TempoOn DECIMAL(18,8),
|
||||
TempoAuto DECIMAL(18,8),
|
||||
TempoRun DECIMAL(18,8),
|
||||
TCMedio DECIMAL(18,8),
|
||||
TCLav DECIMAL(18,8),
|
||||
TCEff DECIMAL(18,8),
|
||||
TCMedioRT DECIMAL(18,8),
|
||||
TCLavRT DECIMAL(18,8),
|
||||
TCEffRT DECIMAL(18,8)
|
||||
)
|
||||
|
||||
BEGIN
|
||||
-- controllo: se c'è riga macchina richiesta...
|
||||
SELECT @trovate=COUNT(*) FROM MappaStatoExpl WHERE IdxMacchina = @IdxMacchina
|
||||
|
||||
-- se NON c'è la creo...
|
||||
IF(@trovate = 0)
|
||||
BEGIN
|
||||
-- calcolo ODL
|
||||
;WITH cteODL AS
|
||||
(
|
||||
SELECT top 1 * FROM ODL
|
||||
WHERE IdxODL IN
|
||||
(
|
||||
SELECT IdxODL
|
||||
FROM ODL
|
||||
WHERE DataFine IS NULL
|
||||
AND (IdxMacchina = @IdxMacchina)
|
||||
|
||||
UNION
|
||||
|
||||
SELECT MAX(IdxODL)
|
||||
FROM ODL
|
||||
WHERE IdxMacchina = @IdxMacchina
|
||||
)
|
||||
)
|
||||
-- inserisco i nuovi dati
|
||||
INSERT INTO MappaStatoExpl(lastUpdate, IdxMacchina, CodMacchina, Nome, url, IdxODL, CodArticolo, NumPezzi, TCAssegnato, DataInizioODL)
|
||||
SELECT @adesso, ma.IdxMacchina, ma.CodMacchina, ma.Nome, url, ISNULL(o.IdxODL,0), ISNULL(o.CodArticolo,'-'), ISNULL(o.NumPezzi,0), ISNULL(o.TCAssegnato,0), ISNULL(o.DataInizio,'2000/01/01')
|
||||
FROM Macchine ma LEFT OUTER JOIN cteODL o ON ma.IdxMacchina=o.IdxMacchina
|
||||
WHERE ma.IdxMacchina = @IdxMacchina
|
||||
AND NOT (locazione IS NULL)
|
||||
--AND ( (ISNULL(o.IdxODL,0) = 0) OR ((o.DataFine IS NULL) AND NOT (o.DataInizio IS NULL)) )
|
||||
ORDER BY ma.locazione
|
||||
END
|
||||
|
||||
-- popolo tab stati
|
||||
INSERT @tvStato(idxStato, Minuti)
|
||||
EXEC stp_repDonati_getLastStatoDurataMacchina @IdxMacchina, 0.1
|
||||
-- fix dati mancanti
|
||||
UPDATE tvs
|
||||
SET tvs.Semaforo = s.Semaforo
|
||||
,tvs.DescrizioneStato = s.Descrizione
|
||||
FROM @tvStato tvs INNER JOIN AnagraficaStati s ON tvs.idxStato=s.IdxStato
|
||||
|
||||
-- popolo tab ODL
|
||||
INSERT @tvODL
|
||||
EXEC stp_ODL_getByMacchina @IdxMacchina
|
||||
|
||||
-- popolo tab pezzi/tempi
|
||||
INSERT @tvProd(CodArticolo,PezziLanciati,PezziProd,PezziConf,TCAssegnato,CodOperatore,TempoOn,TempoAuto,TempoRun,TCMedio,TCLav,TCEff,TCMedioRT,TCLavRT,TCEffRT )
|
||||
EXEC stp_repDonati_getDatiProdMacchina @IdxMacchina
|
||||
|
||||
-- aggiorno in blocco i valori
|
||||
UPDATE mse
|
||||
SET mse.lastUpdate = @adesso
|
||||
,mse.idxStato = ISNULL(tvs.idxStato,0)
|
||||
,mse.durata = ISNULL(tvs.Minuti,0)
|
||||
,mse.Semaforo = ISNULL(tvs.Semaforo,'')
|
||||
,mse.DescrizioneStato = ISNULL(tvs.DescrizioneStato,'')
|
||||
,mse.TCAssegnato = ISNULL(tvo.TCAssegnato,0)
|
||||
,mse.NumPezzi = ISNULL(tvo.NumPezzi,0)
|
||||
,mse.DataInizioODL = ISNULL(tvo.DataInizio,'2000/01/01')
|
||||
,mse.PezziProd = ISNULL(tvp.PezziProd,0)
|
||||
,mse.PezziConf = ISNULL(tvp.PezziConf,0)
|
||||
,mse.TempoOn = ISNULL(tvp.TempoOn,0)
|
||||
,mse.TempoAuto = ISNULL(tvp.TempoAuto,0)
|
||||
,mse.TempoRun = ISNULL(tvp.TempoRun,0)
|
||||
,mse.TCMedio = ISNULL(tvp.TCMedio,0)
|
||||
,mse.TCLav = ISNULL(tvp.TCLav,0)
|
||||
,mse.TCEff = ISNULL(tvp.TCEff,0)
|
||||
,mse.TCMedioRT = ISNULL(tvp.TCMedioRT,0)
|
||||
,mse.TCLavRT = ISNULL(tvp.TCLavRT,0)
|
||||
,mse.TCEffRT = ISNULL(tvp.TCEffRT,0)
|
||||
FROM MappaStatoExpl mse
|
||||
CROSS JOIN @tvStato tvs
|
||||
CROSS JOIN @tvODL tvo
|
||||
CROSS JOIN @tvProd tvp
|
||||
WHERE mse.Idxmacchina = @IdxMacchina
|
||||
|
||||
END
|
||||
|
||||
RETURN
|
||||
go
|
||||
|
||||
commit;
|
||||
go
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- registro versione...
|
||||
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(380, GETDATE())
|
||||
GO
|
||||
|
||||
SELECT TOP 10 * FROM LogUpdateDb ORDER BY Versione DESC
|
||||
GO
|
||||
Reference in New Issue
Block a user