Prvni verze

This commit is contained in:
2025-05-21 21:14:32 +02:00
commit 03ff9ebc84
147 changed files with 40100 additions and 0 deletions

View 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

View 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

View File

@ -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

View File

@ -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