起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 204|回复: 4

【结贴】SystemCore.TSystemCore.Operator.ID与Operator.Positions[I].PersonID的区

[复制链接]
发表于 2009-9-1 17:00:04 | 显示全部楼层 |阅读模式
请问:
SystemCore.TSystemCore.Operator.ID与SystemCore.TSystemCore.Operator.Positions[I].PersonID的区别?
回复

使用道具 举报

发表于 2009-9-1 17:07:38 | 显示全部楼层
这两个没有本质区别。他们都是通过TOperator去获取操作者的ID。

NameSpace: Business.Model
--------------------------------------------------------------------------------
TOperator = class(TBizObject)
...
public
  property ID: string; readonly; //人员ID
  property Positions[Longint]: TOperatorPosition; readonly; //所有的岗位信息
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-2 09:26:16 | 显示全部楼层
procedure TVISITS_RANK_FORMDOC.FormDocCreate(Sender: TObject);
var
  I : Integer;
  P : String;
  lBizUrl : TBizUrl;
  sLOGIN_USER_ID,sLOGIN_USER_NAME,sLOGIN_JOB_ID,sLOGIN_JOB_NAME,sLOGIN_DEPT_ID,sLOGIN_DEPT_NAME,sLOGIN_DISTRICT,sLOGIN_AREA,sLOGIN_SUB_AREA,sLOGIN_DEPT_NO,sLOGIN_JOB_NO,sLOGIN_DISTRICT_NAME,sLOGIN_AREA_NAME,sLOGIN_SUB_AREA_NAME,sLOGIN_GROUP_CORP_CODE,sLOGIN_GROUP_CORP_NAME,sLOGIN_COMPANY : TBizParam;
begin
    Inherited;
    lBizUrl := TBizUrl.Create;
    lBizUrl.URL := 'Biz:\CUSTOM_INTERFACE\LOGIN_PARAMGROUP.ParamGroup';
    Try
       sLOGIN_USER_ID := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_USER_ID');
       sLOGIN_USER_NAME := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_USER_NAME');
       sLOGIN_JOB_ID := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_JOB_ID');
       sLOGIN_JOB_NAME := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_JOB_NAME');
       sLOGIN_DEPT_ID := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_DEPT_ID');
       sLOGIN_DEPT_NAME := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_DEPT_NAME');
       sLOGIN_DISTRICT := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_DISTRICT');
       sLOGIN_AREA := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_AREA');
       sLOGIN_SUB_AREA := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_SUB_AREA');
       sLOGIN_DEPT_NO := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_DEPT_NO');
       sLOGIN_JOB_NO := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_JOB_NO');
       sLOGIN_DISTRICT_NAME := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_DISTRICT_NAME');
       sLOGIN_AREA_NAME := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_AREA_NAME');
       sLOGIN_SUB_AREA_NAME := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_SUB_AREA_NAME');
       sLOGIN_GROUP_CORP_CODE := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_GROUP_CORP_CODE');
       sLOGIN_GROUP_CORP_NAME := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_GROUP_CORP_NAME');
       sLOGIN_COMPANY := SystemUtils.TContextUtils.GetParam(Self.Context, lBizURL, 'LOGIN_COMPANY');
    Finally
       lBizURL.Free;
    end;

    FDefaultPosition := nil;
    SysUtils.DateSeparator:='-';
    SysUtils.ShortDateFormat:='yyyy-mm-dd';

    Business.Forms.JSControls.DataViewAttributes.ReadOnlyColor := Graphics.clBtnFace;

    IF FORMLIBRARY.TSYSTEMLOGINDIALOG.GetPersonMember <> nil THEN
       for I := 0 to SystemCore.TSystemCore.Operator.PositionCount - 1  do
       begin
           IF SystemCore.TSystemCore.Operator.Positions[I].PersonMember = FORMLIBRARY.TSYSTEMLOGINDIALOG.GetPersonMember THEN
           begin
               IF SystemCore.TSystemCore.Operator.ID <> SystemCore.TSystemCore.Operator.Positions[I].PersonID THEN
               begin
                    sLOGIN_COMPANY.Value := BizSys.BizSystem.ClientAccount;
                    sLOGIN_USER_ID.Value := SystemCore.TSystemCore.Operator.Positions[I].PersonID;
                    sLOGIN_USER_NAME.Value := SystemCore.TSystemCore.Operator.Positions[I].PersonMember.DisplayName;
                    sLOGIN_JOB_ID.Value := SystemCore.TSystemCore.Operator.Positions[I].PositionID;
                    sLOGIN_JOB_NAME.Value := SystemCore.TSystemCore.Operator.Positions[I].PositionMember.DisplayName;
                    sLOGIN_DEPT_ID.Value := SystemCore.TSystemCore.Operator.Positions[I].DeptID;
                    sLOGIN_DEPT_NAME.Value := Business.Model.Org.OrgSys.OrgSystem.FindUnit(SystemCore.TSystemCore.Operator.Positions[I].DeptID,'','').DisplayName;
                    lQuery.Close;
                    lQuery.CommandText := 'SELECT DISTRICT_CODE,DISTRICT_NAME,AREA_CODE,AREA_NAME,SUB_AREA_CODE,SUB_AREA_NAME,DEPT_NO,GROUP_CORP,(SELECT VALUE_2 FROM PARAMGROUP WHERE ID=5 AND REPORT_ID=0 AND VALUE_1=TO_CHAR(X3_ID_LIST.GROUP_CORP)) AS GROUP_CORP_NAME FROM X3_ID_LIST WHERE STATUS = 1 AND X3_ID = ''' + Variants.VarToStr(sLOGIN_DEPT_ID.Value) + '''';
                    lQuery.Open;
                    sLOGIN_DISTRICT.Value := lQuery.FieldByName('DISTRICT_CODE').AsString;
                    sLOGIN_AREA.Value := lQuery.FieldByName('AREA_CODE').AsString;
                    sLOGIN_SUB_AREA.Value := lQuery.FieldByName('SUB_AREA_CODE').AsString;
                    sLOGIN_DISTRICT_NAME.Value := lQuery.FieldByName('DISTRICT_NAME').AsString;
                    sLOGIN_AREA_NAME.Value := lQuery.FieldByName('AREA_NAME').AsString;
                    sLOGIN_SUB_AREA_NAME.Value := lQuery.FieldByName('SUB_AREA_NAME').AsString;
                    sLOGIN_DEPT_NO.Value := lQuery.FieldByName('DEPT_NO').AsString;
                    sLOGIN_GROUP_CORP_CODE.Value := lQuery.FieldByName('GROUP_CORP').AsString;
                    sLOGIN_GROUP_CORP_NAME.Value := lQuery.FieldByName('GROUP_CORP_NAME').AsString;
                    lQuery.Close;
                    lQuery.CommandText := 'SELECT JOB_NO FROM JOBS WHERE X3_ID = ''' + Variants.VarToStr(sLOGIN_JOB_ID.Value) + '''';
                    lQuery.Open;
                    sLOGIN_JOB_NO.Value := lQuery.FieldByName('JOB_NO').AsString;
                    Break;
                end
                else
                begin
                     sLOGIN_COMPANY.Value := BizSys.BizSystem.ClientAccount;
                     sLOGIN_USER_ID.Value := SystemCore.TSystemCore.Operator.Positions[I].PersonID;
                     sLOGIN_USER_NAME.Value := SystemCore.TSystemCore.Operator.Positions[I].PersonMember.DisplayName;
                     sLOGIN_JOB_ID.Value := SystemCore.TSystemCore.Operator.Positions[I].PositionID;
                     sLOGIN_JOB_NAME.Value := SystemCore.TSystemCore.Operator.Positions[I].PositionMember.DisplayName;
                     sLOGIN_DEPT_ID.Value := SystemCore.TSystemCore.Operator.Positions[I].DeptID;
                     sLOGIN_DEPT_NAME.Value := Business.Model.Org.OrgSys.OrgSystem.FindUnit(SystemCore.TSystemCore.Operator.Positions[I].DeptID,'','').DisplayName;
                     lQuery.Close;
                     lQuery.CommandText := 'SELECT DISTRICT_CODE,DISTRICT_NAME,AREA_CODE,AREA_NAME,SUB_AREA_CODE,SUB_AREA_NAME,DEPT_NO,GROUP_CORP,(SELECT VALUE_2 FROM PARAMGROUP WHERE ID=5 AND REPORT_ID=0 AND VALUE_1=TO_CHAR(X3_ID_LIST.GROUP_CORP)) AS GROUP_CORP_NAME FROM X3_ID_LIST WHERE STATUS = 1 AND X3_ID = ''' + Variants.VarToStr(sLOGIN_DEPT_ID.Value) + '''';
                     lQuery.Open;
                     sLOGIN_DISTRICT.Value := lQuery.FieldByName('DISTRICT_CODE').AsString;
                     sLOGIN_AREA.Value := lQuery.FieldByName('AREA_CODE').AsString;
                     sLOGIN_SUB_AREA.Value := lQuery.FieldByName('SUB_AREA_CODE').AsString;
                     sLOGIN_DISTRICT_NAME.Value := lQuery.FieldByName('DISTRICT_NAME').AsString;
                     sLOGIN_AREA_NAME.Value := lQuery.FieldByName('AREA_NAME').AsString;
                     sLOGIN_SUB_AREA_NAME.Value := lQuery.FieldByName('SUB_AREA_NAME').AsString;
                     sLOGIN_DEPT_NO.Value := lQuery.FieldByName('DEPT_NO').AsString;
                     sLOGIN_GROUP_CORP_CODE.Value := lQuery.FieldByName('GROUP_CORP').AsString;
                     sLOGIN_GROUP_CORP_NAME.Value := lQuery.FieldByName('GROUP_CORP_NAME').AsString;
                     lQuery.Close;
                     lQuery.CommandText := 'SELECT JOB_NO FROM JOBS WHERE X3_ID = ''' + Variants.VarToStr(sLOGIN_JOB_ID.Value) + '''';
                     lQuery.Open;
                     sLOGIN_JOB_NO.Value := lQuery.FieldByName('JOB_NO').AsString;
                    Break;
                end;
           end;
       end;
    IF FORMLIBRARY.TSYSTEMLOGINDIALOG.GetPersonMember = nil THEN
    begin
         sLOGIN_COMPANY.Value := BizSys.BizSystem.ClientAccount;
         sLOGIN_USER_ID.Value := SystemCore.TSystemCore.Operator.DefaultPosition.PersonID;
         sLOGIN_USER_NAME.Value := SystemCore.TSystemCore.Operator.DefaultPosition.PersonMember.DisplayName;
         sLOGIN_JOB_ID.Value := SystemCore.TSystemCore.Operator.DefaultPosition.PositionID;
         sLOGIN_JOB_NAME.Value := SystemCore.TSystemCore.Operator.DefaultPosition.PositionMember.DisplayName;
         sLOGIN_DEPT_ID.Value := SystemCore.TSystemCore.Operator.DefaultPosition.DeptID;
         sLOGIN_DEPT_NAME.Value := Business.Model.Org.OrgSys.OrgSystem.FindUnit(SystemCore.TSystemCore.Operator.DefaultPosition.DeptID,'','').DisplayName;
         lQuery.Close;
         lQuery.CommandText := 'SELECT DISTRICT_CODE,DISTRICT_NAME,AREA_CODE,AREA_NAME,SUB_AREA_CODE,SUB_AREA_NAME,DEPT_NO,GROUP_CORP,(SELECT VALUE_2 FROM PARAMGROUP WHERE ID=5 AND REPORT_ID=0 AND VALUE_1=TO_CHAR(X3_ID_LIST.GROUP_CORP)) AS GROUP_CORP_NAME FROM X3_ID_LIST WHERE STATUS = 1 AND X3_ID = ''' + Variants.VarToStr(sLOGIN_DEPT_ID.Value) + '''';
         lQuery.Open;
         sLOGIN_DISTRICT.Value := lQuery.FieldByName('DISTRICT_CODE').AsString;
         sLOGIN_AREA.Value := lQuery.FieldByName('AREA_CODE').AsString;
         sLOGIN_SUB_AREA.Value := lQuery.FieldByName('SUB_AREA_CODE').AsString;
         sLOGIN_DISTRICT_NAME.Value := lQuery.FieldByName('DISTRICT_NAME').AsString;
         sLOGIN_AREA_NAME.Value := lQuery.FieldByName('AREA_NAME').AsString;
         sLOGIN_SUB_AREA_NAME.Value := lQuery.FieldByName('SUB_AREA_NAME').AsString;
         sLOGIN_DEPT_NO.Value := lQuery.FieldByName('DEPT_NO').AsString;
         sLOGIN_GROUP_CORP_CODE.Value := lQuery.FieldByName('GROUP_CORP').AsString;
         sLOGIN_GROUP_CORP_NAME.Value := lQuery.FieldByName('GROUP_CORP_NAME').AsString;
         lQuery.Close;
         lQuery.CommandText := 'SELECT JOB_NO FROM JOBS WHERE X3_ID = ''' + Variants.VarToStr(sLOGIN_JOB_ID.Value) + '''';
         lQuery.Open;
         sLOGIN_JOB_NO.Value := lQuery.FieldByName('JOB_NO').AsString;
    end;

    with StoredProc do
    begin
        Params.ParamByName('P_TYPE').AsString := '1';
        Params.ParamByName('P_JOB_X3_ID').AsString := Variants.VarToStr(sLOGIN_JOB_ID.Value);
        Execute;
        P := Params.ParamByName('R_TOPCOUNT').AsString;

        lQuery.Close;
        lQuery.CommandText := 'SELECT COUNT(*) AS V_COUNT FROM REPORT_TOP WHERE JOB_X3_ID = '''+ Variants.VarToStr(sLOGIN_JOB_ID.Value) +''' AND BONUS_IN = 0 ';
        lQuery.Open;

        TVisits_Rank_Info(InfoBroker.Info).DataSetVisits_Rank_Before_Dt.Close;
        TVisits_Rank_Info(InfoBroker.Info).DataSetVisits_Rank_Before_Dt.UserFilter := ' JOB_X3_ID = '''+ Variants.VarToStr(sLOGIN_JOB_ID.Value) + ''' AND FUNC_RANK >=0 AND FUNC_RANK <= (7-'+lQuery.FieldByName('V_COUNT').AsString+') AND FUNC_RANK <= ('+P+'-'+lQuery.FieldByName('V_COUNT').AsString+') ';
        TVisits_Rank_Info(InfoBroker.Info).DataSetVisits_Rank_Before_Dt.Open;

        TVisits_Rank_Info(InfoBroker.Info).DataSetVisits_Rank_After_Dt.Close;
        TVisits_Rank_Info(InfoBroker.Info).DataSetVisits_Rank_After_Dt.UserFilter := ' JOB_X3_ID = '''+ Variants.VarToStr(sLOGIN_JOB_ID.Value) +''' AND FUNC_RANK > (7-'+lQuery.FieldByName('V_COUNT').AsString+') AND FUNC_RANK < ('+P+'-'+lQuery.FieldByName('V_COUNT').AsString+') ';
        TVisits_Rank_Info(InfoBroker.Info).DataSetVisits_Rank_After_Dt.Open;
    end;
end;


那为什么要这样判断:
IF SystemCore.TSystemCore.Operator.ID <> SystemCore.TSystemCore.Operator.Positions[I].PersonID THEN
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-2 09:33:19 | 显示全部楼层
是不是 判断当前操作者和本部门的人员id是否相等的意思?
也就是说: 后者可以有同部门下的其他人?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-2 10:31:21 | 显示全部楼层
好了,结贴。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-16 15:58 , Processed in 0.044898 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表