Po hlavnich upravach sdileni sponeni a uvolnovani connection poolu

This commit is contained in:
2026-04-13 12:20:09 +02:00
parent a62b608cfd
commit 1258a27a4e
16 changed files with 2006 additions and 1324 deletions

View File

@ -794,6 +794,7 @@ uses
var lQry: TFDQuery;
sqlConnX: TFDConnection;
lSQL, where, errMsg: string;
lokIDcka: TList<integer>;
cnt, rNo, idVPr: integer;
typPrikazu: integer;
operace, material, spustene: boolean;
@ -804,311 +805,346 @@ uses
p: TVyrobniPrikaz;
vpSvr: TVyrobniPrikazService;
locParams: TDictionary<string, string>;
lokIDcko: TObject;
begin
cisOper:= '';
locParams:= TDictionary<string, string>.Create;
operace:= false;
if (params.ContainsKey('operace')) then
if (params.Items['operace']='1') then
begin
operace:= true;
locParams.Add('operace', params.Items['operace']);
end;
material:= false;
if (params.ContainsKey('material')) then
if (params.Items['material']='1') then
begin
material:= true;
locParams.Add('material', params.Items['material']);
end;
spustene:= false;
if (params.ContainsKey('spustene')) then
if (params.Items['spustene']='1') then
begin
spustene:= true;
locParams.Add('spustene', params.Items['spustene']);
end;
where:= '';
lSQL:= 'SELECT DISTINCT(main.ID) AS ID FROM ' + tblVPr + ' main';
if (spustene) then
where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM ' + tblPrPost + ' pp INNER JOIN ' + tblRozpracOperR
+ ' r ON (r.DokladPrPostup=pp.Doklad AND r.AltPrPostup=pp.Alt AND r.IDPrikaz=pp.IDPrikaz)'
+ ' INNER JOIN ' + tblRozpracOper + ' h ON (h.ID=r.IDEvidRozpracOper)'
+ ' WHERE pp.IDOdchylkyDo IS NULL AND pp.IDPrikaz=main.ID AND h.DatumUzavreni IS NULL)';
typPrikazu:= 0;
if (params.ContainsKey('typ')) then
if not(TryStrToInt(params.Items['typ'], typPrikazu)) then
typPrikazu:= 0;
locParams.Add('rtn', '1');
locParams.Add('typPrikazu', typPrikazu.ToString);
if (typPrikazu=0) then // obecny
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0)';
if (typPrikazu=1) then // pro micharnu se nacitaji vyssi prikazy, tj. kde testo skonci
begin
locParams.Add('nazevOp', 'michani');
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=N''003'' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo=N''701'')';
if (params.ContainsKey('idstroj')) then
begin
if (params.Items['idstroj']<>'') then
where:= where + ' AND (main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje=' + params.Items['idstroj'] + ')'
+ ' OR main.IDPrikazVyssi IN (SELECT ID FROM ' + tblPrikaz
+ ' WHERE IDPrikazVyssi IN (SELECT px.ID FROM ' + tblPrPost + ' ppx'
+ ' INNER JOIN dbo.TabPrikaz px ON (px.ID=ppx.IDPrikaz)'
+ ' WHERE ppx.IDOdchylkyDo IS NULL'
+ ' AND px.StavPrikazu IN (30,40)'
+ ' AND ppx.IDStroje=' + params.Items['idstroj'] + '))'
+ ')';
{
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje=' + params.Items['idstroj'] + ')'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo=N''701'')'
}
end;
{
else
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo=N''701'')';
}
if (params.ContainsKey('idstroju')) then
begin
if (params.Items['idstroju']<>'') then
where:= where + ' AND (main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN ' + params.Items['idstroju'] + ')'
+ ' OR main.IDPrikazVyssi IN (SELECT ID FROM ' + tblPrikaz
+ ' WHERE IDPrikazVyssi IN (SELECT px.ID FROM ' + tblPrPost + ' ppx'
+ ' INNER JOIN dbo.TabPrikaz px ON (px.ID=ppx.IDPrikaz)'
+ ' WHERE ppx.IDOdchylkyDo IS NULL'
+ ' AND px.StavPrikazu IN (30,40)'
+ ' AND ppx.IDStroje IN ' + params.Items['idstroju'] + '))'
+ ')';
{
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo=N''701'')'
}
end;
end;
if (typPrikazu=2) then // pro macirnu
begin
locParams.Add('nazevOp', 'máčení');
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada IN (N''004'', N''002'') AND EXISTS (SELECT 1 FROM ' + tblPrPost + ' pp INNER JOIN ' + tblCisStroj + ' cs'
+ ' ON (cs.ID=pp.IDStroje) INNER JOIN ' + tblCisStrojE + ' cse ON (cse.ID=cs.ID) WHERE pp.IDPrikaz=main.ID'
+ ' AND pp.IDOdchylkyDo IS NULL AND pp.priorita=0 AND cse._MaceciStroj=1)';
{
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=N''004'' AND main.IDZakazModif IN (SELECT ID FROM '
+ tblZakazModif + ' WHERE Schvaleno=1 AND Kod LIKE N''COKO%'')';
}
{
if (params.ContainsKey('idpracovist')) then
if (params.Items['idpracovist']<>'') then
begin
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.pracoviste IN (' + params.Items['idpracovist'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')'
end;
}
if (params.ContainsKey('idstroju')) then
begin
if (params.Items['idstroju']<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')'
end;
if (params.ContainsKey('idstroj')) then
begin
if (params.Items['idstroj']<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroj'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')'
end;
{
else
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')';
}
end;
if (typPrikazu=3) then // pro baleni (interni)
begin
locParams.Add('nazevOp', 'balení');
where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL'
+ ' AND LOWER(Nazev) LIKE N''%balení%'' AND IDStroje NOT IN (SELECT ID FROM ' + tblCisStroj
+ ' WHERE Blokovano=0 AND Kod LIKE N''BAL-%'') AND priorita=0)'; // main.Rada=N''004''
{
if (params.ContainsKey('idstroj')) then
begin
if (params.Items['idstroj']<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroj'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo<>N''701'')'
end;
if (params.ContainsKey('idstroju')) then
begin
if (params.Items['idstroju']<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')';
end;
}
end;
if (typPrikazu=4) then // pro balicku finalu
begin
locParams.Add('nazevOp', 'balení');
where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL'
+ ' AND IDStroje IN (SELECT ID FROM ' + tblCisStroj + ' WHERE Blokovano=0 AND Kod LIKE N''BAL-%''))';
end;
if (typPrikazu=5) then // pro EWB
begin
locParams.Add('nazevOp', 'balení');
where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL'
+ ' AND IDStroje IN (SELECT ID FROM ' + tblCisStroj + ' WHERE Blokovano=0 AND Kod LIKE N''EWB%''))';
end;
if (params.ContainsKey('odDatum')) then
if (params.Items['odDatum']<>'') then
odDatum:= params.Items['odDatum'];
if (odDatum<>'') then
begin
if (Length(odDatum)=8) then
odDatum:= odDatum + '000000';
if (Length(odDatum)=10) then
odDatum:= odDatum + '00';
odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2);
if not(TryStrToDateTime(odDatum, datOd)) then
datOd:= IncDay(Now, -180)
end
else
datOd:= IncDay(Now, -180);
if (params.ContainsKey('doDatum')) then
if (params.Items['doDatum']<>'') then
odDatum:= params.Items['doDatum'];
if (doDatum<>'') then
begin
if (Length(doDatum)=8) then
doDatum:= doDatum + '235959';
if (Length(doDatum)=10) then
doDatum:= doDatum + '59';
doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2);
if not(TryStrToDateTime(doDatum, datDo)) then
datDo:= Now
end
else
datDo:= Now;
if (odDatum<>'') then
begin
strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni>=' + strTemp;
end;
if (doDatum<>'') then
begin
strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni<=' + strTemp;
end;
// pro micharnu nejsou prikazy pozastavovany
where:= where + IfThen(where<>'', ' AND ', '') + 'main.StavPrikazu IN (30' + IfThen(typPrikazu<>1, ',40', '') + ')';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada<>N''009''';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada LIKE N''0%''';
if (where<>'') then
lSQL:= lSQL + ' WHERE ' + where;
lSQL:= lSQL + ' GROUP BY main.ID ORDER BY main.ID';
vpSvr:= TVyrobniPrikazService.Create (self.FDM);
sqlConnX:= TFDConnection.Create(nil);
sqlConnX.ConnectionDefName:= sqlPoolName;
lQry:= TFDQuery.Create(nil);
try
lQry.Connection:= sqlConnX;
lQry.FetchOptions.Mode:= fmAll;
lQry.Open(lSQL);
cnt:= lQry.RecordCount;
vpList:= TObjectList<TVyrobniPrikaz>.Create;
try
if not(lQry.Active) then
lQry.Open(lSQL);
lQry.First;
rNo:= 1;
while (rNo<=cnt) do
begin
lQry.RecNo:= rNo;
idVPr:= lQry.FieldByName('ID').AsInteger;
p:= vpSvr.GetByID (idVPr, locParams);
vpList.Add(p);
if not(lQry.Active) then
lQry.Open;
Inc(rNo);
end;
result:= vpList;
except on E:Exception do
operace:= false;
if (params.ContainsKey('operace')) then
if (params.Items['operace']='1') then
begin
errMsg:= e.Message;
raise EServiceException.Create('Chyba načítání naskenované položky/položek dokladu: ' + E.Message);
operace:= true;
locParams.Add('operace', params.Items['operace']);
end;
material:= false;
if (params.ContainsKey('material')) then
if (params.Items['material']='1') then
begin
material:= true;
locParams.Add('material', params.Items['material']);
end;
spustene:= false;
if (params.ContainsKey('spustene')) then
if (params.Items['spustene']='1') then
begin
spustene:= true;
locParams.Add('spustene', params.Items['spustene']);
end;
where:= '';
lSQL:= 'SELECT DISTINCT(main.ID) AS ID FROM ' + tblVPr + ' main';
if (spustene) then
where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM ' + tblPrPost + ' pp INNER JOIN ' + tblRozpracOperR
+ ' r ON (r.DokladPrPostup=pp.Doklad AND r.AltPrPostup=pp.Alt AND r.IDPrikaz=pp.IDPrikaz)'
+ ' INNER JOIN ' + tblRozpracOper + ' h ON (h.ID=r.IDEvidRozpracOper)'
+ ' WHERE pp.IDOdchylkyDo IS NULL AND pp.IDPrikaz=main.ID AND h.DatumUzavreni IS NULL)';
typPrikazu:= 0;
if (params.ContainsKey('typ')) then
if not(TryStrToInt(params.Items['typ'], typPrikazu)) then
typPrikazu:= 0;
locParams.Add('rtn', '1');
locParams.Add('typPrikazu', typPrikazu.ToString);
if (typPrikazu=0) then // obecny
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0)';
if (typPrikazu=1) then // pro micharnu se nacitaji vyssi prikazy, tj. kde testo skonci
begin
locParams.Add('nazevOp', 'michani');
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=N''003'' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo=N''701'')';
if (params.ContainsKey('idstroj')) then
begin
if (params.Items['idstroj']<>'') then
where:= where + ' AND (main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje=' + params.Items['idstroj'] + ')'
+ ' OR main.IDPrikazVyssi IN (SELECT ID FROM ' + tblPrikaz
+ ' WHERE IDPrikazVyssi IN (SELECT px.ID FROM ' + tblPrPost + ' ppx'
+ ' INNER JOIN dbo.TabPrikaz px ON (px.ID=ppx.IDPrikaz)'
+ ' WHERE ppx.IDOdchylkyDo IS NULL'
+ ' AND px.StavPrikazu IN (30,40)'
+ ' AND ppx.IDStroje=' + params.Items['idstroj'] + '))'
+ ')';
{
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje=' + params.Items['idstroj'] + ')'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo=N''701'')'
}
end;
{
else
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo=N''701'')';
}
if (params.ContainsKey('idstroju')) then
begin
if (params.Items['idstroju']<>'') then
where:= where + ' AND (main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN ' + params.Items['idstroju'] + ')'
+ ' OR main.IDPrikazVyssi IN (SELECT ID FROM ' + tblPrikaz
+ ' WHERE IDPrikazVyssi IN (SELECT px.ID FROM ' + tblPrPost + ' ppx'
+ ' INNER JOIN dbo.TabPrikaz px ON (px.ID=ppx.IDPrikaz)'
+ ' WHERE ppx.IDOdchylkyDo IS NULL'
+ ' AND px.StavPrikazu IN (30,40)'
+ ' AND ppx.IDStroje IN ' + params.Items['idstroju'] + '))'
+ ')';
{
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDPrikazVyssi IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo=N''701'')'
}
end;
end;
if (typPrikazu=2) then // pro macirnu
begin
locParams.Add('nazevOp', 'máčení');
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada IN (N''004'', N''002'') AND EXISTS (SELECT 1 FROM ' + tblPrPost + ' pp INNER JOIN ' + tblCisStroj + ' cs'
+ ' ON (cs.ID=pp.IDStroje) INNER JOIN ' + tblCisStrojE + ' cse ON (cse.ID=cs.ID) WHERE pp.IDPrikaz=main.ID'
+ ' AND pp.IDOdchylkyDo IS NULL AND pp.priorita=0 AND cse._MaceciStroj=1)';
{
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada=N''004'' AND main.IDZakazModif IN (SELECT ID FROM '
+ tblZakazModif + ' WHERE Schvaleno=1 AND Kod LIKE N''COKO%'')';
}
{
if (params.ContainsKey('idpracovist')) then
if (params.Items['idpracovist']<>'') then
begin
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.IDOdchylkyDo IS NULL'
+ ' AND p.StavPrikazu IN (30,40)'
+ ' AND pp.pracoviste IN (' + params.Items['idpracovist'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')'
end;
}
if (params.ContainsKey('idstroju')) then
begin
if (params.Items['idstroju']<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')'
end;
if (params.ContainsKey('idstroj')) then
begin
if (params.Items['idstroj']<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroj'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')'
end;
{
else
where:= where + IfThen(where<>'', ' AND ', '') + 'main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')';
}
end;
if (typPrikazu=3) then // pro baleni (interni)
begin
locParams.Add('nazevOp', 'balení');
where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL'
+ ' AND LOWER(Nazev) LIKE N''%balení%'' AND IDStroje NOT IN (SELECT ID FROM ' + tblCisStroj
+ ' WHERE Blokovano=0 AND Kod LIKE N''BAL-%'') AND priorita=0)'; // main.Rada=N''004''
{
if (params.ContainsKey('idstroj')) then
begin
if (params.Items['idstroj']<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroj'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Blokovano=0 AND SkupZbo<>N''701'')'
end;
if (params.ContainsKey('idstroju')) then
begin
if (params.Items['idstroju']<>'') then
where:= where + IfThen(where<>'', ' AND ', '') + 'main.ID IN (SELECT p.ID FROM ' + tblPrPost + ' pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz)'
+ ' WHERE pp.Typ=1 AND pp.IDOdchylkyDo IS NULL AND p.StavPrikazu IN (30,40)'
+ ' AND pp.IDStroje IN (' + params.Items['idstroju'] + '))'
+ ' AND main.IDTabKmen IN (SELECT ID FROM ' + tblKZ + ' WHERE Dilec=1 AND Blokovano=0 AND SkupZbo<>N''701'')';
end;
}
end;
if (typPrikazu=4) then // pro balicku finalu
begin
locParams.Add('nazevOp', 'balení');
where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL'
+ ' AND IDStroje IN (SELECT ID FROM ' + tblCisStroj + ' WHERE Blokovano=0 AND Kod LIKE N''BAL-%''))';
end;
if (typPrikazu=5) then // pro EWB
begin
locParams.Add('nazevOp', 'balení');
where:= where + IfThen(where<>'', ' AND ', '') + 'EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=main.ID AND IdOdchylkyDo IS NULL'
+ ' AND IDStroje IN (SELECT ID FROM ' + tblCisStroj + ' WHERE Blokovano=0 AND Kod LIKE N''EWB%''))';
end;
if (params.ContainsKey('odDatum')) then
if (params.Items['odDatum']<>'') then
odDatum:= params.Items['odDatum'];
if (odDatum<>'') then
begin
if (Length(odDatum)=8) then
odDatum:= odDatum + '000000';
if (Length(odDatum)=10) then
odDatum:= odDatum + '00';
odDatum:= MidStr(odDatum, 7, 2) + '.' + MidStr(odDatum, 5, 2) + '.' + LeftStr(odDatum, 4) + ' ' + MidStr(odDatum, 9, 2) + ':' + MidStr(odDatum, 11, 2) + ':' + MidStr(odDatum, 13, 2);
if not(TryStrToDateTime(odDatum, datOd)) then
datOd:= IncDay(Now, -180)
end
else
datOd:= IncDay(Now, -180);
if (params.ContainsKey('doDatum')) then
if (params.Items['doDatum']<>'') then
doDatum:= params.Items['doDatum'];
if (doDatum<>'') then
begin
if (Length(doDatum)=8) then
doDatum:= doDatum + '235959';
if (Length(doDatum)=10) then
doDatum:= doDatum + '59';
doDatum:= MidStr(doDatum, 7, 2) + '.' + MidStr(doDatum, 5, 2) + '.' + LeftStr(doDatum, 4) + ' ' + MidStr(doDatum, 9, 2) + ':' + MidStr(doDatum, 11, 2) + ':' + MidStr(doDatum, 13, 2);
if not(TryStrToDateTime(doDatum, datDo)) then
datDo:= Now
end
else
datDo:= Now;
if (odDatum<>'') then
begin
strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datOd).QuotedString + ',104)';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni>=' + strTemp;
end;
if (doDatum<>'') then
begin
strTemp:= 'CONVERT(datetime, N' + FormatDateTime('dd.mm.yyyy', datDo).QuotedString + ',104)';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.DatPorizeni<=' + strTemp;
end;
// pro micharnu nejsou prikazy pozastavovany
where:= where + IfThen(where<>'', ' AND ', '') + 'main.StavPrikazu IN (30' + IfThen(typPrikazu<>1, ',40', '') + ')';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada<>N''009''';
where:= where + IfThen(where<>'', ' AND ', '') + 'main.Rada LIKE N''0%''';
if (where<>'') then
lSQL:= lSQL + ' WHERE ' + where;
lSQL:= lSQL + ' GROUP BY main.ID ORDER BY main.ID';
vpSvr := TVyrobniPrikazService.Create (self.FDM);
try
sqlConnX := TFDConnection.Create (nil);
try
sqlConnX.ConnectionDefName := sqlPoolName;
sqlConnX.Open;
lokIDcka := TList<Integer>.Create;
try
lQry := TFDQuery.Create (nil);
try
lQry.Connection := sqlConnX;
lQry.FetchOptions.Mode := fmAll;
lQry.Open (lSQL);
cnt := lQry.RecordCount;
if not lQry.Active then
lQry.Open (lSQL);
lQry.First;
rNo := 1;
try
while (rNo <= cnt) do
begin
lQry.RecNo := rNo;
idVPr := lQry.FieldByName('ID').AsInteger;
lokIDcka.Add (idVPr);
if not lQry.Active then
lQry.Open (lSQL);
Inc(rNo);
end;
except
on E: Exception do
begin
{$IF CompilerVersion >= 37.0} // Delphi 13+
raise EServiceException.Create ('Chyba načítání naskenované položky/položek dokladu') from E;
{$ELSE}
raise EServiceException.Create ('Chyba načítání naskenované položky/položek dokladu: ' + E.Message) at ExceptAddr;
{$ENDIF}
end;
end;
finally
lQry.Free;
end;
vpList := TObjectList<TVyrobniPrikaz>.Create;
try
for idVPr in lokIDcka do
begin
p := vpSvr.GetByID (idVPr, locParams, sqlConnX);
vpList.Add (p);
end;
result := vpList;
vpList := nil; // zabrani uvolneni v finally
finally
vpList.Free;
end;
finally
lokIDcka.Free;
end;
finally
sqlConnX.Free;
end;
finally
vpSvr.Free;
end;
finally
begin
vpSvr.Free;
FreeAndNil(lQry);
end;
locParams.Free;
end;
locParams.Free;
sqlConnX.Close;
sqlConnX.Free;
end;