SmartFactory_NEOL/SOURCE/Agent,Kiosk/Lib/base_20251105_old/MachineMst.pas
2026-09-04 14:08:41 +09:00

285 lines
10 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit MachineMst;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
wItem,
FireDAC.Stan.Intf,
FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf,
FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys,
FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt,
FireDAC.Phys.PGDef, FireDAC.VCLUI.Wait, FireDAC.Comp.UI, FireDAC.Phys.PG,
Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client;
type
TMachineMst = class(TwItem)
private
{ Private declarations }
FMachCode: string;
FMachDate: string;
FCustName: string;
FDescriptions: string;
FProcType: string;
FNickName: string;
FManager: string;
FDriver: string;
FLocationPath: string;
FqRepList: TList;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TObject);// override;
destructor Destroy; override;
class function xAddSqlMark(velStr: string): string;
class function xGetStrSqlMachineMstList(AQuery: TFDQuery; kindStr, codeStr, nameStr: string): TList;
class function LoadFromQuery(AQuery: TFDQuery): TList;
class function xGetObjsMachineToRepairList(AQuery: TFDQuery; kindStr, codeStr, nameStr: string): TList;
class function xGetObjsMachineToRepairList2(AQuery: TFDQuery; kindStr, codeStr, nameStr: string): TList;
class function LoadFromQueryMachRepairList(AQuery: TFDQuery): TList;
property qRepList: TList read FqRepList write FqRepList;
published
{ Published declarations }
property MachCode: string read FMachCode write FMachCode;
property MachDate: string read FMachDate write FMachDate;
property CustName: string read FCustName write FCustName;
property Descriptions: string read FDescriptions write FDescriptions;
property ProcType: string read FProcType write FProcType;
property NickName: string read FNickName write FNickName;
property Manager: string read FManager write FManager;
property Driver: string read FDriver write FDriver;
property LocationPath: string read FLocationPath write FLocationPath;
end;
implementation
uses
MachineRepair;
{ TMachineMst }
constructor TMachineMst.Create(AOwner: TObject);
begin
FqRepList := TList.Create;
end;
destructor TMachineMst.Destroy;
var
i: Integer;
tmpObj: TObject;
begin
if FqRepList <> nil then begin
i := 0;
while i < FqRepList.Count do begin
tmpObj := FqRepList.Items[i];
if tmpObj <> nil then tmpObj.Free;
tmpObj := nil;
FqRepList.Delete(i);
end;
FqRepList.Free; FqRepList:=nil;
end;
inherited;
end;
class function TMachineMst.LoadFromQuery(AQuery: TFDQuery): TList;
var
curMach: TMachineMst;
begin
Result := TList.Create;
while not AQuery.Eof do begin
curMach := TMachineMst.Create(nil);
curMach.OBID := AQuery.FieldByName('OBID').AsString;
curMach.Name := AQuery.FieldByName('Name').AsString;
curMach.wClassName := AQuery.FieldByName('wClassName').AsString;
curMach.CreateDate := AQuery.FieldByName('CreateDate').AsString;
curMach.CreateTime := FormatDateTime('hh:nn:ss', AQuery.FieldByName('CreateTime').AsDateTime);
curMach.CreatorID := AQuery.FieldByName('CreatorID').AsString;
curMach.IsValid := AQuery.FieldByName('IsValid').AsString;
curMach.LcStatus := AQuery.FieldByName('LcStatus').AsString;
curMach.MachCode := AQuery.FieldByName('MachCode').AsString;
curMach.MachDate := AQuery.FieldByName('MachDate').AsString;
curMach.CustName := AQuery.FieldByName('CustName').AsString;
curMach.Descriptions := AQuery.FieldByName('Descriptions').AsString;
curMach.ProcType := AQuery.FieldByName('ProcType').AsString;
curMach.NickName := AQuery.FieldByName('NickName').AsString;
curMach.Manager := AQuery.FieldByName('Manager').AsString;
curMach.Driver := AQuery.FieldByName('Driver').AsString;
curMach.LocationPath := AQuery.FieldByName('LocationPath').AsString;
Result.Add(curMach);
AQuery.Next;
end;
end;
class function TMachineMst.LoadFromQueryMachRepairList(AQuery: TFDQuery): TList;
var
i, idx, nidx, nnidx: Integer;
valName, fieName, obidVal: string;
curMach, tmpMach: TMachineMst;
curRepair: TMachineRepair;
begin
Result := TList.Create;
AQuery.First;
//<2F>ߺ<EFBFBD> <20>÷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ã<><C3A3>..
nidx := -1;
for i := 0 to AQuery.FieldCount-1 do begin
fieName := AQuery.Fields[i].FieldName;
if Pos('_1',fieName) > 0 then begin
nidx := i;
Break;
end;
end;
AQuery.First;
while not AQuery.Eof do begin
obidVal := AQuery.FieldByName('OBID').AsString;
//<2F>ߺ<EFBFBD> <20><>ü ã<><C3A3>..
idx := -1;
for i := 0 to Result.Count - 1 do begin
curMach := TMachineMst(Result[i]);
if SameText(obidVal, curMach.OBID) then begin
idx := i;
Break;
end;
end;
if idx = -1 then begin
curMach := TMachineMst.Create(nil);
for i := 0 to nidx-1 do begin
fieName := AQuery.Fields[i].FieldName;
valName := AQuery.Fields[i].AsString;
if SameText(fieName, 'OBID') then curMach.OBID := valName
else if SameText(fieName, 'Name') then curMach.Name := valName
else if SameText(fieName, 'wClassName') then curMach.wClassName := valName
else if SameText(fieName, 'CreateDate') then curMach.CreateDate := valName
else if SameText(fieName, 'CreateTime') then curMach.CreateTime := valName
else if SameText(fieName, 'CreatorID') then curMach.CreatorID := valName
else if SameText(fieName, 'IsValid') then curMach.IsValid := valName
else if SameText(fieName, 'LcStatus') then curMach.LcStatus := valName
else if SameText(fieName, 'MachCode') then curMach.MachCode := valName
else if SameText(fieName, 'MachDate') then curMach.MachDate := valName
else if SameText(fieName, 'CustName') then curMach.CustName := valName
else if SameText(fieName, 'Descriptions') then curMach.Descriptions := valName
else if SameText(fieName, 'ProcType') then curMach.ProcType := valName
else if SameText(fieName, 'NickName') then curMach.NickName := valName
else if SameText(fieName, 'Manager') then curMach.Manager := valName
else if SameText(fieName, 'Driver') then curMach.Driver := valName
else if SameText(fieName, 'LocationPath') then curMach.LocationPath := valName;
end;
Result.Add(curMach);
end else begin
curMach := TMachineMst(Result.Items[idx]);
end;
curRepair := TMachineRepair.Create(nil);
for i := nidx to AQuery.FieldCount-1 do begin
fieName := StringReplace(AQuery.Fields[i].FieldName, '_1', '', [rfReplaceAll]);
valName := AQuery.Fields[i].AsString;
if SameText(fieName, 'OBID') then curRepair.OBID := valName
else if SameText(fieName, 'Name') then curRepair.Name := valName
else if SameText(fieName, 'wClassName') then curRepair.wClassName := valName
else if SameText(fieName, 'CreateDate') then curRepair.CreateDate := valName
else if SameText(fieName, 'CreateTime') then curRepair.CreateTime := valName
else if SameText(fieName, 'CreatorID') then curRepair.CreatorID := valName
else if SameText(fieName, 'IsValid') then curRepair.IsValid := valName
else if SameText(fieName, 'LcStatus') then curRepair.LcStatus := valName
else if SameText(fieName, 'OrdDate') then curRepair.OrdDate := valName
else if SameText(fieName, 'RepairDetail') then curRepair.RepairDetail := valName
else if SameText(fieName, 'Descriptions') then curRepair.Descriptions := valName;
end;
curMach.qRepList.Add(curRepair);
AQuery.Next;
end;
end;
class function TMachineMst.xAddSqlMark(velStr: string): string;
begin
Result := '';
Result := '''' + velStr + '''';
end;
class function TMachineMst.xGetObjsMachineToRepairList(AQuery: TFDQuery;
kindStr, codeStr, nameStr: string): TList;
var
sql: string;
begin
Result := nil;
sql := 'SELECT obj0.*, obj2.* FROM "MachineMst"obj0, "MachMstMachRepairR"obj1, "MachineRepair"obj2';
sql := sql + ' WHERE obj0."IsValid"=' + xAddSqlMark('t');
if Length(Trim(kindStr)) > 0 then sql := sql + ' AND "ProcType"=' + xAddSqlMark(kindStr);
if Length(Trim(codeStr)) > 0 then sql := sql + ' AND "MachCode"=' + xAddSqlMark(codeStr);
if Length(Trim(nameStr)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(nameStr);
sql := sql + ' AND obj1."IsValid"=' + xAddSqlMark('t');
sql := sql + ' AND obj1."LOBID"=obj0."OBID"';
sql := sql + ' AND obj2."IsValid"=' + xAddSqlMark('t');
sql := sql + ' AND obj2."OBID"=obj1."ROBID"';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetObjsMachineToRepairList <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
Result := LoadFromQueryMachRepairList(AQuery);
end;
class function TMachineMst.xGetObjsMachineToRepairList2(AQuery: TFDQuery;
kindStr, codeStr, nameStr: string): TList;
var
sql: string;
begin
Result := nil;
sql := 'SELECT obj0.*, obj2.* FROM "MachineMst" obj0 LEFT JOIN "MachMstMachRepairR" obj1 ON obj1."LOBID" = obj0."OBID"';
sql := sql + ' AND obj1."IsValid" = ' + xAddSqlMark('t');
sql := sql + ' LEFT JOIN "MachineRepair" obj2 ON obj2."OBID" = obj1."ROBID"';
sql := sql + ' AND obj2."IsValid" = ' + xAddSqlMark('t');
sql := sql + ' WHERE obj0."IsValid" = ' + xAddSqlMark('t');
if Length(Trim(kindStr)) > 0 then sql := sql + ' AND obj0."ProcType"=' + xAddSqlMark(kindStr);
if Length(Trim(codeStr)) > 0 then sql := sql + ' AND obj0."MachCode"=' + xAddSqlMark(codeStr);
if Length(Trim(nameStr)) > 0 then sql := sql + ' AND obj0."Name"=' + xAddSqlMark(nameStr);
sql := sql + ' ORDER BY obj0."MachCode", obj2."OBID" NULLS LAST';
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetObjsMachineToRepairList2 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
Result := LoadFromQueryMachRepairList(AQuery);
end;
class function TMachineMst.xGetStrSqlMachineMstList(AQuery: TFDQuery; kindStr,
codeStr, nameStr: string): TList;
var
sql: string;
begin
Result := nil;
sql := 'SELECT * FROM "MachineMst"';
sql := sql + ' WHERE "IsValid"=' + xAddSqlMark('t');
if Length(Trim(kindStr)) > 0 then sql := sql + ' AND "ProcType"=' + xAddSqlMark(kindStr);
if Length(Trim(codeStr)) > 0 then sql := sql + ' AND "MachCode"=' + xAddSqlMark(codeStr);
if Length(Trim(nameStr)) > 0 then sql := sql + ' AND "Name"=' + xAddSqlMark(nameStr);
try
AQuery.Close;
AQuery.SQL.Text := sql;
AQuery.Open;
except
on E: Exception do ShowMessage('xGetMachineMstAssign <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: ' + E.Message);
end;
Result := LoadFromQuery(AQuery);
end;
end.