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,3 @@
,uHeOObj_Custom in '_custom\EMPolar\uHeOObj_Custom.pas'
,uCtrlCustom in '_custom\EMPolar\uCtrlCustom.pas'
,uSvcCustom in '_custom\EMPolar\uSvcCustom.pas'

View File

@ -0,0 +1,246 @@
unit uCtrlCustom;
interface
{$I 'GlobalDefs.inc'}
uses
MVCframework,
MVCframework.Commons,
MVCframework.Serializer.Commons,
// MVCframework.Serializer.Intf,
System.Generics.Collections, // kvuli TDictionary
System.RegularExpressions,
// JsonDataObjects,
uCommons, // kvuli EServiceException
uCtrlBase,
// uSvc_Base,
helTabsBIDs,
uHeoObj_Base,
uHeOObj_Custom,
uSvcCustom,
uSvc_Obecne,
MVCFramework.Swagger.Commons; // kvuli dokumentaci
const
{$I .\..\..\globalConsts.inc}
type
[MVCPath('/emp/nadoba')]
TEMPNadobaController = class(TBaseController)
public
[MVCPath('')]
[MVCSwagSummary('EMP - vyr<79>b<EFBFBD>n<EFBFBD> n<>doby', 'Vr<56>t<EFBFBD> seznam n<>dob', 'EMPNadobaGetByCislo')]
[MVCHTTPMethod([httpGET])]
[MVCSwagParam(plQuery, 'cislo', '<27><>slo n<>doby', ptString, false, '1')]
procedure GetByCislo ([MVCFromQueryString('cislo', '')] cislo: string
);
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('EMP - vyr<79>b<EFBFBD>n<EFBFBD> n<>doby', 'Meta informace seznamu n<>dob', 'EMPNadobaGetMeta')]
procedure GetMeta;
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('EMP - vyr<79>b<EFBFBD>n<EFBFBD> n<>doby', 'Vr<56>t<EFBFBD> <20>daje n<>doby dle jej<65>ho ID', 'EMPNadobaGetByID')]
[MVCSwagParam(plPath, 'id', 'ID n<>doby', ptString, true)]
[MVCProduces('application/json')]
procedure GetByID (id: string);
end;
[MVCPath('/emp/atest')]
TEMPDokumentAtestController = class(TBaseController)
private
FDokumService: TDokumentService;
public
constructor Create; override;
destructor Destroy; override;
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('EMP - dokumenty atest<73>', 'Meta informace dokumentu atestu', 'EMPDokumAtestGetMeta')]
procedure GetMeta;
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('EMP - dokumenty atest<73>', 'Vr<56>t<EFBFBD> <20>daje dokumentu atestu dle jeho ID', 'EMPDokumAtestGetByID')]
[MVCSwagParam(plPath, 'id', 'ID dokumentu atestu', ptString, true)]
[MVCProduces('application/json')]
procedure GetByID (id: string);
end;
implementation
uses
System.SysUtils,
FireDAC.Stan.Option,
FireDAC.Comp.Client,
FireDAC.Stan.Param,
MVCFramework.FireDAC.Utils,
MVCFramework.DataSet.Utils,
uDataMod;
{ TEMPNadobaController }
procedure TEMPNadobaController.GetByCislo (cislo: string);
begin
cislo:= sanitizeSQLString (cislo);
try
if (cislo<>'') then
Render(ObjectDict().Add('data', GetEMPNadobaService.GetByCislo (cislo)))
else
Render(ObjectDict().Add('data', GetEMPNadobaService.GetAll));
except
// RenderStatusMessage (200);
{
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
}
on E:Exception do
begin
Writeln(E.Message);
raise EMVCException.Create(E.Message, '', 0, 200);
end;
// RenderStatusMessage (200); // raise;
end;
end;
procedure TEMPNadobaController.GetByID (id: string);
var iId: integer;
begin
id:= sanitizeSQLString (id);
if not(TryStrToInt(id, iId)) then
iId:= 0;
try
Render(ObjectDict().Add('data', GetEMPNadobaService.GetByID (iId))); // viz uSvc_Custom1.pas
except
// RenderStatusMessage (200);
{
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
}
on E:Exception do
begin
Writeln(E.Message);
raise EMVCException.Create(E.Message, '', 0, 200);
end;
// RenderStatusMessage (200); // raise;
end;
end;
procedure TEMPNadobaController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetEMPNadobaService.GetMeta));
except
// RenderStatusMessage (200);
{
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
}
on E:Exception do
begin
Writeln(E.Message);
raise EMVCException.Create(E.Message, '', 0, 200);
end;
// RenderStatusMessage (200); // raise;
end;
end;
{ TEMPDokumentAtestController }
constructor TEMPDokumentAtestController.Create;
begin
inherited;
FDokumService:= GetDokumentService;
end;
destructor TEMPDokumentAtestController.Destroy;
begin
if (FDokumService<>nil) then
FreeAndNil (FDokumService);
inherited;
end;
procedure TEMPDokumentAtestController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetDokumentService.GetMeta));
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 404);
end
else
raise;
{$ENDIF}
end;
end;
procedure TEMPDokumentAtestController.GetByID (id: string);
var iId: integer;
p: TDictionary<string, string>;
begin
id:= sanitizeSQLString (id);
if not(TryStrToInt(id, iId)) then
iId:= 0;
p:= TDictionary<string, string>.Create;
try
Render(ObjectDict().Add('data', GetDokumentService.GetByID (iId, true))) // viz uSvc_Custom1.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 404);
end
else
raise;
{$ENDIF}
end;
p.Free;
end;
end.

View File

@ -0,0 +1,112 @@
unit uHeOObj_Custom;
{$RTTI EXPLICIT METHODS([vcPublic, vcPublished]) FIELDS([vcPrivate, vcProtected, vcPublic, vcPublished]) PROPERTIES([vcPublic, vcPublished])}
interface
{$I 'GlobalDefs.inc'}
uses
System.Generics.Collections,
MVCFramework.Serializer.Commons,
MVCFramework.ActiveRecord,
MVCFramework.Nullables,
{$IFDEF SWAGGER}
MVCFramework.Swagger.Commons,
{$ENDIF}
helTabsBIDs,
uHeoObj_Base;
type
[MVCNameCase(ncLowerCase)]
TEMPAtestDokument = class(TDokument)
private
FDokument: TDokument;
public
property Dokument: TDokument read FDokument write FDokument;
end;
[MVCNameCase(ncLowerCase)]
TEMPNadoba = class(THeliosObjekty)
private
FCisloZakazky: string;
FVyrobniCislo: string;
FNazev: string;
FDruhyNazev: string;
FTypZakazky: string;
FVykres: NullableString;
FIDZakazky: integer;
FPotvrzTermDod: NullableTDateTime;
FCisloOrg: NullableInt32; // TabZakazka.Prijemce
FNazevOrg: NullableString;
public
[MVCColumn('CisloZakazky', false)]
[MVCSwagJsonSchemaField(stString, 'CisloZakazky', '<27><>slo zak<61>zky', true, false)] // required, nullable, minLength, maxLength, FieldSerializationType
property CisloZakazky: string read FCisloZakazky write FCisloZakazky;
[MVCColumn('VyrobniCislo', false)]
[MVCSwagJsonSchemaField(stString, 'VyrobniCislo', 'V<>robn<62> <20><>slo', false, false, 0, 100)] // required, nullable, minLength, maxLength, FieldSerializationType
property VyrobniCislo: string read FVyrobniCislo write FVyrobniCislo;
[MVCColumn('IDZakazky', false)]
[MVCSwagJsonSchemaField(stInteger, 'IDZakazky', 'ID zak<61>zky n<>doby', true, false)]
property IDZakazky: integer read FIDZakazky write FIDZakazky;
[MVCColumn('TypZakazky', false)]
[MVCSwagJsonSchemaField(stString, 'TypZakazky', 'Typ zak<61>zky (100-Objedn<64>vka, 101-n<>doba, 200-nev<65>robn<62>)', false, false)]
property TypZakazky: string read FTypZakazky write FTypZakazky;
[MVCColumn('Vykres', false)]
[MVCSwagJsonSchemaField(stString, 'Vykres', '<27><>slo v<>kresu', false, true, 0, 35)]
property Vykres: NullableString read FVykres write FVykres;
[MVCColumn('Nazev', false)]
[MVCSwagJsonSchemaField(stString, 'Nazev', 'N<>zev zak<61>zky', false, false, 0, 100)]
property Nazev: string read FNazev write FNazev;
[MVCColumn('DruhyNazev', false)]
[MVCSwagJsonSchemaField(stString, 'DruhyNazev', 'Druh<75> n<>zev zak<61>zky', false, false, 0, 100)]
property DruhyNazev: string read FDruhyNazev write FDruhyNazev;
[MVCColumn('PotvrzTermDod', false)]
[MVCSwagJsonSchemaField(stDateTime, 'PotvrzTermDod', 'Potvrzen<65> term<72>n dod<6F>vky', false, false, 0, 100)]
property PotvrzTermDod: NullableTDateTime read FPotvrzTermDod write FPotvrzTermDod;
[MVCColumn('CisloOrg', false)]
[MVCSwagJsonSchemaField(stInteger, 'CisloOrg', '<27><>slo organizace p<><70>jemce (ze zak<61>zky)', false, true)]
property CisloOrg: NullableInt32 read FCisloOrg write FCisloOrg;
[MVCColumn('NazevOrg', false)]
[MVCSwagJsonSchemaField(stString, 'NazevOrg', 'N<>zev organizace p<><70>jemce (ze zak<61>zky)', false, true, 0, 100)]
property NazevOrg: NullableString read FNazevOrg write FNazevOrg;
{
[MVCColumn('GUIDDokladu', false)]
[MVCSwagJsonSchemaField(stGuid, 'GUIDDokladu', 'GUID dokladu', false, true)]
property GUIDDokladu: NullableTGUID read FGUIDDokladu write FGUIDDokladu;
[MapperListOf(TGatemaSDScanData)]
property ScanData: TObjectList<TGatemaSDScanData> read FScanData write SetSDScanData;
}
end;
implementation
uses
System.SysUtils,
System.StrUtils,
System.RegularExpressions,
uSvc_Obecne,
uCtrlBase
;
end.

View File

@ -0,0 +1,242 @@
unit uSvcCustom;
interface
{$I 'GlobalDefs.inc'}
uses
System.Classes,
System.JSON,
System.Generics.Collections,
Winapi.ActiveX,
System.DateUtils,
System.SysUtils,
JsonDataObjects,
uSvc_Base,
uCommons, // kvuli EServiceException
helTabsBIDs,
uHeoObj_Base,
uHeOObj_Custom,
uHeoObj_Vyroba,
uSvc_Obecne,
uSvc_ObehZbozi,
uSvc_Vyroba;
const
//{$I C:\_zakaznici\pluginy_obecne\HDCApi2\globalConsts.inc}
{$I .\..\..\globalConsts.inc}
selSloupce = 'SELECT TypZakazky, CisloZakazky, NazevOrg, CisloOrg, VyrobniCislo, NazevPol, idPolozkaObj, PotvrzenyTerminDod, NadrazeneCisloZakazky, Vykres, Stav'
+ ', ID AS IDZakazky, Nazev, DruhyNazev, DatPorizeni_Y FROM dbo.hvw_ADE_VIEW_ZAKAZKA ORDER BY CisloZakazky';
selEMPAtestDok = 'SELECT d.ID, d.Popis, d.JmenoACesta, ISNULL(de_CisloAtestu, N'''') AS CisloAtestu, ISNULL(de._AtestyPoznamka, N'''') AS AtestPoznamka'
+ ', d.DatPorizeni FROM ' + tblDokum + ' d LEFT JOIN ' + tblDokumE + ' de ON (de.ID=d.ID)';
type
TEMPNadobaService = class(TServiceBase)
public
function GetAll: TObjectList<TEMPNadoba>;
function GetByID (const AID: integer): TEMPNadoba;
function GetByCislo (const ACislo: string): TEMPNadoba;
function GetMeta: TJSONObject;
function GetByParams (params: TDictionary<string, string>): TObjectList<TEMPNadoba>;
end;
implementation
uses
System.StrUtils,
FireDAC.Stan.Option,
FireDAC.Comp.Client,
FireDAC.Stan.Param,
MVCFramework.FireDAC.Utils,
MVCFramework.DataSet.Utils,
MVCFramework.Serializer.Commons,
uCtrlBase
;
{ TEMPNadobaService }
function TEMPNadobaService.GetByParams (params: TDictionary<string, string>): TObjectList<TEMPNadoba>;
var lSQL, where, ordBy: string;
AID, cnt, rNo: integer;
retObj: TEMPNadoba;
lsRetObj: TObjectList<TEMPNadoba>;
lQry: TFDQuery;
sqlConnX: TFDConnection;
begin
result:= nil;
ordBy:= 'VyrobniCislo';
if (params<>nil) then
begin
if (params.ContainsKey('ordBy')) then
if (params.Items['ordBy']<>'') then
ordBy:= params.Items['ordBy'];
end;
lSQL:= 'SELECT ' + selSloupce;
lSQL:= lSQL + ' ORDER BY ' + ordBy;
sqlConnX:= TFDConnection.Create(nil);
sqlConnX.ConnectionDefName:= sqlPoolName;
lQry:= TFDQuery.Create(nil);
try
lQry.FetchOptions.Mode:= fmAll;
lQry.Connection:= sqlConnX;
lQry.Open(lSQL);
cnt:= lQry.RecordCount;
if (cnt>0) then
begin
lsRetObj:= TObjectList<TEMPNadoba>.Create;
try
lQry.First;
rNo:= 1;
while (rNo<=cnt) do
begin
lQry.RecNo:= rNo;
AID:= lQry.FieldByName('ID').AsInteger;
retObj:= self.GetByID (AID);
lsRetObj.Add(retObj);
if not(lQry.Active) then
lQry.Open;
Inc (rNo);
end;
Result:= lsRetObj;
except on E:Exception do
raise EServiceException.Create('Chyba nacitani nadob: ' + E.Message);
end;
end;
except on E:Exception do
raise EServiceException.Create(errMaterialy + E.Message);
end;
lQry.Free;
sqlConnX.Close;
sqlConnX.Free;
end;
function TEMPNadobaService.GetAll:TObjectList<TEMPNadoba>;
var lSQL: string;
begin
lSQL:= selSloupce + ' ORDER BY VyrobniCislo';
FDM.sqlQry1.Open(lSQL, []);
result:= FDM.sqlQry1.AsObjectList<TEMPNadoba>;
FDM.sqlQry1.Close;
end;
function TEMPNadobaService.GetByID (const AID: Integer): TEMPNadoba;
var lSQL: string;
lQry: TFDQuery;
sqlConnX: TFDConnection;
begin
lSQL:= selSloupce + ' WHERE ID=:ID';
sqlConnX:= TFDConnection.Create(nil);
sqlConnX.ConnectionDefName:= sqlPoolName;
lQry:= TFDQuery.Create(nil);
try
lQry.FetchOptions.Mode:= fmAll;
lQry.Connection:= sqlConnX;
lQry.Open(lSQL, [AID]);
lQry.First;
try
if not(lQry.EOF) then
begin
result:= FDM.sqlQry1.AsObject<TEMPNadoba>
end
else
raise EServiceException.Create('N<>doba s ID ' + AID.ToString + ' nebyla nalezena.');
except on E:Exception do
raise EServiceException.Create('N<>doba s ID ' + AID.ToString + ' nebyla nalezena - ' + E.Message);
end;
finally
lQry.Free;
end;
sqlConnX.Close;
sqlConnX.Free;
end;
function TEMPNadobaService.GetByCislo (const ACislo: string): TEMPNadoba;
var lSQL: string;
lQry: TFDQuery;
sqlConnX: TFDConnection;
begin
lSQL:= selSloupce + ' WHERE VyrobniCislo=:ACislo';
sqlConnX:= TFDConnection.Create(nil);
sqlConnX.ConnectionDefName:= sqlPoolName;
lQry:= TFDQuery.Create(nil);
try
lQry.FetchOptions.Mode:= fmAll;
lQry.Connection:= sqlConnX;
lQry.Open(lSQL, [ACislo]);
lQry.First;
try
if not(lQry.EOF) then
begin
result:= FDM.sqlQry1.AsObject<TEMPNadoba>
end
else
raise EServiceException.Create('N<>doba s <20><>slem ' + ACislo + ' nebyla nalezena.');
except on E:Exception do
raise EServiceException.Create('N<>doba s <20><>slem ' + ACislo + ' nebyla nalezena - ' + E.Message);
end;
finally
lQry.Free;
end;
sqlConnX.Close;
sqlConnX.Free;
end;
function TEMPNadobaService.GetMeta: TJSONObject;
var lSQL: string;
lQry: TFDQuery;
sqlConnX: TFDConnection;
begin
lSQL:= selSloupce + ' WHERE 1=0';
sqlConnX:= TFDConnection.Create(nil);
sqlConnX.ConnectionDefName:= sqlPoolName;
lQry:= TFDQuery.Create(nil);
try
lQry.FetchOptions.Mode:= fmAll;
lQry.Connection:= sqlConnX;
lQry.Open(lSQL);
result:= lQry.MetadataAsJSONObject();
finally
lQry.Free;
end;
sqlConnX.Close;
sqlConnX.Free;
end;
end.

View File

@ -0,0 +1,3 @@
FEngine.AddController (TEMPNadobaController);
FEngine.AddController (TEMPDokumentAtestController);

BIN
_custom/EMPolar/zdroje.RES Normal file

Binary file not shown.

View File

@ -0,0 +1 @@
//ep_HDCDZApi_ZpracujPrijataData RCDATA .\sql\ep_HDCDZApi_ZpracujPrijataData.sql