﻿set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*************************************
* STORED PROCEDURE stp_TC_getMaxByMacchinaPeriodo
* 	recupera tempi ciclo x macchina e periodo
*
* modif.:	S.E.L. - 2010.12.15
**************************************/
create PROCEDURE stp_TC_getMaxByMacchinaPeriodo
(
	@IdxMacchina NVARCHAR(50),
	@Inizio DATETIME,
	@Fine DATETIME
)
AS

SELECT	@IdxMacchina AS IdxMacchina, '' AS CodArticolo, GETDATE() as DataOraRif, MAX(TCMedio) AS TCMedio, 0 AS PzProd FROM TempiCicloRilevati
WHERE	IdxMacchina = @IdxMacchina AND
		(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine) 

RETURN
go

/*************************************
* STORED PROCEDURE stp_TC_getMinByMacchinaPeriodo
* 	recupera tempi ciclo x macchina e periodo
*
* modif.:	S.E.L. - 2010.12.15
**************************************/
create PROCEDURE stp_TC_getMinByMacchinaPeriodo
(
	@IdxMacchina NVARCHAR(50),
	@Inizio DATETIME,
	@Fine DATETIME
)
AS

SELECT	@IdxMacchina AS IdxMacchina, '' AS CodArticolo, GETDATE() as DataOraRif, MIN(TCMedio) AS TCMedio, 0 AS PzProd FROM TempiCicloRilevati
WHERE	IdxMacchina = @IdxMacchina AND
		(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine) 

RETURN
go

commit
go



set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*************************************
* STORED PROCEDURE stp_TC_getMaxByMacchinaPeriodo
* 	recupera tempi ciclo x macchina e periodo
*
* modif.:	S.E.L. - 2010.12.15
**************************************/
alter PROCEDURE stp_TC_getMaxByMacchinaPeriodo
(
	@IdxMacchina NVARCHAR(50),
	@Inizio DATETIME,
	@Fine DATETIME
)
AS

SELECT	@IdxMacchina AS IdxMacchina, '' AS CodArticolo, GETDATE() as DataOraRif, MAX(TCMedio) AS TCMedio, 0 AS PzProd FROM TempiCicloRilevati
WHERE	IdxMacchina = @IdxMacchina AND
		(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine) 
		AND TCMedio > 0

RETURN
go

/*************************************
* STORED PROCEDURE stp_TC_getMedByMacchinaPeriodo
* 	recupera tempi ciclo x macchina e periodo
*
* modif.:	S.E.L. - 2010.12.24
**************************************/
create PROCEDURE stp_TC_getMedByMacchinaPeriodo
(
	@IdxMacchina NVARCHAR(50),
	@Inizio DATETIME,
	@Fine DATETIME
)
AS

SELECT	@IdxMacchina AS IdxMacchina, '' AS CodArticolo, GETDATE() as DataOraRif, SUM(TCMedio * PzProd) / SUM(PzProd) AS TCMedio, 0 AS PzProd FROM TempiCicloRilevati
WHERE	IdxMacchina = @IdxMacchina AND
		(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine) 
		AND TCMedio > 0

RETURN
go

/*************************************
* STORED PROCEDURE stp_TC_getMinByMacchinaPeriodo
* 	recupera tempi ciclo x macchina e periodo
*
* modif.:	S.E.L. - 2010.12.15
**************************************/
alter PROCEDURE stp_TC_getMinByMacchinaPeriodo
(
	@IdxMacchina NVARCHAR(50),
	@Inizio DATETIME,
	@Fine DATETIME
)
AS

SELECT	@IdxMacchina AS IdxMacchina, '' AS CodArticolo, GETDATE() as DataOraRif, MIN(TCMedio) AS TCMedio, 0 AS PzProd FROM TempiCicloRilevati
WHERE	IdxMacchina = @IdxMacchina AND
		(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine) 
		AND TCMedio > 0

RETURN
go

-- =============================================
-- Author:		Samuele E. Locatelli
-- Create date: 2009-03-04
-- mod date:	2010-07-14
--
-- Description:	riallineamento con update massivo dati db
-- aggiorna i dati nel db per portarli ad essere "odierni" ovvero ultimo evento appena successo
-- =============================================
alter PROCEDURE stp_ZZZ_riallineaDateDb
AS

DBCC SHOWCONTIG(EventList)
DBCC SHOWCONTIG(DiarioDiBordo)

EXEC USP_DisableEnableNonClusteredIndexes 'Mapo_ColMecc',null, 1 --disabilito indici


PRINT 'inizio UPDATE tabelle...'

DECLARE @lastData AS DATETIME
DECLARE @diff_min as INT

-- calcolo l'ultima data degli eventi
SET @lastData = (SELECT MAX(InizioStato) AS inizio FROM EventList)

-- ora calcolo la differenza tra quello e la data/ora odierna
SET @diff_min = (SELECT DATEDIFF(n, @lastData, getdate()))

-- aggiorno tabelle di conseguenza modificando le date

-- aggiorno EventList
UPDATE EventList SET InizioStato = DATEADD(n, @diff_min, InizioStato)

-- aggiorno DiarioDiBordo
UPDATE DiarioDiBordo SET InizioStato = DATEADD(n, @diff_min, InizioStato),FineStato = DATEADD(n, @diff_min, FineStato)


-- aggiorno StatoMacchine
UPDATE StatoMacchine SET InizioStato = DATEADD(n, @diff_min, InizioStato)

-- aggiorno KeepAlive
UPDATE KeepAlive SET DataOraServer = DATEADD(n, @diff_min, DataOraServer), DataOraMacchina = DATEADD(n, @diff_min, DataOraMacchina), DataOraStart = DATEADD(n, @diff_min, DataOraStart)

-- aggiorno TC teorici
UPDATE TempiCicloTeorici SET DataOraFrom = DATEADD(n, @diff_min, DataOraFrom), DataOraTo = DATEADD(n, @diff_min, DataOraTo)

-- aggiorno TC rilevati
UPDATE TempiCicloRilevati SET DataOraRif = DATEADD(n, @diff_min, DataOraRif)


PRINT 'concluso UPDATE tabelle...'


DBCC SHOWCONTIG(EventList)
DBCC SHOWCONTIG(DiarioDiBordo)
EXEC USP_DisableEnableNonClusteredIndexes 'Mapo_ColMecc',null, 2 --riattivo indici


--ricostruisco indici
PRINT 'ricostruisco indici...'
DBCC DBREINDEX(EventList)
DBCC DBREINDEX(DiarioDiBordo)
DBCC DBREINDEX(TransizioneIngressi)
DBCC DBREINDEX(Kanban2ins)
DBCC DBREINDEX(Kanban)
DBCC DBREINDEX(AnagraficaOperatori)
DBCC DBREINDEX(AnagraficaOperatori2ins)

DBCC SHOWCONTIG(EventList)
DBCC SHOWCONTIG(DiarioDiBordo)

 --shrink del db
PRINT 'compatto DB...'
DBCC SHRINKDATABASE (Mapo_ColMecc)


RETURN
go

commit
go








-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(30, GETDATE())
GO
