📄 ufrmexportbusinessdata.pas
字号:
procedure TfrmExportBusinessData.GetExportBusinessData(ABusinessNameOrIDs: string);
var
tmpBusiness, tmpProcess, tmpRole, tmpMenu, tmpModule, tmpBlock, tmpGrant: TClientDataSet;
strSQL, strBusinessArea: string;
blnAddFullID: boolean;
procedure AddGrantData(ADataID, ADataValue: string; AddGrantType: TAddGrantType);
var
strBusinessID, strBusinessName, strProcessID, strProcessName,
strRoleID, strRoleName, strMenuID, strMenuName, strModuleID, strModuleName,
strBlockID, strBlockName, strBlockGrantID, strBlockGrantName: string;
begin
if not cdsBusinessGrant.IsEmpty then
begin
strBusinessID := cdsBusinessGrant.FieldByName('business_id').AsString;
strBusinessName := cdsBusinessGrant.FieldByName('business_name').AsString;
strProcessID := cdsBusinessGrant.FieldByName('process_id').AsString;
strProcessName := cdsBusinessGrant.FieldByName('process_name').AsString;
strRoleID := cdsBusinessGrant.FieldByName('role_id').AsString;
strRoleName := cdsBusinessGrant.FieldByName('role_name').AsString;
strMenuID := cdsBusinessGrant.FieldByName('menu_id').AsString;
strMenuName := cdsBusinessGrant.FieldByName('menu_name').AsString;
strModuleID := cdsBusinessGrant.FieldByName('module_id').AsString;
strModuleName := cdsBusinessGrant.FieldByName('module_name').AsString;
strBlockID := cdsBusinessGrant.FieldByName('block_id').AsString;
strBlockName := cdsBusinessGrant.FieldByName('block_name').AsString;
strBlockGrantID := cdsBusinessGrant.FieldByName('block_grant_id').AsString;
strBlockGrantName := cdsBusinessGrant.FieldByName('block_grant_name').AsString;
end;
cdsBusinessGrant.Append;
cdsBusinessGrant.FieldByName('data_id').AsString := ADataID;
cdsBusinessGrant.FieldByName('data_type').AsString := Copy(GetEnumName(TypeInfo(TAddGrantType), Integer(AddGrantType)), 4, MaxInt);
case AddGrantType of
agtBusiness:
begin
cdsBusinessGrant.FieldByName('business_id').AsString := ADataID;
if ADataValue = '' then
begin
if (tmpBusiness.FieldByName('id').AsString = ADataID)
or tmpBusiness.Locate('id', ADataID, []) then
cdsBusinessGrant.FieldByName('business_name').AsString := tmpBusiness.FieldByName('name').AsString
else
cdsBusinessGrant.FieldByName('business_name').AsString := ADataID;
end
else
cdsBusinessGrant.FieldByName('business_name').AsString := ADataValue;
end;
agtProcess:
begin
if blnAddFullID then
begin
cdsBusinessGrant.FieldByName('business_id').AsString := strBusinessID;
cdsBusinessGrant.FieldByName('business_name').AsString := strBusinessName;
end;
cdsBusinessGrant.FieldByName('process_id').AsString := ADataID;
if ADataValue = '' then
begin
if (tmpProcess.FieldByName('id').AsString = ADataID)
or tmpProcess.Locate('id', ADataID, []) then
cdsBusinessGrant.FieldByName('process_name').AsString := tmpProcess.FieldByName('name').AsString
else
cdsBusinessGrant.FieldByName('process_name').AsString := ADataID;
end
else
cdsBusinessGrant.FieldByName('process_name').AsString := ADataValue;
end;
agtRole:
begin
if blnAddFullID then
begin
cdsBusinessGrant.FieldByName('business_id').AsString := strBusinessID;
cdsBusinessGrant.FieldByName('business_name').AsString := strBusinessName;
cdsBusinessGrant.FieldByName('process_id').AsString := strProcessID;
cdsBusinessGrant.FieldByName('process_name').AsString := strProcessName;
end;
cdsBusinessGrant.FieldByName('role_id').AsString := ADataID;
if ADataValue = '' then
begin
if (tmpRole.FieldByName('id').AsString = ADataID)
or tmpRole.Locate('id', ADataID, []) then
cdsBusinessGrant.FieldByName('role_name').AsString := tmpRole.FieldByName('name').AsString
else
cdsBusinessGrant.FieldByName('role_name').AsString := ADataID;
end
else
cdsBusinessGrant.FieldByName('role_name').AsString := ADataValue;
end;
agtMenu:
begin
if blnAddFullID then
begin
cdsBusinessGrant.FieldByName('business_id').AsString := strBusinessID;
cdsBusinessGrant.FieldByName('business_name').AsString := strBusinessName;
cdsBusinessGrant.FieldByName('process_id').AsString := strProcessID;
cdsBusinessGrant.FieldByName('process_name').AsString := strProcessName;
cdsBusinessGrant.FieldByName('role_id').AsString := strRoleID;
cdsBusinessGrant.FieldByName('role_name').AsString := strRoleName;
end;
cdsBusinessGrant.FieldByName('menu_id').AsString := ADataID;
if ADataID = 'MainForm' then
cdsBusinessGrant.FieldByName('menu_name').AsString := '系统主界面'
else if Copy(ADataID, 1, 4) = 'Menu' then
cdsBusinessGrant.FieldByName('menu_name').AsString := '自定义' + Copy(ADataID, 5, MaxInt)
else
if ADataValue = '' then
begin
if (tmpMenu.FieldByName('id').AsString = ADataID)
or tmpMenu.Locate('id', ADataID, []) then
cdsBusinessGrant.FieldByName('menu_name').AsString := tmpMenu.FieldByName('name').AsString
else
cdsBusinessGrant.FieldByName('menu_name').AsString := ADataID;
end
else
cdsBusinessGrant.FieldByName('menu_name').AsString := ADataValue;
end;
agtModule:
begin
if blnAddFullID then
begin
cdsBusinessGrant.FieldByName('business_id').AsString := strBusinessID;
cdsBusinessGrant.FieldByName('business_name').AsString := strBusinessName;
cdsBusinessGrant.FieldByName('process_id').AsString := strProcessID;
cdsBusinessGrant.FieldByName('process_name').AsString := strProcessName;
cdsBusinessGrant.FieldByName('role_id').AsString := strRoleID;
cdsBusinessGrant.FieldByName('role_name').AsString := strRoleName;
cdsBusinessGrant.FieldByName('menu_id').AsString := strMenuID;
cdsBusinessGrant.FieldByName('menu_name').AsString := strMenuName;
end;
cdsBusinessGrant.FieldByName('module_id').AsString := ADataID;
if ADataValue = '' then
begin
if (tmpModule.FieldByName('id').AsString = ADataID)
or tmpModule.Locate('id', ADataID, []) then
cdsBusinessGrant.FieldByName('module_name').AsString := tmpModule.FieldByName('name').AsString
else
cdsBusinessGrant.FieldByName('module_name').AsString := ADataID;
end
else
cdsBusinessGrant.FieldByName('module_name').AsString := ADataValue;
end;
agtBlock:
begin
if blnAddFullID then
begin
cdsBusinessGrant.FieldByName('business_id').AsString := strBusinessID;
cdsBusinessGrant.FieldByName('business_name').AsString := strBusinessName;
cdsBusinessGrant.FieldByName('process_id').AsString := strProcessID;
cdsBusinessGrant.FieldByName('process_name').AsString := strProcessName;
cdsBusinessGrant.FieldByName('role_id').AsString := strRoleID;
cdsBusinessGrant.FieldByName('role_name').AsString := strRoleName;
cdsBusinessGrant.FieldByName('menu_id').AsString := strMenuID;
cdsBusinessGrant.FieldByName('menu_name').AsString := strMenuName;
cdsBusinessGrant.FieldByName('module_id').AsString := strModuleID;
cdsBusinessGrant.FieldByName('module_name').AsString := strModuleName;
end;
case StrToIntDef(tmpGrant.FieldByName('grant_type').AsString, 10) of
20: cdsBusinessGrant.FieldByName('block_grant_name').AsString := '只读';
30: cdsBusinessGrant.FieldByName('block_grant_name').AsString := '完全控制';
else
begin
cdsBusinessGrant.Cancel;
exit;
end;
end;
cdsBusinessGrant.FieldByName('block_grant_id').AsString := tmpGrant.FieldByName('grant_type').AsString;
cdsBusinessGrant.FieldByName('block_id').AsString := ADataID;
if ADataValue = '' then
begin
if (tmpBlock.FieldByName('id').AsString = ADataID)
or tmpBlock.Locate('id', ADataID, []) then
cdsBusinessGrant.FieldByName('block_name').AsString := tmpBlock.FieldByName('name').AsString
else
cdsBusinessGrant.FieldByName('block_name').AsString := ADataID;
end
else
cdsBusinessGrant.FieldByName('block_name').AsString := ADataValue;
end;
end;
cdsBusinessGrant.Post;
end;
procedure GetGrant(ABusinessID: string);
var
strRoleID, strMenuID, strModuleID, strBlockID: string;
begin
tmpGrant.Filter := 'business_id = ' + QuotedStr(ABusinessID);
tmpGrant.Filtered := true;
strRoleID := '';
while not tmpGrant.Eof do
begin
if strRoleID <> tmpGrant.FieldByName('role_id').AsString then
begin
strRoleID := tmpGrant.FieldByName('role_id').AsString;
strMenuID := '';
strModuleID := '';
strBlockID := '';
AddGrantData(strRoleID, '', agtRole);
end;
if strMenuID <> tmpGrant.FieldByName('menu_id').AsString then
begin
strMenuID := tmpGrant.FieldByName('menu_id').AsString;
strModuleID := '';
strBlockID := '';
AddGrantData(strMenuID, '', agtMenu);
end;
if strModuleID <> tmpGrant.FieldByName('module_id').AsString then
begin
strModuleID := tmpGrant.FieldByName('module_id').AsString;
strBlockID := '';
AddGrantData(strModuleID, '', agtModule);
end;
if strBlockID <> tmpGrant.FieldByName('block_id').AsString then
begin
strBlockID := tmpGrant.FieldByName('block_id').AsString;
AddGrantData(strBlockID, '', agtBlock);
end;
tmpGrant.Next;
end;
end;
begin
if ABusinessNameOrIDs = '' then
exit;
if cdsBusinessGrant.Active then
cdsBusinessGrant.EmptyDataSet
else
CreateBusinessGrantDataSet;
if cdsBusinessConfig.Active then
cdsBusinessConfig.Close;
if cdsProcessConfig.Active then
cdsProcessConfig.Close;
if cdsProcessOperates.Active then
cdsProcessOperates.Close;
tmpBusiness := TClientDataSet.Create(self);
tmpProcess := TClientDataSet.Create(self);
tmpRole := TClientDataSet.Create(self);
tmpMenu := TClientDataSet.Create(self);
tmpModule := TClientDataSet.Create(self);
tmpBlock := TClientDataSet.Create(self);
tmpGrant := TClientDataSet.Create(self);
try
ABusinessNameOrIDs := StringReplace(ABusinessNameOrIDs, ',', ';', [rfReplaceAll]);
if Pos(';', ABusinessNameOrIDs) = 0 then
strSQL := Format('select * from business where type = 0 and (id like %s or name like %s)',
[QuotedStr(ABusinessNameOrIDs), QuotedStr(ABusinessNameOrIDs)])
else
begin
ABusinessNameOrIDs := '''' + StringReplace(ABusinessNameOrIDs, ';', ''', ''', [rfReplaceAll]) + '''';
strSQL := Format('select * from business where type = 0 and (id in (%s) or name in (%s))',
[ABusinessNameOrIDs, ABusinessNameOrIDs]);
end;
tmpBusiness.Data := DataAccess.GetData(StringReplace(strSQL, '*', 'id, name', []));
if tmpBusiness.IsEmpty then
raise Exception.Create('未找到符合条件的流程');
blnAddFullID := true;
strBusinessArea := StringReplace(strSQL, '*', 'id', []);
//过程
ShowExecuteInfo('正在查询过程数据');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -