Compare commits
	
		
			3 Commits
		
	
	
		
			9445377a5d
			...
			c2fa43f720
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c2fa43f720 | |||
| e0b0a7b777 | |||
| 69a7828b40 | 
| @ -17,7 +17,7 @@ message("${MSG_NOTE} ******************************************************") | ||||
| 
 | ||||
| # 启用项目文件夹功能。当这个属性被设置为ON时,CMake会根据项目的目录结构自动在生成的项目文件中创建文件夹,以更好地组织项目文件。 | ||||
| set_property(GLOBAL PROPERTY USE_FOLDERS ON) | ||||
| set(CMAKE_CXX_STANDARD 17) # 注意:windows下可以是C++11 linux下必须是C++14 gtest linux下要C++14 | ||||
| set(CMAKE_CXX_STANDARD 17) # 注意:gtest linux下至少要C++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) | ||||
|  | ||||
| @ -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 | ||||
| * | ||||
| **********************************************************************************************/ | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -3,19 +3,33 @@ | ||||
|  * | ||||
|  *  作者: 杨海洋 | ||||
|  *  日期: 2023-03-22 | ||||
|  * | ||||
|  * ******************************************************************* | ||||
|  * | ||||
|  * 主版本号.子版本号.修订版本号.日期 | ||||
|  * | ||||
|  * 比如:1.2.3.2304241030 | ||||
|  * | ||||
|  * 说明: | ||||
|  * 第一位(1):主版本号。当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。此版本号由项目决定是否修改。 | ||||
|  * 第二位(2):子版本号。当功能有一定的增加或变化,比如增加了新功能。此版本号由项目决定是否修改。 | ||||
|  * 第三位(3):修订版本号。一般是Bug修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个bug即可发布一个修订版。此版本号由开发人员决定是否修改。 | ||||
|  * 第四位(4):日期版本号(2304241030年月日时分):用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。此版本号由开发人员决定是否修改。 | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #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
 | ||||
|  | ||||
| @ -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(), | ||||
|  | ||||
| @ -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) | ||||
|  | ||||
| @ -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; | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -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; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -137,6 +137,8 @@ struct TSub3Item12Ptdt | ||||
|     bool   Judge_DengGuang_Flag = false; | ||||
|     TSlowDown slowDown; | ||||
| 
 | ||||
|     Linei  line;   //用于新的角度变化计算方式
 | ||||
|     TMapping mapping; | ||||
| }; | ||||
| 
 | ||||
| struct TSub3Item15Lkzz | ||||
|  | ||||
| @ -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))) | ||||
|     { | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
| @ -120,6 +120,8 @@ | ||||
|  * 4、项目距离设置大于0,距离达到项目距离的,且378=1:从未变过道的,取消项目;有过变道但未完成完整动作的,扣分后结束项目 | ||||
|  * 5、项目距离设置大于0,距离达到项目距离的,且378!=1:扣分后结束项目 | ||||
|  * | ||||
|  * 注意:超车项目进项目的时候,如果在最左侧车道并且405参数等于1  不要报超车进项目语音,等回原车道评判会给外壳发语音事件 | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #ifndef SUB3JUDGE10CCXX_H | ||||
|  | ||||
| @ -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; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -35,7 +35,7 @@ public: | ||||
|     DEAL_API void dealJudgeItem() override; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
|     Linei coordTransform(const TChuanGan* cg); | ||||
| private: | ||||
|     TSub3Item12Ptdt m_itemv; | ||||
| }; | ||||
|  | ||||
| @ -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); | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
|  | ||||
| @ -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; | ||||
|  | ||||
| @ -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
 | ||||
|  | ||||
| @ -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; | ||||
|         } | ||||
|  | ||||
| @ -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; } | ||||
|  | ||||
| @ -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); | ||||
| }; | ||||
| 
 | ||||
| //************************************************************
 | ||||
|  | ||||
| @ -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}表数据, 请先检查网络是否连接正常`, | ||||
|  | ||||
| @ -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,无需改变
 | ||||
|       } | ||||
|  | ||||
| @ -18,7 +18,7 @@ export const VideoConfigData: VideoConfig = { | ||||
|   td3: '3', | ||||
|   td4: '4', | ||||
|   videoRecord1: false, | ||||
|   videoRecord2: true, | ||||
|   videoRecord2: false, | ||||
|   videoRecord3: false, | ||||
|   videoRecord4: false, | ||||
|   text1: '', | ||||
|  | ||||
| @ -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, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user