Priprava na init poolingu uz ve WinService + do TBaseController dat jen FConn a na to okazovat dal
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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;
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user