Compare commits

...

3 Commits

24 changed files with 547 additions and 159 deletions

View File

@ -17,7 +17,7 @@ message("${MSG_NOTE} ******************************************************")
# ONCMake
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_CXX_STANDARD 17) # :windowsC++11 linuxC++14 gtest linuxC++14
set(CMAKE_CXX_STANDARD 17) # :gtest linuxC++14
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
@ -110,8 +110,8 @@ if(WIN32)
# C2026: ,/Zc:strictStrings /Tc
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{CFLAGS} /bigobj")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{CXXFLAGS} /bigobj")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} $ENV{CFLAGS} /bigobj /Zc:__cplusplus")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{CXXFLAGS} /bigobj /Zc:__cplusplus")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd /Od") # /Od
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT /O2")
@ -284,6 +284,7 @@ set(JUDGE_INCLUDE
#${CMAKE_SOURCE_DIR}/third
${CMAKE_SOURCE_DIR}/third/tinyxml2-9.0.0
${CMAKE_SOURCE_DIR}/third/jsoncpp-1.9.5
${CMAKE_SOURCE_DIR}/third/json-3.11.3/include/
${CMAKE_SOURCE_DIR}/third/inih
${CMAKE_SOURCE_DIR}/third/cpp-md5
${CMAKE_SOURCE_DIR}/third/libb64
@ -324,6 +325,7 @@ file(GLOB_RECURSE JUDGE_SOURCE
${CMAKE_SOURCE_DIR}/third/*.*
${CMAKE_SOURCE_DIR}/third/tinyxml2-9.0.0/*.*
${CMAKE_SOURCE_DIR}/third/jsoncpp-1.9.5/*.*
${CMAKE_SOURCE_DIR}/third/json-3.11.3/include/*.*
${CMAKE_SOURCE_DIR}/third/inih/*.*
${CMAKE_SOURCE_DIR}/third/cpp-md5/*.*
${CMAKE_SOURCE_DIR}/third/libb64/*.*
@ -359,6 +361,9 @@ file(GLOB_RECURSE JUDGE_SOURCE
)
#
file(TOUCH ${CMAKE_SOURCE_DIR}/sdk/common/HVersion.cpp)
#
add_subdirectory(${CMAKE_SOURCE_DIR}/sdk)
if(JUDGE_OS_WIN OR JUDGE_OS_LINUX)

View File

@ -10,9 +10,7 @@
//============================================================
//#if defined(__cplusplus) && __cplusplus >= 201103L
#ifdef __cplusplus
#if defined(__cplusplus) && __cplusplus >= 201703L
# include <string>
# include <vector>
@ -50,6 +48,8 @@
#else
# error "define-error-msg: must be at least c++17 201703L."
# include <ctype.h>
# include <limits.h>
# include <stdio.h>
@ -71,6 +71,7 @@
//第三方库头文件
#include "json/json.h"
#include "nlohmann/json.hpp"
#include "tinyxml2.h"
#include "md5.h"
#include "libb64.h"
@ -107,7 +108,7 @@
*** JUDGE_USE_MEMORY //是否启用内存操作检查
*** JUDGE_USE_POOL //是否启用内存池调试信息
*** JUDGE_USE_ASSERT //是否启用断言提示
*** JUDGE_USE_NICE //是否启用调试测试代码
*** JUDGE_USE_FOLLOW //是否启用跟踪调试测试代码
*** JUDGE_USE_PERF //是否启用CPU性能分析
*** JUDGE_USE_LEAK //是否启用内存泄露检测
*** JUDGE_USE_TCMALLOC //是否启用tcmalloc优化内存使用操作
@ -141,19 +142,19 @@
#define JUDGE_USE_MEMORY
#define JUDGE_USE_POOL
#endif
#define JUDGE_USE_COST
/*
*
* DEBUG模式的前提下条件下才能开启
*/
#if defined(JUDGE_DEBUG)
#define JUDGE_USE_ASSERT //是否启用断言提示
#define JUDGE_USE_ASSERT
#endif
/*
*
*
*/
#define JUDGE_USE_NICE
//#define JUDGE_USE_FOLLOW
/*
* CPU性能分析和内存泄露检测
@ -206,6 +207,7 @@
//#define JUDGE_USE_INSPECT
#define JUDGE_JSON_NLOHMANN_DEFINE NLOHMANN_DEFINE_TYPE_INTRUSIVE
//********************************以上是预编译定义***************************************
@ -224,28 +226,7 @@ using uint32 = unsigned int; // using uint32 = std::uint32_t;
using uint64 = unsigned long long; // using uint64 = std::uint64_t;
JUDGE_C_API bool __sdk_localtime_safe__(time_t* __t, tm* __tm);
JUDGE_C_API int64 __sdk_mktime_safe__(tm* __tm);
JUDGE_C_API bool __sdk_strptime_safe__(const char* __s, const char* __fmt, tm* __tm);
JUDGE_C_API bool __sdk_filepath_exist__(const char* __filepath);
JUDGE_C_API int __sdk_mkdir__(const char* __path);
JUDGE_C_API int __sdk_rmdir__(const char* __path);
JUDGE_C_API bool __sdk_space_memory__(struct SpaceStorage* __space, int __unit/*is SpaceUnit*/);
JUDGE_C_API bool __sdk_space_disk__(const char* __driver, struct SpaceStorage* __space, int __unit/*is SpaceUnit*/);
#if defined(JUDGE_OS_WIN)
# define __sdk_os_assert__(exp) _wassert(_CRT_WIDE(exp), _CRT_WIDE(__FILE__), (unsigned)(__LINE__))
#elif defined(JUDGE_OS_OHOS)
# define __sdk_os_assert__(exp) __assert_fail(exp, __FILE__, __LINE__, __FUNCTION__)
#elif defined(JUDGE_OS_ANDROID)
# define __sdk_os_assert__(exp) __assert2(__FILE__, __LINE__, __FUNCTION__, exp)) //__assert(__FILE__, __LINE__, exp))
#elif defined(JUDGE_OS_LINUX)
# define __sdk_os_assert__(exp) __assert_fail(exp, __FILE__, __LINE__, __FUNCTION__) //__assert(const char *__assertion, const char *__file, int __line)
#else
# define __sdk_os_assert__(exp) assert(false)
#endif
#ifdef JUDGE_OS_ANDROID
#if defined(JUDGE_OS_ANDROID)
//using namespace std::filesystem;
using std::filesystem::directory_iterator;
using std::filesystem::path;
@ -291,7 +272,6 @@ JUDGE_C_API bool __sdk_space_disk__(const char* __driver, struct SpaceStorage*
#include <sys/stat.h>
#include <unistd.h>
#else
# error "define-error-msg: unknow system."
@ -299,6 +279,30 @@ JUDGE_C_API bool __sdk_space_disk__(const char* __driver, struct SpaceStorage*
#endif
#if defined(JUDGE_OS_WIN)
# define __sdk_os_assert__(exp) _wassert(_CRT_WIDE(exp), _CRT_WIDE(__FILE__), (unsigned)(__LINE__))
#elif defined(JUDGE_OS_OHOS)
# define __sdk_os_assert__(exp) __assert_fail(exp, __FILE__, __LINE__, __FUNCTION__)
#elif defined(JUDGE_OS_ANDROID)
# define __sdk_os_assert__(exp) __assert2(__FILE__, __LINE__, __FUNCTION__, exp)) //__assert(__FILE__, __LINE__, exp))
#elif defined(JUDGE_OS_LINUX)
# define __sdk_os_assert__(exp) __assert_fail(exp, __FILE__, __LINE__, __FUNCTION__) //__assert(const char *__assertion, const char *__file, int __line)
#else
# define __sdk_os_assert__(exp) assert(false)
#endif
JUDGE_C_API bool __sdk_localtime_safe__(time_t* __t, tm* __tm);
JUDGE_C_API int64 __sdk_mktime_safe__(tm* __tm);
JUDGE_C_API bool __sdk_strptime_safe__(const char* __s, const char* __fmt, tm* __tm);
JUDGE_C_API bool __sdk_filepath_exist__(const char* __filepath);
JUDGE_C_API int __sdk_mkdir__(const char* __path);
JUDGE_C_API int __sdk_rmdir__(const char* __path);
JUDGE_C_API bool __sdk_space_memory__(struct SpaceStorage* __space, int __unit/*is SpaceUnit*/);
JUDGE_C_API bool __sdk_space_disk__(const char* __driver, struct SpaceStorage* __space, int __unit/*is SpaceUnit*/);
/**********************************************************************************************
*
* WIN32 _WIN32 _WIN64
@ -425,7 +429,17 @@ JUDGE_C_API bool __sdk_space_disk__(const char* __driver, struct SpaceStorage*
* __int64 -9223372036854775808 9223372036854775807
* unsigned __int64 0 1844674407370955161
*
**********************************************************************************************
*
* __STDC__ C语言标准宏 __STDC_VERSION__ C语言版本标准
*
* C++
* c++ __cplusplus
* std::c++98 199711
* std::c++11 201103
* std:c++14 201402L/201300
* std:c++17 201703L
* std:c++20 202002L
*
**********************************************************************************************/

View File

@ -126,34 +126,39 @@
#define BUILD_SEC_CH1 (__TIME__[7])
const char JUDGE_VERSION_TIME[] =
{
#ifdef JUDGE_VERSION_STAMP
#else
const char JUDGE_VERSION_STAMP[] =
{
BUILD_YEAR_CH2, BUILD_YEAR_CH3,
BUILD_MONTH_CH0, BUILD_MONTH_CH1,
BUILD_DAY_CH0, BUILD_DAY_CH1,
BUILD_HOUR_CH0, BUILD_HOUR_CH1,
BUILD_MIN_CH0, BUILD_MIN_CH1,
BUILD_SEC_CH0, BUILD_SEC_CH1,
//BUILD_SEC_CH0, BUILD_SEC_CH1,
'\0'
};
};
const char JUDGE_VERSION_INFO[] =
{
const char JUDGE_VERSION_INFO[] =
{
JUDGE_CHARS_MAJOR, '.',
JUDGE_CHARS_MINOR, '.',
JUDGE_CHARS_PATCH, '.',
JUDGE_VERSION_TIME[0],
JUDGE_VERSION_TIME[1],
JUDGE_VERSION_TIME[2],
JUDGE_VERSION_TIME[3],
JUDGE_VERSION_TIME[4],
JUDGE_VERSION_TIME[5],
JUDGE_VERSION_TIME[6],
JUDGE_VERSION_TIME[7],
JUDGE_VERSION_TIME[8],
JUDGE_VERSION_TIME[9],
JUDGE_VERSION_TIME[10],
JUDGE_VERSION_TIME[11],
JUDGE_VERSION_STAMP[0],
JUDGE_VERSION_STAMP[1],
JUDGE_VERSION_STAMP[2],
JUDGE_VERSION_STAMP[3],
JUDGE_VERSION_STAMP[4],
JUDGE_VERSION_STAMP[5],
JUDGE_VERSION_STAMP[6],
JUDGE_VERSION_STAMP[7],
JUDGE_VERSION_STAMP[8],
JUDGE_VERSION_STAMP[9],
//JUDGE_VERSION_STAMP[10],
//JUDGE_VERSION_STAMP[11],
'\0'
};
};
#endif

View File

@ -3,19 +3,33 @@
*
* :
* : 2023-03-22
*
* *******************************************************************
*
* ...
*
* 1.2.3.2304241030
*
*
* 1
* 2
* 3Bug修复或是一些小的变动bug即可发布一个修订版
* 42304241030
*
*/
#ifndef HVERSION_H
#define HVERSION_H
//定义版本号
//定义版本号 格式:主版本号.子版本号.修订版本号.版本日期
#define JUDGE_VERSION_MAJOR 1
#define JUDGE_VERSION_MINOR 0
#define JUDGE_VERSION_PATCH 0
#define JUDGE_VERSION_PATCH 1
#define JUDGE_VERSION_STAMP 2409100904
#define JUDGE_AUX_EXP(x) #x
#define JUDGE_AUX_STR(x) JUDGE_AUX_EXP(x)
#define JUDGE_AUX_INT(a,b,c) ((a)<<24 | (b)<<16) | (c))
#define JUDGE_AUX_INT(a,b,c) (((a)<<24) | ((b)<<16) | (c))
#define JUDGE_AUX_MAJOR(x) (((x) & 0xFF000000) >> 24) //[0-127]
#define JUDGE_AUX_MINOR(x) (((x) & 0x00FF0000) >> 16) //[0-255]
#define JUDGE_AUX_PATCH(x) (((x) & 0x0000FFFF)) //[0-65535]
@ -30,12 +44,12 @@
JUDGE_AUX_STR(JUDGE_VERSION_MINOR) "." \
JUDGE_AUX_STR(JUDGE_VERSION_PATCH)
//版本编译时间 240401131705
extern const char JUDGE_VERSION_TIME[];
//版本详细信息[版本号+版本编译时间] 1.0.0.240401131705
extern const char JUDGE_VERSION_INFO[];
//版本详细信息[版本号+版本日期]
#ifdef JUDGE_VERSION_STAMP
#define JUDGE_VERSION_INFO JUDGE_VERSION_STR "." JUDGE_AUX_STR(JUDGE_VERSION_STAMP)
#else
extern const char JUDGE_VERSION_STAMP[]; //版本编译时间 2304241030
extern const char JUDGE_VERSION_INFO[]; //版本详细信息[版本号+版本编译日期] 1.2.3.2304241030
#endif
#endif // HVERSION_H

View File

@ -153,7 +153,7 @@ bool Loggerxx::flushLog(const LogUnit& unit)
std::string filename = Tools::getFileName(unit.file);
int ms = unit.tick%SECOND;
std::string tick = Tools::toTimeString(unit.tick/SECOND);
snprintf(line, sizeof(line), "[%s.%03d][%s][%s][%s:%d:%s]%s\n",
snprintf(line, sizeof(line), "[%s.%03d][%s][%s][%s:%d:%s]%s",
tick.c_str(), ms,
toTagName(unit.tag).c_str(),
toLogName(unit.level).c_str(),

View File

@ -268,8 +268,8 @@ std::string Tools::toJson(const Json::Value& root)
{
//std::string json = root.toStyledString();
Json::FastWriter writer;
std::string json = writer.write(root);
return json;
writer.omitEndingLineFeed();
return writer.write(root);
}
std::string Tools::tolower(const std::string& s)

View File

@ -80,7 +80,7 @@ ErrorCode ExamCarSub2::examGoonExam()
const TMarkRule* rule = TableMark->find(markItem.xmdm, markItem.kfdm);
if(nullptr == rule)
{
logerror("not find mark-rule item=%d, serial=%s", markItem.xmdm, markItem.kfdm.c_str());
logwarning("not find mark-rule item=%d, serial=%s", markItem.xmdm, markItem.kfdm.c_str());
return QE(errorMarkNotFind);
}
grade += rule->markreal;
@ -203,7 +203,7 @@ bool ExamCarSub2::examMarkItem(ExamItemCode itemNo, const std::string& serial, b
const TMarkRule* rule = TableMark->find(itemNo, serial); //找到扣分的对象
if(nullptr == rule)
{
logerror("not find mark-rule item=%d, serial=%s, type=%d", itemNo, serial.c_str(), type);
logwarning("not find mark-rule item=%d, serial=%s, type=%d", itemNo, serial.c_str(), type);
return false;
}

View File

@ -98,7 +98,7 @@ ErrorCode ExamCarSub3::examGoonExam()
const TMarkRule* rule = TableMark->find(markItem.xmdm, markItem.kfdm);
if(nullptr == rule)
{
logerror("not find mark-rule item=%d, serial=%s", markItem.xmdm, markItem.kfdm.c_str());
logwarning("not find mark-rule item=%d, serial=%s", markItem.xmdm, markItem.kfdm.c_str());
return QE(errorMarkNotFind);
}
grade += rule->markreal;
@ -178,11 +178,11 @@ ErrorCode ExamCarSub3::examArtifItem(ExamItemCode itemno, ArtifItemType type)
switch (type)
{
case ArtifItemTypeAuto:
return CallRenGongEnterItem(itemno) ? QE(codeSuccess) : QE(errorArtifItemAuto);
return QE(errorArtifItemAuto); //return CallRenGongEnterItem(itemno) ? QE(codeSuccess) : QE(errorArtifItemAuto);
case ArtifItemTypeEnter:
return CallRenGongEnterItem(itemno) ? QE(codeSuccess) : QE(errorArtifItemEnter);
case ArtifItemTypeCancel:
return CallRenGongEnterItem(itemno) ? QE(codeSuccess) : QE(errorArtifItemCancel);
case ArtifItemTypeCancel: //340参数控制
return CallRenGongCancelItem(itemno) ? QE(codeSuccess) : QE(errorArtifItemCancel);
case ArtifItemTypeEnd:
return CallRenGongEndItem(itemno) ? QE(codeSuccess) : QE(errorArtifItemEnd);
default: break;
@ -1207,7 +1207,7 @@ void ExamCarSub3::Deal_KM3_Judge()
item->EndTime = 0;
item->MsgData = "";
item->TestPro = ItemProFlagJudge;
createEventEnterItem({item->ItemNo, ""});
createEventEnterItem({item->ItemNo, item->SubName});
}
else
{
@ -1857,6 +1857,8 @@ void ExamCarSub3::Calc_LaneDistance()
if(LeftBody1 == -1 || LeftBody2 == -1 || RightBody1 == -1 || RightBody2 == -1)
{
logerror("cartype=%d,LeftBody1=%d, LeftBody2=%d, LeftBody2=%d, RightBody2=%d",
cartype, LeftBody1, LeftBody2, LeftBody2, RightBody2);
return;
}
@ -3862,7 +3864,6 @@ bool ExamCarSub3::KM3AllPass()
if(isExamDrill())
{
return m_ctl.PassedItem.size() == m_sub3Items.size();
//return false;
}
//里程不够
@ -3992,7 +3993,7 @@ void ExamCarSub3::KM3EndItem(int ItemNo)
m_ctl.PassedItem.insert(ItemNo);
logtrace("PassedItem=%d", ItemNo);
}
createEventFinishItem({examItem->ItemNo, "", markFlag ? 0 : 1});
createEventFinishItem({examItem->ItemNo, examItem->SubName, markFlag ? 0 : 1});
}
bool ExamCarSub3::examMarkItem(int itemNo, const std::string& serial, bool once, bool force, bool event, MarkType type)
@ -4208,6 +4209,7 @@ bool ExamCarSub3::examMarkItem(int itemNo, const std::string& serial, bool once,
if(m_marks[i].serial == serial && m_marks[i].itemNo == itemNo)
{
RepeatKfID = true;
break;
}
}
@ -4220,7 +4222,7 @@ bool ExamCarSub3::examMarkItem(int itemNo, const std::string& serial, bool once,
const TMarkRule* rule = TableMark->find(itemNo, serial);
if(nullptr == rule)
{
logerror("not find mark-rule item=%d, serial=%s", itemNo, serial.c_str());
logwarning("not find mark-rule item=%d, serial=%s", itemNo, serial.c_str());
return result;
}
@ -4289,6 +4291,18 @@ bool ExamCarSub3::examMarkItem(int itemNo, const std::string& serial, bool once,
createEventMarkItem({mark.itemNo, mark.serial, mark.catalog, type});
}
if(isExamMode() && !isQualified())
{
if(mark.itemNo != Sub3ItemType20Comm)
{
TKM3Item* markItem = findExamItem(mark.itemNo);
if(markItem != nullptr && markItem->TestPro == ItemProFlagJudge)
{
markItem->TestPro = ItemProFlagEnd;
}
}
}
result = true;
}
else
@ -4302,7 +4316,40 @@ bool ExamCarSub3::examMarkItem(int itemNo, const std::string& serial, bool once,
bool ExamCarSub3::CallRenGongCancelItem(int ItemNo)
{
logwarning("CallRenGongCancelItem not support item=%d", ItemNo);
//(*2024-03-06*)
TKM3Item* item = findExamItem(ItemNo);
if(item == nullptr) return false;
if(item->TestPro == ItemProFlagInit || item->TestPro == ItemProFlagJudge) //取消项目
{
//取消项目
//项目内有扣分的不能取消
//SysSet[426]:手工取消正在考的项目0-否 1-是)
if(TableSysSet->get426() == "0")
{
return false; //20141101
}
for(size_t i = 0; i < m_marks.size(); i++)
{
if(m_marks[i].itemNo == ItemNo)
{
return false;
}
}
item->TestPro = ItemProFlagIdle;
item->Item_Color = itemStateWk;
if(ItemNo == Sub3ItemType04Bgcd || ItemNo == Sub3ItemType10Ccxx)
{
//ToDo:语音播报:取消变更车道
m_pub.PUB_JDCC_ZT = 0; //借道超车
}
//ToDo:语音播报:取消变更车道
createEventCancelItem({ItemNo, ""});
return true;
}
logwarning("CallRenGongCancelItem:ItemNo=%d,Pro=%d", ItemNo, item->TestPro);
return false;
}
@ -4315,18 +4362,16 @@ bool ExamCarSub3::CallRenGongEndItem(int ItemNo)
return false;
}
if(item->TestPro > ItemProFlagIdle)
if(item->TestPro == ItemProFlagInit || item->TestPro == ItemProFlagJudge)
{
item->TestPro = ItemProFlagEnd;
return true;
}
else
{
logwarning("CallRenGongEndItem:%d,%d", ItemNo, item->TestPro);
logwarning("CallRenGongEndItem:ItemNo=%d,Pro=%d", ItemNo, item->TestPro);
return false;
}
logerror("CallRenGongCancelItem error item=%d", ItemNo);
return false;
}
@ -4338,6 +4383,18 @@ bool ExamCarSub3::CallRenGongEnterItem(int ItemNo)
//3、直线行驶 4、变更车道 9、会车 10、超车、11、靠边停车 12、普通掉头(非路口项目定义的掉头)
//5、直行路口 15、左转弯 16、右转弯 (南京车管所,这个是不符合部令要求的)
TKM3Item* item = findExamItem(ItemNo);
if(item == nullptr)
{
logwarning("artif enter item ItemNo=%d is null", ItemNo);
return false;
}
if(item->TestPro != ItemProFlagIdle)
{
logwarning("not artif enter item ItemNo=%d, Pro=%d", ItemNo, item->TestPro);
return false;
}
if(ItemNo == Sub3ItemType03Zxxs || ItemNo == Sub3ItemType04Bgcd || ItemNo == Sub3ItemType09Hcxx ||
ItemNo == Sub3ItemType10Ccxx || ItemNo == Sub3ItemType11Kbtc || ItemNo == Sub3ItemType12Dtxx ||
ItemNo == Sub3ItemType05Lkzx || ItemNo == Sub3ItemType15Lkzz || ItemNo == Sub3ItemType16Lkyz)
@ -4437,11 +4494,10 @@ bool ExamCarSub3::If_EnterItem(int ItemNo)
if(!result)
{
logerror("not If_EnterItem artificial enter item=%d.", ItemNo);
logwarning("not If_EnterItem artificial enter item=%d.", ItemNo);
}
return result;
}
bool ExamCarSub3::ManualStartItem(int ItemNo)
@ -4536,35 +4592,7 @@ bool ExamCarSub3::ManualStartItem(int ItemNo)
//createEventEnterItem({readItem->ItemNo, ""});
return true;
}
else
{
//取消项目
//项目内有扣分的不能取消
//SysSet[426]:手工取消正在考的项目0-否 1-是)
if(TableSysSet->get426() == "0")
{
return false; //20141101
}
for(size_t i = 0; i < m_marks.size() ; i++)
{
if(m_marks[i].itemNo == ItemNo)
{
return false;
}
}
readItem->TestPro = ItemProFlagIdle;
readItem->Item_Color = itemStateWk;
if(ItemNo == Sub3ItemType04Bgcd || ItemNo == Sub3ItemType10Ccxx)
{
//ToDo:语音播报:取消变更车道
m_pub.PUB_JDCC_ZT = 0; //借道超车
}
//ToDo:语音播报:取消变更车道
createEventCancelItem({ItemNo, ""});
return true;
}
logerror("manual start item ItemNo=%d", ItemNo);
return false;
}

View File

@ -137,6 +137,8 @@ struct TSub3Item12Ptdt
bool Judge_DengGuang_Flag = false;
TSlowDown slowDown;
Linei line; //用于新的角度变化计算方式
TMapping mapping;
};
struct TSub3Item15Lkzz

View File

@ -33,7 +33,7 @@ void Sub2Judge00Dcrk::dealDrawItem()
drawGpsSign(m_model->F8(), "F8", false);
drawGpsSign(m_model->F9(), "F9", false);
#ifdef JUDGE_USE_NICE
#ifdef JUDGE_USE_FOLLOW
if(pureCarPointInItemArea(II(33)))
{

View File

@ -90,7 +90,7 @@ void Sub2Judge20Comm::dealJudgeItem()
{
if(m_canFlameout)
{
if(sor.fdjzs == 0 && sor1.fdjzs == 0 && sor2.fdjzs == 0 && Tools::isZero(sor.cs))
if(sor.fdjzs == 0 && sor1.fdjzs == 0 && sor2.fdjzs == 0) //Tools::lessequal(sor.cs, 1.001)
{
m_canFlameout = false;
JUDGE_MARK_COMM_MUST_MORE(MARK_SUB2_COMM_02);

View File

@ -120,6 +120,8 @@
* 40378=1
* 50378!=1
*
* 4051
*
*/
#ifndef SUB3JUDGE10CCXX_H

View File

@ -35,6 +35,9 @@ bool Sub3Judge12Ptdt::dealJudgeEnter()
//初始GPS角度
m_itemv.CS_GPS_D = gps.hxj;
m_itemv.mapping = m_car->graphic()->mapping();
m_itemv.line = coordTransform(cg);
m_exam->TestPro = ItemProFlagJudge;
//ToDo1:播报项目语音
//ToDo2:生成进项目事件
@ -219,23 +222,28 @@ void Sub3Judge12Ptdt::dealJudgeItem()
}
}
const TGpsInfo& gps5 = m_car->historyGps(5);
//掉头角度变化
double a = std::abs(gps.hxj - m_itemv.CS_GPS_D);
double b = std::abs(gps5.hxj- m_itemv.CS_GPS_D);
const TChuanGan* his5 = m_car->historyChuanGan(5);
//if(Tools::greater(gps.hxj, m_itemv.CS_GPS_D))
//{
// a = std::abs(360 - gps.hxj + m_itemv.CS_GPS_D);
//}
//
//if(Tools::greater(gps5.hxj, m_itemv.CS_GPS_D))
//{
// b = std::abs(360 - gps5.hxj + m_itemv.CS_GPS_D);
//}
//
//logdebug("CS_GPS_D=%0.2f,hxj=%0.2f,hxj5=%0.2f, a=%0.2f,b=%0.2f",
// m_itemv.CS_GPS_D, gps.hxj, gps5.hxj, a, b);
//掉头角度变化 老的角度变化计算方式windows就是这么做的
//const TGpsInfo& gps5 = his5->real.gps;
//double a = std::abs(gps.hxj - m_itemv.CS_GPS_D);
//double b = std::abs(gps5.hxj- m_itemv.CS_GPS_D);
//***新的角度变化计算方式(这个应该更精准)注意:左上角是(0,0)点 yhy 20240823
Linei line0 = coordTransform(cg);
Linei line5 = coordTransform(his5);
double a = std::abs(GpsMath::calcAngle(line0.p2, m_itemv.line.p2, m_itemv.line.p1));
double b = std::abs(GpsMath::calcAngle(line5.p2, m_itemv.line.p2, m_itemv.line.p1));
//IGraphicAbstract* graphic = m_car->graphic();
//graphic->drawPoint({10,10},RGB_RED,10);
//graphic->drawLine(m_itemv.line,RGB_RED);
//graphic->drawLine(line0,RGB_GREEN);
//graphic->drawLine(line5,RGB_PURPLE);
//FactoryExamService->examJudgeCallbackMapImageToCaller(graphic->image(), graphic->size());
//logdebug("CS_GPS_D=%0.2f,hxj=%0.2f,hxj5=%0.2f, a=%0.2f,b=%0.2f a_=%0.2f,b_=%0.2f",
// m_itemv.CS_GPS_D, gps.hxj, gps5.hxj, a, b, a_, b_);
//528:掉头N米内不判连续变道和方向灯
if(m_car->getNJ_DiaoTou_JL() == 0 && TableSysSet->asInt528() > 0)
@ -436,12 +444,17 @@ void Sub3Judge12Ptdt::dealJudgeItem()
}
#endif
char buf[128] = {0};
SafeSprintf(buf, sizeof(buf), "结束距离=%d,当前距离=%d;角度阈值=%d,当前角度变化=%0.2f",
m_itemv.XMJL_Mi, cg->ai_ljjl-m_itemv.CSJL_Mi, m_itemv.FinishDiaoTou_JiaoDu_Change, gps.hxj-m_itemv.CS_GPS_D);
SafeSprintf(buf, sizeof(buf), "结束距离=%d,当前距离=%d;角度阈值=%d,当前角度变化=%0.2f,a=%0.2f,b=%0.2f",
m_itemv.XMJL_Mi, cg->ai_ljjl-m_itemv.CSJL_Mi, m_itemv.FinishDiaoTou_JiaoDu_Change, gps.hxj-m_itemv.CS_GPS_D,a,b);
std::string str = buf;
showStatus(XCharacter("[普通掉头]") + str);
}
Linei Sub3Judge12Ptdt::coordTransform(const TChuanGan* cg)
{
const TGPSPoint center = cg->real.gps.to();
Linei line = GpsMath::coordMapping(TGPSLine(cg->body.b1_a, cg->body.b2_a), center, m_itemv.mapping);
return line;
}

View File

@ -35,7 +35,7 @@ public:
DEAL_API void dealJudgeItem() override;
protected:
Linei coordTransform(const TChuanGan* cg);
private:
TSub3Item12Ptdt m_itemv;
};

View File

@ -1626,6 +1626,15 @@ void Sub3Judge20Comm::Judge_YaXian_30120()
const TRTKResult& RTKKM3_1 = his1->RTKKM3;
const std::string& ksdd = TableSysSet->get211();
const std::vector<std::string>& s360 = TableSysSet->asArray360();
int ss360 = s360.size() > 0 && s360[0] != "" ? std::atoi(s360[0].c_str()) : 0;
//起步一定距离内不判 20181106
if(ss360 > 0 && cg->ai_ljjl < ss360)
{
return;
}
if(ksdd == siteof::xjcj)
{
const TRTKResult& RTKKM3_2 = m_car->historyRtkKM3(2);
@ -4775,7 +4784,7 @@ void Sub3Judge20Comm::Judge_DangWei_CS_ZS()
if(m_itemvCJH.DW_CS_ERROR_DW >= 1 && m_itemvCJH.DW_CS_ERROR_DW <= 5)
{
//车辆运行速度和挡位不匹配
JUDGE_MARK_SUB3(14, "02", true);
JUDGE_MARK_SUB3(14, "02", false);
}
}
else
@ -4783,7 +4792,7 @@ void Sub3Judge20Comm::Judge_DangWei_CS_ZS()
if(m_itemvCJH.DW_CS_ERROR_DW >= 1 && m_itemvCJH.DW_CS_ERROR_DW <= 5)
{
//车辆运行速度和挡位不匹配
JUDGE_MARK_SUB3(14, "02", true);
JUDGE_MARK_SUB3(14, "02", false);
}
}
}
@ -4829,7 +4838,7 @@ void Sub3Judge20Comm::Judge_DangWei_CS_ZS()
{
if(m_itemvCJH.DW_CS_ERROR_DW >= 3 && m_itemvCJH.DW_CS_ERROR_DW <= 5)
{
JUDGE_MARK_SUB3(14, "02", true);
JUDGE_MARK_SUB3(14, "02", false);
}
}
}

View File

@ -538,7 +538,7 @@ void Sub3Judge41Mndg::UpdateDengGuangChange()
//0、统一调度
void Sub3Judge41Mndg::CallItemProc()
{
logtrace("mndg-Op_Step CallItemProc");
loginfo("mndg-Op_Step CallItemProc");
const TChuanGan* cg = m_car->historyChuanGan();
const TGpsInfo& gps = cg->real.gps;

View File

@ -290,4 +290,55 @@ private:
};
class JUDGE_API XParserNlohmann : public XIParser
{
public:
explicit XParserNlohmann() = default;
virtual ~XParserNlohmann() = default;
virtual bool parseInitExam (const std::string& data, TInitInfo* info) override { return parseAny(data, *info); }
virtual bool parseBeginExam (const std::string& data, TStuInfo& info) override { return parseAny(data, info); }
virtual bool parseRealExam (const std::string& data, TRealExam& info) override { return parseAny(data, info); }
virtual bool parseJudgeData (const std::string& data, TJudgeData& info) override { return parseAny(data, info); }
virtual bool parsePerform (const std::string& data, TPerformData& info) override { return parseAny(data, info); }
template<typename T>
static inline bool parseAny(const std::string& data, T& info)
{
HELP_COST_TIME("parseAny parse:%s", typeid(info).name());
try
{
//info = nlohmann::json::parse(data).get<T>();
from_json(nlohmann::json::parse(data), info);
return true;
}
catch(const nlohmann::json::exception& e)
{
logerror("e.what=%s", e.what());
}
return false;
}
virtual std::string toDataString(const TInitInfo& data) override { return toDataAny(data); }
virtual std::string toDataString(const TStuInfo& data) override { return toDataAny(data); }
virtual std::string toDataString(const TRealExam& data) override { return toDataAny(data); }
virtual std::string toDataString(const TJudgeData& data) override { return toDataAny(data); }
virtual std::string toDataString(const TPerformData& data) override { return toDataAny(data); }
template<typename T>
static inline std::string toDataAny(const T& data)
{
HELP_COST_TIME("toDataAny parse:%s", typeid(data).name());
try
{
return nlohmann::json(data).dump();
}
catch(const nlohmann::json::exception& e)
{
logerror("e.what=%s", e.what());
}
return "";
}
};
#endif // XPARSER_H

View File

@ -92,7 +92,7 @@ bool TrackReader::read(TTrackData::Ptr& data)
{
data->type = TTrackTypeSoundEnd;
}
else if(root.isMember("method") && (root["method"].asString() == "examjudgeEndExam" || root["method"].asString() == "examJudgeEndExam"))
else if(root.isMember("method") && root["method"].asString() == "examJudgeEndExam")
{
data->type = TTrackTypeEndExam;
}

View File

@ -34,6 +34,7 @@ template <typename T>
class PointT
{
public:
JUDGE_JSON_NLOHMANN_DEFINE(PointT,x,y);
virtual ~PointT(){}
PointT():x(0), y(0) {}
PointT(T _x, T _y):x(_x), y(_y) {}
@ -230,6 +231,7 @@ class LineT
{
public:
virtual ~LineT(){}
LineT(){}
LineT(const PointT<T>& _p1, const PointT<T>& _p2):p1(_p1), p2(_p2) {}
LineT(const LineT& l) : p1(l.p1), p2(l.p2) {}
LineT& operator = (const LineT& l) { p1=l.p1; p2=l.p2; return *this; }

View File

@ -115,6 +115,7 @@ struct TItemExam
{
int32 xmdm = 0; //项目代码 对应枚举 ExamItemCode
std::string xmxh = ""; //项目(序)号 //这里要做处理,改成数组,可能你在多个子项目
JUDGE_JSON_NLOHMANN_DEFINE(TItemExam,xmdm,xmxh);
};
struct TItemArg : TItemExam
@ -133,6 +134,10 @@ struct TItemArg : TItemExam
std::string setup7;
std::string setup8;
std::string setup9;
JUDGE_JSON_NLOHMANN_DEFINE(TItemArg,
xmdm,
xmxh,
model);
};
@ -165,6 +170,16 @@ struct TMarkRule
int32 OnlyOneKind = 0;
int32 NoCancelId = 0;
bool GPS_SID = false; //bool
JUDGE_JSON_NLOHMANN_DEFINE(TMarkRule,
itemno,
itemname,
markreal,
markcatalog,
markshow,
OnlyOneKind,
NoCancelId,
GPS_SID);
};
struct TSysset
@ -179,6 +194,11 @@ struct TSysset
int key = -1; //参数
std::string value; //参数值
std::string name; //特殊评判项描述
JUDGE_JSON_NLOHMANN_DEFINE(TSysset,
key,
value,
name);
};
struct TDBItemInfo
@ -198,6 +218,23 @@ struct TDBItemInfo
std::string setup7;
std::string setup8;
std::string setup9;
JUDGE_JSON_NLOHMANN_DEFINE(TDBItemInfo,
itemsno,
carlist,
freqinfo,
end_cardsno,
cininfo,
nextinfo,
setup1,
setup2,
setup3,
setup4,
setup5,
setup6,
setup7,
setup8,
setup9);
};
struct TDBCarInfo
@ -211,6 +248,16 @@ struct TDBCarInfo
std::string FLAG; //预留
std::string BK1; //预留
std::string BK2; //预留
JUDGE_JSON_NLOHMANN_DEFINE(TDBCarInfo,
CARID,
IPADDR,
CARCLASS,
KSCX,
CARNAME,
FLAG,
BK1,
BK2);
};
struct TSystemparm
@ -227,6 +274,15 @@ struct TSystemparm
mutable bool Muliti_EnterFlag = false;
mutable int RefPosI = 0; //指向的位置
int BY_JL1 = 0; //备用距离1
JUDGE_JSON_NLOHMANN_DEFINE(TSystemparm,
NO1,
NO2,
NO3,
TXT1,
TXT2,
TXT3);
};
using TSystemparms = std::vector<TSystemparm>;
@ -246,6 +302,19 @@ struct TMap_Point
int f_gps_n = 0; //10、辅助点北纬坐标
int8 passed = 0; //11、本次考试是否经过该点
JUDGE_JSON_NLOHMANN_DEFINE(TMap_Point,
point_no,
gps_e,
gps_n,
point_no_f,
point_type,
road_code,
gps_e_Location,
gps_n_Location,
f_gps_e,
f_gps_n,
passed);
//***以上是读取的
mutable int OffSet_CM = 0;
mutable bool ReverseFlag; //取反标志
@ -254,6 +323,7 @@ struct TMap_Point
mutable int PosX = 0;
mutable int PosY = 0;
mutable bool FangXiangDianFlag = false;
};
using TMap_Points = std::vector<TMap_Point>;
@ -267,6 +337,12 @@ struct TMap_Point_Item
//当前项目涉及到了哪些点,-分隔
std::string subname = "";
JUDGE_JSON_NLOHMANN_DEFINE(TMap_Point_Item,
point_no,
itemno,
itemno1,
subname);
//***以上是读取的
mutable std::string LabelDisp = ""; //显示名称
mutable int PosX = 0;
@ -301,6 +377,30 @@ struct TInitInfo
std::string roads = ""; //道路路段信息(科三用) Roads.json文件加密后数据,科二默认填空字符""
std::string sharps = ""; //形状线信息(科三用) Sharps.json文件加密后数据,科二默认填空字符""
JUDGE_JSON_NLOHMANN_DEFINE(TInitInfo,
kskm,
kchp,
kchm,
kscx,
cxcode,
name,
carmodel,
allitems,
iteminfo,
mark,
sysset,
systemparm,
carinfo,
map_point,
map_point_item,
roads,
sharps);
//template<typename... Args>
//inline void valid(Args... args) noexcept
//{
// int cnt = sizeof...(Args);
//}
};
//扣分项目数据结构定义
@ -308,6 +408,7 @@ struct TKfXm
{
int32 xmdm = Sub2ItemTypeInvalid; //项目代码 对应枚举 ExamItemCode
std::string kfdm; //扣分代码
JUDGE_JSON_NLOHMANN_DEFINE(TKfXm,xmdm,kfdm);
};
//学员信息数据结构定义
@ -349,6 +450,40 @@ struct TStuInfo
//std::string DuanDian_FinishItems; //完成项目列表,多个项目用英文的逗号分隔
//std::string DuanDian_Marks; //扣分 格式: ItemNo1,MarkSerial1; ItemNo2,MarkSerial2;
JUDGE_JSON_NLOHMANN_DEFINE(TStuInfo,
kgid,
kgxm,
exam,
replay,
track,
passing,
xm,
sex,
kslsh,
sfzmhm,
ksyy,
kkcs,
sfyk,
ykkkcs,
wayno,
czlx,
kskssj,
ksxm,
ddxk,
ddkssj,
ykxm,
kfxm,
yklc,
sczb,
sczbkf,
dmndg,
nitem1,
nitem41,
mfxx,
mfxxn);
};
//车载信号数据结构定义
@ -459,9 +594,47 @@ struct TSensorInfo
csjyx = 0;
}
JUDGE_JSON_NLOHMANN_DEFINE(TSensorInfo,
aqd ,
mkg ,
ssc ,
jsc ,
fsc ,
lhq ,
lb ,
skd ,
jgd ,
ygd ,
zfxd ,
yfxd ,
shtd ,
wd ,
ygq ,
dh1 ,
dh2 ,
fdjzs,
dw ,
cs ,
fxp ,
ljmc ,
lcmc ,
csbzq,
csbzh,
csbyq,
csbyh,
zy ,
tbp ,
hsj ,
dcj ,
gx ,
yl ,
yy ,
rmndg,
mndg ,
sde ,
xhd);
};
//GPS信号数据结构定义
struct TGpsInfo
{
@ -482,6 +655,24 @@ struct TGpsInfo
int8 dwsxs = 0; //定位搜星数
int8 jdsxs = 0; //角度搜星数
JUDGE_JSON_NLOHMANN_DEFINE(TGpsInfo,
bklx ,
dwzt ,
jdzt ,
sj ,
jd ,
wd ,
hxj ,
fyj ,
hbg ,
gdc ,
sd ,
age ,
jdyz ,
wdyz ,
dwsxs,
jdsxs);
//*************下面考试评判计算出来的****************
bool errorFlag = true; //信号异常标志
bool rtkEnabled = false;
@ -537,6 +728,8 @@ struct TVisionInfo
int8 ch = 0; //窗户状态[有几只手在窗户上]
int8 hld = 0; //红绿灯状态
JUDGE_JSON_NLOHMANN_DEFINE(TVisionInfo,sj,score,zyjd,sxjd,ytjd,fxp,ch,hld);
TVisionInfo() noexcept { clean(); }
virtual ~TVisionInfo() noexcept { clean(); }
void clean() noexcept
@ -560,6 +753,8 @@ struct TRadarWay
double jl = 0; //距离
double sd = 0; //速度
JUDGE_JSON_NLOHMANN_DEFINE(TRadarWay,bh,lx,jl,sd);
TRadarWay() noexcept { clean(); }
virtual ~TRadarWay() noexcept { clean(); }
void clean() noexcept
@ -577,6 +772,7 @@ struct TRadarFront
double xrjl = 0; //行人距离本车的距离
double zawjl = 0; //障碍物距离本车的距离
JUDGE_JSON_NLOHMANN_DEFINE(TRadarFront,xrjl,zawjl);
TRadarFront() noexcept { clean(); }
virtual ~TRadarFront() noexcept { clean(); }
void clean() noexcept
@ -592,6 +788,8 @@ struct TRadarShow
int32 bh = 0; //编号
std::vector<Pointi> zb = {}; //雷达展示数据
JUDGE_JSON_NLOHMANN_DEFINE(TRadarShow,bh,zb);
TRadarShow() noexcept { clean(); }
virtual ~TRadarShow() noexcept { clean(); }
void clean() noexcept
@ -619,6 +817,7 @@ struct TRadarInfo
int8 rcyz = 0; //绕车一周信号
std::vector<TRadarShow> show = {}; //雷达展示数据
JUDGE_JSON_NLOHMANN_DEFINE(TRadarInfo,zxh,qfsj,hfsj,zqsj,zhsj,zcsj,yqsj,yhsj,ycsj,fqsj,qfwt,rcyz,show);
TRadarInfo() noexcept { clean(); }
virtual ~TRadarInfo() noexcept { clean(); }
void clean() noexcept
@ -641,6 +840,7 @@ struct TRadarInfo
//扩展数据结构体 备用(如路侧设备信号)
struct TExtendInfo
{
//JUDGE_JSON_NLOHMANN_DEFINE(TExtendInfo);
TExtendInfo() noexcept { clean(); }
virtual ~TExtendInfo() noexcept { clean(); }
void clean() noexcept
@ -670,6 +870,8 @@ struct TRealExam
radar.clean();
extend.clean();
}
JUDGE_JSON_NLOHMANN_DEFINE(TRealExam,sensor,gps,gps2,vision,radar/*,extend*/);
};
//人工操作接口数据结构
@ -697,6 +899,8 @@ struct TEventFinishItem
int32 xmdm = Sub2ItemTypeInvalid; //项目代码 对应枚举 ExamItemCode
std::string xmxh = ""; //项目(序)号
int32 xmhg = 0; //是否合格 1合格0不合格
JUDGE_JSON_NLOHMANN_DEFINE(TEventFinishItem,xmdm,xmxh,xmhg);
};
struct TEventItemMark
@ -705,6 +909,7 @@ struct TEventItemMark
std::string kfdm; //扣分代码 对应markserial
std::string markcatalog; //无锡所标准扣分代码
int32 type = MarkTypeAuto; //扣分类型,评判自动、人工、远程
JUDGE_JSON_NLOHMANN_DEFINE(TEventItemMark,xmdm,kfdm,markcatalog,type);
};
struct TEventExamFinish
@ -718,6 +923,8 @@ struct TEventExamFinish
int32 d4 = 0;
int32 d5 = 0;
int32 d6 = 0;
JUDGE_JSON_NLOHMANN_DEFINE(TEventExamFinish,type,qjjl,dcjl,d1,d2,d3,d4,d5,d6);
};
struct TEventSound
@ -725,6 +932,8 @@ struct TEventSound
int32 xmdm = Sub2ItemTypeInvalid; //项目代码比如41表示模拟灯光
std::string code; //语音代码,参考:namespace sound、sound_sub2、sound_sub3
int32 type = PlaySoundDefault; //语音类型0:默认普通语音1:表示是模拟灯光项目的语音语音播报结束需要调用examJudgeSoundEnd通知评判。
JUDGE_JSON_NLOHMANN_DEFINE(TEventSound,xmdm,code,type);
};
struct TEventLane
@ -734,6 +943,8 @@ struct TEventLane
std::string road = ""; //当前路段号
int32 num = 0; //当前基准天线所在车道号
int32 count = 0; //当前基准天线共有几股车道
JUDGE_JSON_NLOHMANN_DEFINE(TEventLane,road,num,count);
};
//道路路段信息
@ -775,6 +986,8 @@ struct TJudgeData
TEventLight mndg = ""; //模拟灯光
TEventLane lane = {}; //车道和路段变化
JUDGE_JSON_NLOHMANN_DEFINE(TJudgeData,event,sj,carzt,xmks,xmjs,kf,ksjs,xmqx,sound,mndg,lane);
//int8 kszt = 0; //考试状态
//TExamXm dqxm = {}; //当前项目
//TExamXm scxmks = {}; //生成项目开始数据
@ -877,6 +1090,31 @@ struct TRTKResult
#ifdef JUDGE_USE_INSPECT
std::string BodySharpData; //解决无锡所路口左转227a用例误判问题
#endif
JUDGE_JSON_NLOHMANN_DEFINE(TRTKResult,MapRoad_Code_No,MapRoad_Name,TouchLineType,TouchDir,TouchLineTypeCS,
BasePointInLaneNo,BaseLaneCount,FrontPointLaneNo,FrontPointLaneCount,
Body_LF_ToLeftEdge,Body_LB_ToLeftEdge,Body_RF_ToRightEdge,Body_RB_ToRightEdge,
Wheel_RF_ToRightEdge,
Wheel_RB_ToRightEdge,
Wheel_RF_ToBaseLine,
Wheel_RB_ToBaseLine,
Wheel_LF_ToRightEdge,
Wheel_LB_ToRightEdge,
Wheel_LF_ToBaseLine,
Wheel_LB_ToBaseLine,
BasePointInLaneDir,
CrossLineAttr,
InShapeAttr,
ShapeNo,
CrossPointNo,
//20240730 增加 yhy
TouchLineDirCS,
BackPointLaneNo,
BackPointLaneCount,
Body_RF_ToBaseLine,
Body_RB_ToBaseLine,
DirInverse,
ShapeNoWheel);
};
struct TPerformData
@ -891,6 +1129,7 @@ struct TPerformData
std::string hint = ""; //提示信息
TRTKResult lane;
JUDGE_JSON_NLOHMANN_DEFINE(TPerformData,time,carzt,grade,qjjl,dcjl,dxjl,bxjl,hint,lane);
};
//************************************************************

View File

@ -162,6 +162,7 @@ export async function getDoubleCeneterTable(param) {
}
for (let key in typeObj) {
typeObj[key] = await upDateTable({ tableName: key }, param)
console.log('sqlsqlinsert',key, typeObj[key])
if (!typeObj[key]) {
promptAction.showToast({
message: `未能查询到${key}表数据, 请先检查网络是否连接正常`,

View File

@ -45,6 +45,7 @@ const map = {
'MA_MAP_ROAD': MA_MAP_ROAD,
'MA_MAP_ROAD_LANE': MA_MAP_ROAD_LANE,
'MAP_SUBITEM': MA_MAP_SUBITEM,
'MA_MAP_SUBITEM': MA_MAP_SUBITEM,
'MA_SYSSET': MA_SYSSET,
'ES_CARINFO': ES_CARINFO,
'ES_EXAMPOINTDETAIL': ES_EXAMPOINTDETAIL,
@ -94,7 +95,7 @@ function sqlInsertCommonFn(tableName, resultArr, context?, delFlag = true) {
if (result.length == 0) {
console.log('sqlsqlinsert',resultArr.length)
if(resultArr.length==0){
resolve(false)
resolve(true)
return
}
let INSERT_SQL = "INSERT INTO " + tableName
@ -188,7 +189,7 @@ export async function upDateTable(params, reqParam) {
return new Promise((resolve, reject) => {
const date = new Date()
let paraKdid = reqParam?.paraKdid || ''
let examinationRoomId = reqParam?.examinationRoomId || ''
let examinationRoomId = reqParam?.kdid || ''
if (!paraKdid || !examinationRoomId) {
resolve(false)
return
@ -197,12 +198,12 @@ export async function upDateTable(params, reqParam) {
const str = { "head": { "time": dateFormat(date) },
"body":
{ "tableName": params.tableName, // 表名
"paraKdid": paraKdid, //参数平台kdid
"examinationRoomId": examinationRoomId, //考试平台kdid
"paraKdid": reqParam.paraKdid, //参数平台kdid
"examinationRoomId":reqParam.kdid, //考试平台kdid
"typeRsp": "0" // 赋默认值0无需改变
}
}
const url = globalThis.timeInfo.url
const url = reqParam.centerHost
initCenterCache(str, url).then(async (res) => {
if (!res || res == undefined || res == '') {
@ -233,7 +234,7 @@ export async function getMySystemSetTable(params, reqParam) {
const str = { "head": { "time": dateFormat(date) },
"body":
{ "tableName": params.tableName, // 表名
"paraKdid": reqParam?.kdid, //考试平台kdid
"paraKdid": reqParam?.paraKdid, //参数平台kdid
"examinationRoomId": reqParam?.kdid, //考试平台kdid
"typeRsp": "0" // 赋默认值0无需改变
}

View File

@ -18,7 +18,7 @@ export const VideoConfigData: VideoConfig = {
td3: '3',
td4: '4',
videoRecord1: false,
videoRecord2: true,
videoRecord2: false,
videoRecord3: false,
videoRecord4: false,
text1: '',

View File

@ -184,7 +184,7 @@ struct Index {
Column() {
Row() {
Column() {
Text('V ' + globalThis.version)
Text('V 1.0')
.fontColor('#CCAE7A')
.fontSize(22 * globalThis.ratio)
.width('30%')
@ -310,13 +310,15 @@ struct Index {
// let mode=globalThis.timeInfo?.mode?globalThis.timeInfo?.mode:1
// console.log('mode',mode)
let workerInstance = new worker.ThreadWorker('entry/ets/workers/worker.ts');
const param = {
carId: globalThis.carInfo?.carId,
examinationRoomId: globalThis.carInfo?.examinationRoomId,
judgeVersion: globalThis.judgeVersion,
shellVersion: globalThis.version,
paraKdid: globalThis.timeInfo?.paraKdid,
paraKdid: globalThis.timeInfo?.paraKdid||globalThis.timeInfo?.kdid,
kdid:globalThis.timeInfo?.kdid||globalThis.timeInfo?.paraKdid,
mode: globalThis.timeInfo?.mode,
context: this.context,
host: globalThis.host,