Files
HDCApi/_custom/Koramex/uCtrlCustom.pas
2025-05-21 21:14:32 +02:00

587 lines
17 KiB
ObjectPascal

unit uCtrlCustom;
interface
uses
MVCframework,
MVCframework.Commons,
MVCframework.Serializer.Commons,
// MVCframework.Serializer.Intf,
System.Generics.Collections, // kvuli TDictionary
System.RegularExpressions,
// JsonDataObjects,
uCommons, // kvuli EServiceException
uCtrlBase,
// uSvc_Base,
uHeoObj_Base,
uHeOObj_Custom,
uSvcCustom,
MVCFramework.Swagger.Commons; // kvuli dokumentaci
type
[MVCPath('/vyroba-pila')]
TKRXVyrobaPilaController = class(TBaseController)
strict private
FSelfSvc: TKoramexService;
strict protected
function GetKoramexService: TKoramexService;
public
destructor Destroy; override;
[MVCPath('hlavicky')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Hlavičky evidence práce pily', 'Vrátí seznam hlaviček evidence pily', 'GetHlavicky')]
[MVCSwagParam(plQuery, 'cislozam', 'Osobní číslo zaměstnance', ptString, false)]
[MVCSwagParam(plQuery, 'radky', 'Včetně řádků (0/1)', ptString, false)]
procedure GetHlavicky ([MVCFromQueryString('cislozam', '')] cislozam: string='';
[MVCFromQueryString('radky', '')] radky: string=''
);
[MVCPath('operace')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Výrobní operace', 'Vrátí seznam operací výrobních příkazů s živými kusy', 'GetOperace')]
[MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště', ptString, true)]
[MVCSwagParam(plQuery, 'zakazka', 'Osobní číslo zaměstnance', ptString, false)]
[MVCSwagParam(plQuery, 'idkmenmaterial', 'ID kmenové karty materiálu', ptString, false)]
procedure GetOperace ([MVCFromQueryString('idpracoviste', '')] idPrac: string='';
[MVCFromQueryString('zakazka', '')] zakazka: string='';
[MVCFromQueryString('idkmenmaterial', '')] idKmenMat: string=''
);
end;
[MVCPath('/kooperace')]
TKRXVyrobaCisKooperaceController = class(TTPVCisKooperaciController)
strict private
FSelfSvc: TKoramexService;
strict protected
function GetKoramexService: TKoramexService;
public
destructor Destroy; override;
// [MVCDoc('Pomocí POST zapíše data DataZone tasků (kontroluje duplicitu,vrací NEW, OLD nebo NOT OK s textem chyby)')]
[MVCPath('/zapis')] // zapis pozadavku prevodu na mezisklad
[MVCHTTPMethod([httpPOST])]
[MVCSwagSummary('Požadavek převodu na mezisklad', 'Zápis požadavku převodu na mezisklad', 'ZapisPozadavku')]
[MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
procedure ZapisPozadavku(CTX: TWebContext);
[MVCPath('/potvrzeni')] // vracti potvrzeni zapisu pozadavku
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Požadavek převodu na mezisklad', 'Potvrzení požadavku převodu na mezisklad', 'PotvrzeniPozadavku')]
[MVCSwagParam(plPath, 'id', 'ID požadavku', ptString, false)]
procedure PotvrzeniPozadavku(id: string=''
);
end;
[MVCPath('/sdserver/doklad')]
TGatemaSDDokladController = class(TBaseController)
strict private
FSelfSvc: TGatemaSDDokladService;
strict protected
function GetGatemaSDDokladService: TGatemaSDDokladService;
public
destructor Destroy; override;
[MVCPath]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací hlavičku dokladů SD Serveru', 'GetAll')]
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
procedure GetAll([MVCFromQueryString('od', '')] odDatum: string='';
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
);
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací metadata', 'GetMeta')]
procedure GetMeta;
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('GatemaSD_Doklad', 'Vrací data dokladu SD Serveru', 'GetByID')]
[MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)]
[MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)]
[MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu zboží', ptString, false)]
[MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)]
[MVCSwagParam(plQuery, 'format', 'Formát (1=dokladOZ)', ptString, false)]
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
[MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)]
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
[MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)]
procedure GetByID(id: string='';
[MVCFromQueryString('typdokl', '')] typDokl: string='';
[MVCFromQueryString('druhpohybu', '')] druhPohybu: string='';
[MVCFromQueryString('sklad', '')] sklad: string='';
[MVCFromQueryString('format', '')] formatX: string='';
[MVCFromQueryString('od', '')] odDatum: string='';
[MVCFromQueryString('do', '')] doDatum: string='';
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
);
end;
[MVCPath('/sdserver/dokladoz')]
TGatemaSDDokladOZController = class(TBaseController)
strict private
FSelfSvc: TSDGDokladOZService;
strict protected
function GetSDGDokladOZService: TSDGDokladOZService;
public
destructor Destroy; override;
[MVCPath]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('GatemaSD_DokladOZ', 'Vrací hlavičku dokladů OZ s vazbou na SD Server', 'GetAll')]
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
procedure GetAll([MVCFromQueryString('od', '')] odDatum: string='';
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
);
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('GatemaSD_DokladOZ', 'Vrací metadata', 'GetMeta')]
procedure GetMeta;
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('GatemaSD_DokladOZ', 'Vrací data dokladu OZ s vazbou na SD Server', 'GetByID')]
[MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)]
[MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)]
[MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu zboží', ptString, false)]
[MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)]
[MVCSwagParam(plQuery, 'format', 'Formát (1=dokladOZ)', ptString, false)]
[MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
[MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)]
[MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
[MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)]
procedure GetByID(id: string='';
[MVCFromQueryString('typdokl', '')] typDokl: string='';
[MVCFromQueryString('druhpohybu', '')] druhPohybu: string='';
[MVCFromQueryString('sklad', '')] sklad: string='';
[MVCFromQueryString('format', '')] formatX: string='';
[MVCFromQueryString('od', '')] odDatum: string='';
[MVCFromQueryString('do', '')] doDatum: string='';
[MVCFromQueryString('seznam', '')] jenSeznam: string='0'
);
end;
[MVCPath('/sdserver/scandata')]
TGatemaSDScanDataController = class(TBaseController)
strict private
FSelfSvc: TGatemaSDScanDataService;
strict protected
function GetGatemaSDScanDataService: TGatemaSDScanDataService;
public
destructor Destroy; override;
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('GatemaSD_ScanData', 'Vrací metadata', 'GetMeta')]
procedure GetMeta;
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('GatemaSD_ScanData', 'Vrací naskenovaná data', 'GetByID')]
[MVCSwagParam(plPath, 'id', 'ID scan data', ptString, false)]
[MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu SD', ptString, false)]
[MVCSwagResponses(200, 'Success', TGatemaSDScanData, true)]
procedure GetByID(id: string='';
[MVCFromQueryString('iddoklad', '')] iddoklad: string=''
);
end;
implementation
uses
FireDAC.Stan.Option,
FireDAC.Comp.Client,
FireDAC.Stan.Param,
MVCFramework.FireDAC.Utils,
MVCFramework.DataSet.Utils,
System.StrUtils,
System.SysUtils,
System.JSON,
JsonDataObjects,
Winapi.ActiveX,
uDataMod;
const
selSloupce = '';
{ TKRXVyrobaPilaController }
destructor TKRXVyrobaPilaController.Destroy;
begin
FSelfSvc.Free;
inherited;
end;
{ TGatemaSDDokladOZController }
destructor TGatemaSDDokladOZController.Destroy;
begin
FSelfSvc.Free;
inherited;
end;
function TGatemaSDDokladOZController.GetSDGDokladOZService: TSDGDokladOZService;
begin
inherited;
if not Assigned(FSelfSvc) then
FSelfSvc:= TSDGDokladOZService.Create(datMod);
result:= FSelfSvc;
end;
procedure TGatemaSDDokladOZController.GetAll(odDatum: string=''; jenSeznam: string='0');
var params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
odDatum:= sanitizeSQLString(odDatum);
if (odDatum<>'') then
params.Add('odDatum', odDatum);
jenSeznam:= sanitizeSQLString(jenSeznam);
if (jenSeznam='1') then
params.Add('seznam', '1');
try
try
Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
on E:Exception do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
end;
finally
params.Free;
end;
end;
procedure TGatemaSDDokladOZController.GetByID(id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string='';
jenSeznam: string='0');
var iId: integer;
params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
iId:= 0;
id:= sanitizeSQLString(id);
if (id<>'') then
if not(TryStrToInt(id, iId)) then
iId:= 0;
if (iId>0) then
params.Add('id', iId.ToString);
typDokl:= sanitizeSQLString(sklad);
if (typDokl<>'') then
params.Add('typDokladu', typDokl);
druhPohybu:= sanitizeSQLString(sklad);
if (druhPohybu<>'') then
params.Add('druhPohybu', druhPohybu);
formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ
if (formatX<>'') then
if (formatX='1') then
params.Add('format', formatX);
sklad:= sanitizeSQLString(sklad);
if (sklad<>'') then
params.Add('sklad', sklad);
odDatum:= sanitizeSQLString(odDatum);
if (odDatum<>'') then
params.Add('odDatum', odDatum);
doDatum:= sanitizeSQLString(doDatum);
if (doDatum<>'') then
params.Add('doDatum', doDatum);
jenSeznam:= sanitizeSQLString(jenSeznam);
if (jenSeznam='1') then
params.Add('seznam', '1');
try
try
Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
on E:Exception do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
end;
finally
params.Free;
end;
end;
procedure TGatemaSDDokladOZController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetSDGDokladOZService.GetMeta));
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
on E:Exception do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
end;
end;
{ TGatemaSDDokladController }
destructor TGatemaSDDokladController.Destroy;
begin
FSelfSvc.Free;
inherited;
end;
function TGatemaSDDokladController.GetGatemaSDDokladService: TGatemaSDDokladService;
begin
inherited;
if not Assigned(FSelfSvc) then
FSelfSvc:= TGatemaSDDokladService.Create(datMod);
result:= FSelfSvc;
end;
procedure TGatemaSDDokladController.GetAll(odDatum: string=''; jenSeznam: string='0');
var params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
odDatum:= sanitizeSQLString(odDatum);
if (odDatum<>'') then
params.Add('odDatum', odDatum);
jenSeznam:= sanitizeSQLString(jenSeznam);
if (jenSeznam='1') then
params.Add('seznam', '1');
try
try
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
on E:Exception do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
end;
finally
params.Free;
end;
end;
procedure TGatemaSDDokladController.GetByID(id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string='';
jenSeznam: string='0');
var iId: integer;
params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
iId:= 0;
id:= sanitizeSQLString(id);
if (id<>'') then
if not(TryStrToInt(id, iId)) then
iId:= 0;
if (iId>0) then
params.Add('id', iId.ToString);
typDokl:= sanitizeSQLString(sklad);
if (typDokl<>'') then
params.Add('typDokladu', typDokl);
druhPohybu:= sanitizeSQLString(sklad);
if (druhPohybu<>'') then
params.Add('druhPohybu', druhPohybu);
formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ
if (formatX<>'') then
if (formatX='1') then
params.Add('format', formatX);
sklad:= sanitizeSQLString(sklad);
if (sklad<>'') then
params.Add('sklad', sklad);
odDatum:= sanitizeSQLString(odDatum);
if (odDatum<>'') then
params.Add('odDatum', odDatum);
doDatum:= sanitizeSQLString(doDatum);
if (doDatum<>'') then
params.Add('doDatum', doDatum);
jenSeznam:= sanitizeSQLString(jenSeznam);
if (jenSeznam='1') then
params.Add('seznam', '1');
try
try
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
on E:Exception do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
end;
finally
params.Free;
end;
end;
procedure TGatemaSDDokladController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetMeta));
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
on E:Exception do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
end;
end;
{ TGatemaSDScanDataController }
destructor TGatemaSDScanDataController.Destroy;
begin
FSelfSvc.Free;
end;
function TGatemaSDScanDataController.GetGatemaSDScanDataService: TGatemaSDScanDataService;
begin
inherited Create;
if not Assigned(FSelfSvc) then
FSelfSvc:= TGatemaSDScanDataService.Create(datMod);
result:= FSelfSvc;
end;
procedure TGatemaSDScanDataController.GetByID(id: string=''; iddoklad: string='');
var iId: integer;
params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
iId:= 0;
id:= sanitizeSQLString(id);
if (id<>'') then
if not(TryStrToInt(id, iId)) then
iId:= 0;
if (iId>0) then
params.Add('id', iId.ToString);
try
Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetByParams(params))); // viz uSvcCustom.pas
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
on E:Exception do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
end;
end;
procedure TGatemaSDScanDataController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetMeta));
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
on E:Exception do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end;
end;
end;
end.