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; begin params:= TDictionary.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; begin params:= TDictionary.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; begin params:= TDictionary.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; begin params:= TDictionary.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; begin params:= TDictionary.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.