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,9 @@
-- dbo.ef_EncodeBase64
CREATE FUNCTION dbo.ef_EncodeBase64 (@source AS varchar(max))
RETURNS varchar(max)
AS
BEGIN
DECLARE @bin varbinary(max), @result varchar(max)
SET @bin = CONVERT(varbinary(max), @source)
RETURN CAST(N'' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'varchar(max)')
END

View File

@ -0,0 +1,169 @@
-- dbo.ep_HDCDZApi_ZpracujPrijataData
CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData
@idJson INT=NULL
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
SET NOCOUNT ON
DECLARE
@tranPred INT,
@cnt INT,
@sql NVARCHAR(max),
@datPorizeni DATETIME,
@errMsg NVARCHAR(500),
@bChyba BIT,
@iChyba INT,
@debugXml XML,
@aktDatum DATETIME,
@logTyp TINYINT,
@logText NVARCHAR(500),
@logInt INT,
@logStr NVARCHAR(255),
@log4Mail BIT=0
DECLARE
@jsonString NVARCHAR(MAX),
@jsonString2 NVARCHAR(MAX),
@phDeviceId NVARCHAR(40),
@typDokum NVARCHAR(50),
@subtypDokum NVARCHAR(50),
@akce NVARCHAR(50),
@akceSource NVARCHAR(50),
@datumText NVARCHAR(25)
DECLARE @TabPHObj TABLE (ID INT NOT NULL, IDPHIdent INT)
-- vytvor pomocnou tabulku
/*
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL
DROP TABLE #TabJSONData
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max))
*/
DROP TABLE IF EXISTS #TabJSONData
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max))
IF (@idJson IS NULL)
DECLARE j CURSOR LOCAL FOR
SELECT ID, JSONData, Akce, DatPorizeni
FROM dbo._hdc_ph_PrijataJsonData
WHERE DatZpracovani IS NULL
AND Nezpracovat=0
AND ISNULL(JSONData, N'')<>N''
ORDER BY DatPorizeni ASC
ELSE
DECLARE j CURSOR LOCAL FOR
SELECT ID, JSONData, Akce, DatPorizeni
FROM dbo._hdc_ph_PrijataJsonData
WHERE ID=@idJson
OPEN j
WHILE (1=1)
BEGIN
FETCH NEXT FROM j INTO @idJson, @jsonString, @akce, @datPorizeni
IF (@@FETCH_STATUS<>0) BREAK
IF (ISJSON(@jsonString)=0)
CONTINUE
BEGIN TRY
SET @tranPred = @@TRANCOUNT
IF (@tranPred=0)
BEGIN TRAN
SET @datumText = NULL
-- smaz pomocnou tabulku
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) SELECT @jsonString
SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action'),
@akceSource = JSON_VALUE(doc, '$.source'),
@datumText = JSON_VALUE(doc, '$.actionAt')
FROM #TabJSONData
SET @akce = ISNULL(@akce, N'')
SET @akceSource = ISNULL(@akceSource, N'')
SET @datumText = ISNULL(@datumText, N'')
IF (@datumText<>N'')
SET @datPorizeni = CONVERT(datetime, @datumText, 120)
IF (@akce<>N'')
UPDATE dbo._hdc_ph_PrijataJsonData SET Akce=@akce WHERE ID=@idJson AND Akce IS NULL
IF ISNULL( (SELECT COUNT(ID) FROM dbo._hdc_ph_Log WHERE IdJsonData=@idJson), 0)>=3
BEGIN
IF EXISTS(SELECT 1 FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson AND ISNULL(PosledniChyba,N'')=N'')
UPDATE dbo._hdc_ph_PrijataJsonData SET Nezpracovat=1,
PosledniChyba=(SELECT TOP(1) LogText FROM dbo._hdc_ph_Log
WHERE IdJsonData=@idJson ORDER BY DatPorizeni DESC)
WHERE ID=@idJson
CONTINUE
END
SET @logTyp = 0
SET @logInt = NULL
SET @logStr = N''
SET @log4Mail = 0
SET @logText = N''
-- BEGIN: CERVENE TLACITKO
IF (@akce=N'click' AND @akceSource='button')
BEGIN
SELECT TOP(1) @phDeviceId = JSON_VALUE(doc, '$.deviceId') FROM #TabJSONData
UPDATE dbo._hdc_ph_PrijataJsonData SET PHDeviceID=@phDeviceId WHERE ID=@idJson
SET @akce = N''
IF OBJECT_ID(N'dbo.ep_HDCDZApi_AkceCerveneTlacitko') IS NOT NULL
BEGIN
SET @sql = 'EXEC dbo.ep_HDCDZApi_AkceCerveneTlacitko @IDJson=@idJson, @PHDeviceId=@phDeviceId'
EXEC sp_executesql @sql, N'@idJson INT, @phDeviceId NVARCHAR(40)', @idJson, @phDeviceId
END
END -- akce: vyroba_zacatek
-- END: CERVENE TLACITKO
IF (@tranPred=0) AND (@@TRANCOUNT>0)
COMMIT TRAN
END TRY
BEGIN CATCH
IF (@tranPred=0) AND (@@TRANCOUNT>0)
ROLLBACK TRAN
SET @errMsg = ERROR_MESSAGE()
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=@errMsg WHERE ID=@idJson
IF (@logTyp>0)
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue, StrValue, IdJsonData, ForMail)
SELECT @logTyp, ISNULL(@logText, N'') + NCHAR(13)+NCHAR(10) + @errMsg, @logInt, @logStr, @idJson, @log4Mail
ELSE
INSERT dbo._hdc_ph_Log (Typ, LogText, IdJsonData, ForMail) SELECT 1, N'Chyba zpracovani PrijataJsonData: ' + @errMsg, @idJson, 1
END CATCH
SET @logTyp=0
END
CLOSE j
DEALLOCATE j
-- pro jistotu
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL
DROP TABLE #TabJSONData

View File

@ -0,0 +1,36 @@
IF OBJECT_ID(N'dbo._hdc_ph_Log', N'U') IS NULL
CREATE TABLE dbo._hdc_ph_Log (
ID int IDENTITY(1, 1) NOT NULL,
LogText nvarchar(500) NULL,
LogTextLong nvarchar(max) NULL,
Typ tinyint NULL,
IntValue int NULL,
NumValue numeric(19, 6) NULL,
StrValue nvarchar(255) NULL,
DatValue datetime NULL,
MailAddress nvarchar(255) NULL,
MailSent datetime NULL,
ForMail BIT NOT NULL DEFAULT 0,
IdJsonData int NULL,
Autor nvarchar(80) DEFAULT suser_sname() NOT NULL,
DatPorizeni datetime DEFAULT getdate() NOT NULL,
CONSTRAINT PK__hdc_ph_Log PRIMARY KEY CLUSTERED (ID DESC) WITH ( PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
/* 12.12.2023 */
IF COL_LENGTH(N'dbo._hdc_ph_Log', N'MailAddress') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD MailAddress NVARCHAR(255) NULL
IF COL_LENGTH(N'dbo._hdc_ph_Log', N'MailSent') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD MailSent DATETIME NULL
/* 31.1.2024 */
IF COL_LENGTH(N'dbo._hdc_ph_Log', N'IdJsonData') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD IdJsonData INT NULL
DROP INDEX IF EXISTS EI_hdc_ph_Log_IdJsonData ON dbo._hdc_ph_Log
CREATE NONCLUSTERED INDEX EI_hdc_ph_Log_IdJsonData ON dbo._hdc_ph_Log (IdJsonData)
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
/* 25.6.2024 */
IF COL_LENGTH(N'dbo._hdc_ph_Log', N'ForMail') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD ForMail BIT NOT NULL DEFAULT 0
/* 7.10.2024 */
IF COL_LENGTH(N'dbo._hdc_ph_Log', N'LogTextLong') IS NULL ALTER TABLE dbo._hdc_ph_Log ADD LogTextLong NVARCHAR(max)

View File

@ -0,0 +1,70 @@
IF OBJECT_ID(N'dbo._hdc_ph_PrijataJsonData', N'U') IS NULL
CREATE TABLE dbo._hdc_ph_PrijataJsonData (
ID bigint IDENTITY(1, 1) NOT NULL,
GUIDIdent uniqueidentifier DEFAULT newid() NOT NULL,
IdPHIdent bigint DEFAULT 0 NOT NULL,
PHOznaceni nvarchar(50) NULL,
UzivIdent nvarchar(100) NULL,
JSONData nvarchar(max) NULL,
DatPotvrzeni datetime NULL,
DatZpracovani datetime NULL,
Nezpracovat bit NOT NULL DEFAULT 0,
DatPorizeni datetime DEFAULT getdate() NULL,
IDDoklad int NULL,
CisloZam int NULL,
PosledniChyba nvarchar(255) NULL,
Blokovano bit NOT NULL DEFAULT 0,
IDMzda int NULL,
IDMezd NVARCHAR(max) NULL,
IDEvidRozpOp int NULL,
Objekt nvarchar(50) NULL,
Akce nvarchar(50) NULL,
PHDeviceID NVARCHAR(40) NULL,
Zpracovano AS CONVERT(bit, CASE WHEN DatZpracovani IS NULL THEN 0 ELSE 1 END),
CONSTRAINT PK_hdc_ph_JsonData 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_hdc_ph_PrijataJsonData_DokladOZ ON dbo._hdc_ph_PrijataJsonData
CREATE NONCLUSTERED INDEX EI_hdc_ph_PrijataJsonData_DokladOZ ON dbo._hdc_ph_PrijataJsonData (IDDoklad)
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
/* 28.10.2023 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'CisloZam') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD CisloZam INT NULL
/* 26.10.2023 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'PosledniChyba') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD PosledniChyba NVARCHAR(255) NULL
/* 27.10.2023 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Blokovano') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Blokovano BIT NOT NULL DEFAULT 0
/* 31.1.2024 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'IDMzda') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD IDMzda INT NULL
DROP INDEX IF EXISTS EI_hdc_ph_PrijataJsonData_IDMzda ON dbo._hdc_ph_PrijataJsonData
CREATE NONCLUSTERED INDEX EI_hdc_ph_PrijataJsonData_IDMzda ON dbo._hdc_ph_PrijataJsonData (IDMzda)
WITH ( PAD_INDEX = OFF, DROP_EXISTING = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
/* 23.6.2024 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Objekt') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Objekt NVARCHAR(50) NULL
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Akce') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Akce NVARCHAR(50) NULL
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'IDEvidRozpOp') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD IDEvidRozpOp INT NULL
/* 24.7.2024 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Nezpracovat') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Nezpracovat BIT NOT NULL DEFAULT 0
/* 4.8.2024 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'PHDeviceID') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD PHDeviceID NVARCHAR(40) NULL
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'GUIDIdent') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD GUIDIdent UNIQUEIDENTIFIER DEFAULT newid() NOT NULL
/* 8.10.2024 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'IDMezd') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD IDMezd NVARCHAR(MAX) NULL
/* 10.1.2025 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'Zpracovano') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD Zpracovano AS CONVERT(bit, CASE WHEN DatZpracovani IS NULL THEN 0 ELSE 1 END)
/* 23.1.2025 */
IF COL_LENGTH(N'dbo._hdc_ph_PrijataJsonData', N'UzivIdent') IS NULL ALTER TABLE dbo._hdc_ph_PrijataJsonData ADD UzivIdent NVARCHAR(100) NULL

View File

@ -0,0 +1,7 @@
IF OBJECT_ID(N'dbo._hdcdzapi_SQLDefs', N'U') IS NULL
CREATE TABLE dbo._hdcdzapi_SQLDefs (
ID int IDENTITY(1, 1) NOT NULL,
SrcName sysname NOT NULL,
DatPorizeni DATETIME NOT NULL DEFAULT GETDATE(),
CONSTRAINT PK__hdcdzapi_SQLDefs PRIMARY KEY CLUSTERED (ID DESC) WITH ( PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)

View File

@ -0,0 +1,25 @@
-- dbo.ET__hdc_ph_Log_D
CREATE TRIGGER dbo.ET__hdc_ph_Log_D ON dbo._hdc_ph_Log
WITH EXECUTE AS CALLER
FOR DELETE
AS
BEGIN
SET NOCOUNT ON
-- ! trigger neupravujte, bude stejne pregenerovan pri startu pluginu PluginHDCRTN !
DECLARE
@id INT
-- cisteni seedu
IF EXISTS(SELECT 1 FROM dbo._hdc_ph_Log)
BEGIN
SELECT @id=MAX(ID) FROM dbo._hdc_ph_Log
DBCC CHECKIDENT(_hdc_ph_Log, RESEED, @id)
END
ELSE
TRUNCATE TABLE dbo._hdc_ph_Log
END

View File

@ -0,0 +1,24 @@
-- dbo.ET_hdc_ph_PrijataJsonData_D
CREATE TRIGGER dbo.ET_hdc_ph_PrijataJsonData_D ON dbo._hdc_ph_PrijataJsonData
WITH EXECUTE AS CALLER
FOR DELETE
AS
BEGIN
SET NOCOUNT ON
-- !! trigger neupravujte, bude stejne pregenerovan pri startu pluginu HDCDZAPI !!
DECLARE
@id INT
IF NOT EXISTS(SELECT 1 FROM dbo._hdc_ph_PrijataJsonData)
TRUNCATE TABLE dbo._hdc_ph_PrijataJsonData
ELSE
BEGIN
SELECT @id=MAX(ID) FROM dbo._hdc_ph_PrijataJsonData
DBCC CHECKIDENT (_hdc_ph_PrijataJsonData, RESEED, @id)
END
END