📄 udm.pas
字号:
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 + -