⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udm.pas

📁 a voice guide client ,it is the second part of voice guide center
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  i: Integer;
begin
  try
    sCarIds:= GetCurCarIds;
    for i:= 0 to gCarInfoList.Count -1 do begin
      CarInfo:= TCarInfo(gCarInfoList.Objects[i]);
      CarInfo.InitEFenseList;
    end;
    if sCarIds= '' then Exit;
    cdsLookup.Close;
    cdsLookup.CommandText:=
      Format('SELECT * FROM tabEFenceItem WHERE (CarId IN (%s)) ORDER BY CarId, EFenseNo', [sCarIds]);
    cdsLookup.Open;
    while not cdsLookup.Eof do
    with cdsLookup do begin
      EFense.id:= FieldByName('EFenseId').AsInteger;
      if FieldByName('CarId').IsNull then Continue
      else EFense.CarId:= FieldByName('CarId').AsInteger;
      if FieldByName('EFenseNo').IsNull then Continue
      else EFense.No:= FieldByName('EFenseNo').AsInteger;
      if FieldByName('IsEFence').IsNull then Continue
      else EFense.IsEFence:= FieldByName('IsEFence').AsBoolean;
      if FieldByName('LongMin').IsNull then Continue
      else EFense.GpsRect.LongMin:= FieldByName('LongMin').AsFloat;
      if FieldByName('LatMin').IsNull then Continue
      else EFense.GpsRect.LatMin:= FieldByName('LatMin').AsFloat;
      if FieldByName('LongMax').IsNull then Continue
      else EFense.GpsRect.LongMax:= FieldByName('LongMax').AsFloat;
      if FieldByName('LatMax').IsNull then Continue
      else EFense.GpsRect.LatMax:= FieldByName('LatMax').AsFloat;
      if FieldByName('EnterTime').IsNull then EFense.EnterTime:= -1
      else EFense.EnterTime:= FieldByName('EnterTime').AsDateTime;
      if FieldByName('ExitTime').IsNull then EFense.ExitTime:= -1
      else EFense.ExitTime:= FieldByName('ExitTime').AsDateTime;
      EFense.State:= efsNone; 
      CarInfo:= GetCarInfo(EFense.CarId);
      if Assigned(CarInfo) //and (EFense.EnterTime>=0) //时间一定要设定(<>-1)
      then CarInfo.AddEFense(EFense);
      Next;
    end;
  except
  end;
end;

procedure TDataModule1.FlushGroupInfoList(_cds: TClientDataSet);
var
  sGroupId: string;
  GroupInfo: TGroupInfo;
begin
  if not Assigned(_cds) then
    _cds := cdsGroup
  else begin
    _cds.CommandText := 'select * from groupInfo';
    _cds.Open;
  end;

  InitGroupInfoList;
  _cds.Open;
  while not _cds.Eof do begin
    sGroupId:= Trim(_cds.FieldValues['GroupId']);
    GroupInfo:= TGroupInfo.Create;
    GroupInfo.GroupId:= _cds.FieldValues['GroupId'];
    GroupInfo.GroupName:= Trim(_cds.FieldValues['GroupName']);
    gGroupInfoList.AddObject(sGroupId, GroupInfo);
    _cds.Next;
    if Assigned(fProgress) then fProgress(Self, 1, fDataCount);
  end;
end;

procedure TDataModule1.FlushPriceInfoList;
var
  PriceInfo: TPriceInfo;
begin
  try
    InitPriceInfoList;
    cdsPrice.Close;
    cdsPrice.CommandText :=
      Format('SELECT * FROM TabCarPrice where UserID = %d', [gCurUsrInfo.UsrId]);
    cdsPrice.Open;
    cdsPrice.First;
    while not cdsPrice.Eof do
    with cdsPrice do begin
      if FieldByName('Id').IsNull or
        FieldByName('StartPointX1').IsNull or FieldByName('StartPointY1').IsNull or
        FieldByName('StartPointX2').IsNull or FieldByName('StartPointY2').IsNull or
        FieldByName('EndPointX1').IsNull or FieldByName('EndPointX1').IsNull or
        FieldByName('EndPointX1').IsNull or FieldByName('EndPointX1').IsNull
      then Continue;
      PriceInfo:= TPriceInfo.Create;
      PriceInfo.EditState:= desNone;
      PriceInfo.Id:= FieldByName('Id').AsInteger;
      if FieldByName('PriceName').IsNull
      then PriceInfo.Name:= ''
      else PriceInfo.Name:= Trim(FieldByName('PriceName').AsString);
      //路费
      if FieldByName('RoadPrice').IsNull
      then PriceInfo.RoadPrice:= 0
      else PriceInfo.RoadPrice:= FieldByName('RoadPrice').AsFloat;
      //桥费
      if FieldByName('BridgePrice').IsNull
      then PriceInfo.BridgePrice:= 0
      else PriceInfo.BridgePrice:= FieldByName('BridgePrice').AsFloat;
      //油费
      if FieldByName('OilPrice').IsNull
      then PriceInfo.OilPrice:= 0
      else PriceInfo.OilPrice:= FieldByName('OilPrice').AsFloat;
      //距离
      if FieldByName('Distance').IsNull
      then PriceInfo.Distance:= 0
      else PriceInfo.Distance:= FieldByName('Distance').AsFloat;
      //起点
      if not FieldByName('StartPoint').IsNull
      then PriceInfo.StartPtName:= Trim(FieldByName('StartPoint').AsString);
      PriceInfo.StartPtLong1:= FieldByName('StartPointX1').AsFloat;
      PriceInfo.StartPtLat1:=  FieldByName('StartPointY1').AsFloat;
      PriceInfo.StartPtLong2:= FieldByName('StartPointX2').AsFloat;
      PriceInfo.StartPtLat2:=  FieldByName('StartPointY2').AsFloat;
      //终点
      if not FieldByName('EndPoint').IsNull
      then PriceInfo.EndPtName:= Trim(FieldByName('EndPoint').AsString);
      PriceInfo.EndPtLong1:= FieldByName('EndPointX1').AsFloat;
      PriceInfo.EndPtLat1:=  FieldByName('EndPointY1').AsFloat;
      PriceInfo.EndPtLong2:= FieldByName('EndPointX2').AsFloat;
      PriceInfo.EndPtLat2:=  FieldByName('EndPointY2').AsFloat;
      gPriceInfoList.AddObject(IntToStr(PriceInfo.Id), PriceInfo);
      Next;
    end;
  except
  end;
end;

procedure TDataModule1.FlushTeamInfoList(_cds: TClientDataSet);
var
  TeamInfo: TTeamInfo;
  sTeamId, TeamIds: string;
begin
  if not Assigned(_cds) then
    _cds := cdsTeam
  else begin
    _cds.CommandText := 'select * from TeamInfo';
  end;

  InitTeamInfoList;
  _cds.Close;
  _cds.Open;
  TeamIds:= '';
  while not _cds.Eof do begin
    sTeamId:= Trim(_cds.FieldValues['TeamId']);
    if TeamIds='' then TeamIds:= sTeamId
    else TeamIds:= TeamIds+ ','+ sTeamId;
    TeamInfo:= TTeamInfo.Create;
    TeamInfo.TeamId:= _cds.FieldValues['TeamId'];
    TeamInfo.TeamName:= Trim(_cds.FieldValues['TeamName']);
    TeamInfo.GroupId:= _cds.FieldValues['GroupId'];
    gTeamInfoList.AddObject(sTeamId, TeamInfo);
    _cds.Next;
    if Assigned(fProgress) then fProgress(Self, 1, fDataCount);
  end;
end;

procedure TDataModule1.GetCurUsrInfo;
begin
  if not Assigned(gCurUsrInfo)
  then gCurUsrInfo:= TUsrInfo.Create;
  cdsLookup.Close;
  cdsLookup.CommandText:=
    Format('SELECT * FROM UsrInfo WHERE (UsrName LIKE %s) AND (UsrPwd LIKE %s)',
      [QuotedStr(gLogName), QuotedStr(gPassWd)]);
  cdsLookup.Open;
  if not cdsLookup.IsEmpty then begin
    if cdsLookup.FieldByName('UsrId').IsNull
    then gCurUsrInfo.UsrId:= 0
    else gCurUsrInfo.UsrId:= cdsLookup.FieldValues['UsrId'];
    if cdsLookup.FieldByName('UsrName').IsNull
    then gCurUsrInfo.UsrName:= ''
    else gCurUsrInfo.UsrName:= Trim(cdsLookup.FieldValues['UsrName']);
    if cdsLookup.FieldByName('UsrPwd').IsNull
    then gCurUsrInfo.UsrPwd:= ''
    else gCurUsrInfo.UsrPwd:= Trim(cdsLookup.FieldValues['UsrPwd']);
    if cdsLookup.FieldByName('UsrPurview').IsNull
    then gCurUsrInfo.UsrPurview:= 0
    else gCurUsrInfo.UsrPurview:= cdsLookup.FieldValues['UsrPurview'];
    if cdsLookup.FieldByName('WatchRangeId').IsNull
    then gCurUsrInfo.WatchRangeId:= 0
    else gCurUsrInfo.WatchRangeId:= cdsLookup.FieldValues['WatchRangeId'];
    if cdsLookup.FieldByName('Ranger').IsNull
    then gCurUsrInfo.Ranger:= ''
    else gCurUsrInfo.Ranger:= Trim(cdsLookup.FieldValues['Ranger']);
  end;
  cdsLookup.Close;
end;

function TDataModule1.GetDataCount: Integer;
var
  GroupCount, TeamCount, CarCount: Integer;
begin
//GetDataCount(out GroupCount, TeamCount, CarCount: Integer);
  scGpsDB.AppServer.GetDataCount(GroupCount, TeamCount, CarCount);
  Result:= GroupCount+ TeamCount+ CarCount;
end;

procedure TDataModule1.Logoff;
//var
//  ComputerName: array [0..100] of Char;
//  PCmname: PChar;
//  sz: Cardinal;
begin
  InitInfoList;
{  sz := SizeOf(Computername);
  PCmname:= ComputerName;
  GetComputerName(PCmname, sz);//得到本机的标识
  try
    if not scGpsDB.Connected
    then if OpenDB
      then scGpsDB.AppServer.UpdateUsrLogRec(gLogID, Now, 1, StrPas(ComputerName));
  except
    Exit;
  end;}
end;

function TDataModule1.LogOn(const LogName: string;const Passwd: string): TLnkDataState;
var
  bLogResult: Boolean;
  db_name       : string;
  dir_name      : string;
  file_name     : string;
  user_sql_str  : string;
  app_name      : string;
  sql_str       : string;
begin
  // 设置缓存目录
  dir_name := ExtractFilePath(Application.ExeName) + 'LogonCache\';

  // 以下包含三种登录方式:AuthServer BaseDB SocketConnection

  db_name := getDBName;

  // 如果是BaseDB认证
  if GIsBaseDBAuth then
  begin
    scGpsDB.Port := gDataPort;
    scGpsDB.Host := gDataHost;

    try
      try
        file_name := ExtractCacheFileName(LogName);

        if gUseNewDBServer then
        begin
          app_name  := db_name;
          sql_str   := Format(
            'select * from MSC_User where UPPER(Name) = ''%s'' and UPPER(Password) = ''%s''', [
            UpperCase(LogName), UpperCase(Passwd)
            ]);
        end
        else begin
          app_name  := db_name;
          sql_str   := Format(
            'select * from usrinfo where UPPER(usrname) = ''%s'' and UPPER(usrpwd) = ''%s''', [
            UpperCase(LogName), UpperCase(Passwd)
            ]);
        end;

        if gIsCacheLogon and FileExists(dir_name + file_name) then
        begin
          if not Assigned(autClientDataSet) then
            autClientDataSet := TClientDataSet.Create(nil);
          autClientDataSet.LoadFromFile(dir_name + file_name);
          autClientDataSet.Open;
        end
        else
          autClientDataSet := TBaseDBForm.OpenSelectFromDataset(app_name, sql_str);

        if not Assigned(autClientDataSet) then
        begin
          Result := ldsLinkErr;
          Exit;
        end;

        autClientDataSet.First;
        if not autClientDataSet.Eof then
        begin
          if not Assigned(gCurUsrInfo)
          then gCurUsrInfo:= TUsrInfo.Create;

          if gUseNewDBServer then
          begin
            gCurUsrId := autClientDataSet.FieldByName('ID').AsInteger;
            gCurUsrInfo.UsrId := gCurUsrId;
            gCurUsrInfo.UsrName       := Trim(autClientDataSet.FieldByName('Name').AsString);
            gCurUsrInfo.UsrPwd        := Trim(autClientDataSet.FieldByName('Password').AsString);
            gCurUsrInfo.WatchRangeId  := autClientDataSet.FieldByName('GroupID').AsInteger;
          end
          else begin
            gCurUsrId := autClientDataSet.FieldByName('UsrID').AsInteger;
            gCurUsrType := autClientDataSet.FieldByName('UsrPurview').AsInteger;
            gCurUsrInfo.UsrId := gCurUsrId;
            gCurUsrInfo.UsrName := Trim(autClientDataSet.FieldByName('usrname').AsString);
            gCurUsrInfo.UsrPwd := Trim(autClientDataSet.FieldByName('usrpwd').AsString);
            gCurUsrInfo.UsrPurview := gCurUsrType;
            gCurUsrInfo.WatchRangeId := autClientDataSet.FieldByName('WatchRangeId').AsInteger;
            gCurUsrInfo.Ranger := Trim(autClientDataSet.FieldByName('Ranger').AsString);
          end;

          if (UpperCase(Trim(LogName)) <>
              UpperCase(gCurUsrInfo.UsrName)) or
              (UpperCase(Passwd) <>
               UpperCase(gCurUsrInfo.UsrPwd)) then
          begin
            Result := ldsPwdErr;
            Exit;
          end;
        end
        else begin
          Result:= ldsPwdErr;
          Exit;
        end;
        autClientDataSet.Close;

        Result:= ldsOk;

        // 初始化所有的数据列表
        InitInfoList;

        // 根据新旧数据库,获取车辆信息列表
        user_sql_str := ExtractUserSelectSQL;

        FlushBaseDBCarInfoList(autClientDataSet, LogName, user_sql_str, file_name);
      except
        Result := ldsLinkErr;
      end;
    finally
      if Assigned(autClientDataSet) then
      begin
        autClientDataSet.Close;

      end;
    end;

    Exit;
  end;

  if gUseAuthServer then
  begin
    if not scAuth.Connected then begin
      Result:= ldsLinkErr;
      Exit;
    end;

    try
      try
        cdsAuth.Close;
        cdsAuth.CommandText := Format(
          'select * from usrinfo where UPPER(usrname) = ''%s'' and UPPER(usrpwd) = ''%s''', [
          UpperCase(LogName), UpperCase(Passwd)
          ]);
        cdsAuth.Open;
        Application.ProcessMessages;
        cdsAuth.First;
        if not cdsAuth.Eof then
        begin
          if not Assigned(gCurUsrInfo)
          then gCurUsrInfo:= TUsrInfo.Create;

          gCurUsrId := cdsAuth.FieldByName('UsrID').AsInteger;
          gCurUsrType := cdsAuth.FieldByName('UsrPurview').AsInteger;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -