diff --git a/_custom/INCOSystems/uSvcCustom.pas b/_custom/INCOSystems/uSvcCustom.pas
index 426db4e..868c926 100644
--- a/_custom/INCOSystems/uSvcCustom.pas
+++ b/_custom/INCOSystems/uSvcCustom.pas
@@ -59,53 +59,54 @@ uses
w: TStreamWriter;
jo: System.JSON.TJsonObject;
begin
- idJSON:= 0;
- respString:= '[';
+ idJSON := 0;
+ respString := '[';
- jo:= System.JSON.TJsonObject.Create;
+ jo := System.JSON.TJsonObject.Create;
- jsonData:= jsonData.Trim;
+ jsonData := jsonData.Trim;
if (jsonData<>'') then
begin
- lQry:= TFDQuery.Create(nil);
+ lQry := TFDQuery.Create(nil);
try
- lQry.Connection:= FDM.sqlConn;
+ lQry.Connection := FDM.sqlConn;
try
CoCreateGuid(guid);
if (System.SysUtils.CreateGUID(guid)=S_OK) then
- guidIdent:= System.SysUtils.GUIDToString(guid)
+ guidIdent := System.SysUtils.GUIDToString(guid)
else
- guidIdent:= self.NewUUID32;
- lSQL:= 'INSERT ' + tblPrijataJsonData + ' (IdPHIdent, GUIDIdent, JSONData) SELECT 0, CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + '), N' + jsonData.QuotedString;
- FDM.sqlConn.ExecSQL(lSQL);
- lSQL:= 'SELECT ID FROM ' + tblPrijataJsonData + ' WHERE GUIDIdent=CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + ')';
- lQry.Open(lSQL);
+ guidIdent := self.NewUUID32;
+ lSQL := 'INSERT ' + tblPrijataJsonData + ' (IdPHIdent, GUIDIdent, JSONData) SELECT 0, CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + '), N' + jsonData.QuotedString;
+ FDM.sqlConn.ExecSQL (lSQL);
+ lSQL := 'SELECT ID FROM ' + tblPrijataJsonData + ' WHERE GUIDIdent=CONVERT(uniqueidentifier, N' + guidIdent.QuotedString + ')';
+ lQry.Open (lSQL);
if (lQry.RecordCount=1) then
begin
- idJSON:= lQry.FieldByName('ID').AsInteger;
- respString:= 'OK';
- jo.AddPair('heliosid', idJSON.ToString);
+ idJSON := lQry.FieldByName('ID').AsInteger;
+ respString := 'OK';
+ jo.AddPair ('heliosid', idJSON.ToString);
end;
except on E:Exception do
begin
- respString:= 'NOT OK';
+ respString := 'NOT OK';
raise EServiceException.Create('Chyba zápisu JSON dat: ' + E.Message);
end;
end;
finally
- FreeAndNil(lQry);
+ lQry.Close;
+ lQry.Free;
end;
- CoInitialize(nil);
- j:= TJsonObject.Parse(jsonData) as JsonDataObjects.TJsonObject;
+ CoInitialize (nil);
+ j := TJsonObject.Parse(jsonData) as JsonDataObjects.TJsonObject;
try
if (j<>nil) then
if (j.Contains('akce')) then
begin
- akce:= j.S['akce'].Trim;
+ akce := j.S['akce'].Trim;
if (idJSON>0) and (akce<>'') then
- FDM.sqlConn.ExecSQL('UPDATE ' + tblPrijataJsonData + ' SET Akce=N' + akce.QuotedString + ' WHERE ID=' + idJSON.ToString);
+ FDM.sqlConn.ExecSQL ('UPDATE ' + tblPrijataJsonData + ' SET Akce=N' + akce.QuotedString + ' WHERE ID=' + idJSON.ToString);
{
for i:=0 to j['tasks'].Count-1 do
begin
@@ -125,12 +126,12 @@ uses
end
else
- respString:= 'NO input data';
+ respString := 'NO input data';
- jo.AddPair('status', respString);
- respString:= '[' +respString + ']';
+ jo.AddPair ('status', respString);
+ respString := '[' +respString + ']';
- respString:= jo.ToString;
+ respString := jo.ToString;
end;
diff --git a/_custom/Rootvin/sql/ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql b/_custom/Rootvin/sql/ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql
index 035087c..f742f92 100644
--- a/_custom/Rootvin/sql/ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql
+++ b/_custom/Rootvin/sql/ep_Vyroba_GenObjednavkuMatDoVyrobyNew.sql
@@ -98,11 +98,13 @@ DELETE FROM dbo._TabVyroba_Objednavky_Pol WHERE IDPohybOZ NOT IN (SELECT ID FROM
SET @genDokladMat=0
IF EXISTS (SELECT 1 FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=1 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
+ AND DATEDIFF(day, o.DatPorizeni, GETDATE())<6
)
BEGIN
SET @genDokladMat=1
SET @datumDokladuMat = (SELECT MIN(o.DatPorizeni) FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=1 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
+ AND DATEDIFF(day, o.DatPorizeni, GETDATE())<6
)
END
SET @datumDokladuMat = ISNULL(@datumDokladuMat, GETDATE())
@@ -112,11 +114,13 @@ SET @datumDokladuMat = ISNULL(@datumDokladuMat, GETDATE())
SET @genDokladFin=0
IF EXISTS (SELECT 1 FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=0 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
+ AND DATEDIFF(day, o.DatPorizeni, GETDATE())<6
)
BEGIN
SET @genDokladFin=1
SET @datumDokladuFin = (SELECT MIN(o.DatPorizeni) FROM dbo._TabVyroba_Objednavky o WHERE o.Splneno=0 AND o.OdmitnutoSkladem=0 AND o.NocniObjednavka=0 AND o.Storno=0 AND o.Vratka=0
AND o.JeMaterial=0 AND o.Blokovano=0 AND (o.Mnozstvi-ISNULL( (SELECT SUM(Mnozstvi) FROM dbo._TabVyroba_Objednavky_Pol WHERE IDHlava=o.ID), 0))>0
+ AND DATEDIFF(day, o.DatPorizeni, GETDATE())<6
)
END
SET @datumDokladuFin = ISNULL(@datumDokladuFin, GETDATE())
@@ -138,6 +142,7 @@ IF (@genDokladMat=1) OR (@genDokladFin=1)
AND Vratka=0
AND Blokovano=0
AND IDPhIdent2 IS NOT NULL
+ AND DATEDIFF(day, DatPorizeni, GETDATE())<6
GROUP BY JeMaterial
OPEN m
WHILE (1=1)
@@ -211,6 +216,7 @@ IF (@genDokladMat=1) OR (@genDokladFin=1)
AND Blokovano=0
AND IDPhIdent2 IS NOT NULL
AND JeMaterial=@material
+ AND DATEDIFF(day, DatPorizeni, GETDATE())<6
ORDER BY DatPorizeni
OPEN c
WHILE (1=1)
@@ -322,6 +328,7 @@ DECLARE c CURSOR LOCAL FAST_FORWARD FOR
AND Vratka=0
AND Storno=0
AND OdmitnutoSkladem=0
+ AND DATEDIFF(day, DatPorizeni, GETDATE())<14
AND ID IN (SELECT 1 FROM dbo._TabVyroba_Objednavky_Pol p WITH(NOLOCK) WHERE p.IDHlava=ID)
OPEN c
WHILE (1=1)
diff --git a/_custom/Rootvin/winSvc/impl.inc b/_custom/Rootvin/winSvc/impl.inc
index 8fb97a6..5ec5649 100644
--- a/_custom/Rootvin/winSvc/impl.inc
+++ b/_custom/Rootvin/winSvc/impl.inc
@@ -1,15 +1,16 @@
- constructor THeoRTNZapisObjMatThread.Create (AOnTerminate: TNotifyEvent; AService: TService);
+ constructor THeoRTNZapisObjMatThread.Create (AOnTerminate: TNotifyEvent; AService: TService = nil; dm: TdatMod = nil);
begin
inherited Create (false); // Create thread in NOT suspended mode
- FMainService:= AService;
- FLock:= TCriticalSection.Create;
- FRunning:= false;
- FTermEvent:= TEvent.Create (nil, False, False, '');
+ FMainService := AService;
+ FDataMod := dm;
+ FLock := TCriticalSection.Create;
+ FRunning := false;
+ FTermEvent := TEvent.Create (nil, False, False, '');
// OnTerminate:= AOnTerminate;
// FreeOnTerminate:= true;
- FreeOnTerminate:= false; // Ensure manual freeing of thread resources
+ FreeOnTerminate := false; // Ensure manual freeing of thread resources
end;
@@ -20,11 +21,15 @@
{$IFDEF DEBUG}
Write('Ukoncuji thread RTN Zapis objednavka materialu do ExpPr...');
{$ENDIF}
- if (FTimer<>0) then
- CloseHandle (FTimer);
- FTermEvent.Free;
- FRunning:= false;
- FMainService:= nil;
+ try
+ if (FTimer<>0) then
+ CloseHandle (FTimer);
+ FTermEvent.Free;
+ finally
+ end;
+ FRunning := false;
+ FMainService := nil;
+ FDataMod := nil;
Terminate;
FLock.Free;
inherited;
@@ -53,6 +58,7 @@
procedure THeoRTNZapisObjMatThread.Execute;
const _Second = 10_000_000;
var lSQL, errMsg, url, outData, fName, loopCasTyp: string;
+ lokalniConn: boolean;
lLoop, idDigiFile, cnt, idx: Integer;
lLoopMax, koefProCas: integer;
logRunCnt, intTemp: integer;
@@ -141,9 +147,19 @@
if (lLoop=lLoopMax) or (firstRun) then // pri startu a pak kazdou minutu
begin
- sqlConnX := TFDConnection.Create (nil);
+ lokalniConn := (FDataMod<>nil);
+ if not(lokalniConn) then
+ begin
+ sqlConnX := FDataMod.sqlConn;
+ end
+ else
+ begin
+ sqlConnX := TFDConnection.Create (nil);
+ sqlConnX.ConnectionDefName := sqlPoolName;
+ end;
try
- sqlConnX.Params.SetStrings (datMod.sqlConnParams);
+ sqlConnX.Open;
+
lQry := TFDQuery.Create(nil);
try
lQry.Connection := sqlConnX;
@@ -152,9 +168,9 @@
firstRun:= false;
if (logRunCnt<4) then
- datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim zapis Objednavky materialu do ExpPr c.' + logRunCnt.toString + '...');
+ FDataMod.LogInfo (Quick.Logger.etInfo, 'Spoustim zapis Objednavky materialu do ExpPr c.' + logRunCnt.toString + '...');
if (logRunCnt=4) then
- datMod.LogInfo (Quick.Logger.etInfo, 'Spoustim zapis Objednavky - bezi, ale dal neloguju');
+ FDataMod.LogInfo (Quick.Logger.etInfo, 'Spoustim zapis Objednavky - bezi, ale dal neloguju');
try
if not(inProg) then // nebezi uz ?
@@ -162,7 +178,6 @@
if (1=1) then // pro rychle vypnuti
begin
- sqlConnX.Open;
if (sqlConnX.Connected) then
begin
inProg:= true;
@@ -174,44 +189,49 @@
if (lQry.RecordCount>0) then
begin
lQry.First;
- errMsg:= lQry.FieldByName('ErrMsg').AsString;
+ errMsg := lQry.FieldByName('ErrMsg').AsString;
if (errMsg<>'') then
begin
- datMod.LogInfo (Quick.Logger.etInfo, 'Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
+ FDataMod.LogInfo (Quick.Logger.etInfo, 'Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
{$IFDEF DEBUG}
- WriteLn('Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
+ WriteLn ('Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
{$ENDIF}
end;
end;
- inProg:= false;
+ inProg := false;
end; // sql Connected
end; // 1=1
end;
except on E:Exception do
begin
- inProg:= false;
- errMsg:= E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString;
+ inProg := false;
+ errMsg := E.Message; // datMod.sqlQry11.FieldByName('ErrMsg').AsString;
if (mamTabPrijataData) then
begin
datMod.LogInfo (Quick.Logger.etError, 'Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
{$IFDEF DEBUG}
- WriteLn('Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
+ WriteLn ('Zapis Objednavky materialu do ExpPr - chyba: ' + errMsg);
{$ENDIF}
end;
end;
end;
finally
+ lQry.Close;
lQry.Free;
end;
finally
- sqlConnX.Free;
+ if (lokalniConn) then
+ begin
+ sqlConnX.Close;
+ sqlConnX.Free;
+ end;
end;
- lLoop:= 0;
- if (logRunCnt<5) then
+ lLoop := 0;
+ if (logRunCnt<6) then // pro vypnuti zprav o zpracovani dat
Inc (logRunCnt);
end; // if lLoop=lLoopMax...
@@ -221,7 +241,7 @@
if (FTimer<>0) then
SetWaitableTimer (FTimer, TLargeInteger(liDueTime), 0, nil, nil, false);
repeat
- lBusy:= MsgWaitForMultipleObjects (1, FTimer, false, INFINITE, QS_ALLINPUT);
+ lBusy := MsgWaitForMultipleObjects (1, FTimer, false, INFINITE, QS_ALLINPUT);
until lBusy = WAIT_OBJECT_0;
// Sleep (998);
diff --git a/_custom/Rootvin/winSvc/mainSvcStart.inc b/_custom/Rootvin/winSvc/mainSvcStart.inc
index 7fd0a09..8351cc1 100644
--- a/_custom/Rootvin/winSvc/mainSvcStart.inc
+++ b/_custom/Rootvin/winSvc/mainSvcStart.inc
@@ -2,7 +2,7 @@
{$IFDEF DEBUG}
WriteLn ('Start sluzby Zapis objednavek materialu do ExpPr - inverval 10 minut...');
{$ENDIF}
- rtnZapisObjMatThr:= THeoRTNZapisObjMatThread.Create (ThreadTerminated, self);
+ rtnZapisObjMatThr:= THeoRTNZapisObjMatThread.Create (ThreadTerminated, self, datMod);
if (rtnZapisObjMatThr.Started) then
begin
datMod.LogInfo (Quick.Logger.etInfo, ' OK');
diff --git a/_custom/Rootvin/winSvc/types.inc b/_custom/Rootvin/winSvc/types.inc
index 56f1c01..4ce22eb 100644
--- a/_custom/Rootvin/winSvc/types.inc
+++ b/_custom/Rootvin/winSvc/types.inc
@@ -1,6 +1,7 @@
THeoRTNZapisObjMatThread = class(TThread)
private
FMainService: TService;
+ FDataMod : TdatMod;
FLock: TCriticalSection;
FTermEvent: TEvent;
FRunning: boolean;
@@ -9,7 +10,7 @@
procedure Execute; override;
procedure TerminatedSet; override; // XE2+ only *
public
- constructor Create (AOnTerminate: TNotifyEvent; AService: TService);
+ constructor Create (AOnTerminate: TNotifyEvent; AService: TService=nil; dm: TdatMod = nil);
destructor Destroy; override;
procedure ThreadTerminate;
end;
diff --git a/_custom/Rootvin/zdroje.RES b/_custom/Rootvin/zdroje.RES
index 65aa689..3c3da89 100644
Binary files a/_custom/Rootvin/zdroje.RES and b/_custom/Rootvin/zdroje.RES differ
diff --git a/hdcDZApi.dproj b/hdcDZApi.dproj
index 7a6ab64..7edb552 100644
--- a/hdcDZApi.dproj
+++ b/hdcDZApi.dproj
@@ -5,7 +5,7 @@
VCL
hdcDZApi.dpr
True
- Release
+ Debug
Win64
2
Application
diff --git a/hdcDZApi.res b/hdcDZApi.res
index 85e68a4..fec891c 100644
Binary files a/hdcDZApi.res and b/hdcDZApi.res differ
diff --git a/uCtrlBase.pas b/uCtrlBase.pas
index 1380213..f0b9f8b 100644
--- a/uCtrlBase.pas
+++ b/uCtrlBase.pas
@@ -10,6 +10,12 @@ uses
MVCFramework.Serializer.Commons,
MVCFramework.Nullables,
MVCFramework.Controllers.Register,
+ FireDAC.Stan.Intf, FireDAC.Stan.Option,
+ FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
+ FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.VCLUI.Wait,
+ Data.DB, FireDAC.Comp.Client, FireDAC.Comp.UI, FireDAC.Phys.MSSQLDef,
+ FireDAC.Phys.ODBCBase, FireDAC.Phys.MSSQL, FireDAC.Stan.Param, FireDAC.DatS,
+ FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Stan.Consts,
uDataMod,
uCommons,
uSvc_Base,
@@ -35,6 +41,8 @@ const
type
TBaseController = class abstract(TMVCController)
+ private
+ FConn: TFDConnection;
strict private
FObecnyService: TObecnyService;
@@ -160,7 +168,11 @@ type
function GetEMPNadobaService: TEMPNadobaService;
function GetEMPVytezeniDoklService: TEMPVytezeniDoklService;
{$ENDIF}
+
+ procedure OnBeforeAction (aContext: TWebContext; const aActionName: string; var AHandled: Boolean); override;
+ procedure OnAfterAction (aContext: TWebContext; const aActionName: string); override;
public
+ property Conn: TFDConnection read FConn;
constructor Create; override;
destructor Destroy; override;
function sanitizeSQLString (s: string): string;
@@ -209,12 +221,35 @@ implementation
uses
Winapi.ActiveX,
System.SysUtils,
- System.DateUtils,
- FireDAC.Stan.Consts;
+ System.DateUtils;
{ TBaseController }
+ procedure TBaseController.OnBeforeAction (aContext: TWebContext; const aActionName: string; var AHandled: Boolean);
+ begin
+ inherited;
+ AHandled := true;
+
+ FConn := TFDConnection.Create (nil);
+ FConn.ConnectionDefName := sqlPoolName;
+ FConn.Connected := true;
+ end;
+
+
+
+ procedure TBaseController.OnAfterAction (aContext: TWebContext; const aActionName: string);
+ begin
+ try
+ if Assigned(FConn) then
+ FConn.Close;
+ finally
+ FConn.Free;
+ end;
+ end;
+
+
+
constructor TBaseController.Create;
begin
inherited;
diff --git a/uWinService.pas b/uWinService.pas
index 7d48a37..4a84696 100644
--- a/uWinService.pas
+++ b/uWinService.pas
@@ -24,7 +24,8 @@ uses
{$IFDEF CUSTOM_CTRL_EMPolar}
{$I ./_custom/EMPolar/winSvc/usesTop.inc}
{$ENDIF}
- flcCipher, Quick.Logger, Quick.Threads, Quick.Logger.Provider.Files;
+ flcCipher, Quick.Logger, Quick.Threads, Quick.Logger.Provider.Files,
+ uDataMod;
const
@@ -237,6 +238,7 @@ const
function Encrypt (const AStr: string): RawByteString;
function ReturnEncrypted(const AStr: string): string;
function ReadConfig (var errMsg: string): boolean;
+ procedure InitConn (var errMsg: string);
procedure ThreadTerminated (Sender: TObject);
{$IFDEF OMNIThreadLib}
@@ -296,8 +298,11 @@ var
apiPort: integer;
webAuth, urlDZTaskyDown: string;
- dbName, dbServer, dbUser, dbPwd, heoLic, apiLic, dataZoneKlic, heoPath, sslLibPath: string;
- dbPort, intGetDZTasks: integer;
+ heoLic, apiLic, dataZoneKlic, heoPath, sslLibPath: string;
+ s_dbName, s_dbServer, s_dbUser, s_dbPwd: string;
+ s_dbPort: integer;
+ s_dbEncConn, initConnOK: boolean;
+ intGetDZTasks: integer;
intProcessDZTasksSec: integer;
jeSSL, jeLoginMod: boolean;
@@ -341,7 +346,7 @@ uses
{$I ./_custom/Rootvin/winSvc/uses.inc}
{$ENDIF}
helTabsBIDs,
- uWebMod, uDataMod;
+ uWebMod;
{$R *.DFM}
@@ -1650,6 +1655,67 @@ Logger.WriteLog(logItem);
+ procedure THDCDZApiService.InitConn (var errMsg: string);
+ var Def: IFDStanConnectionDef;
+ oPars: TStrings; // TFDPhysMSSQLConnectionDefParams;
+ begin
+ errMsg := '';
+ Def := FDManager.ConnectionDefs.FindConnectionDef (sqlPoolName);
+ if (Def=nil) and (s_dbServer<>'') and not(initConnOK) then
+ begin
+ oPars:= TStringList.Create;
+ try
+ try
+ oPars.Add (S_FD_ConnParam_Common_Server + '=' + s_dbServer);
+ oPars.Add (S_FD_ConnParam_Common_Port + '=' + s_dbPort.ToString);
+ oPars.Add (S_FD_ConnParam_Common_Database + '=' + s_dbName);
+ oPars.Add (S_FD_ConnParam_Common_UserName + '=' + s_dbUser);
+ oPars.Add (S_FD_ConnParam_Common_Password + '=' + s_dbPwd);
+ oPars.Add (S_FD_ConnParam_Common_OSAuthent + '=No');
+ oPars.Add (S_FD_ConnParam_Common_MetaDefSchema + '=dbo');
+ oPars.Add (S_FD_ConnParam_Common_LoginTimeout + '=15');
+ oPars.Add (S_FD_ConnParam_MSSQL_MARS + '=Yes');
+ oPars.Add (S_FD_ConnParam_Common_ExtendedMetadata + '=False'); // True jen pri pouziti AutoGenerate SQL / CachedUpdates / UpdateObject
+ oPars.Add (S_FD_ConnParam_Common_ApplicationName + '=hdcdzAPIsvc');
+ oPars.Add (S_FD_ConnParam_Common_Pooled + '=True');
+ oPars.Add (S_FD_ConnParam_Common_Pool_MaximumItems + '=300');
+ oPars.Add (S_FD_ConnParam_Common_Pool_ExpireTimeout + '=30000'); // FireDAC v intervalu 30 sekund testuje platnost spojeni, jestli to SQL server neukoncil
+ oPars.Add (S_FD_ConnParam_Common_Pool_CleanupTimeout + '=90000'); // FireDAC v intervalu 90 sekund cisti nepouzivana spojeni
+ oPars.Add (S_FD_ConnParam_ODBC_ODBCAdvanced + '=TrustServerCertificate=yes');
+// oPars.Add('CommandTimeout=120');
+ if (s_dbEncConn) then
+ oPars.Add (S_FD_ConnParam_MSSQL_Encrypt + '=Yes');
+
+ if not(ConnInit) then
+ begin
+ TMonitor.Enter(ConnInitLock);
+ try
+ if not(ConnInit) then
+ begin
+ if (FDManager.ConnectionDefs.FindConnectionDef(sqlPoolName) = nil) then
+ FDManager.AddConnectionDef (sqlPoolName, 'MSSQL', oPars);
+ ConnInit := True;
+ end;
+ finally
+ TMonitor.Exit (ConnInitLock);
+ end;
+ end;
+
+ initConnOK := true;
+ except
+ initConnOK := false;
+ end;
+ finally
+ oPars.Free;
+ end;
+
+ if (FDManager.State = dmsInactive) then
+ FDManager.Open;
+ end;
+
+
+
+
function THDCDZApiService.ReadConfig (var errMsg: string): boolean;
var xN1: TXmlNode;
i: integer;
@@ -1730,11 +1796,19 @@ Logger.WriteLog(logItem);
datMod.dbName:= 'Helios001';
datMod.dbUser:= '';
datMod.dbPwd:= '';
+ datMod.dbEncConn:= false;
+
+ s_dbServer:= 'localhost';
+ s_dbPort:= 1433;
+ s_dbName:= 'Helios001';
+ s_dbUser:= '';
+ s_dbPwd:= '';
+ s_dbEncConn:= false;
+
datMod.chL:= true; // check licenci
intGetDZTasks:= 0;
intProcessDZTasksSec:= 120; // default pro zapis tasku do Heliosu (zpracovani tabulky dbo._hdc_ph_PrijataJsonData)
DZTaksZapisTypCas:= 0; // sek
- datMod.dbEncConn:= false;
webAuth:= 'https://forum.helios.eu/HeliosStoreWS/wsHeliosStore.asmx';
urlDZTaskyDown:= 'http://manager.datazone.cloud/api/task/PH2';
@@ -1765,7 +1839,10 @@ Logger.WriteLog(logItem);
i:= attribs.IndexOf(sServer);
if (i>-1) then
if (attribs.Get(i).NodeValue<>null) then
- datMod.dbServer:= attribs.Get(i).NodeValue;
+ begin
+ datMod.dbServer:= attribs.Get(i).NodeValue;
+ s_dbServer:= attribs.Get(i).NodeValue;
+ end;
{$IFDEF DEBUG}
Writeln('Server: ' + datMod.dbServer);
{$ENDIF}
@@ -1775,31 +1852,43 @@ Writeln('Server: ' + datMod.dbServer);
begin
sTemp:= attribs.Get(i).NodeValue;
datMod.dbPort:= sTemp.ToInteger;
+ s_dbPort:= sTemp.ToInteger;
end;
i:= attribs.IndexOf(sName);
if (i>-1) then
if (attribs.Get(i).NodeValue<>null) then
- datMod.dbName:= attribs.Get(i).NodeValue;
+ begin
+ datMod.dbName:= attribs.Get(i).NodeValue;
+ s_dbName:= attribs.Get(i).NodeValue;
+ end;
{$IFDEF DEBUG}
-Writeln('DB: ' + datMod.dbName);
+Writeln('DB: ' + s_dbName);
{$ENDIF}
i:= attribs.IndexOf(sUser);
if (i>-1) then
if (attribs.Get(i).NodeValue<>null) then
- datMod.dbUser:= ReturnDecrypted(attribs.Get(i).NodeValue);
+ begin
+ datMod.dbUser:= ReturnDecrypted(attribs.Get(i).NodeValue);
+ s_dbUser:= ReturnDecrypted(attribs.Get(i).NodeValue);
+ end;
i:= attribs.IndexOf(sPwd);
if (i>-1) then
if (attribs.Get(i).NodeValue<>null) then
- datMod.dbPwd:= ReturnDecrypted(attribs.Get(i).NodeValue);
-
+ begin
+ datMod.dbPwd:= ReturnDecrypted(attribs.Get(i).NodeValue);
+ s_dbPwd:= ReturnDecrypted(attribs.Get(i).NodeValue);
+ end;
i:= attribs.IndexOf(sEncConn);
if (i>-1) then
if (attribs.Get(i).NodeValue<>null) then
if (attribs.Get(i).NodeValue='1') then
- datMod.dbEncConn:= true;
+ begin
+ datMod.dbEncConn:= true;
+ s_dbEncConn:= true;
+ end;
i:= attribs.IndexOf(sSSL);
@@ -2515,6 +2604,8 @@ Writeln('DB: ' + datMod.dbName);
Exit;
end;
+ initConnOK:= false;
+ InitConn (sTemp);
verText:= StringReplace(GetFileVersion2(GetModuleName(HInstance)),'.','',[rfReplaceAll]);