Update stato stored PAMA

This commit is contained in:
Samuele E. Locatelli
2023-03-17 10:46:18 +01:00
parent 466e91de18
commit c5e5a5befe
3 changed files with 77 additions and 9 deletions
@@ -1,4 +1,4 @@
ALTER PROCEDURE [dbo].GetMachineProdData
ALTER PROCEDURE [dbo].[stp_GetMachineProdData]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
@@ -24,9 +24,10 @@ BEGIN
IF(@NewIdx > @LastIdx)
BEGIN
/* --------------------------------------------------
* Invierò solo VARIAZIONI dei valori
* Invierò solo VARIAZIONI dei valori
* - CurrentProdOrder (iniziato/concluso)
* - Quantità Produzione
* - Quantità Produzione
* - dati FluxLog x ordini/quantità/tempi di produzione
*
* andando ad incrociare ogni record col precedente...
* -------------------------------------------------- */
@@ -86,7 +87,66 @@ BEGIN
FROM cteActDec
WHERE OrdAction <> 'NONE'
-- ora processo ANCHE come fluxLog i record dei degli ordini (cod ordine, tempi...)
;WITH cteCurrOrd AS
(
SELECT ID
,ProdOrder
,Targa as IdxMacchina
,[DateTime] AS DtEvento
,ProdOrderState
,ProdQty
,ElapsedTime
FROM syn_M2ERP_PRODORDERS
WHERE ID > @LastIdx AND ID <= @NewIdx
)
, ctePrevOrd AS
(
SELECT ID
,ProdOrder
,Targa as IdxMacchina
,[DateTime] AS DtEvento
,ProdOrderState
,ProdQty
,ElapsedTime
FROM syn_M2ERP_PRODORDERS
WHERE ID >= @LastIdx AND ID < @NewIdx
)
, cteActDec AS
(
SELECT curr.DtEvento as DtEve
,curr.IdxMacchina
,CASE
WHEN curr.ProdOrderState = 1 THEN 'StartOrd'
--WHEN curr.ProdOrderState = 2 THEN 'PauseOrd'
WHEN curr.ProdOrderState = 3 THEN 'EndOrd'
--WHEN curr.ProdOrderState = 6 THEN 'InsOrd'
ELSE 'NONE'
END AS OrdAction
,CAST(CASE
WHEN LEFT(curr.ProdOrder, 4) = 'PODL' THEN REPLACE(curr.ProdOrder,'PODL','')
ELSE '0' END AS NVARCHAR(50)) AS IdxPodl
,CAST(CASE
WHEN LEFT(curr.ProdOrder, 3) = 'ODL' THEN REPLACE(curr.ProdOrder,'ODL','')
ELSE '0' END AS NVARCHAR(50)) AS IdxOdl
,CAST(curr.ProdOrder AS NVARCHAR(50)) as CodComm
,curr.ProdQty as PzCount
,CAST(curr.ElapsedTime AS NVARCHAR(50)) AS ElapsedTime
FROM cteCurrOrd curr
INNER JOIN ctePrevOrd prev
ON curr.ID = prev.ID+1
WHERE (curr.ProdOrder <> prev.ProdOrder)
OR (curr.ProdOrderState <> prev.ProdOrderState)
OR (curr.ProdQty <> prev.ProdQty)
)
-- lego i valori col precedente x calcolare se siano variati x insert valori
--INSERT INTO MachineFluxLog(DtEvento, IdxMacchina, CodFlux, Valore, Cnt)
SELECT DtEve as DtEvento, IdxMacchina, CodFlux, Valore,0 as Cnt
FROM cteActDec
UNPIVOT (Valore FOR CodFlux IN (CodComm, ElapsedTime, IdxOdl, IdxPOdl)) AS Unpvt
WHERE OrdAction <> 'NONE'
AND Valore <> '0'
-- aggiorno valore indice processato
MERGE SyncState AS tgt
USING (SELECT @NewIdx as LastIdx, 'ToMachineProdData' AS TableName) as src (LastIdx, TableName)
@@ -104,6 +164,3 @@ BEGIN
COMMIT tran
END
GO