194 lines
5.6 KiB
Transact-SQL
194 lines
5.6 KiB
Transact-SQL
set xact_abort on;
|
|
go
|
|
|
|
begin transaction;
|
|
go
|
|
|
|
set ANSI_NULLS on;
|
|
go
|
|
|
|
/*************************************
|
|
* STORED PROCEDURE stp_MSE_getByIdxMacchina
|
|
* ottiene riga stato x macchina indicata
|
|
*
|
|
* modif.: S.E.L. - 2013.03.15
|
|
**************************************/
|
|
create PROCEDURE stp_MSE_getByIdxMacchina
|
|
(
|
|
@IdxMacchina nvarchar(50)
|
|
)
|
|
AS
|
|
SET NOCOUNT ON;
|
|
SELECT RowNum, lastUpdate, IdxMacchina, CodMacchina, Nome, url, idxODL, CodArticolo, NumPezzi, TCAssegnato, DataInizioODL, Semaforo, idxStato, DescrizioneStato, durata, PezziProd, PezziConf, TempoOn, TempoAuto, TempoRun, TCMedio, TCLav, TCEff, TCMedioRT, TCLavRT, TCEffRT
|
|
FROM dbo.MappaStatoExpl
|
|
WHERE IdxMacchina=@IdxMacchina
|
|
go
|
|
|
|
commit;
|
|
go
|
|
|
|
|
|
set xact_abort on;
|
|
go
|
|
|
|
begin transaction;
|
|
go
|
|
|
|
set ANSI_NULLS on;
|
|
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.IdxODL = ISNULL(tvo.IdxODL,0)
|
|
,mse.CodArticolo = ISNULL(tvo.CodArticolo,0)
|
|
,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(385, GETDATE())
|
|
GO
|
|
|
|
SELECT TOP 10 * FROM LogUpdateDb ORDER BY Versione DESC
|
|
GO |