Prvni verze
This commit is contained in:
164
_custom/Gornicky/sql/ep_HDCDZApi_ZpracujPrijataData.sql
Normal file
164
_custom/Gornicky/sql/ep_HDCDZApi_ZpracujPrijataData.sql
Normal file
@ -0,0 +1,164 @@
|
||||
-- dbo.ep_HDCDZApi_ZpracujPrijataData
|
||||
CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData
|
||||
@idJson INT=NULL
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
-- ! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !
|
||||
|
||||
|
||||
|
||||
|
||||
IF OBJECT_ID(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'U') IS NULL
|
||||
BEGIN
|
||||
IF OBJECT_ID(N'dbo._hdc_ph_Log', N'U') IS NOT NULL
|
||||
INSERT dbo._hdc_ph_Log (LogText) SELECT N'Neexistuje tabulka Tabx_HDC_API_DigitalizaceSoubory'
|
||||
RETURN
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
DECLARE
|
||||
@errMsg NVARCHAR(500)=N'',
|
||||
@errProc NVARCHAR(100),
|
||||
@tranPred INT,
|
||||
@iChyba INT,
|
||||
@bChyba BIT,
|
||||
@iTemp INT,
|
||||
@debugXML XML,
|
||||
@idUziv INT
|
||||
|
||||
DECLARE
|
||||
@jsonString NVARCHAR(max),
|
||||
@docsJson NVARCHAR(max),
|
||||
@soubor NVARCHAR(100),
|
||||
@dataZoneId INT,
|
||||
@docNum INT,
|
||||
@ordNum NVARCHAR(15), -- zakazka,
|
||||
@docUrl NVARCHAR(255),
|
||||
@jeNacteno BIT,
|
||||
@jeKpl BIT,
|
||||
@pgTotal INT,
|
||||
@pgRead INT,
|
||||
@cisZam INT
|
||||
|
||||
DROP TABLE IF EXISTS #TabJSONData
|
||||
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max) )
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@idJson IS NOT NULL)
|
||||
DECLARE j CURSOR LOCAL FOR
|
||||
SELECT ID, JsonData FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson
|
||||
ELSE
|
||||
DECLARE j CURSOR LOCAL FOR
|
||||
SELECT ID, JsonData
|
||||
FROM dbo._hdc_ph_PrijataJsonData
|
||||
WHERE Blokovano=0
|
||||
AND DatZpracovani IS NULL
|
||||
AND ISNULL(JSONData,N'')<>N''
|
||||
ORDER BY DatPorizeni
|
||||
OPEN j
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM j INTO @idJson, @jsonString
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
IF (ISJSON(@jsonString)=0)
|
||||
BEGIN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Neplatna JSON data' WHERE ID=@idJson
|
||||
END
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
SET @tranPred=@@TRANCOUNT
|
||||
IF (@tranPred=0)
|
||||
BEGIN TRAN
|
||||
|
||||
-- smaz pomocnou tabulku
|
||||
DELETE FROM #TabJSONData
|
||||
INSERT #TabJSONData (doc) SELECT @jsonString
|
||||
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL, CisloZam=@cisZam, Blokovano=1 WHERE ID=@idJson
|
||||
|
||||
|
||||
SELECT @dataZoneId=JSON_VALUE(d.doc, '$.datazoneId'),
|
||||
@soubor=JSON_VALUE(d.doc, '$.file'),
|
||||
@docsJson = d2.documents
|
||||
FROM #TabJSONData d
|
||||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||||
WITH ([documents] NVARCHAR(max) AS JSON) AS d2
|
||||
|
||||
SET @soubor=ISNULL(@soubor, N'')
|
||||
IF (@soubor<>N'')
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET UzivIdent=@soubor WHERE ID=@idJson
|
||||
|
||||
IF (@docsJson<>N'')
|
||||
BEGIN
|
||||
IF (ISJSON(@docsJson)=1)
|
||||
BEGIN
|
||||
DELETE FROM #TabJSONData
|
||||
INSERT #TabJSONData (doc) SELECT @docsJson
|
||||
|
||||
DECLARE docs CURSOR LOCAL FOR
|
||||
SELECT detail.idDoklad, detail.cisloZakazky, ISNULL(detail.jeNacteno,0), ISNULL(detail.jeKpl,0),
|
||||
ISNULL(detail.pgCount,0), ISNULL(detail.pgRead,0), detail.docUrl
|
||||
FROM #TabJSONData d
|
||||
CROSS APPLY OPENJSON (d.doc, N'$')
|
||||
WITH (idDoklad INT '$.documentNumber',
|
||||
cisloZakazky NVARCHAR(15) '$.orderNumber',
|
||||
jeNacteno BIT '$.isNotFound',
|
||||
jeKpl BIT '$.isComplete',
|
||||
pgCount INT '$.pageCountTotal',
|
||||
pgRead INT '$.pageCountRead',
|
||||
docURL NVARCHAR(255) '$.documentUrl') AS detail
|
||||
OPEN docs
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM docs INTO @docNum, @ordNum, @jeNacteno, @jeKpl, @pgTotal, @pgRead, @docUrl
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
IF (CHARINDEX(N'NotFound', @docUrl)=0)
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory WHERE DocNumber=@docNum AND OrderNumber=@ordNum AND DocURL=@docUrl)
|
||||
INSERT dbo.Tabx_HDC_API_DigitalizaceSoubory (IDJsonData, IDDZDoc, DocNumber, OrderNumber, IsComplete, IsNotFound, PagesTotal, PagesRead, DocURL, IDDokladOZ)
|
||||
SELECT @idJson, @dataZoneId, @docNum, @ordNum, @jeKpl, @jeNacteno, @pgTotal, @pgRead, @docUrl, @docNum
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory WHERE DocURL=@docUrl)
|
||||
INSERT dbo.Tabx_HDC_API_DigitalizaceSoubory (IDJsonData, IDDZDoc, IsComplete, IsNotFound, PagesTotal, PagesRead, DocURL, IDDokladOZ)
|
||||
SELECT @idJson, @dataZoneId, @jeKpl, @jeNacteno, @pgTotal, @pgRead, @docUrl, @docNum
|
||||
END
|
||||
END
|
||||
CLOSE docs
|
||||
DEALLOCATE docs
|
||||
|
||||
END -- ISJSON(@jsonString)=1
|
||||
END -- @docsJson<>''
|
||||
|
||||
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET Blokovano=0, DatZpracovani=GETDATE() WHERE ID=@idJson
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
COMMIT TRAN
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
SET @errProc = ERROR_PROCEDURE()
|
||||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||||
ROLLBACK TRAN
|
||||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
|
||||
END CATCH
|
||||
|
||||
END
|
||||
CLOSE j
|
||||
DEALLOCATE j
|
||||
|
||||
|
||||
|
||||
-- cisteni
|
||||
DROP TABLE IF EXISTS #TabJSONData
|
||||
45
_custom/Gornicky/sql/tbl_HDC_API_DigitalizaceSoubory.sql
Normal file
45
_custom/Gornicky/sql/tbl_HDC_API_DigitalizaceSoubory.sql
Normal file
@ -0,0 +1,45 @@
|
||||
IF OBJECT_ID(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'U') IS NULL
|
||||
CREATE TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory (
|
||||
ID INT IDENTITY(1, 1) NOT NULL,
|
||||
IDJsonData INT,
|
||||
IDDZDoc INT, -- datazone id davky
|
||||
DocNumber INT,
|
||||
OrderNumber NVARCHAR(15),
|
||||
IsComplete BIT NOT NULL DEFAULT 0,
|
||||
IsNotFound BIT NOT NULL DEFAULT 0,
|
||||
PagesTotal INT,
|
||||
PagesRead INT,
|
||||
DocURL NVARCHAR(255),
|
||||
IDDokument INT,
|
||||
Blokovano BIT NOT NULL DEFAULT 0,
|
||||
Zpracovat BIT NOT NULL DEFAULT 1,
|
||||
DatZpracovani DATETIME,
|
||||
Zpracovano AS CONVERT(bit, CASE WHEN DatZpracovani IS NULL THEN 0 ELSE 1 END),
|
||||
DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(),
|
||||
CONSTRAINT PK_Tabx_HDC_API_DigitalizaceSoubory_ID PRIMARY KEY CLUSTERED (ID DESC)
|
||||
WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
)
|
||||
|
||||
|
||||
DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_IDDZDoc ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_IDDZDoc ON dbo.Tabx_HDC_API_DigitalizaceSoubory (IDDZDoc)
|
||||
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
|
||||
|
||||
DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_DocNumber ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_DocNumber ON dbo.Tabx_HDC_API_DigitalizaceSoubory (DocNumber)
|
||||
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
|
||||
|
||||
DROP INDEX IF EXISTS EI_Tabx_HDC_API_DigitalizaceSoubory_IDDokument ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
CREATE NONCLUSTERED INDEX EI_Tabx_HDC_API_DigitalizaceSoubory_IDDokument ON dbo.Tabx_HDC_API_DigitalizaceSoubory (IDDokument)
|
||||
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
|
||||
|
||||
|
||||
|
||||
/* 16.1.2025 */
|
||||
IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'Blokovano') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD Blokovano BIT NOT NULL DEFAULT 0
|
||||
IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'Zpracovat') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD Zpracovat BIT NOT NULL DEFAULT 1
|
||||
|
||||
/* 236.1.2025 */
|
||||
IF COL_LENGTH(N'dbo.Tabx_HDC_API_DigitalizaceSoubory', N'IDJsonData') IS NULL ALTER TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory ADD IDJsonData INT
|
||||
@ -0,0 +1,25 @@
|
||||
-- dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_D
|
||||
CREATE TRIGGER dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_D ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
WITH EXECUTE AS CALLER
|
||||
FOR DELETE
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
-- ! trigger neupravujte, bude stejne pregenerovan pri startu Win sluzby HDCDZApi
|
||||
|
||||
DECLARE
|
||||
@id INT
|
||||
|
||||
|
||||
|
||||
-- cisteni seedu
|
||||
IF EXISTS(SELECT 1 FROM dbo.Tabx_HDC_API_DigitalizaceSoubory)
|
||||
BEGIN
|
||||
SELECT @id=MAX(ID) FROM dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
DBCC CHECKIDENT(Tabx_HDC_API_DigitalizaceSoubory, RESEED, @id)
|
||||
END
|
||||
ELSE
|
||||
TRUNCATE TABLE dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
|
||||
END
|
||||
@ -0,0 +1,49 @@
|
||||
-- dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_IU
|
||||
CREATE TRIGGER dbo.ET_Tabx_HDC_API_DigitalizaceSoubory_IU ON dbo.Tabx_HDC_API_DigitalizaceSoubory
|
||||
WITH EXECUTE AS CALLER
|
||||
FOR INSERT, UPDATE
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
-- ! trigger neupravujte, bude stejne pregenerovan pri startu Win sluzby HDCDZApi
|
||||
|
||||
DECLARE
|
||||
@id INT,
|
||||
@idDokl INT,
|
||||
@idDokum INT,
|
||||
@idZak INT
|
||||
|
||||
|
||||
|
||||
DECLARE c CURSOR LOCAL FAST_FORWARD FOR
|
||||
SELECT i.ID, i.DocNumber, i.IDDokument
|
||||
FROM inserted i
|
||||
OPEN c
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM c INTO @id, @idDokl, @idDokum
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
IF (@idDokum IS NOT NULL)
|
||||
BEGIN
|
||||
IF (@idDokl IS NOT NULL)
|
||||
IF EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@idDokl)
|
||||
BEGIN
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokumVazba WHERE IdentVazby=9 AND IdTab=@idDokl AND IdDok=@idDokum)
|
||||
INSERT dbo.TabDokumVazba (IdentVazby, IdTab, IdDok) SELECT 9, @idDokl, @idDokum
|
||||
|
||||
SET @idZak = (SELECT z.ID FROM dbo.TabDokladyZbozi d INNER JOIN dbo.TabZakazka z ON (z.CisloZakazky=d.CisloZakazky) WHERE d.ID=@idDokl)
|
||||
IF (@idZak IS NOT NULL)
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokumVazba WHERE IdentVazby=2 AND IdTab=@idZak AND IdDok=@idDokum)
|
||||
INSERT dbo.TabDokumVazba (IdentVazby, IdTab, IdDok) SELECT 2, @idZak, @idDokum
|
||||
END -- doklad existuje
|
||||
END -- dokument neni null
|
||||
|
||||
|
||||
END
|
||||
CLOSE c
|
||||
DEALLOCATE c
|
||||
|
||||
|
||||
END
|
||||
Reference in New Issue
Block a user