You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
373 lines
25 KiB
C++
373 lines
25 KiB
C++
#ifndef PARAMMANAGER_H
|
|
#define PARAMMANAGER_H
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include "libdbf.h"
|
|
#include <QLibrary>
|
|
#include <QSqlDatabase>
|
|
#include <QStringList>
|
|
#include "Defines.h"
|
|
#include <QMutex>
|
|
#include <QDateTime>
|
|
#include <vector>
|
|
|
|
#ifdef PARAMMANAGER_LANE
|
|
#include <QSplashScreen>
|
|
#include "libFee.h"
|
|
#include "OBUCardTypes.h"
|
|
#include "RSUFrameTypes.h"
|
|
#include "CPCCardTypes.h"
|
|
#include "OBUCardInfoHelper.h"
|
|
#include "TransQueue.h"
|
|
#endif
|
|
|
|
using namespace Qt;
|
|
using namespace std;
|
|
|
|
#ifndef INVALID_HANDLE_VALUE
|
|
#define INVALID_HANDLE_VALUE ((HANDLE)-1)
|
|
#endif
|
|
|
|
#define PFILE_INIT_COUNT 29
|
|
|
|
#define PFILE_ID_STATION 1 //站名编码
|
|
#define PFILE_ID_SQUAD 2 //工班
|
|
#define PFILE_ID_OPERATOR 3 //操作人员
|
|
#define PFILE_ID_LANE 4 //车道参数
|
|
#define PFILE_ID_BASICINFO 5 //基础信息hex-->id
|
|
//#define PFILE_ID_BASICINFOID 6 //基础信息id--hex
|
|
|
|
#define PFILE_ID_ROADPRICE 7 //费率表
|
|
#define PFILE_ID_OPENPRICE 8 //开放费率表
|
|
#define PFILE_ID_MINPATHFEE 9 //最小费额表
|
|
#define PFILE_ID_HOLIDAY 10 //节假日
|
|
#define PFILE_ID_HIGHWAY 11 //HIGHWAY.INI
|
|
#define PFILE_ID_ISSUER_LIST 12 //发行方
|
|
|
|
#define PFILE_ID_ADMIN 13 //行政车
|
|
#define PFILE_ID_ADMIN_OPEN 14 //行政车
|
|
#define PFILE_ID_GAPPOINTALL 15 //绿通预约全量
|
|
#define PFILE_ID_GAPPOINTINC 16 //绿通预约增量
|
|
#define PFILE_ID_BIGAPPOINT 17 //大件车全量
|
|
#define PFILE_ID_BIGBLACK 18 //大件车增量
|
|
|
|
#define PFILE_ID_SNBLACKLIST 19 //信用名单全量
|
|
#define PFILE_ID_SNBLACKLISTINC 20 //信用名单增量
|
|
|
|
#define PFILE_ID_CARDBLACKLIST 21 //ETC卡黑名单全量
|
|
#define PFILE_ID_CARDBLACKLISTINC 22 //ETC卡黑名单增量
|
|
#define PFILE_ID_OBUBLACK 23 //OBU黑名单全量
|
|
#define PFILE_ID_OBUBLACKINC 24 //OBU黑名单增量
|
|
|
|
#define PFILE_ID_VEHICLEBLACK 25 //车辆黑名单全量
|
|
#define PFILE_ID_VEHICLEBLACKINC 26 //车辆黑名单增量
|
|
#define PFILE_ID_VEHICLEGRAY 27 //车辆灰名单全量
|
|
#define PFILE_ID_VEHICLEGRAYINC 28 //车辆灰名单全量
|
|
|
|
//#define PFILE_ID_CPCGRAY 29 //CPC灰名单全量
|
|
//#define PFILE_ID_CPCGRAYINC 30 //CPC灰名单增量
|
|
#define PFILE_ID_DISCOUNT 31 //折扣表
|
|
#define PFILE_ID_EMERCARALL 32 //抢险救灾全量
|
|
#define PFILE_ID_EMERCARINC 33 //抢险救灾增量
|
|
|
|
#define PFILE_TYPE_DBF 1
|
|
#define PFILE_TYPE_SQB 2
|
|
#define PFILE_TYPE_INI 3
|
|
|
|
#define PFILE_LOADTYPE_DBF 1 //dbf加载
|
|
#define PFILE_LOADTYPE_HASH 2 //DBFHASH
|
|
#define PFILE_LOADTYPE_SQB 3 //SQLLITE
|
|
#define PFILE_LOADTYPE_INI 4 //INI
|
|
#define PFILE_LOADTYPE_FEE 5 //最小费额额,动态库加载
|
|
|
|
#ifdef PARAMMANAGER_LANE
|
|
#define CHECKLOADMODE(A,B) gLaneApp->CheckLoadMode(A)
|
|
#define SHOWINFO(A,B) gLaneApp->ShowInfo(A,B)
|
|
#define STEP_TIME gLaneApp->m_cfg.m_FuncParam.StepTime
|
|
#else
|
|
#define CHECKLOADMODE(A,B) CheckLoadMode(A,B)
|
|
#define SHOWINFO(A,B)
|
|
#define ERROR_CODE_BASE_CARD 0x0500
|
|
#define ERROR_CODE_BASE_CALCFEE 0x0A00
|
|
#define STEP_TIME 30
|
|
#endif
|
|
|
|
typedef struct PFileInfo
|
|
{
|
|
int PFileId; //参数文件ID,有PFILE_ID定义
|
|
QString PFileCode; //参数缩写编码
|
|
QString PFileName; //参数文件名
|
|
QString PFileCName; //参数文件中文名称
|
|
qint64 PFileGenTime; //参数文件生成时间 //toMSecsSinceEpoch
|
|
int RoadNo; //参数所属路段编码(最小费额)
|
|
int StaNo; //参数所属收费站编码(最小费额)
|
|
int FileType; //文件类型 1=DBF,2-SQB,3-INI
|
|
int LoadType; //加载方式 1-DBF加载 2-DBFhash加载 3SQB加载,4INI加载
|
|
int LoadMode; //加载模式
|
|
bool IsPrivateParam; //是否私有参数
|
|
bool IsRealUpdate; //是否实时加载
|
|
bool IsCheckStation; //是否检测收费站
|
|
bool IsCheckStartDate; //是否检测启用日期
|
|
QString StartDateFieldName; //启用日期字段名称
|
|
QString RoadNoFieldName;
|
|
QString StaNoFieldName;
|
|
QString VersionFieldName; //参数版本字段名
|
|
bool IsNeedUpdate; //需要进行参数更新标识
|
|
bool Loading; //是否正在加载
|
|
QString HashKeyFieldName; //hash key字段
|
|
QString HashValueFieldName; //hash value字段
|
|
|
|
LibDBF *pDBF; //DBF文件指针
|
|
HANDLE hHash; //hashdbf句柄
|
|
QLibrary *pLib; //dll对象指针
|
|
QStringList *pIniList; //base目录highway.ini
|
|
QSqlDatabase *pDBSQLite;
|
|
QSqlQuery *pQrySQLite;
|
|
}CPFileInfo;
|
|
|
|
typedef struct LaneOption
|
|
{
|
|
int bLoaded = 0;
|
|
int MinETCRate;
|
|
int MaxETCRate;
|
|
int MinCPCRate;
|
|
int MaxCPCRate;
|
|
int MaxHCRate;
|
|
int MaxOnLineRate;
|
|
int MaxHCOnLineRate;
|
|
}CLaneOption;
|
|
|
|
|
|
typedef struct tagBlackItem
|
|
{
|
|
qint64 CreateTime; //毫秒
|
|
int Status; //
|
|
int State; //1--进入黑名单 2--解除黑名单
|
|
}CBlackItem;
|
|
|
|
|
|
|
|
class CParamMan : public QObject
|
|
{
|
|
Q_OBJECT
|
|
private:
|
|
QMutex m_Mutex;
|
|
CPFileInfo m_PFileInitInfo[PFILE_INIT_COUNT] = {
|
|
{PFILE_ID_STATION,QString("ROADCODE"),QString("ROADCODE.DBF"),QString("站名编码表"), 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF,LOAD_MODE_ANY, false,false,false,true,QString("BEGDATE"),QString(""),QString(""), QString("BEGDATE"),false,false,QString(""), QString(""), NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_SQUAD,QString("SQUAD"),QString("SQUAD.DBF"),QString("工班表"), 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF, LOAD_MODE_ANY,false,false,false,true,QString("BEGDATE"),QString(""),QString(""), QString("BEGDATE"),false,false,QString(""),QString(""), NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_OPERATOR,QString("OPERATOR"),QString("OPERATOR.DBF"),"操作员表", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF,LOAD_MODE_ANY, false,false,true,true,"BEGDATE","ROADNO","STANO","BEGDATE",false,false,"","", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_LANE,QString("LANE"),QString("LANE.DBF"),"车道参数表", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF,LOAD_MODE_HIGHWAY, false,false,false,true,"BEGDATE","","","BAK1",false,false,"","", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_BASICINFO,QString("BASICINFO"),QString("BASICINFO.SQB"),"基础信息", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAY, false,false,false,true,"BEGDATE","","","VERNO",false,false,"HEX","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
//{PFILE_ID_BASICINFOID,QString("BASICINFOID"),QString("BASICINFO.DBF"),"基础信息ID", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAY, false,false,false,true,"BEGDATE","","","VERNO",false,false,"ID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_ROADPRICE,QString("PRICELIB"),QString("PRICELIB.SQB"),"费率表SQB", 0, 0, 0, PFILE_TYPE_SQB, PFILE_LOADTYPE_FEE,LOAD_MODE_OUT, false,false,false,true,"BEGDATE","","","IDX",false,false,"","", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
|
|
{PFILE_ID_OPENPRICE,QString("PRICELIB"),QString("PRICEOPEN.DBF"),"费率表DBF", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF,LOAD_MODE_OPEN, false,false,false,true,"BEGDATE","","","IDX",false,false,"","", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
//{PFILE_ID_MINPATHFEE,QString("ALLROADMINFEE"),QString("ALLROADMINFEE.SQB"),"最小费额", 0, 0, 0, PFILE_TYPE_SQB, PFILE_LOADTYPE_SQB,LOAD_MODE_HIGHWAYOUT, false,false,true,true,"VALIDTIME","exID","exID","SUBSTR(VERSION,3,9)",false,false,"ALLROADMINFEE_TABLE","", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_HOLIDAY,QString("HOLIDAY"),QString("HOLIDAY.DBF"),"节假日表", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF,LOAD_MODE_ANY, false,false,false,true,"BEGDATE","","","VERNO",false,false, "","",NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_HIGHWAY,QString("HIGHWAY"),QString("HIGHWAY.INI"),"车道配置", 0, 0, 0, PFILE_TYPE_INI, PFILE_LOADTYPE_INI,LOAD_MODE_ANY, false,false,false,true,"BEGDATE","","","",false,false, "","",NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_ISSUER_LIST,QString("PARTICIPANT"),QString("PARTICIPANT.DBF"),"发行方表", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF,LOAD_MODE_ANY, false,false,false,true,"BEGDATE","","","VERNO",false,false, "","",NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_ADMIN,QString("ADMIN"),QString("ADMIN.DBF"),"行政车表DBF", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF,LOAD_MODE_HIGHWAYOUT, false,false,false,true,"BEGDATE","","","VERNO",false,false, "","",NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_ADMIN_OPEN,QString("ADMIN"),QString("CARNOTABLE.SQB"),"行政车表SQB", 0, 0, 0, PFILE_TYPE_SQB, PFILE_LOADTYPE_SQB,LOAD_MODE_OPEN, false,false,false,true,"BEGDATE","","","VERNO",false,false,"","", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
|
|
{PFILE_ID_GAPPOINTALL,QString("GAPPOINTALL"),QString("GREENAPPOINTALL.SQB"),"绿通全量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAYOUT, false,true,false,false,"","","","VERNO",false,false,"VEHID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_GAPPOINTINC,QString("GAPPOINTINC"),QString("GREENAPPOINTINC.SQB"),"绿通增量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAYOUT, false,true,false,false,"","","","VERNO",false,false,"VEHID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
|
|
{PFILE_ID_BIGAPPOINT,QString("BIGAPPOINT"),QString("BIGAPPOINT.SQB"),"大件车表", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAY, false,true,false,false,"","","","VERNO",false,false,"TRACTVEHID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_BIGBLACK,QString("BIGBLACK"),QString("BIGBLACK.SQB"),"大件车黑名单表", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_IN, false,true,false,false,"","","","VERNO",false,false, "VEHID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
|
|
{PFILE_ID_SNBLACKLIST,QString("SNBLACK"),QString("SNBLACKLISTALL.SQB"),"追缴全量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAY, false,true,false,false,"","","","BACKUP2",false,false,"VEHICLEID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_SNBLACKLISTINC,QString("SNBLACKINC"),QString("SNBLACKLISTINC.SQB"),"追缴增量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAY, false,true,false,false,"","","","BACKUP2",false,false,"VEHICLEID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
|
|
{PFILE_ID_CARDBLACKLIST,QString("CPUBLACK"),QString("CARDBLACKLISTALL.SQB"),"ETC卡全量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"CARDID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_CARDBLACKLISTINC,QString("CPUBLACKINC"),QString("CARDBLACKLISTINC.SQB"),"ETC卡增量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"CARDID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
|
|
{PFILE_ID_OBUBLACK,QString("OBUBLACK"),QString("OBUBLACKLISTALL.SQB"),"OBU全量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false, "OBUID","STATUS",NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_OBUBLACKINC,QString("OBUBLACKINC"),QString("OBUBLACKLISTINC.SQB"),"OBU增量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"OBUID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
|
|
{PFILE_ID_VEHICLEBLACK,QString("VEHICLEBLACK"),QString("VEHICLEBLACKLISTALL.SQB"),"车辆黑名单", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH, LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"VEHICLEID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_VEHICLEBLACKINC,QString("VEHICLEBLACKINC"),QString("VEHICLEBLACKLISTINC.SQB"),"车辆黑名单增量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH, LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"VEHICLEID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
|
|
{PFILE_ID_VEHICLEGRAY,QString("VEHICLEGRAY"),QString("VEHICLEGRAYLISTALL.SQB"),"车辆灰名单", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"VEHICLEID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_VEHICLEGRAYINC,QString("VEHICLEGRAYINC"),QString("VEHICLEGRAYLISTINC.SQB"),"车辆灰名单增量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"VEHICLEID","STATUS", NULL, 0, NULL, NULL, NULL,NULL},
|
|
|
|
//{PFILE_ID_CPCGRAY,QString("CPCGRAY"),QString("CPCGRAYALL.SQB"),"CPC灰名单", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"CARDID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
//{PFILE_ID_CPCGRAYINC,QString("CPCGRAYINC"),QString("CPCGRAYINC.SQB"),"CPC灰名单增量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_ANY, false,true,false,false,"","","","BACKUP2",false,false,"CARDID","STATUS", NULL, 0, NULL, NULL, NULL,NULL},
|
|
{PFILE_ID_DISCOUNT,QString("DISCOUNTINFO"),QString("DISCOUNTINFO.DBF"),"折扣率", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_DBF,LOAD_MODE_OUT, false,true,false,false,"","","","VERNO",false,false,"","", NULL, 0, NULL, NULL, NULL,NULL},
|
|
|
|
{PFILE_ID_EMERCARALL,QString("EMERCARALL"),QString("EMERCARALL.SQB"),"抢险救灾名单", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAYOUT, false,true,false,false,"","","","BACKUP2",false,false,"VEHICLEID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}, //
|
|
{PFILE_ID_EMERCARINC,QString("EMERCARINC"),QString("EMERCARINC.SQB"),"抢险救灾名单增量", 0, 0, 0, PFILE_TYPE_DBF, PFILE_LOADTYPE_HASH,LOAD_MODE_HIGHWAYOUT, false,true,false,false,"","","","BACKUP2",false,false,"VEHICLEID","STATUS", NULL, 0, NULL, NULL, NULL,NULL}
|
|
};
|
|
CPFileInfo m_PFileMinFeeInfo = {PFILE_ID_MINPATHFEE,QString("ALLROADMINFEE"),QString("ALLROADMINFEE.SQB"),"最小费额", 0, 0, 0, PFILE_TYPE_SQB, PFILE_LOADTYPE_SQB,LOAD_MODE_HIGHWAYOUT, false,false,false,true,"VALIDTIME","exID","exID","SUBSTR(VERSION,3,9)",false,false,"ALLROADMINFEE_TABLE","", NULL, 0, NULL, NULL, NULL,NULL};
|
|
|
|
vector<CPFileInfo> m_PFileInfo;
|
|
///////////////////////////////////////
|
|
//费率模块动态库
|
|
#ifdef PARAMMANAGER_LANE
|
|
FUNC_getPath getPath;
|
|
FUNC_init init;
|
|
FUNC_deInit deInit;
|
|
FUNC_getLibVersion getLibVersion;
|
|
FUNC_getFeeDataVersion getFeeDataVersion;
|
|
FUNC_getFee getFee;
|
|
FUNC_getStaFee getStaFee;
|
|
#endif
|
|
//璐圭巼妯″潡浣跨敤鍑芥暟锛屽姩鎬佸姞杞///////////////
|
|
///////////////////////////////////////
|
|
CLaneOption m_LaneOpt; //缓存
|
|
QString m_LibBasePath; //缓存
|
|
QString m_LibTempPath; //缓存
|
|
|
|
int m_LocalAreaNo; //本车道
|
|
int m_LocalRoadNo; //本车道
|
|
int m_LocalStaNo; //本车道
|
|
//QString m_LocalStationId; //本站
|
|
|
|
|
|
bool InitPFileInfo(const int LocalAreaNo, const int LocalRoadNo, const int LocalStaNo, const QString &InitStaInfo);
|
|
int GetIndex(const int PFileId, const int roadNo = 0, const int staNo = 0);
|
|
bool LoadDBF(CPFileInfo &PFileInfo);
|
|
bool LoadHash(CPFileInfo &PFileInfo, QString &LoadFileName);
|
|
bool LoadSQB(CPFileInfo &PFileInfo);
|
|
bool LoadIni(CPFileInfo &PFileInfo);
|
|
#ifdef PARAMMANAGER_LANE
|
|
bool LoadFee(CPFileInfo &PFileInfo);
|
|
#endif
|
|
|
|
bool UnLoadDBF(CPFileInfo &PFileInfo);
|
|
bool UnLoadHash(CPFileInfo &PFileInfo);
|
|
bool UnLoadSQB(CPFileInfo &PFileInfo);
|
|
bool UnLoadIni(CPFileInfo &PFileInfo);
|
|
#ifdef PARAMMANAGER_LANE
|
|
bool UnLoadFee(CPFileInfo &PFileInfo);
|
|
#endif
|
|
|
|
#ifndef PARAMMANAGER_LANE
|
|
bool CheckLoadMode(const int &LoadMode, const int PFileId);
|
|
#endif
|
|
|
|
QString GetBaseInfo(const int PFileId, const int roadNo, const int staNo, int InfoType);
|
|
qint64 GetFileGenTime(const QString &PFileName);
|
|
|
|
|
|
bool UnLoadParam(CPFileInfo &fileInfo); //卸载参数表
|
|
bool LoadParam(CPFileInfo &fileInfo); //加载参数表
|
|
bool UpdateParam(CPFileInfo &fileInfo,const QString &FileCName, const QString &dstFileName, const QString &srcFileName);
|
|
bool LoadParamBackground(CPFileInfo &fileInfo, const QString &srcFileName, const QString &dstFileName); //后台加载
|
|
int CheckTempParamValid(const CPFileInfo &fileInfo, const QString &srcFileName, const QString &dstFileName, const bool bShowInfo);
|
|
int GetRecordCount(const int PFileId, const int roadNo, const int staNo);
|
|
bool GetBigAppointInfo(const QString resultStr, QString &CertNo, QString &Roads, QString &Goods, QString &StartDate, QString &EndDate);
|
|
bool GetEmerCarInfo(const QString resultStr, QString &Id, int &VehSign, QString &DiscountInfo, QString &StartDate, QString &EndDate);
|
|
bool GetGreenCarInfo(const QString resultStr, QString &Id, QString &StartDate, QString &AppTime);
|
|
int GetBlackAllStatus(const QString &resultStr, const QString &statusFieldName); //全量黑名单状态
|
|
int GetBlackIncStatus(const qint64 &dtAllVer, const QString &resultStr, const QString &fnCreateTime, const QString &fnStatus, const QString &fnState, vector<CBlackItem> &v);
|
|
int GetBlackStatus(int statusAll, const qint64 &dtAllVer, const QString &resultInc); //全量增量黑名单合并状态
|
|
int GetBlackAllInc(const int PFileIdAll, const int PFileIdInc,const QString &Id); //获取全量增量状态
|
|
QString GtSNAllReason(const QString &resultStr, const QString &fnReason);
|
|
int GtSNIncReason(const QString &resultStr, const QString &fnCreateTime, const QString &fnReason, const QString &fnState, const QString &fnOWEFee, QString &ErrorInfo);
|
|
bool GetSNAllInc(const int PFileIdAll, const int PFileIdInc,const QString &VehicleId, QString &ErrorInfo);
|
|
|
|
void OnParamLoadBackComplete(const uint FileId,const QString &NewBaseFileName, const int iLoadResult);
|
|
void UpdateParamInfo(const uint PFileId, const int roadNo, const int staNo,const int ErrorCode,const QString &FileCName, const QString &NewBaseFileName, const QString &TempFileName);
|
|
public:
|
|
CParamMan();
|
|
~CParamMan();
|
|
bool OpenParam(void *pSplash, QString &failFileName, const int LocalAreaNo, const int LocalRoadNo, const int LocalStaNo, const QString &InitStaInfo, const QString &libBasePath, const QString &libTempPath);
|
|
void CloseParam();
|
|
|
|
QString GetVersion(const int PFileId,const int InfoType);
|
|
QDateTime GetGenTime(const int pFileId);
|
|
|
|
QString GetParamCName(const int PFileId);
|
|
QString GetParamPFName(const int PFileId);
|
|
QString GetParamsStatus();
|
|
QString GetVerInfo();
|
|
|
|
//节假日表
|
|
bool IsHoliday();
|
|
//RoadCode
|
|
int GetStaInfo(const int RoadNo,const int StaNo, int &SubAreaNo, QString &iGantryId, QString &iGantryHex, QString &OGantryId, QString &OGantryHex, QString &RoadName, QString &StationName); //小片区编号
|
|
QString GetStaName(const int RoadNo,const int StaNo,const bool bIncludeRoadName);
|
|
QString GetRoadName(const int RoadNo);
|
|
|
|
|
|
//基础信息表
|
|
bool BasicInfoIdFind(const QString &keyValue, QString &Hex, QString &Name);
|
|
bool BasicInfoHexFind(const QString &hex,QString &Id, QString &Name);
|
|
//bool StationIdFind(const int AreaNo, const int RoadNo, const int StaNo, QString &Id, QString &Name);
|
|
QString LaneIdFind(const QString &enStationId, const int AreaNo, const int RoadNo, const int StaNo,const int LaneNo);
|
|
|
|
//发行方表
|
|
bool IssuerCheck(const QString &Issuer, const QString &IssuerCode4);
|
|
bool CardValid(const QString &cardIssuer,const QString &cardIssuerCode4, const QString &startTime, const QString &endTime,
|
|
const int cardType, const int cardVehType, int &ErrorCode, QString &ErrorInf);
|
|
//黑名单
|
|
bool doFindBlack(const uint PFileId, const QString &SearchStr, QString &ResultStr);
|
|
QString GetOBUReasonText(const int iStatus);
|
|
QString GetCardReasonText(const int iStatus);
|
|
QString GetVehBlackReasonText(const int iStatus);
|
|
QString GetVehGrayReasonText(const int iStatus);
|
|
QString GetSNReasonText(const QString &Status);
|
|
|
|
bool IsOBUBlack(const QString &OBUContractSerialNumber, QString &ErrorInfo); //OBU黑名单
|
|
bool IsCardBlack(const QString &CardNo, QString &ErrorInfo); //CPU卡黑名单
|
|
bool IsVehicleInProvBlack(const QString &VehPlate, QString &ErrorInfo); //省内车牌黑名单
|
|
bool IsVehicleBlack(const QString &VehPlateAll, QString &ErrorInfo); //车牌黑名单
|
|
bool IsBigBlack(const QString &VehPlate, QString &ErrorInfo); //大件车黑名单
|
|
bool IsSNBlack(const QString &VehPlateAll, QString &ErrorInfo); //追缴黑名单
|
|
bool IsBigAppoint(const QString &VehPlateAll, QString &CertNo, QString &Roads, QString &Goods, QString &StartDate, QString &EndDate); //是否大件运输
|
|
bool IsEmerCar(const QString &VehPlateAll, QString &Id, int &VehSign, QString &DiscountInfo, QString &StartDate, QString &EndDate); //是否抢险救灾
|
|
bool IsGreenCar(const QString &VehPlateAll, QString &Id, QString &StartDate, QString &AppTime);
|
|
//班次表
|
|
int GetAutoClassInfo(QDateTime &LastClassDate, int &LastClassNo); //获取新的班次号
|
|
int GetOptionalClassInfo(const QDateTime &dt, QDateTime *pClassDate, int *pClassNo, QString *pClassName);
|
|
QString GetClassCName(const int ClassNo);
|
|
//费率表
|
|
#ifdef PARAMMANAGER_LANE
|
|
QString GetIDX();
|
|
QString GetRateVersion();
|
|
|
|
int GetOBUFee(const int VehicleClassGB, const int OBUVehType, const int OBUAxisCount, const COBUFileEF04 *pEF04, CFeeCalcInfo &fee);
|
|
bool GetOBUCardFee(OBUCardInfoHelper &infoHelper, CFeeCalcInfo &fee);
|
|
int GetOBUCardFeeInfo(OBUCardInfoHelper &infoHelper,const QString &enStationId, CFeeCalcInfo &obuFee, int &VehSign, int &ErrorCode, QString &ErrorInfo);
|
|
|
|
|
|
int GetCPCFee(const int VehType,const int AxisCount, const CCPCDFEF01 &DF_EF01, const CCPCDFEF02 &DF_EF02, CFeeCalcInfo &fee);
|
|
bool GetCPCCardFee(CardDataInfoHelper &infoHelper, const int FeeVehType, const int AxisCount, CFeeCalcInfo &fee);
|
|
int GetCPCCardFeeInfo(const QString &VehPlate, const int VehPlateColor, const int FeeVehType, const int AxisCount, const int Weight,
|
|
const QString &enStationId, const QString &enLaneId, CardDataInfoHelper &infoHelper, const int ExitFeeType, const int ProvCount, CFeeCalcInfo &fee, QString &ErrorInfo);
|
|
|
|
bool GetOBUOnLineFeeInfo(OBUCardInfoHelper &infoHelper,const QString &enStationId , const QString &enStationName, const QString &enLaneId, const int FeeVehType, const int AxisCount, const int Weight, CFeeCalcInfo &fee, QString &ErrorInfo);
|
|
int GetNoCardOnLineFeeInfo(const QString &VehPlate, const int VehPlateColor, const int FeeVehType, const int AxisCount, const int Weight,
|
|
const CEnStationInfo &enStation, const int CardType, CFeeCalcInfo &fee, QString &ErrorInfo);
|
|
|
|
static void InitFeeCalcInfo(CFeeCalcInfo &feeCalcInfo, const int ExitFeeType = EXIT_FEE_TYPE_UNKNOW, const int FeeVehType = VEH_TYPE_UNKNOWN);
|
|
#endif
|
|
//最小费额
|
|
bool ReadLaneParam();
|
|
#ifdef PARAMMANAGER_LANE
|
|
bool GetMinFee(const QString &enID, const QString &exID, const int roadNo, const int staNo,const int CardType,const int VehType, CFeeCalcInfo &fee);
|
|
int MinFeeCompare(const CFeeCalcInfo &minFee,const int CardType, CFeeCalcInfo &Fee, QString &ErrorInfo);
|
|
#endif
|
|
bool GetMinFee(const QString &enID, const QString &exID, const int roadNo, const int staNo,const int CardType,const int VehType,int &MinFee, int &MinFee95, int &MinFeeMileAge, QString &MinFeeVer, QString &provFeeInfo,
|
|
int &ProvCount,int &OutProvCashTotal,int &OutProvInCashTotal,int &InProvCashTotal,int &InProvInCashTotal,int &InProvMileAge);
|
|
bool CheckMinFee(const int Cash,const int MinFee,const int ExitFeeType,const int VehType, const int CardType, int &ErrorCode, QString &ErrorInfo); //给李建业调用
|
|
//折扣表
|
|
int GetDiscount(const QString &CardIssuer,const int CardUType,const int CardType);
|
|
//操作人员名单
|
|
bool CheckPassword(const QString &Password,const QString &EncPassword);
|
|
bool CheckUser(const QString &UserNo,const QString &Password,const int ManId1,int &ManId2, QString &UserName, int &GroupNo, const int RoadNo = 0, const int StaNo = 0); //用工号密码验证
|
|
bool CheckUser(const QString &UserNo,const uint CardId, const int ManId1, int &ManId2, QString &UserName, int &GroupNo, const int RoadNo = 0, const int StaNo = 0); //用卡验证
|
|
//行政车牌号表
|
|
int GetAdminInfo(const QString &VehPlate, QString &info, QString &begDT, QString &endDT);
|
|
//更新参数
|
|
void CopyParam();
|
|
bool OnParamDownLoadComplete(const uint FileId,const QString &ParamFileName, const int iDownResult, const bool bUpdateAll);
|
|
protected:
|
|
#ifdef PARAMMANAGER_LANE
|
|
void customEvent(QEvent *e);
|
|
#endif
|
|
};
|
|
|
|
#endif // PARAMMANAGER_H
|