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

📄 udm.pas

📁 a voice guide client ,it is the second part of voice guide center
💻 PAS
📖 第 1 页 / 共 5 页
字号:
      _cds := TBaseDBForm.OpenSelectFromDataset(app_name, sql_str);
  end;

  // 记录数统计
  fDataCount := _cds.RecordCount;

  db_name := getDBName;

  // 校验数据是否有变化,需要重新缓存
  if gIsCacheLogon then
  begin
    // 新库
    if gUseNewDBServer then
    begin
      sql_str := Format('select * from V_MSC_Vehicle where ID in (select * from F_GetVehicleTableByUserID(%d)) ', [
      gCurUsrInfo.UsrId]);
      check_sql_str := Format('select * from V_Logon_Cache_MSC_Vehicle where ID in (select * from F_GetVehicleTableByUserID(%d)) ', [
      gCurUsrInfo.UsrId]);
      baseDBLogon.SetLogon(False, db_name, sql_str, check_sql_str,
        dir_name , file_name, 'ID', _user_sql_str, _user_file_name);
    end
    // 旧库
    else begin
      if gCurUsrInfo.WatchRangeId = 0 then
      begin
        sql_str :=
          'select * from TeamInfo,CarInfo where TeamInfo.TeamId=CarInfo.TeamId and TeamInfo.GroupId' + ' in(' + gCurUsrInfo.Ranger + ')';
        check_sql_str :=
          'select * from V_Logon_Cache_TeamInfo_CarInfo where GroupId' + ' in(' + gCurUsrInfo.Ranger + ')';
      end
      else if gCurUsrInfo.WatchRangeId = 1 then
      begin
        sql_str :=
          'select * from TeamInfo,CarInfo where TeamInfo.TeamId=CarInfo.TeamId and TeamInfo.TeamId' + ' in(' + gCurUsrInfo.Ranger + ')';
        check_sql_str :=
          'select * from V_Logon_Cache_TeamInfo_CarInfo where TeamID' + ' in(' + gCurUsrInfo.Ranger + ')';
      end
      else if gCurUsrInfo.WatchRangeId = 2 then
      begin
        sql_str :=
          'select * from CarInfo where CarID' + ' in(' + gCurUsrInfo.Ranger + ')';
        check_sql_str :=
          'select * from V_Logon_Cache_CarInfo where CarID' + ' in(' + gCurUsrInfo.Ranger + ')';
      end;
      baseDBLogon.SetLogon(False, db_name, sql_str, check_sql_str,
        dir_name , file_name, 'CarID', _user_sql_str, _user_file_name);
    end;
  end;

  // 打开数据集
  _cds.First;

  // 初始化车辆信息列表,释放已有的数据
  InitCarInfoList;

  CarIds := '';

  // 填写 车辆信息
  if gUseNewDBServer then
  begin
    while not _cds.Eof do
    begin
      if VarIsNull(_cds.FieldValues['CommNO']) then
      begin
        _cds.Next;
        Continue;
      end;

      comm_no_str := Trim(_cds.FieldValues['CommNO']);
      comm_no_str_short := Copy(comm_no_str, 3, 9);
      if comm_no_str_short = '' then
        comm_no_str_short := '0';
      vehicle_id  := StrToInt(comm_no_str_short);
      sCarId:= comm_no_str_short;
      if CarIds='' then CarIds:= sCarId
      else CarIds:= CarIds+ ','+ sCarId;
      CarInfo:= TCarInfo.Create;
      TCarInfo.SetVarToFieldValue(CarInfo, 'CarID', vehicle_id);
//ruihanxl
      // 遍历车辆信息字段列表
      for i := 0 to CarInfo.CarinfoValueList.Count - 1 do
      begin
        p_field_value := PBaseDBFieldValue(CarInfo.CarinfoValueList.Items[i]);
        field_name    := p_field_value^.FieldInfo^.FieldName;

        if p_field_value^.FieldInfo^.IsInput then
          Continue;

        if (field_name <> 'CarID') and
           (field_name <> '') then
          TCarInfo.SetVarToFieldValue(CarInfo, field_name, _cds.FieldByName(field_Name).Value);
      end;

      gTeamID := CarInfo.TeamId;
      gCarInfoList.AddObject(sCarId, CarInfo);
      if Assigned(fProgress) then fProgress(Self, 1, fDataCount);
      _cds.Next;

    end;
  end
  // 旧库
  else begin
    while not _cds.Eof do begin
      if gVersionFlag = 75 then
      begin
        if not _cds.FieldByName('ParkName').IsNull then
        begin
          if UpperCase(Trim(_cds.FieldByName('ParkName').AsString)) <>
             UpperCase('SC') then
          begin
            if Assigned(fProgress) then fProgress(Self, 1, fDataCount);
            _cds.Next;
            Continue;
          end;
        end;
      end;

      sCarId := Trim(_cds.FieldValues['CarId']);

      if CarIds = '' then
        CarIds := sCarId
      else
        CarIds := CarIds + ','+ sCarId;

      CarInfo:= TCarInfo.Create;
// ruihanxl
      for i := 0 to CarInfo.CarinfoValueList.Count - 1 do
      begin
        p_field_value := PBaseDBFieldValue(CarInfo.CarinfoValueList.Items[i]);
        field_name    := p_field_value.FieldInfo.FieldName;

        if p_field_value^.FieldInfo^.IsInput then
          Continue;

        if field_name <> '' then
          TCarInfo.SetVarToFieldValue(CarInfo, field_name, _cds.FieldByName(field_Name).Value);
      end;
      gTeamID := CarInfo.TeamId;
      gCarInfoList.AddObject(sCarId, CarInfo);

      frmMain.AddDebugInfo(Format('login--FlushCarInfoList Progress %d', [fDataCount]));
      if Assigned(fProgress) then fProgress(Self, 1, fDataCount);
      _cds.Next;
    end;
  end;

  // 执行 更新数据的查询
  if gIsCacheLogon then
    baseDBLogon.LogonCache311;
//  begin
//    if gUseNewDBServer then
//    begin
//      sql_str := Format('select * from V_MSC_Vehicle where ID in (select * from F_GetVehicleTableByUserID(%d)) ', [
//      gCurUsrInfo.UsrId]);
//      check_sql_str := Format('select * from V_Logon_Cache_MSC_Vehicle where ID in (select * from F_GetVehicleTableByUserID(%d)) ', [
//      gCurUsrInfo.UsrId]);
//    end
//    else begin
//      if gCurUsrInfo.WatchRangeId = 0 then
//      begin
//        sql_str :=
//          'select * from TeamInfo,CarInfo where TeamInfo.TeamId=CarInfo.TeamId and TeamInfo.GroupId' + ' in(' + gCurUsrInfo.Ranger + ')';
//        check_sql_str :=
//          'select * from V_Logon_Cache_TeamInfo_CarInfo where GroupId' + ' in(' + gCurUsrInfo.Ranger + ')';
//      end
//      else if gCurUsrInfo.WatchRangeId = 1 then
//      begin
//        sql_str :=
//          'select * from TeamInfo,CarInfo where TeamInfo.TeamId=CarInfo.TeamId and TeamInfo.TeamId' + ' in(' + gCurUsrInfo.Ranger + ')';
//        check_sql_str :=
//          'select * from V_Logon_Cache_TeamInfo_CarInfo where TeamID' + ' in(' + gCurUsrInfo.Ranger + ')';
//      end
//      else if gCurUsrInfo.WatchRangeId = 2 then
//      begin
//        sql_str :=
//          'select * from CarInfo where CarID' + ' in(' + gCurUsrInfo.Ranger + ')';
//        check_sql_str :=
//          'select * from V_Logon_Cache_CarInfo where CarID' + ' in(' + gCurUsrInfo.Ranger + ')';
//      end;
//    end;

//    TBaseDBLogonCacheThread.Create(False, messageHandle, False, APP_BASEDB_AUTH_NAME, sql_str, check_sql_str,
//      dir_name , file_name, 'ID', _user_sql_str, _user_file_name);
//  end;
end;

//procedure TDataModule1.FlushBaseDBGroupInfoList(_cds: TClientDataSet);
//var
//  sGroupId: string;
//  GroupInfo: TGroupInfo;
//  db_name: string;
//begin
//
//  db_name := getDBName;
//  InitGroupInfoList;
//  _cds := TBaseDBForm.OpenSelectFromDataset(db_name,
//    'select * from groupInfo');
//  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.FlushBaseDBTeamInfoList(_cds: TClientDataSet);
//var
//  TeamInfo: TTeamInfo;
//  sTeamId, TeamIds: string;
//  db_name: string;
//begin
//  db_name := getDBName;
//  InitTeamInfoList;
//  _cds := TBaseDBForm.OpenSelectFromDataset(db_name,
//    'select * from V_MSC_Group');
//  TeamIds:= '';
//  while not _cds.Eof do begin
//    sTeamId:= Trim(_cds.FieldValues['LevelID']);
//    if TeamIds='' then TeamIds:= sTeamId
//    else TeamIds:= TeamIds+ ','+ sTeamId;
//    TeamInfo:= TTeamInfo.Create;
//    TeamInfo.TeamId:= _cds.FieldValues['LevelID'];
//    TeamInfo.TeamName:= Trim(_cds.FieldValues['LevelName']);
//    TeamInfo.GroupId:= _cds.FieldValues['GroupId'];
//    gTeamInfoList.AddObject(sTeamId, TeamInfo);
//    _cds.Next;
//    if Assigned(fProgress) then fProgress(Self, 1, fDataCount);
//  end;
//end;

procedure TDataModule1.FlushCarInfoList(_cds: TClientDataSet;
  _log_name, _user_sql_str, _user_file_name: string);
var
  sCarId, CarIds: string;
  CarInfo: TCarInfo;
  vehicle_str      : string;
  check_vehicle_str: string;
  dir_name      : string;
  file_name     : string;
  i             : Integer;
  field_name    : string;
  p_field_value : PBaseDBFieldValue;
begin
  if not Assigned(_cds) then
    _cds := cdsCarInfo
  else begin
    if gCurUsrInfo.WatchRangeId = 0 then
      vehicle_str :=
        'from TeamInfo,CarInfo where TeamInfo.TeamId=CarInfo.TeamId and TeamInfo.GroupId' + ' in(' + gCurUsrInfo.Ranger + ')'
    else if gCurUsrInfo.WatchRangeId = 1 then
      vehicle_str :=
        'from TeamInfo,CarInfo where TeamInfo.TeamId=CarInfo.TeamId and TeamInfo.TeamId' + ' in(' + gCurUsrInfo.Ranger + ')'
    else if gCurUsrInfo.WatchRangeId = 2 then
      vehicle_str :=
        'from CarInfo where CarID' + ' in(' + gCurUsrInfo.Ranger + ')';

    _cds.CommandText := 'select * ' + vehicle_str;
  end;

  dir_name := ExtractFilePath(Application.ExeName) + 'LogonCache\';

  file_name := _log_name + '_CarInfo.txt';
  InitCarInfoList;
  _cds.Close;

  if gIsCacheLogon and FileExists(dir_name + file_name) then
  begin
    _cds.LoadFromFile(dir_name + file_name);
    fDataCount := _cds.RecordCount;
  end
  else begin
    try
      _cds.Open;
    except
      if FileExists(dir_name + _user_file_name) then
        Windows.DeleteFile(PChar(dir_name + _user_file_name));
      Exit;
    end;
  end;

  CarIds:= '';
  while not _cds.Eof do begin
    if gVersionFlag = 75 then
    begin
      if not _cds.FieldByName('ParkName').IsNull then
      begin
        if UpperCase(Trim(_cds.FieldByName('ParkName').AsString)) <>
           UpperCase('SC') then
        begin
          if Assigned(fProgress) then fProgress(Self, 1, fDataCount);
          _cds.Next;
          Continue;
        end;
      end;
    end;

    sCarId:= Trim(_cds.FieldValues['CarId']);
    if CarIds='' then CarIds:= sCarId
    else CarIds:= CarIds+ ','+ sCarId;
    CarInfo:= TCarInfo.Create;
//ruihanxl
      for i := 0 to CarInfo.CarinfoValueList.Count - 1 do
      begin
        p_field_value := PBaseDBFieldValue(CarInfo.CarinfoValueList.Items[i]);
        field_name    := p_field_value.FieldInfo.FieldName;

        if field_name = '' then
          Continue;

        if p_field_value^.FieldInfo^.IsInput then
          Continue;

        if _cds.FindField(field_Name) <> nil then
          TCarInfo.SetVarToFieldValue(CarInfo, field_name, _cds.FieldByName(field_Name).Value);
      end;
    gTeamID := CarInfo.TeamId;
    gCarInfoList.AddObject(sCarId, CarInfo);

    frmMain.AddDebugInfo(Format('login--FlushCarInfoList Progress %d', [fDataCount]));
    if Assigned(fProgress) then fProgress(Self, 1, fDataCount);
    _cds.Next;
  end;

  if gIsCacheLogon then
  begin
    if gCurUsrInfo.WatchRangeId = 0 then
    begin
      vehicle_str :=
        'select * from TeamInfo,CarInfo where TeamInfo.TeamId=CarInfo.TeamId and TeamInfo.GroupId' + ' in(' + gCurUsrInfo.Ranger + ')';
      check_vehicle_str :=
        'select * from V_Logon_Cache_TeamInfo_CarInfo where GroupId' + ' in(' + gCurUsrInfo.Ranger + ')';
    end
    else if gCurUsrInfo.WatchRangeId = 1 then
    begin
      vehicle_str :=
        'select * from TeamInfo,CarInfo where TeamInfo.TeamId=CarInfo.TeamId and TeamInfo.TeamId' + ' in(' + gCurUsrInfo.Ranger + ')';
      check_vehicle_str :=
        'select * from V_Logon_Cache_TeamInfo_CarInfo where TeamID' + ' in(' + gCurUsrInfo.Ranger + ')';
    end
    else if gCurUsrInfo.WatchRangeId = 2 then
    begin
      vehicle_str :=
        'select * from CarInfo where CarID' + ' in(' + gCurUsrInfo.Ranger + ')';
      check_vehicle_str :=
        'select * from V_Logon_Cache_CarInfo where CarID' + ' in(' + gCurUsrInfo.Ranger + ')';
    end;

    frmMain.AddDebugInfo('login--FlushCarInfoList Create Thread');
    try
    TBaseDBLogonCacheThread.Create(False, messageHandle, True, 'ETGPSDB', vehicle_str,
      check_vehicle_str, dir_name, file_name, 'CarID', _user_sql_str, _user_file_name);
    except
    end;
  end;

  isCloseDB := True;
  frmMain.AddDebugInfo('login--FlushCarInfoList End');
end;

procedure TDataModule1.FlushEFenseList;
var
  sCarIds: string;
  EFense: TEfenceItem;
  CarInfo: TCarInfo;

⌨️ 快捷键说明

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