📄 upubfun.pas
字号:
unit uPubFun;
interface
uses
Windows, Classes, SysUtils, Messages, tbGisIdTCPClient, IniFiles, Variants,
uBaseDBDefs, uGPSClientVehicleInfoUtils, DB;
const
WM_GetGpsProgressIndex = WM_USER+ 100;
WM_GetGpsProgress = WM_USER+ 1000;
{: 错误的Cardinal型车辆ID值。}
ERROR_CAR_ID_CARDINAL = 777777777;
{: 错误的Int64型车辆ID值。}
ERROR_CAR_ID_INT64 = 13777777777;
rsEmSpeedLow = '低速报警';
rsSpeed = '速度';
rsDefSpeedLow = '设定最低速度';
type
PMyNodeData = ^TMyNodeData;
TMyNodeData = record
my_data_ptr: Pointer;
end;
TTimeType=(
ttNone,
ttDay, //单是在这一天
ttWeek, //每周的星期几
ttMonth, //每月的多少号
ttEveryDay //每一天都是
);
//账号登陆信息
TLnkDataState = (ldsNone, ldsLinkErr, ldsPwdErr, ldsNoTaxiAccount,
ldsAccountDisable, ldsOk);
TDataEditState = (desNone, desAdd, desDel, desEdit);
EParams = Exception;
TTaskInfo = class;
TGpsInfo = Class;
//
TGpsRect = record
LongMin, LatMin,
LongMax, LatMax: Double;
end;
TEFenceState = (efsNone, efsCtrled, efsEnterInTime, efsAlarmed);
TEfenceItem = record
id : Cardinal; //
CarId : Cardinal;
No : Integer; //从1开始的序号
IsEFence : Boolean; //是否为“电子围栏”、“迟到报警”
GpsRect : TGpsRect; //“电子围栏”Rect
EnterTime,
ExitTime : TDateTime; //时间
Edited: Boolean;
State : TEFenceState;
end;
PEfenceItem = ^TEfenceItem;
//登陆状态
TLogState = (lsLogOff, lsLogOn);
TLnkTcpState = (ltsOff, ltsConnect, ltsOn);
//轨迹类型
TShowTrackType = (sttNone, sttPoint, sttLine, sttAll);
//目标颜色
TTargetColor = (tcBlue, tcGreen, tcYellow, tcRed);
//系统界面
TLookFeel = (lfStard, lfNet, lfXp, lfOffice);
TTargetHintShow = (thsGpsInfo, thsCarInfo);
TToolIconType = (titNone, titSmall, titBig);
//车辆信息
TCarInfo = class(TObject)
public
MileagePluseCount : integer;
// TerminalType : TTargetType; //终端类型
GpsInfo : TGpsInfo;
GpsInfoGenOper : TGpsInfo;
TeamId : Cardinal; //所属组的ID
TaskState : Integer; //(航线)任务状态ID
TaskInfo : TTaskInfo; //(航线)任务信息
Ctrled : Byte; //现在是否监控?0:未知;1:监控;2:不监控
bz : Byte;
IsOldDB : Boolean;
EFenseList : TList;
CarinfoValueList : TList; // FieldValueList <- List of PFieldValue
FieldList : THashedStringList;
constructor Create;
destructor Destroy; override;
procedure SetGpsInfo(RecvTime, GpsTime: TDateTime;
Long, Lat: Double; Speed, Head : Single;
GpsValid: Boolean; GpsState: string);
procedure SetGpsOperate(RecvTime: TDateTime;
OperateId, OperateContent, OperateScribe: String);
procedure Assign(ASource: TCarInfo);
procedure InitEFenseList;
procedure AddEFense(EFense: TEfenceItem);
// private
// procedure SetIntToFieldValue(_field_name: string; _int: Integer);
// procedure SetStrToFieldValue(_field_name, _str: string);
// procedure SetValueToFieldValue(_field_name: string; _value: Variant);
public
// 车辆信息字段列表操作
class procedure InitialCarInfoFieldValueList(_car_info: TCarInfo);
// 车辆信息 通信属性 处理
class function ExtractCommNOIDFromCarInfo(_car_info: TCarInfo;
var _error_str: string; var _comm_no_id: Int64; _is_short: Boolean): Boolean;
class function ExtractCommNOStrFromCarInfo(_car_info: TCarInfo;
var _error_str: string; var _comm_no_str: string; _is_short: Boolean): Boolean;
class function GetFieldValueStrByName(_car_info: TCarInfo; _field_name: string): string;
class function GetFieldValueIntByName(_car_info: TCarInfo; _field_name: string): Integer;
class function GetFieldValueBoolByName(_car_info: TCarInfo; _field_name: string): Boolean;
class function GetFieldValueDateByName(_car_info: TCarInfo; _field_name: string): TDateTime;
class function GetFieldValueVarByName(_car_info: TCarInfo;
_field_name: string): Variant;
// class procedure SetStrToFieldValue(_field_name, _str: string);
// class procedure SetIntToFieldValue(_field_name: string; _int: Integer);
// class procedure SetValueToFieldValue(_field_name: string; _value: Variant);
// class procedure SetValueToFieldValue(_field_name: string; _value: Variant);
class procedure SetVarToFieldValue(_car_info: TCarInfo; _field_name: string; _value: Variant);
private
function getVehicleCommIDCardinal: Cardinal;
function getVehicleCommIDInt64: Int64;
function getVehicleCommIDStringLong: string;
function getVehicleCommIDStringShort: string;
function getVehicleRegistrationNO: string;
function getVehicleTerminalType: TTargetType;
function getVehicleTypeName: string;
function getVehicleOwnerName: string;
function getVehicleGroupID: Integer;
function getVehicleTerminalTypeName: string;
procedure setVehicleRegistrationNO(const Value: string);
procedure setVehicleCommIDStringLong(const Value: string);
public
property VehicleCommIDStringShort: string read getVehicleCommIDStringShort;
property VehicleCommIDStringLong: string read getVehicleCommIDStringLong write setVehicleCommIDStringLong;
property VehicleCommIDInt64: Int64 read getVehicleCommIDInt64;
property VehicleCommIDCardinal: Cardinal read getVehicleCommIDCardinal;
property VehicleRegistrationNO: string read getVehicleRegistrationNO write setVehicleRegistrationNO;
property VehicleTerminalType: TTargetType read getVehicleTerminalType;
property VehicleTerminalTypeName: string read getVehicleTerminalTypeName;
property VehicleTypeName: string read getVehicleTypeName;
property VehicleOwnerName: string read getVehicleOwnerName;
property VehicleGroupID: Integer read getVehicleGroupID;
end;
//组信息
TTeamInfo = Class(TObject)
TeamId : Cardinal; //组ID
TeamName : string; //组名称
GroupId : Cardinal; //所属群ID
CarInfos : TStringList;
public
constructor Create;
destructor Destroy; override;
end;
//群信息
TGroupInfo = class(TObject)
GroupId : Cardinal; //群ID
GroupName : string; //群名称
end;
// 车辆分组信息
TVehicleGroupInfo = class(TObject)
public
GroupID : Integer;
GroupName : string;
LevelID : Integer;
LevelNO : Integer;
ParentGroupID : Integer;
VehicleList : THashedStringList;
SubGroupList : THashedStringList;
IsEmpty : Boolean;
IsDelete : Boolean;
TotalVehicle : Integer;
// 构造与析构
public
constructor Create;
destructor Destroy; override;
public
procedure MarkParentGroup(_group_list: THashedStringList;
_vehicle_group: TVehicleGroupInfo; _parent_group_id: Integer);
function CountVehicle: Integer;
public
class function FindVehicleGroupByID(
_group_list: THashedStringList; _group_id: Integer): TVehicleGroupInfo;
end;
//登陆用户信息
TUsrInfo = class(TObject)
UsrId : Cardinal;
UsrName,
UsrPwd : string;
UsrPurview,
WatchRangeId: Integer;
Ranger : string;
end;
//定位信息
TGpsInfo= Class(TObject)
CarId : Cardinal;
RecvTime, GpsTime : TDateTime;
Long, Lat : Double;
Speed, Head : Single;
GpsValid : Boolean;
GpsState : string;
OperateTime : TDateTime;
OperateType : Integer;
OperateId,
OperateContent,
OperateScribe : String;
EmInfoList : TStringList;
IsAlert : Boolean;
IsRun : Boolean;
IsLoaded : Boolean;
IsSelected : Boolean;
public
constructor Create;
destructor Destroy; override;
end;
//路桥费
TPriceInfo = class(TObject)
EditState: TDataEditState;
Id : Cardinal;
Name: string;
RoadPrice, BridgePrice: Double;
Distance, OilPrice : Double;
StartPtName: string;
StartPtLong1, StartPtLat1,
StartPtLong2, StartPtLat2: Double;
EndPtName: string;
EndPtLong1, EndPtLat1,
EndPtLong2, EndPtLat2: Double;
end;
//航行任务信息
TTaskInfo = class(TObject)
TaskName : string; //任务名称
TaskId, //任务ID
CarId, //
WalkLineId : Cardinal;
TaskState : Integer; //任务状态
CreateTime,
StartTime,
EndTime : TDateTime;
StartPointX,
StartPointY,
EndPointX,
EndPointY : Double;
StartX,
StartY,
EndX,
EndY : Double;
StartRanger,
EndRanger : Integer;
AverageSpeed: Integer;
end;
TRecEditState = (rsNoneChange, rsAppend, rsEdit, rsDelete);
TGoodsSheet = class;
TGoods = Class(TObject)
GoodsId,
GoodSheetId: Cardinal;
GoodsNo, GsnNo, ClientNo, ClientName: string;
Name, Sort, Weitght, Bulk, Price, Remark: string;
Number, NumberLost, NumberBreak, NumberRefuse: Integer;
Edited: TRecEditState;
GoodsSheet: TGoodsSheet;
end;
TGoodsSheet = class(TObject)
GoodSheetId: Cardinal;
CarId: Cardinal;
DispatchCarNo: string;
SheetNo, GsnNo: string;
FromName, FromAddress, FromZip, FromTel: string;
FromTime: TDateTime;
ToName, ToAddress, ToZip, ToTel: string;
ToTime: TDateTime;
Remark: string;
FromLong1, FromLat1, ToLong1, ToLat1: Double;
FromLong2, FromLat2, ToLong2, ToLat2: Double;
FromRdcLong1, FromRdcLat1: Double;
FromRdcLong2, FromRdcLat2: Double;
FromRadii, ToRadii: Integer;
IsReportState: Boolean;
StartTimePlan, EndTimePlan: TDateTime;
Edited: TRecEditState;
GoodsList: TStringList;
end;
function FormatDigit(ADigite, ALen: Integer): string;
function GetConsume:Double;
function GetOilPrice:Double;
var
//////////////////////////////////////////////////
//by wulianghong 2004-10-28
gPCName : String;
//by wulianghong 2004-11-5
gGetStation :Boolean;
//////////////////////////////////////////////////
gGetLostPropertyPoint : Boolean;
//////////////////////////////////////////////////
//系统登录状态、定位服务的状态
gLogState : TLogState;
gLnkTcpState : TLnkTcpState;
gMaxMapWinCount : Integer= 10;
//系统配置
gTitle : string;
gMtscHost : string;
gDataHost : string;
gDataHostList : string;
gIsUseDataHostList: Boolean;
gIsCacheLogon : Boolean;
gZPDataHost : string;
gDsCommHost : string;
gIgigHost : string;
gDistanceCalcHost: string;
gGpsOnLine : Boolean;
gDebug : Boolean;
gLogonNOOP : Boolean;
gLookOil : Boolean;
gNOOPInterval : Integer;
gETAGDispatchHost : string;
gANADataHost : string;
gANADataPort : Integer;
gMtscPort : Integer;
gDataPort : Integer;
gReplayPort : Integer;
gReplayDB : string;
gZPDataPort : Integer;
gDsCommPort : Integer;
gIgigPort : Integer;
gLogName : string;
gPassWd : string;
gHistoryLogNames: string;
{:是否使用旧库认证服务器。}
gUseNewDBServer: Boolean;
{:是否使用用户认证服务器。}
gUseAuthServer: Boolean;
{:是否使用BaseDB用户认证服务器。}
GIsBaseDBAuth : Boolean;
{:用户认证服务器地址。}
gAuthServerHost: string;
{:用户认证服务器端口。}
gAuthServerPort: Integer;
{: 自动升级URL地址。}
gUpgradeURL : string;
//add by wulianghong
gHistoryGpsInfoList :TList;
gSendHistoryCmd:Boolean;//本程序是否发送了读历史命令.
gAllGpsValid : Boolean;
gVersionFlag : Integer;
gFullExtentViewAll: Boolean;
gFullExtentSearch: Boolean;
gIgnorCompensate: Boolean;
gDoorAlert : Boolean;//车门开关报警
// gBatteryAlert : Boolean;//电池报警
// //是否显示刹车状态
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -